Geant4  10.02.p03
IORTDetectorConstruction Class Reference

#include <IORTDetectorConstruction.hh>

Collaboration diagram for IORTDetectorConstruction:

Public Member Functions

 IORTDetectorConstruction (G4VPhysicalVolume *)
 
 ~IORTDetectorConstruction ()
 
G4ThreeVector GetDetectorToWorldPosition ()
 
G4ThreeVector GetDetectorToPhantomPosition ()
 
void SetDetectorPosition ()
 
bool IsInside (G4double detectorX, G4double detectorY, G4double detectorZ, G4double phantomX, G4double phantomY, G4double phantomZ, G4ThreeVector detToPhantomPosition)
 
G4bool SetPhantomMaterial (G4String material)
 
void SetVoxelSize (G4double sizeX, G4double sizeY, G4double sizeZ)
 
void SetDetectorSize (G4double sizeX, G4double sizeY, G4double sizeZ)
 
void SetPhantomSize (G4double sizeX, G4double sizeY, G4double sizeZ)
 
void SetPhantomPosition (G4ThreeVector)
 
void SetDetectorToPhantomPosition (G4ThreeVector DetectorToPhantomPosition)
 
void UpdateGeometry ()
 
void DeleteDisc ()
 
void ConstructDisc ()
 
void PrintParameters ()
 
G4LogicalVolumeGetDetectorLogicalVolume ()
 
G4bool SetDiscoMaterialIORT (G4String material)
 
void SetOuterRadiusDiscoIORT (G4double outerr)
 
void SetinnerRadiusDiscoIORT (G4double innerr)
 
void SetheightDiscoIORT (G4double height)
 
void SetDiscoXPositionIORT (G4double xpos)
 
void SetDiscoYPositionIORT (G4double ypos)
 
void SetDiscoZPositionIORT (G4double zpos)
 
G4bool SetDiscoMaterialIORT1 (G4String material)
 
void SetOuterRadiusDiscoIORT1 (G4double outerr)
 
void SetinnerRadiusDiscoIORT1 (G4double innerr)
 
void SetheightDiscoIORT1 (G4double height)
 
void SetDiscoXPositionIORT1 (G4double xpos)
 
void SetAngleDiscoIORT0 (G4double phi0)
 

Private Member Functions

void ConstructPhantom ()
 
void ConstructDetector ()
 
void ConstructSensitiveDetector (G4ThreeVector positionToWORLD)
 
void ParametersCheck ()
 

Private Attributes

IORTDetectorMessengerdetectorMessenger
 
G4VisAttributesred
 
G4VPhysicalVolumemotherPhys
 
IORTDetectorSDdetectorSD
 
IORTDetectorROGeometrydetectorROGeometry
 
IORTMatrixmatrix
 
G4Boxphantom
 
G4Boxdetector
 
G4LogicalVolumephantomLogicalVolume
 
G4LogicalVolumedetectorLogicalVolume
 
G4VPhysicalVolumephantomPhysicalVolume
 
G4VPhysicalVolumedetectorPhysicalVolume
 
G4double phantomSizeX
 
G4double phantomSizeY
 
G4double phantomSizeZ
 
G4double detectorSizeX
 
G4double detectorSizeY
 
G4double detectorSizeZ
 
G4ThreeVector phantomPosition
 
G4ThreeVector detectorPosition
 
G4ThreeVector detectorToPhantomPosition
 
G4double sizeOfVoxelAlongX
 
G4double sizeOfVoxelAlongY
 
G4double sizeOfVoxelAlongZ
 
G4int numberOfVoxelsAlongX
 
G4int numberOfVoxelsAlongY
 
G4int numberOfVoxelsAlongZ
 
G4double volumeOfVoxel
 
G4double massOfVoxel
 
G4MaterialphantomMaterial
 
G4MaterialdetectorMaterial
 
G4RegionaRegion
 
G4TubssolidDiscoIORT0
 
G4LogicalVolumelogicDiscoIORT0
 
G4VPhysicalVolumephysiDiscoIORT0
 
G4double AngleDiscoIORT0
 
G4VisAttributeswhite
 
G4VisAttributesgray
 
G4VisAttributesgray1
 
G4double innerRadiusDiscoIORT
 
G4double OuterRadiusDiscoIORT
 
G4double heightDiscoIORT
 
G4double DiscoXPositionIORT
 
G4double DiscoYPositionIORT
 
G4double DiscoZPositionIORT
 
G4TubssolidDiscoIORT
 
G4LogicalVolumelogicDiscoIORT
 
G4VPhysicalVolumephysiDiscoIORT
 
G4MaterialDiscoMaterialIORT
 
G4double innerRadiusDiscoIORT1
 
G4double OuterRadiusDiscoIORT1
 
G4double heightDiscoIORT1
 
G4double DiscoXPositionIORT1
 
G4TubssolidDiscoIORT1
 
G4LogicalVolumelogicDiscoIORT1
 
G4VPhysicalVolumephysiDiscoIORT1
 
G4MaterialDiscoMaterialIORT1
 

Detailed Description

Definition at line 58 of file IORTDetectorConstruction.hh.

Constructor & Destructor Documentation

◆ IORTDetectorConstruction()

IORTDetectorConstruction::IORTDetectorConstruction ( G4VPhysicalVolume physicalTreatmentRoom)

Definition at line 71 of file IORTDetectorConstruction.cc.

72  : motherPhys(physicalTreatmentRoom), // pointer to WORLD volume
74  phantom(0), detector(0),
77  aRegion(0),
78 
79  solidDiscoIORT0(0),
80  logicDiscoIORT0(0),
81  physiDiscoIORT0(0),
82 
83  solidDiscoIORT(0),
84  logicDiscoIORT(0),
85  physiDiscoIORT(0),
86 
87  solidDiscoIORT1(0),
88  logicDiscoIORT1(0),
90 
91 {
93 
94  /* NOTE! that the IORTDetectorConstruction class
95  * does NOT inherit from G4VUserDetectorConstruction G4 class
96  * So the Construct() mandatory virtual method is inside another geometric class
97  * like the collimatorXXBeamLIne, ...
98  */
99 
100  // Messenger to change parameters of the phantom/detector geometry
102 
103  // Default detector voxels size
104  // 200 slabs along the beam direction (X)
105  sizeOfVoxelAlongX = 0.5 *CLHEP::mm; //
106  sizeOfVoxelAlongY = 0.5 *CLHEP::mm; //
107  sizeOfVoxelAlongZ = 0.5 *CLHEP::mm; //
108 
109  // Define here the material of the water phantom and of the detector
110  SetPhantomMaterial("G4_WATER");
111  // Construct geometry (messenger commands)
113  SetPhantomSize(20. *CLHEP::cm, 20. *CLHEP::cm, 20. *CLHEP::cm);
116 
117  // Default protection disc geometry and materials
124  SetDiscoMaterialIORT("G4_WATER");
125 
130  SetDiscoMaterialIORT1("G4_WATER");
131 
133 
134  // Write virtual parameters to the real ones and check for consistency
135  UpdateGeometry();
136 }
void SetDiscoZPositionIORT(G4double zpos)
CLHEP::Hep3Vector G4ThreeVector
void SetOuterRadiusDiscoIORT1(G4double outerr)
void SetDetectorToPhantomPosition(G4ThreeVector DetectorToPhantomPosition)
void SetPhantomSize(G4double sizeX, G4double sizeY, G4double sizeZ)
IORTDetectorROGeometry * detectorROGeometry
void SetDetectorSize(G4double sizeX, G4double sizeY, G4double sizeZ)
void SetheightDiscoIORT1(G4double height)
void SetinnerRadiusDiscoIORT1(G4double innerr)
static const double deg
static const double cm
Definition: SystemOfUnits.h:98
G4bool SetDiscoMaterialIORT(G4String material)
void SetDiscoYPositionIORT(G4double ypos)
G4bool SetPhantomMaterial(G4String material)
void SetDiscoXPositionIORT1(G4double xpos)
G4VPhysicalVolume * phantomPhysicalVolume
G4VPhysicalVolume * detectorPhysicalVolume
void SetAngleDiscoIORT0(G4double phi0)
void SetPhantomPosition(G4ThreeVector)
void SetinnerRadiusDiscoIORT(G4double innerr)
static IORTAnalysisManager * GetInstance()
void SetheightDiscoIORT(G4double height)
static const double mm
Definition: SystemOfUnits.h:94
void SetOuterRadiusDiscoIORT(G4double outerr)
G4bool SetDiscoMaterialIORT1(G4String material)
void SetDiscoXPositionIORT(G4double xpos)
IORTDetectorMessenger * detectorMessenger
Here is the call graph for this function:

◆ ~IORTDetectorConstruction()

IORTDetectorConstruction::~IORTDetectorConstruction ( )

Definition at line 139 of file IORTDetectorConstruction.cc.

140 {
141  delete detectorROGeometry;
142  delete matrix;
143  delete detectorMessenger;
144 }
IORTDetectorROGeometry * detectorROGeometry
IORTDetectorMessenger * detectorMessenger

Member Function Documentation

◆ ConstructDetector()

void IORTDetectorConstruction::ConstructDetector ( )
private

Definition at line 204 of file IORTDetectorConstruction.cc.

205 {
206 
207  // Definition of the solid volume of the Detector
208  detector = new G4Box("Detector",
209  detectorSizeX/2,
210  detectorSizeY/2,
211  detectorSizeZ/2);
212 
213  // Definition of the logic volume of the Phantom
216  "DetectorLog",
217  0,0,0);
218 // Definition of the physical volume of the Phantom
220  detectorPosition, // Setted by displacement
221  "DetectorPhys",
224  false,0);
225 
226 // Visualisation attributes of the detector
227  //skyBlue = new G4VisAttributes( G4Colour(135/255. , 206/255. , 235/255. ));
228  G4VisAttributes * skyBlue1 = new G4VisAttributes( G4Colour(135/255. , 206/255. , 235/255. ));
229  //skyBlue1 -> SetForceWireframe(true);
230  //skyBlue1 -> SetForceSolid(true);
231  //skyBlue -> SetVisibility(true);
232  //skyBlue -> SetForceSolid(true);
233  //skyBlue -> SetForceWireframe(false);
234  //detectorLogicalVolume -> SetVisAttributes(skyBlue);
235  detectorLogicalVolume -> SetVisAttributes(skyBlue1);
236 
237  // detectorLogicalVolume -> SetVisAttributes(G4VisAttributes::Invisible);
238 
239 
240  // **************
241  // Cut per Region
242  // **************
243 
244  // A smaller cut is fixed in the phantom to calculate the energy deposit with the
245  // required accuracy
246  if (!aRegion)
247  {
248  aRegion = new G4Region("DetectorLog");
249  detectorLogicalVolume -> SetRegion(aRegion);
250  aRegion -> AddRootLogicalVolume(detectorLogicalVolume);
251  }
252 
253 }
Definition: G4Box.hh:64
G4VPhysicalVolume * phantomPhysicalVolume
G4VPhysicalVolume * detectorPhysicalVolume
Here is the caller graph for this function:

◆ ConstructDisc()

void IORTDetectorConstruction::ConstructDisc ( )

Definition at line 255 of file IORTDetectorConstruction.cc.

256 {
257 // ---------------------------------------------------------------//
258  // 6.0 mm Protection Discs Volume //
259  // ---------------------------------------------------------------//
260  const G4double startAngleDiscoIORT0 = 0.*CLHEP::deg;
261  const G4double spanningAngleDiscoIORT0 = 360.*CLHEP::deg;
262 
263  //G4double phi0 = 180. *CLHEP::deg; // messenger
264 
265  // Matrix definition for a rotation (deg).
266  G4RotationMatrix rm0;
268 
269 
270  solidDiscoIORT0 = new G4Tubs("DiscoIORT0", innerRadiusDiscoIORT,
273  startAngleDiscoIORT0,
274  spanningAngleDiscoIORT0);
275 
276  G4LogicalVolume* logDiscoIORT0 = new G4LogicalVolume(solidDiscoIORT0,
277  detectorMaterial, "DiscoIORT0Log", 0, 0, 0);
278 
280  "DiscoIORT0Phys", logDiscoIORT0, detectorPhysicalVolume, false, 0);
281 
282  white = new G4VisAttributes( G4Colour());
283  white -> SetVisibility(true);
284  // white -> SetForceSolid(true);
285  logDiscoIORT0 -> SetVisAttributes(white);
286 
287 // ---------------------------------------------------------------//
288  // 4.0 mm Aluminium Protection Disc //
289  // ---------------------------------------------------------------//
290  //G4bool isotopes = false;
291  // G4Material* leadNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Pb", isotopes);
292  // DiscoMaterialIORT = leadNist; // messenger
293  gray = new G4VisAttributes( G4Colour(0.5, 0.5, 0.5 ));
294  gray-> SetVisibility(true);
295  //gray -> SetForceWireframe(true);
296  //gray-> SetForceSolid(true);
297 
298  gray1 = new G4VisAttributes( G4Colour(0.7, 0.7, 0.7 ));
299  gray1-> SetVisibility(true);
300  //gray1 -> SetForceWireframe(true);
301  //gray1-> SetForceSolid(true);
302  // const G4double OuterRadiusDiscoIORT = 35. *CLHEP::mm; // messenger
303  // const G4double innerRadiusDiscoIORT = 0.*CLHEP::mm; // messenger
304  // const G4double heightDiscoIORT = 3.0*CLHEP::mm; // messenger
305  const G4double startAngleDiscoIORT = 0.*CLHEP::deg;
306  const G4double spanningAngleDiscoIORT = 360.*CLHEP::deg;
307  // const G4double DiscoXPositionIORT = -14.0*CLHEP::mm; // messenger
308 
309 //G4Material* DiscoMaterialIORT = G4NistManager::Instance()->FindOrBuildMaterial("G4_PLEXIGLASS", isotopes);// messenger
310 
311 
312  G4double phi = 0. *CLHEP::deg;
313 
314  // Matrix definition for a 90 deg rotation. Also used for other volumes
315  G4RotationMatrix rm;
316  rm.rotateY(phi);
317 
318 
319  solidDiscoIORT = new G4Tubs("DiscoIORT", innerRadiusDiscoIORT,
322  startAngleDiscoIORT,
323  spanningAngleDiscoIORT);
324 
325  G4LogicalVolume* logDiscoIORT = new G4LogicalVolume(solidDiscoIORT,
326  DiscoMaterialIORT, "DiscoIORTLog", 0, 0, 0);
327 
329  "DiscoIORTPhys", logDiscoIORT, physiDiscoIORT0, false, 0);
330 
331  logDiscoIORT -> SetVisAttributes(gray1);
332 
333 
334  // ---------------------------------------------------------------//
335  // 2.0 mm Lead Protection Disc //
336  // ---------------------------------------------------------------//
337 
338  // const G4double OuterRadiusDiscoIORT1 = 35. *CLHEP::mm;
339  // const G4double innerRadiusDiscoIORT1 = 0.*CLHEP::mm;
340  // const G4double heightDiscoIORT1 = 0.5*CLHEP::mm;
341  const G4double startAngleDiscoIORT1 = 0.*CLHEP::deg;
342  const G4double spanningAngleDiscoIORT1 = 360.*CLHEP::deg;
343 // const G4double DiscoXPositionIORT1 = -10.5*CLHEP::mm; messenger
344 // G4Material* DiscoMaterialIORT1 = G4NistManager::Instance()->FindOrBuildMaterial("G4_Cu", isotopes);// messenger
345 
346 
347 
348  solidDiscoIORT1 = new G4Tubs("DiscoIORT1", innerRadiusDiscoIORT1,
351  startAngleDiscoIORT1,
352  spanningAngleDiscoIORT1);
353 
354  G4LogicalVolume* logDiscoIORT1 = new G4LogicalVolume(solidDiscoIORT1,
355  DiscoMaterialIORT1, "DiscoIORTLog1", 0, 0, 0);
356 
358  "DiscoIORTPhys1", logDiscoIORT1, physiDiscoIORT0, false, 0);
359  white = new G4VisAttributes( G4Colour());
360  white -> SetVisibility(true);
361  white -> SetForceSolid(true);
362  logDiscoIORT1 -> SetVisAttributes(gray);
363 
364 }
CLHEP::Hep3Vector G4ThreeVector
Definition: G4Tubs.hh:85
HepRotation & rotateY(double delta)
Definition: Rotation.cc:79
static const double deg
HepGeom::Transform3D G4Transform3D
G4VPhysicalVolume * detectorPhysicalVolume
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructPhantom()

void IORTDetectorConstruction::ConstructPhantom ( )
private

Definition at line 151 of file IORTDetectorConstruction.cc.

152 {
153  // Definition of the solid volume of the Phantom
154  phantom = new G4Box("Phantom",
155  phantomSizeX/2,
156  phantomSizeY/2,
157  phantomSizeZ/2);
158 
159 // Definition of the logical volume of the Phantom
162  "phantomLog", 0, 0, 0);
163 
164  // Definition of the physics volume of the Phantom
167  "phantomPhys",
169  motherPhys,
170  false,
171  0);
172 
173 // Visualisation attributes of the phantom
174  red = new G4VisAttributes(G4Colour(255/255., 0/255. ,0/255.));
175  red -> SetVisibility(true);
176  //red -> SetForceSolid(true);
177  //red -> SetForceWireframe(true);
178  phantomLogicalVolume -> SetVisAttributes(red);
179  //phantomLogicalVolume -> SetVisAttributes(G4VisAttributes::Invisible);
180 }
Definition: G4Box.hh:64
G4VPhysicalVolume * phantomPhysicalVolume
Here is the caller graph for this function:

◆ ConstructSensitiveDetector()

void IORTDetectorConstruction::ConstructSensitiveDetector ( G4ThreeVector  positionToWORLD)
private

Definition at line 367 of file IORTDetectorConstruction.cc.

368 {
369  // Install new Sensitive Detector and ROGeometry
370  delete detectorROGeometry; // this should be safe in C++ also if we have a NULL pointer
371  //if (detectorSD) detectorSD->PrintAll();
372  //delete detectorSD;
373  // Sensitive Detector and ReadOut geometry definition
374  G4SDManager* sensitiveDetectorManager = G4SDManager::GetSDMpointer();
375 
376  static G4String sensitiveDetectorName = "Detector";
377  if (!detectorSD)
378  {
379  // The sensitive detector is instantiated
380  detectorSD = new IORTDetectorSD(sensitiveDetectorName);
381  }
382  // The Read Out Geometry is instantiated
383  static G4String ROGeometryName = "DetectorROGeometry";
384  detectorROGeometry = new IORTDetectorROGeometry(ROGeometryName,
385  detectorToWorldPosition,
386  detectorSizeX/2, // controllare che sia necessario /2
387  detectorSizeY/2, // CONFERMATO!!! ci vuole!!!
388  detectorSizeZ/2,
392 
393  G4cout << "Instantiating new Read Out Geometry \"" << ROGeometryName << "\""<< G4endl;
394  // This will invoke Build() IORTDetectorROGeometry virtual method
395  detectorROGeometry -> BuildROGeometry();
396  // Attach ROGeometry to SDetector
397  detectorSD -> SetROgeometry(detectorROGeometry);
398  //sensitiveDetectorManager -> Activate(sensitiveDetectorName, true);
399  if (!sensitiveDetectorManager -> FindSensitiveDetector(sensitiveDetectorName, false))
400  {
401  G4cout << "Registering new DetectorSD \"" << sensitiveDetectorName << "\""<< G4endl;
402  // Register user SD
403  sensitiveDetectorManager -> AddNewDetector(detectorSD);
404  // Attach SD to detector logical volume
405  detectorLogicalVolume -> SetSensitiveDetector(detectorSD);
406  }
407 }
IORTDetectorROGeometry * detectorROGeometry
G4GLOB_DLL std::ostream G4cout
static G4SDManager * GetSDMpointer()
Definition: G4SDManager.cc:40
#define G4endl
Definition: G4ios.hh:61
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DeleteDisc()

void IORTDetectorConstruction::DeleteDisc ( )

Definition at line 697 of file IORTDetectorConstruction.cc.

698 {
699  delete solidDiscoIORT0;
700  delete logicDiscoIORT0;
701  delete physiDiscoIORT0;
702  delete solidDiscoIORT;
703  delete logicDiscoIORT;
704  delete physiDiscoIORT;
705  delete solidDiscoIORT1;
706  delete logicDiscoIORT1;
707  delete physiDiscoIORT1;
709  G4RunManager::GetRunManager() -> PhysicsHasBeenModified();
710 }
static G4RunManager * GetRunManager()
Definition: G4RunManager.cc:79
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetDetectorLogicalVolume()

G4LogicalVolume* IORTDetectorConstruction::GetDetectorLogicalVolume ( )
inline

Definition at line 169 of file IORTDetectorConstruction.hh.

169 { return detectorLogicalVolume;}
Here is the call graph for this function:

◆ GetDetectorToPhantomPosition()

G4ThreeVector IORTDetectorConstruction::GetDetectorToPhantomPosition ( )
inline

Definition at line 84 of file IORTDetectorConstruction.hh.

Here is the call graph for this function:

◆ GetDetectorToWorldPosition()

G4ThreeVector IORTDetectorConstruction::GetDetectorToWorldPosition ( )
inline

Definition at line 78 of file IORTDetectorConstruction.hh.

Here is the caller graph for this function:

◆ IsInside()

bool IORTDetectorConstruction::IsInside ( G4double  detectorX,
G4double  detectorY,
G4double  detectorZ,
G4double  phantomX,
G4double  phantomY,
G4double  phantomZ,
G4ThreeVector  detToPhantomPosition 
)
inline

Definition at line 106 of file IORTDetectorConstruction.hh.

113 {
114 // Dimensions check... X Y and Z
115 // Firstly check what dimension we are modifying
116  {
117  if (detectorX > phantomX)
118  {
119  G4cout << "Error: Detector X dimension must be smaller or equal to the corrispondent of the phantom" << G4endl;
120  return false;
121  }
122  if ( (phantomX - detectorX) < detToPhantomPosition.getX())
123  {
124  G4cout << "Error: X dimension doesn't fit with detector to phantom relative position" << G4endl;
125  return false;
126  }
127  }
128 
129  {
130  if (detectorY > phantomY)
131  {
132  G4cout << "Error: Detector Y dimension must be smaller or equal to the corrispondent of the phantom" << G4endl;
133  return false;
134  }
135  if ( (phantomY - detectorY) < detToPhantomPosition.getY())
136  {
137  G4cout << "Error: Y dimension doesn't fit with detector to phantom relative position" << G4endl;
138  return false;
139  }
140  }
141 
142  {
143  if (detectorZ > phantomZ)
144  {
145  G4cout << "Error: Detector Z dimension must be smaller or equal to the corrispondent of the phantom" << G4endl;
146  return false;
147  }
148  if ( (phantomZ - detectorZ) < detToPhantomPosition.getZ())
149  {
150  G4cout << "Error: Z dimension doesn't fit with detector to phantom relative position" << G4endl;
151  return false;
152  }
153  }
154 
155  return true;
156 }
double getY() const
G4GLOB_DLL std::ostream G4cout
double getX() const
double getZ() const
#define G4endl
Definition: G4ios.hh:61
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ParametersCheck()

void IORTDetectorConstruction::ParametersCheck ( )
private

Definition at line 408 of file IORTDetectorConstruction.cc.

409 {
410  // Check phantom/detector sizes & relative position
411  if (!IsInside(detectorSizeX,
412  detectorSizeY,
414  phantomSizeX,
415  phantomSizeY,
416  phantomSizeZ,
418  ))
419  G4Exception("IORTDetectorConstruction::ParametersCheck()", "IORT0001", FatalException, "Error: Detector is not fully inside Phantom!");
420 
421  // Check Detector sizes respect to the voxel ones
422 
424  G4Exception("IORTDetectorConstruction::ParametersCheck()", "IORT0002", FatalException, "Error: Detector X size must be bigger or equal than that of Voxel X");
425  }
427  G4Exception("IORTDetectorConstruction::ParametersCheck()", "IORT0003", FatalException, "Error: Detector X size must be bigger or equal than that of Voxel Y");
428  }
430  G4Exception("IORTDetectorConstruction::ParametersCheck()", "IORT0004", FatalException, "Error: Detector X size must be bigger or equal than that of Voxel Z");
431  }
432 
433 }
bool IsInside(G4double detectorX, G4double detectorY, G4double detectorZ, G4double phantomX, G4double phantomY, G4double phantomZ, G4ThreeVector detToPhantomPosition)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
Here is the call graph for this function:
Here is the caller graph for this function:

◆ PrintParameters()

void IORTDetectorConstruction::PrintParameters ( )

Definition at line 713 of file IORTDetectorConstruction.cc.

714 {
715 
716  G4cout << "The (X,Y,Z) dimensions of the phantom are : (" <<
717  G4BestUnit( phantom -> GetXHalfLength()*2., "Length") << ',' <<
718  G4BestUnit( phantom -> GetYHalfLength()*2., "Length") << ',' <<
719  G4BestUnit( phantom -> GetZHalfLength()*2., "Length") << ')' << G4endl;
720 
721  G4cout << "The (X,Y,Z) dimensions of the detector are : (" <<
722  G4BestUnit( detector -> GetXHalfLength()*2., "Length") << ',' <<
723  G4BestUnit( detector -> GetYHalfLength()*2., "Length") << ',' <<
724  G4BestUnit( detector -> GetZHalfLength()*2., "Length") << ')' << G4endl;
725 
726  G4cout << "Displacement between Phantom and World is: ";
727  G4cout << "DX= "<< G4BestUnit(phantomPosition.getX(),"Length") <<
728  "DY= "<< G4BestUnit(phantomPosition.getY(),"Length") <<
729  "DZ= "<< G4BestUnit(phantomPosition.getZ(),"Length") << G4endl;
730 
731  G4cout << "The (X,Y,Z) sizes of the Voxels are: (" <<
732  G4BestUnit(sizeOfVoxelAlongX, "Length") << ',' <<
733  G4BestUnit(sizeOfVoxelAlongY, "Length") << ',' <<
734  G4BestUnit(sizeOfVoxelAlongZ, "Length") << ')' << G4endl;
735 
736  G4cout << "The number of Voxels along (X,Y,Z) is: (" <<
737  numberOfVoxelsAlongX << ',' <<
738  numberOfVoxelsAlongY <<',' <<
739  numberOfVoxelsAlongZ << ')' << G4endl;
740 
741 }
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
double getY() const
G4GLOB_DLL std::ostream G4cout
double getX() const
double getZ() const
#define G4endl
Definition: G4ios.hh:61
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetAngleDiscoIORT0()

void IORTDetectorConstruction::SetAngleDiscoIORT0 ( G4double  phi0)

Definition at line 618 of file IORTDetectorConstruction.cc.

619 {
620 
621  AngleDiscoIORT0 = phi0;
622 }
Here is the caller graph for this function:

◆ SetDetectorPosition()

void IORTDetectorConstruction::SetDetectorPosition ( )
inline

Definition at line 94 of file IORTDetectorConstruction.hh.

95  {
96  // Adjust detector position
100 
101  //G4cout << "*************** DetectorToPhantomPosition " << detectorToPhantomPosition/cm << "\n";
102  //G4cout << "*************** DetectorPosition " << detectorPosition/cm << "\n";
103  }
void setY(double)
void setZ(double)
void setX(double)
double getY() const
double getX() const
double getZ() const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetDetectorSize()

void IORTDetectorConstruction::SetDetectorSize ( G4double  sizeX,
G4double  sizeY,
G4double  sizeZ 
)

Definition at line 528 of file IORTDetectorConstruction.cc.

529 {
530  if (sizeX > 0.) {detectorSizeX = sizeX;}
531  if (sizeY > 0.) {detectorSizeY = sizeY;}
532  if (sizeZ > 0.) {detectorSizeZ = sizeZ;}
534 }
void SetVoxelSize(G4double sizeX, G4double sizeY, G4double sizeZ)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetDetectorToPhantomPosition()

void IORTDetectorConstruction::SetDetectorToPhantomPosition ( G4ThreeVector  DetectorToPhantomPosition)

Definition at line 549 of file IORTDetectorConstruction.cc.

550 {
552 }
Here is the caller graph for this function:

◆ SetDiscoMaterialIORT()

G4bool IORTDetectorConstruction::SetDiscoMaterialIORT ( G4String  material)

Definition at line 466 of file IORTDetectorConstruction.cc.

467 {
468 
469  if (G4Material* dMat = G4NistManager::Instance()->FindOrBuildMaterial(material, false) )
470  {
471  DiscoMaterialIORT = dMat;
472 
473  if (logicDiscoIORT)
474  {
475  logicDiscoIORT -> SetMaterial(dMat);
476 
477  G4RunManager::GetRunManager() -> PhysicsHasBeenModified();
479  G4cout << "The material of Protection disc 1 has been changed to " << material << G4endl;
480  }
481  }
482  else
483  {
484  G4cout << "WARNING: material \"" << material << "\" doesn't exist in NIST elements/materials"
485  " table [located in $G4INSTALL/source/materials/src/G4NistMaterialBuilder.cc]" << G4endl;
486  G4cout << "Use command \"/parameter/nist\" to see full materials list!" << G4endl;
487  return false;
488  }
489 
490  return true;
491 }
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
static G4RunManager * GetRunManager()
Definition: G4RunManager.cc:79
#define G4endl
Definition: G4ios.hh:61
def SetMaterial(material_name)
Definition: EmPlot.py:25
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetDiscoMaterialIORT1()

G4bool IORTDetectorConstruction::SetDiscoMaterialIORT1 ( G4String  material)

Definition at line 493 of file IORTDetectorConstruction.cc.

494 {
495 
496  if (G4Material* d1Mat = G4NistManager::Instance()->FindOrBuildMaterial(material, false) )
497  {
498  DiscoMaterialIORT1 = d1Mat;
499 
500  if (logicDiscoIORT1)
501  {
502  logicDiscoIORT1 -> SetMaterial(d1Mat);
503 
504  G4RunManager::GetRunManager() -> PhysicsHasBeenModified();
506  G4cout << "The material of Protection disc 2 has been changed to " << material << G4endl;
507  }
508  }
509  else
510  {
511  G4cout << "WARNING: material \"" << material << "\" doesn't exist in NIST elements/materials"
512  " table [located in $G4INSTALL/source/materials/src/G4NistMaterialBuilder.cc]" << G4endl;
513  G4cout << "Use command \"/parameter/nist\" to see full materials list!" << G4endl;
514  return false;
515  }
516 
517  return true;
518 }
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
static G4RunManager * GetRunManager()
Definition: G4RunManager.cc:79
#define G4endl
Definition: G4ios.hh:61
def SetMaterial(material_name)
Definition: EmPlot.py:25
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetDiscoXPositionIORT()

void IORTDetectorConstruction::SetDiscoXPositionIORT ( G4double  xpos)

Definition at line 573 of file IORTDetectorConstruction.cc.

574 {
575 
576  DiscoXPositionIORT = xpos;
577 
578 }
Here is the caller graph for this function:

◆ SetDiscoXPositionIORT1()

void IORTDetectorConstruction::SetDiscoXPositionIORT1 ( G4double  xpos)

Definition at line 612 of file IORTDetectorConstruction.cc.

613 {
614 
615  DiscoXPositionIORT1 = xpos;
616 }
Here is the caller graph for this function:

◆ SetDiscoYPositionIORT()

void IORTDetectorConstruction::SetDiscoYPositionIORT ( G4double  ypos)

Definition at line 580 of file IORTDetectorConstruction.cc.

581 {
582 
583  DiscoYPositionIORT = ypos;
584 
585 }
Here is the caller graph for this function:

◆ SetDiscoZPositionIORT()

void IORTDetectorConstruction::SetDiscoZPositionIORT ( G4double  zpos)

Definition at line 587 of file IORTDetectorConstruction.cc.

588 {
589 
590  DiscoZPositionIORT = zpos;
591 
592 }
Here is the caller graph for this function:

◆ SetheightDiscoIORT()

void IORTDetectorConstruction::SetheightDiscoIORT ( G4double  height)

Definition at line 567 of file IORTDetectorConstruction.cc.

568 {
569  if (height > 0.) {heightDiscoIORT = height;}
570 
571 }
Here is the caller graph for this function:

◆ SetheightDiscoIORT1()

void IORTDetectorConstruction::SetheightDiscoIORT1 ( G4double  height)

Definition at line 606 of file IORTDetectorConstruction.cc.

607 {
608  if (height > 0.) {heightDiscoIORT1 = height;}
609 
610 }
Here is the caller graph for this function:

◆ SetinnerRadiusDiscoIORT()

void IORTDetectorConstruction::SetinnerRadiusDiscoIORT ( G4double  innerr)

Definition at line 561 of file IORTDetectorConstruction.cc.

562 {
563  if (innerr > 0.) {innerRadiusDiscoIORT = innerr;}
564 
565 }
Here is the caller graph for this function:

◆ SetinnerRadiusDiscoIORT1()

void IORTDetectorConstruction::SetinnerRadiusDiscoIORT1 ( G4double  innerr)

Definition at line 600 of file IORTDetectorConstruction.cc.

601 {
602  if (innerr > 0.) {innerRadiusDiscoIORT1 = innerr;}
603 
604 }
Here is the caller graph for this function:

◆ SetOuterRadiusDiscoIORT()

void IORTDetectorConstruction::SetOuterRadiusDiscoIORT ( G4double  outerr)

Definition at line 555 of file IORTDetectorConstruction.cc.

556 {
557  if (outerr > 0.) {OuterRadiusDiscoIORT = outerr;}
558 
559 }
Here is the caller graph for this function:

◆ SetOuterRadiusDiscoIORT1()

void IORTDetectorConstruction::SetOuterRadiusDiscoIORT1 ( G4double  outerr)

Definition at line 594 of file IORTDetectorConstruction.cc.

595 {
596  if (outerr > 0.) {OuterRadiusDiscoIORT1 = outerr;}
597 
598 }
Here is the caller graph for this function:

◆ SetPhantomMaterial()

G4bool IORTDetectorConstruction::SetPhantomMaterial ( G4String  material)

Definition at line 438 of file IORTDetectorConstruction.cc.

439 {
440 
441  if (G4Material* pMat = G4NistManager::Instance()->FindOrBuildMaterial(material, false) )
442  {
443  phantomMaterial = pMat;
444  detectorMaterial = pMat;
446  {
449 
450  G4RunManager::GetRunManager() -> PhysicsHasBeenModified();
452  G4cout << "The material of Phantom/Detector has been changed to " << material << G4endl;
453  }
454  }
455  else
456  {
457  G4cout << "WARNING: material \"" << material << "\" doesn't exist in NIST elements/materials"
458  " table [located in $G4INSTALL/source/materials/src/G4NistMaterialBuilder.cc]" << G4endl;
459  G4cout << "Use command \"/parameter/nist\" to see full materials list!" << G4endl;
460  return false;
461  }
462 
463  return true;
464 }
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
static G4RunManager * GetRunManager()
Definition: G4RunManager.cc:79
#define G4endl
Definition: G4ios.hh:61
def SetMaterial(material_name)
Definition: EmPlot.py:25
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetPhantomPosition()

void IORTDetectorConstruction::SetPhantomPosition ( G4ThreeVector  pos)

Definition at line 543 of file IORTDetectorConstruction.cc.

544 {
546 }
static const G4double pos
Here is the caller graph for this function:

◆ SetPhantomSize()

void IORTDetectorConstruction::SetPhantomSize ( G4double  sizeX,
G4double  sizeY,
G4double  sizeZ 
)

Definition at line 520 of file IORTDetectorConstruction.cc.

521 {
522  if (sizeX > 0.) phantomSizeX = sizeX;
523  if (sizeY > 0.) phantomSizeY = sizeY;
524  if (sizeZ > 0.) phantomSizeZ = sizeZ;
525 }
Here is the caller graph for this function:

◆ SetVoxelSize()

void IORTDetectorConstruction::SetVoxelSize ( G4double  sizeX,
G4double  sizeY,
G4double  sizeZ 
)

Definition at line 537 of file IORTDetectorConstruction.cc.

538 {
539  if (sizeX > 0.) {sizeOfVoxelAlongX = sizeX;}
540  if (sizeY > 0.) {sizeOfVoxelAlongY = sizeY;}
541  if (sizeZ > 0.) {sizeOfVoxelAlongZ = sizeZ;}
542 }
Here is the caller graph for this function:

◆ UpdateGeometry()

void IORTDetectorConstruction::UpdateGeometry ( )

Definition at line 628 of file IORTDetectorConstruction.cc.

629 {
630  /*
631  * Check parameters consistency
632  */
633  ParametersCheck();
634 
635  G4GeometryManager::GetInstance() -> OpenGeometry();
636  if (phantom)
637  {
638  phantom -> SetXHalfLength(phantomSizeX/2);
639  phantom -> SetYHalfLength(phantomSizeY/2);
640  phantom -> SetZHalfLength(phantomSizeZ/2);
641  phantomPhysicalVolume -> SetTranslation(phantomPosition);
642  }
643  else ConstructPhantom();
644 
645  // Get the center of the detector
647  if (detector)
648  {
649  detector -> SetXHalfLength(detectorSizeX/2);
650  detector -> SetYHalfLength(detectorSizeY/2);
651  detector -> SetZHalfLength(detectorSizeZ/2);
652  detectorPhysicalVolume -> SetTranslation(detectorPosition);
653  }
654  else ConstructDetector();
655 
656  // update disc function
657  delete solidDiscoIORT0;
658  delete logicDiscoIORT0;
659  delete physiDiscoIORT0;
660  delete solidDiscoIORT;
661  delete logicDiscoIORT;
662  delete physiDiscoIORT;
663  delete solidDiscoIORT1;
664  delete logicDiscoIORT1;
665  delete physiDiscoIORT1;
666  ConstructDisc();
667 
668 
669  // Round to nearest integer number of voxel
672 
675 
678 
679  //G4cout << "*************** DetectorToWorldPosition " << GetDetectorToWorldPosition()/cm << "\n";
681 
683  massOfVoxel = detectorMaterial -> GetDensity() * volumeOfVoxel;
684  // This will clear the existing matrix (together with all data inside it)!
688  massOfVoxel);
689 
690  // Inform the kernel about the new geometry
692  G4RunManager::GetRunManager() -> PhysicsHasBeenModified();
693 
694  PrintParameters();
695 }
void ConstructSensitiveDetector(G4ThreeVector positionToWORLD)
G4VPhysicalVolume * phantomPhysicalVolume
G4VPhysicalVolume * detectorPhysicalVolume
static G4GeometryManager * GetInstance()
static G4RunManager * GetRunManager()
Definition: G4RunManager.cc:79
int G4lrint(double ad)
Definition: templates.hh:163
static IORTMatrix * GetInstance()
Definition: IORTMatrix.cc:61
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ AngleDiscoIORT0

G4double IORTDetectorConstruction::AngleDiscoIORT0
private

Definition at line 232 of file IORTDetectorConstruction.hh.

◆ aRegion

G4Region* IORTDetectorConstruction::aRegion
private

Definition at line 224 of file IORTDetectorConstruction.hh.

◆ detector

G4Box * IORTDetectorConstruction::detector
private

Definition at line 199 of file IORTDetectorConstruction.hh.

◆ detectorLogicalVolume

G4LogicalVolume * IORTDetectorConstruction::detectorLogicalVolume
private

Definition at line 200 of file IORTDetectorConstruction.hh.

◆ detectorMaterial

G4Material * IORTDetectorConstruction::detectorMaterial
private

Definition at line 223 of file IORTDetectorConstruction.hh.

◆ detectorMessenger

IORTDetectorMessenger* IORTDetectorConstruction::detectorMessenger
private

Definition at line 189 of file IORTDetectorConstruction.hh.

◆ detectorPhysicalVolume

G4VPhysicalVolume * IORTDetectorConstruction::detectorPhysicalVolume
private

Definition at line 201 of file IORTDetectorConstruction.hh.

◆ detectorPosition

G4ThreeVector IORTDetectorConstruction::detectorPosition
private

Definition at line 211 of file IORTDetectorConstruction.hh.

◆ detectorROGeometry

IORTDetectorROGeometry* IORTDetectorConstruction::detectorROGeometry
private

Definition at line 196 of file IORTDetectorConstruction.hh.

◆ detectorSD

IORTDetectorSD* IORTDetectorConstruction::detectorSD
private

Definition at line 195 of file IORTDetectorConstruction.hh.

◆ detectorSizeX

G4double IORTDetectorConstruction::detectorSizeX
private

Definition at line 207 of file IORTDetectorConstruction.hh.

◆ detectorSizeY

G4double IORTDetectorConstruction::detectorSizeY
private

Definition at line 208 of file IORTDetectorConstruction.hh.

◆ detectorSizeZ

G4double IORTDetectorConstruction::detectorSizeZ
private

Definition at line 209 of file IORTDetectorConstruction.hh.

◆ detectorToPhantomPosition

G4ThreeVector IORTDetectorConstruction::detectorToPhantomPosition
private

Definition at line 211 of file IORTDetectorConstruction.hh.

◆ DiscoMaterialIORT

G4Material* IORTDetectorConstruction::DiscoMaterialIORT
private

Definition at line 247 of file IORTDetectorConstruction.hh.

◆ DiscoMaterialIORT1

G4Material* IORTDetectorConstruction::DiscoMaterialIORT1
private

Definition at line 259 of file IORTDetectorConstruction.hh.

◆ DiscoXPositionIORT

G4double IORTDetectorConstruction::DiscoXPositionIORT
private

Definition at line 241 of file IORTDetectorConstruction.hh.

◆ DiscoXPositionIORT1

G4double IORTDetectorConstruction::DiscoXPositionIORT1
private

Definition at line 255 of file IORTDetectorConstruction.hh.

◆ DiscoYPositionIORT

G4double IORTDetectorConstruction::DiscoYPositionIORT
private

Definition at line 242 of file IORTDetectorConstruction.hh.

◆ DiscoZPositionIORT

G4double IORTDetectorConstruction::DiscoZPositionIORT
private

Definition at line 243 of file IORTDetectorConstruction.hh.

◆ gray

G4VisAttributes* IORTDetectorConstruction::gray
private

Definition at line 236 of file IORTDetectorConstruction.hh.

◆ gray1

