Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
CellParameterisation Class Reference

#include <CellParameterisation.hh>

Inheritance diagram for CellParameterisation:
G4VPVParameterisation

Public Member Functions

 CellParameterisation (G4int NoBoxes, G4float DimBoxX, G4float DimBoxY, G4float DimBoxZ, G4Material *nucleus1, G4Material *cytoplasm1, G4Material *nucleus2, G4Material *cytoplasm2, G4Material *nucleus3, G4Material *cytoplasm3)
 
virtual ~CellParameterisation ()
 
void ComputeTransformation (const G4int copyNo, G4VPhysicalVolume *physVol) const
 
void ComputeDimensions (G4Box &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Tubs &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Trd &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Trap &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Cons &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Sphere &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Ellipsoid &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Orb &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Torus &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Para &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Polycone &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Polyhedra &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Hype &, const G4int, const G4VPhysicalVolume *) const
 
G4int GetNoBoxes ()
 
G4MaterialComputeMaterial (const G4int copyNo, G4VPhysicalVolume *physVol, const G4VTouchable *)
 
- Public Member Functions inherited from G4VPVParameterisation
 G4VPVParameterisation ()
 
virtual ~G4VPVParameterisation ()
 
virtual G4VSolidComputeSolid (const G4int, G4VPhysicalVolume *)
 
virtual G4bool IsNested () const
 
virtual G4VVolumeMaterialScannerGetMaterialScanner ()
 

Detailed Description

Definition at line 43 of file CellParameterisation.hh.

Constructor & Destructor Documentation

CellParameterisation::CellParameterisation ( G4int  NoBoxes,
G4float  DimBoxX,
G4float  DimBoxY,
G4float  DimBoxZ,
G4Material nucleus1,
G4Material cytoplasm1,
G4Material nucleus2,
G4Material cytoplasm2,
G4Material nucleus3,
G4Material cytoplasm3 
)

Definition at line 41 of file CellParameterisation.cc.

References G4VisAttributes::SetColour(), test::v, test::x, and z.

46 {
47  fNucleusMaterial1 = nucleus1;
48  fCytoplasmMaterial1 = cytoplasm1;
49  fNucleusMaterial2 = nucleus2;
50  fCytoplasmMaterial2 = cytoplasm2;
51  fNucleusMaterial3 = nucleus3;
52  fCytoplasmMaterial3 = cytoplasm3;
53 
54  fNoCellBoxes = NoBoxes;
55  fDimCellBoxX = DimBoxX;
56  fDimCellBoxY = DimBoxY;
57  fDimCellBoxZ = DimBoxZ;
58 
59  fMapCell = new G4ThreeVector[fNoCellBoxes];
60  fMaterial = new G4float[fNoCellBoxes];
61  fMass = new G4float[fNoCellBoxes];
62 
63  G4int ncols,nlines;
64  G4int shiftX, shiftY, shiftZ;
65  G4float x,y,z,mat,den,tmp,sizeZ;
66 
67  ncols=0; nlines=0;
68 
69  // READ PHANTOM
70 
71  FILE *fMap;
72  fMap = fopen("phantom.dat","r");
73 
74  while (1)
75  {
76  if (nlines >= 0 && nlines <=1 ) ncols = fscanf(fMap,"%f %f %f",&tmp,&tmp,&sizeZ);
77  if (nlines == 2) ncols = fscanf(fMap,"%i %i %i",&shiftX,&shiftY,&shiftZ); // VOXEL SHIFT IN Z ASSUMED TO BE NEGATIVE
78  if (nlines == 3) ncols = fscanf(fMap,"%f %f %f",&tmp,&tmp,&tmp);
79  if (nlines == 4) ncols = fscanf(fMap,"%f %f %f",&tmp,&tmp,&tmp);
80  if (nlines > 4) ncols = fscanf(fMap,"%f %f %f %f %f %f",&x,&y,&z,&mat,&den,&tmp);
81  if (ncols < 0) break;
82 
83  G4ThreeVector v(x+shiftX,y+shiftY,z-1500/sizeZ-shiftZ); // VOXEL SHIFT IN ORDER TO CENTER PHANTOM
84 
85  if (nlines>4)
86  {
87  fMapCell[nlines-5]=v;
88  fMaterial[nlines-5]=mat;
89  fMass[nlines-5]=den;
90  }
91 
92  nlines++;
93  }
94  fclose(fMap);
95 
96  // NUCLEUS IN GREEN
97 
98  fNucleusAttributes1 = new G4VisAttributes;
99  fNucleusAttributes1->SetColour(G4Colour(0,.8,0));
100  fNucleusAttributes1->SetForceSolid(false);
101 
102  fNucleusAttributes2 = new G4VisAttributes;
103  fNucleusAttributes2->SetColour(G4Colour(0,.9,0));
104  fNucleusAttributes2->SetForceSolid(false);
105 
106  fNucleusAttributes3 = new G4VisAttributes;
107  fNucleusAttributes3->SetColour(G4Colour(0,1,0));
108  fNucleusAttributes3->SetForceSolid(false);
109 
110  // CYTOPLASM IN RED
111 
112  fCytoplasmAttributes1 = new G4VisAttributes;
113  fCytoplasmAttributes1->SetColour(G4Colour(1,0,0));
114  fCytoplasmAttributes1->SetForceSolid(false);
115 
116  fCytoplasmAttributes2 = new G4VisAttributes; // nucleoli in yellow
117  fCytoplasmAttributes2->SetColour(G4Colour(1.,1.,0));
118  fCytoplasmAttributes2->SetForceSolid(false);
119 
120  fCytoplasmAttributes3 = new G4VisAttributes;
121  fCytoplasmAttributes3->SetColour(G4Colour(1,0,0));
122  fCytoplasmAttributes3->SetForceSolid(false);
123 }
void SetColour(const G4Colour &)
G4double z
Definition: TRTMaterials.hh:39
float G4float
Definition: G4Types.hh:77
void SetForceSolid(G4bool)
int G4int
Definition: G4Types.hh:78
CellParameterisation::~CellParameterisation ( )
virtual

