72 : motherPhys(physicalTreatmentRoom),
73 detectorSD(0), detectorROGeometry(0), matrix(0),
74 phantom(0), detector(0),
75 phantomLogicalVolume(0), detectorLogicalVolume(0),
76 phantomPhysicalVolume(0), detectorPhysicalVolume(0),
162 "phantomLog", 0, 0, 0);
175 red -> SetVisibility(
true);
273 startAngleDiscoIORT0,
274 spanningAngleDiscoIORT0);
283 white -> SetVisibility(
true);
285 logDiscoIORT0 -> SetVisAttributes(
white);
294 gray-> SetVisibility(
true);
299 gray1-> SetVisibility(
true);
323 spanningAngleDiscoIORT);
331 logDiscoIORT -> SetVisAttributes(
gray1);
351 startAngleDiscoIORT1,
352 spanningAngleDiscoIORT1);
360 white -> SetVisibility(
true);
361 white -> SetForceSolid(
true);
362 logDiscoIORT1 -> SetVisAttributes(
gray);
376 static G4String sensitiveDetectorName =
"Detector";
383 static G4String ROGeometryName =
"DetectorROGeometry";
385 detectorToWorldPosition,
393 G4cout <<
"Instantiating new Read Out Geometry \"" << ROGeometryName <<
"\""<<
G4endl;
399 if (!sensitiveDetectorManager -> FindSensitiveDetector(sensitiveDetectorName,
false))
401 G4cout <<
"Registering new DetectorSD \"" << sensitiveDetectorName <<
"\""<<
G4endl;
403 sensitiveDetectorManager -> AddNewDetector(
detectorSD);
419 G4Exception(
"IORTDetectorConstruction::ParametersCheck()",
"IORT0001",
FatalException,
"Error: Detector is not fully inside Phantom!");
424 G4Exception(
"IORTDetectorConstruction::ParametersCheck()",
"IORT0002",
FatalException,
"Error: Detector X size must be bigger or equal than that of Voxel X");
427 G4Exception(
"IORTDetectorConstruction::ParametersCheck()",
"IORT0003",
FatalException,
"Error: Detector X size must be bigger or equal than that of Voxel Y");
430 G4Exception(
"IORTDetectorConstruction::ParametersCheck()",
"IORT0004",
FatalException,
"Error: Detector X size must be bigger or equal than that of Voxel Z");
452 G4cout <<
"The material of Phantom/Detector has been changed to " << material <<
G4endl;
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;
479 G4cout <<
"The material of Protection disc 1 has been changed to " << material <<
G4endl;
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;
506 G4cout <<
"The material of Protection disc 2 has been changed to " << material <<
G4endl;
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;
716 G4cout <<
"The (X,Y,Z) dimensions of the phantom are : (" <<
721 G4cout <<
"The (X,Y,Z) dimensions of the detector are : (" <<
726 G4cout <<
"Displacement between Phantom and World is: ";
731 G4cout <<
"The (X,Y,Z) sizes of the Voxels are: (" <<
736 G4cout <<
"The number of Voxels along (X,Y,Z) is: (" <<
void ConstructSensitiveDetector(G4ThreeVector positionToWORLD)
static G4RunManager * GetRunManager()
G4ThreeVector phantomPosition
G4int numberOfVoxelsAlongX
void SetDiscoXPositionIORT(G4double xpos)
G4Material * DiscoMaterialIORT
CLHEP::Hep3Vector G4ThreeVector
static const G4double pos
void SetheightDiscoIORT1(G4double height)
bool IsInside(G4double detectorX, G4double detectorY, G4double detectorZ, G4double phantomX, G4double phantomY, G4double phantomZ, G4ThreeVector detToPhantomPosition)
void SetDetectorToPhantomPosition(G4ThreeVector DetectorToPhantomPosition)
G4double DiscoYPositionIORT
G4ThreeVector GetDetectorToWorldPosition()
void SetPhantomSize(G4double sizeX, G4double sizeY, G4double sizeZ)
IORTDetectorConstruction(G4VPhysicalVolume *)
G4LogicalVolume * phantomLogicalVolume
G4LogicalVolume * logicDiscoIORT
G4VPhysicalVolume * physiDiscoIORT0
IORTDetectorMessenger * detectorMessenger
G4double innerRadiusDiscoIORT1
G4double sizeOfVoxelAlongY
G4int numberOfVoxelsAlongZ
G4ThreeVector detectorPosition
void SetOuterRadiusDiscoIORT1(G4double outerr)
static IORTMatrix * GetInstance()
G4bool SetPhantomMaterial(G4String material)
G4VPhysicalVolume * detectorPhysicalVolume
G4double OuterRadiusDiscoIORT
G4double innerRadiusDiscoIORT
static constexpr double cm
G4bool SetDiscoMaterialIORT1(G4String material)
G4LogicalVolume * detectorLogicalVolume
G4Material * phantomMaterial
void SetVoxelSize(G4double sizeX, G4double sizeY, G4double sizeZ)
G4VPhysicalVolume * motherPhys
IORTDetectorROGeometry * detectorROGeometry
void SetPhantomPosition(G4ThreeVector)
G4double DiscoZPositionIORT
static G4GeometryManager * GetInstance()
G4double sizeOfVoxelAlongX
void SetinnerRadiusDiscoIORT(G4double innerr)
G4double heightDiscoIORT1
void SetDetectorPosition()
void SetheightDiscoIORT(G4double height)
void SetDetectorSize(G4double sizeX, G4double sizeY, G4double sizeZ)
G4double DiscoXPositionIORT
G4VPhysicalVolume * physiDiscoIORT1
void SetinnerRadiusDiscoIORT1(G4double innerr)
G4VPhysicalVolume * phantomPhysicalVolume
G4LogicalVolume * logicDiscoIORT0
void SetAngleDiscoIORT0(G4double phi0)
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
static G4SDManager * GetSDMpointer()
HepRotation & rotateY(double delta)
void SetDiscoXPositionIORT1(G4double xpos)
G4double sizeOfVoxelAlongZ
G4double OuterRadiusDiscoIORT1
static IORTAnalysisManager * GetInstance()
static constexpr double mm
void SetOuterRadiusDiscoIORT(G4double outerr)
G4ThreeVector detectorToPhantomPosition
G4GLOB_DLL std::ostream G4cout
static constexpr double deg
IORTDetectorSD * detectorSD
G4bool SetDiscoMaterialIORT(G4String material)
G4Material * detectorMaterial
G4Material * DiscoMaterialIORT1
void SetDiscoYPositionIORT(G4double ypos)
G4LogicalVolume * logicDiscoIORT1
G4double DiscoXPositionIORT1
~IORTDetectorConstruction()
void SetDiscoZPositionIORT(G4double zpos)
G4VPhysicalVolume * physiDiscoIORT
G4int numberOfVoxelsAlongY
static G4NistManager * Instance()