G4VisAttributes* IORTDetectorConstruction::gray1
private

Definition at line 237 of file IORTDetectorConstruction.hh.

◆ heightDiscoIORT

G4double IORTDetectorConstruction::heightDiscoIORT
private

Definition at line 240 of file IORTDetectorConstruction.hh.

◆ heightDiscoIORT1

G4double IORTDetectorConstruction::heightDiscoIORT1
private

Definition at line 254 of file IORTDetectorConstruction.hh.

◆ innerRadiusDiscoIORT

G4double IORTDetectorConstruction::innerRadiusDiscoIORT
private

Definition at line 238 of file IORTDetectorConstruction.hh.

◆ innerRadiusDiscoIORT1

G4double IORTDetectorConstruction::innerRadiusDiscoIORT1
private

Definition at line 252 of file IORTDetectorConstruction.hh.

◆ logicDiscoIORT

G4LogicalVolume* IORTDetectorConstruction::logicDiscoIORT
private

Definition at line 245 of file IORTDetectorConstruction.hh.

◆ logicDiscoIORT0

G4LogicalVolume* IORTDetectorConstruction::logicDiscoIORT0
private

Definition at line 230 of file IORTDetectorConstruction.hh.

◆ logicDiscoIORT1

G4LogicalVolume* IORTDetectorConstruction::logicDiscoIORT1
private

Definition at line 257 of file IORTDetectorConstruction.hh.

◆ massOfVoxel

G4double IORTDetectorConstruction::massOfVoxel
private

Definition at line 221 of file IORTDetectorConstruction.hh.

◆ matrix

IORTMatrix* IORTDetectorConstruction::matrix
private

Definition at line 197 of file IORTDetectorConstruction.hh.

◆ motherPhys

G4VPhysicalVolume* IORTDetectorConstruction::motherPhys
private

Definition at line 193 of file IORTDetectorConstruction.hh.

◆ numberOfVoxelsAlongX

G4int IORTDetectorConstruction::numberOfVoxelsAlongX
private

Definition at line 217 of file IORTDetectorConstruction.hh.

◆ numberOfVoxelsAlongY

G4int IORTDetectorConstruction::numberOfVoxelsAlongY
private

Definition at line 218 of file IORTDetectorConstruction.hh.

◆ numberOfVoxelsAlongZ

G4int IORTDetectorConstruction::numberOfVoxelsAlongZ
private

Definition at line 219 of file IORTDetectorConstruction.hh.

◆ OuterRadiusDiscoIORT

G4double IORTDetectorConstruction::OuterRadiusDiscoIORT
private

Definition at line 239 of file IORTDetectorConstruction.hh.

◆ OuterRadiusDiscoIORT1

G4double IORTDetectorConstruction::OuterRadiusDiscoIORT1
private

Definition at line 253 of file IORTDetectorConstruction.hh.

◆ phantom

G4Box* IORTDetectorConstruction::phantom
private

Definition at line 199 of file IORTDetectorConstruction.hh.

◆ phantomLogicalVolume

G4LogicalVolume* IORTDetectorConstruction::phantomLogicalVolume
private

Definition at line 200 of file IORTDetectorConstruction.hh.

◆ phantomMaterial

G4Material* IORTDetectorConstruction::phantomMaterial
private

Definition at line 223 of file IORTDetectorConstruction.hh.

◆ phantomPhysicalVolume

G4VPhysicalVolume* IORTDetectorConstruction::phantomPhysicalVolume
private

Definition at line 201 of file IORTDetectorConstruction.hh.

◆ phantomPosition

G4ThreeVector IORTDetectorConstruction::phantomPosition
private

Definition at line 211 of file IORTDetectorConstruction.hh.

◆ phantomSizeX

G4double IORTDetectorConstruction::phantomSizeX
private

Definition at line 203 of file IORTDetectorConstruction.hh.

◆ phantomSizeY

G4double IORTDetectorConstruction::phantomSizeY
private

Definition at line 204 of file IORTDetectorConstruction.hh.

◆ phantomSizeZ

G4double IORTDetectorConstruction::phantomSizeZ
private

Definition at line 205 of file IORTDetectorConstruction.hh.

◆ physiDiscoIORT

G4VPhysicalVolume* IORTDetectorConstruction::physiDiscoIORT
private

Definition at line 246 of file IORTDetectorConstruction.hh.

◆ physiDiscoIORT0

G4VPhysicalVolume* IORTDetectorConstruction::physiDiscoIORT0
private

Definition at line 231 of file IORTDetectorConstruction.hh.

◆ physiDiscoIORT1

G4VPhysicalVolume* IORTDetectorConstruction::physiDiscoIORT1
private

Definition at line 258 of file IORTDetectorConstruction.hh.

◆ red

G4VisAttributes* IORTDetectorConstruction::red
private

Definition at line 191 of file IORTDetectorConstruction.hh.

◆ sizeOfVoxelAlongX

G4double IORTDetectorConstruction::sizeOfVoxelAlongX
private

Definition at line 213 of file IORTDetectorConstruction.hh.

◆ sizeOfVoxelAlongY

G4double IORTDetectorConstruction::sizeOfVoxelAlongY
private

Definition at line 214 of file IORTDetectorConstruction.hh.

◆ sizeOfVoxelAlongZ

G4double IORTDetectorConstruction::sizeOfVoxelAlongZ
private

Definition at line 215 of file IORTDetectorConstruction.hh.

◆ solidDiscoIORT

G4Tubs* IORTDetectorConstruction::solidDiscoIORT
private

Definition at line 244 of file IORTDetectorConstruction.hh.

◆ solidDiscoIORT0

G4Tubs* IORTDetectorConstruction::solidDiscoIORT0
private

Definition at line 229 of file IORTDetectorConstruction.hh.

◆ solidDiscoIORT1

G4Tubs* IORTDetectorConstruction::solidDiscoIORT1
private

Definition at line 256 of file IORTDetectorConstruction.hh.

◆ volumeOfVoxel

G4double IORTDetectorConstruction::volumeOfVoxel
private

Definition at line 221 of file IORTDetectorConstruction.hh.

◆ white

G4VisAttributes* IORTDetectorConstruction::white
private

Definition at line 235 of file IORTDetectorConstruction.hh.


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