Definition at line 127 of file CellParameterisation.cc.

128 {
129  delete[] fMapCell;
130  delete[] fMaterial;
131  delete[] fMass;
132 }

Member Function Documentation

void CellParameterisation::ComputeDimensions ( G4Box ,
const G4int  ,
const G4VPhysicalVolume  
) const
virtual

Reimplemented from G4VPVParameterisation.

Definition at line 151 of file CellParameterisation.cc.

152 {}
void CellParameterisation::ComputeDimensions ( G4Tubs ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 62 of file CellParameterisation.hh.

64  {}
void CellParameterisation::ComputeDimensions ( G4Trd ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 66 of file CellParameterisation.hh.

68  {}
void CellParameterisation::ComputeDimensions ( G4Trap ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 70 of file CellParameterisation.hh.

72  {}
void CellParameterisation::ComputeDimensions ( G4Cons ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 74 of file CellParameterisation.hh.

76  {}
void CellParameterisation::ComputeDimensions ( G4Sphere ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 78 of file CellParameterisation.hh.

80  {}
void CellParameterisation::ComputeDimensions ( G4Ellipsoid ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 82 of file CellParameterisation.hh.

84  {}
void CellParameterisation::ComputeDimensions ( G4Orb ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 86 of file CellParameterisation.hh.

88  {}
void CellParameterisation::ComputeDimensions ( G4Torus ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 90 of file CellParameterisation.hh.

92  {}
void CellParameterisation::ComputeDimensions ( G4Para ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 94 of file CellParameterisation.hh.

96  {}
void CellParameterisation::ComputeDimensions ( G4Polycone ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 98 of file CellParameterisation.hh.

100  {}
void CellParameterisation::ComputeDimensions ( G4Polyhedra ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 102 of file CellParameterisation.hh.

104  {}
void CellParameterisation::ComputeDimensions ( G4Hype ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlinevirtual

Reimplemented from G4VPVParameterisation.

Definition at line 106 of file CellParameterisation.hh.

108  {}
G4Material * CellParameterisation::ComputeMaterial ( const G4int  copyNo,
G4VPhysicalVolume physVol,
const G4VTouchable  
)
virtual

Reimplemented from G4VPVParameterisation.

Definition at line 157 of file CellParameterisation.cc.

References G4VPhysicalVolume::GetLogicalVolume(), G4LogicalVolume::GetMaterial(), G4VPhysicalVolume::SetName(), and G4LogicalVolume::SetVisAttributes().

160 {
161  if( fMaterial[copyNo] == 2 ) // fMaterial 2 is nucleus
162  {
163  if( fMass[copyNo] == 1 )
164  {
165  physVol->SetName("physicalNucleus");
166  physVol->GetLogicalVolume()->SetVisAttributes( fNucleusAttributes1 );
167  return fNucleusMaterial1;
168  }
169  if( fMass[copyNo] == 2 )
170  {
171  physVol->SetName("physicalNucleus");
172  physVol->GetLogicalVolume()->SetVisAttributes( fNucleusAttributes2 );
173  return fNucleusMaterial2;
174  }
175  if( fMass[copyNo] == 3 )
176  {
177  physVol->SetName("physicalNucleus");
178  physVol->GetLogicalVolume()->SetVisAttributes( fNucleusAttributes3 );
179  return fNucleusMaterial3;
180  }
181  }
182 
183  else if( fMaterial[copyNo] == 1 ) // fMaterial 1 is cytoplasm
184  {
185  if( fMass[copyNo] == 1 )
186  {
187  physVol->SetName("physicalCytoplasm");
188  physVol->GetLogicalVolume()->SetVisAttributes( fCytoplasmAttributes1 );
189  return fCytoplasmMaterial1;
190  }
191  if( fMass[copyNo] == 2 )
192  {
193  physVol->SetName("physicalNucleus"); // nucleoli
194  physVol->GetLogicalVolume()->SetVisAttributes( fCytoplasmAttributes2 );
195  return fCytoplasmMaterial2;
196  }
197  if( fMass[copyNo] == 3 )
198  {
199  physVol->SetName("physicalCytoplasm");
200  physVol->GetLogicalVolume()->SetVisAttributes( fCytoplasmAttributes3 );
201  return fCytoplasmMaterial3;
202  }
203  }
204 
205  return physVol->GetLogicalVolume()->GetMaterial();
206 }
G4Material * GetMaterial() const
void SetName(const G4String &pName)
G4LogicalVolume * GetLogicalVolume() const
void SetVisAttributes(const G4VisAttributes *pVA)
void CellParameterisation::ComputeTransformation ( const G4int  copyNo,
G4VPhysicalVolume physVol 
) const
virtual

Implements G4VPVParameterisation.

Definition at line 137 of file CellParameterisation.cc.

References G4VPhysicalVolume::SetTranslation(), test::x, and z.

138 {
140  origin(
141  fMapCell[copyNo].x()*fDimCellBoxX*2,
142  fMapCell[copyNo].y()*fDimCellBoxY*2,
143  fMapCell[copyNo].z()*fDimCellBoxZ*2);
144 
145  physVol->SetTranslation(origin);
146 }
G4double z
Definition: TRTMaterials.hh:39
void SetTranslation(const G4ThreeVector &v)
G4int CellParameterisation::GetNoBoxes ( )
inline

Definition at line 110 of file CellParameterisation.hh.

110 {return fNoCellBoxes;}

The documentation for this class was generated from the following files: