61 physicalTreatmentRoom(0),iortDetectorConstruction(0),
65 solidFinalCollimatorIORT(0),
66 physiFinalCollimatorIORT(0),
68 solidGiunz3FinalCollIORT(0),
69 physiGiunz3FinalCollIORT(0),
71 solidGiunz3FinalCollIntIORT(0),
72 physiGiunz3FinalCollIntIORT(0),
74 solidGiunz4FinalCollIORT(0),
75 physiGiunz4FinalCollIORT(0),
77 solidGiunz5FinalCollIORT(0),
78 physiGiunz5FinalCollIORT(0),
89 solidBlocco20mmIORT(0),
90 physiBlocco20mmIORT(0),
128 delete collimatorMessenger;
129 delete iortDetectorConstruction;
138 SetDefaultDimensions();
141 ConstructCollimator50BeamLine();
146 return physicalTreatmentRoom;
159 void Collimator50BeamLine::SetDefaultDimensions()
164 white -> SetVisibility(
true);
168 blue -> SetVisibility(
true);
172 gray-> SetVisibility(
true);
176 red-> SetVisibility(
true);
180 yellow-> SetVisibility(
true);
184 green -> SetVisibility(
true);
188 darkGreen -> SetVisibility(
true);
192 darkOrange3 -> SetVisibility(
true);
196 skyBlue -> SetVisibility(
true);
203 G4double defaultOuterRadiusFinalCollimatorIORT = 30. *
mm;
204 OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
206 G4double defaultinnerRadiusFinalCollimatorIORT = 25. *
mm;
207 innerRadiusFinalCollimatorIORT = defaultinnerRadiusFinalCollimatorIORT;
236 brass -> AddElement(zincNist, fractionmass = 30 *
perCent);
237 brass -> AddElement(copperNist, fractionmass = 70 *
perCent);
244 finalCollimatorMaterialIORT = PMMANist;
247 Giunz1FinalCollMaterialIORT = PMMANist;
250 Giunz2FinalCollMaterialIORT = PMMANist;
253 Giunz3FinalCollMaterialIORT = PMMANist;
256 Giunz3FinalCollMaterialIntIORT = airNist;
259 Giunz4FinalCollMaterialIORT = PMMANist;
262 Giunz5FinalCollMaterialIORT = PMMANist;
265 Blocco1IORTMaterialIORT = PMMANist;
268 Blocco2IORTMaterialIORT = PMMANist;
271 Blocco3IORTMaterialIORT = PMMANist;
274 Blocco20mmIORTMaterialIORT = PMMANist;
277 CM1_1_2IORTMaterialIORT = aluminumNist;
280 CM1_2_2IORTMaterialIORT = aluminumNist;
283 CM2_1_2IORTMaterialIORT = aluminumNist;
286 CM2_2_2IORTMaterialIORT = aluminumNist;
289 CCMIORTMaterialIORT = PMMANist;
292 PFS1IORTMaterialIORT = PMMANist;
295 PFS2IORTMaterialIORT = PMMANist;
298 PFS3IORTMaterialIORT = PMMANist;
301 FTIORTMaterialIORT = titanioNist;
304 VSIORTMaterialIORT = galacticNist;
309 void Collimator50BeamLine::ConstructCollimator50BeamLine()
321 G4Box* treatmentRoom =
new G4Box(
"TreatmentRoom",worldX,worldY,worldZ);
324 "logicTreatmentRoom",
328 "physicalTreatmentRoom",
366 const G4double XPositionVSIORT = -862.797 *
mm;
368 solidVSIORT =
new G4Tubs(
"VSIORT", innRadiusVSIORT,
372 spanningAngleVSIORT);
375 VSIORTMaterialIORT,
"VSIORT", 0, 0, 0);
378 "VSIORT", logVSIORT, physicalTreatmentRoom,
false, 0);
380 logVSIORT -> SetVisAttributes(green);
402 const G4double XPositionFTIORT = -861.791 *
mm;
404 solidFTIORT =
new G4Tubs(
"FTIORT", innRadiusFTIORT,
408 spanningAngleFTIORT);
411 FTIORTMaterialIORT,
"FTIORT", 0, 0, 0);
414 "FTIORT", logFTIORT, physicalTreatmentRoom,
false, 0);
416 logFTIORT -> SetVisAttributes(yellow);
443 const G4double XPositionPFS3IORT = -848.755 *
mm;
445 solidPFS3IORT =
new G4Tubs(
"PFS3IORT", innRadiusPFS3IORT,
449 spanningAnglePFS3IORT);
452 PFS3IORTMaterialIORT,
"PFS3IORT", 0, 0, 0);
455 "PFS3IORT", logPFS3IORT, physicalTreatmentRoom,
false, 0);
457 logPFS3IORT -> SetVisAttributes(white);
469 const G4double XPositionPFS2IORT = -844.255 *
mm;
471 solidPFS2IORT =
new G4Tubs(
"PFS2IORT", innRadiusPFS2IORT,
475 spanningAnglePFS2IORT);
478 PFS2IORTMaterialIORT,
"PFS2IORT", 0, 0, 0);
481 "PFS2IORT", logPFS2IORT, physicalTreatmentRoom,
false, 0);
483 logPFS2IORT -> SetVisAttributes(green);
494 const G4double XPositionPFS1IORT = -841.905 *
mm;
496 solidPFS1IORT =
new G4Tubs(
"PFS1IORT", innRadiusPFS1IORT,
500 spanningAnglePFS1IORT);
503 PFS1IORTMaterialIORT,
"PFS1IORT", 0, 0, 0);
506 "PFS1IORT", logPFS1IORT, physicalTreatmentRoom,
false, 0);
508 logPFS1IORT -> SetVisAttributes(green);
519 const G4double XPositionCCMIORT = -837.0125 *
mm;
521 solidCCMIORT =
new G4Tubs(
"CCMIORT", innRadiusCCMIORT,
525 spanningAngleCCMIORT);
528 CCMIORTMaterialIORT,
"CCMIORT", 0, 0, 0);
531 "CCMIORT", logCCMIORT, physicalTreatmentRoom,
false, 0);
533 logCCMIORT -> SetVisAttributes(green);
540 const G4double outRadiusCM2_2_2IORT = 20. *
mm;
544 const G4double spanningAngleCM2_2_2IORT = 360.*
deg;
545 const G4double XPositionCM2_2_2IORT = -841. *
mm;
547 solidCM2_2_2IORT =
new G4Tubs(
"CM2_2_2IORT", innRadiusCM2_2_2IORT,
548 outRadiusCM2_2_2IORT,
550 startAngleCM2_2_2IORT,
551 spanningAngleCM2_2_2IORT);
554 CM2_2_2IORTMaterialIORT,
"CM2_2_2IORT", 0, 0, 0);
557 "CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom,
false, 0);
559 logCM2_2_2IORT -> SetVisAttributes(green);
566 const G4double outRadiusCM2_1_2IORT = 20. *
mm;
570 const G4double spanningAngleCM2_1_2IORT = 360.*
deg;
571 const G4double XPositionCM2_1_2IORT = -839. *
mm;
573 solidCM2_1_2IORT =
new G4Tubs(
"CM2_1_2IORT", innRadiusCM2_1_2IORT,
574 outRadiusCM2_1_2IORT,
576 startAngleCM2_1_2IORT,
577 spanningAngleCM2_1_2IORT);
580 CM2_1_2IORTMaterialIORT,
"CM2_1_2IORT", 0, 0, 0);
583 "CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom,
false, 0);
585 logCM2_1_2IORT -> SetVisAttributes(yellow);
591 const G4double outRadiusCM1_2_2IORT = 20. *
mm;
595 const G4double spanningAngleCM1_2_2IORT = 360.*
deg;
596 const G4double XPositionCM1_2_2IORT = -837. *
mm;
598 solidCM1_2_2IORT =
new G4Tubs(
"CM1_2_2IORT", innRadiusCM1_2_2IORT,
599 outRadiusCM1_2_2IORT,
601 startAngleCM1_2_2IORT,
602 spanningAngleCM1_2_2IORT);
605 CM1_2_2IORTMaterialIORT,
"CM1_2_2IORT", 0, 0, 0);
608 "CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom,
false, 0);
610 logCM1_2_2IORT -> SetVisAttributes(yellow);
616 const G4double outRadiusCM1_1_2IORT = 20. *
mm;
620 const G4double spanningAngleCM1_1_2IORT = 360.*
deg;
621 const G4double XPositionCM1_1_2IORT = -835. *
mm;
623 solidCM1_1_2IORT =
new G4Tubs(
"CM1_1_2IORT", innRadiusCM1_1_2IORT,
624 outRadiusCM1_1_2IORT,
626 startAngleCM1_1_2IORT,
627 spanningAngleCM1_1_2IORT);
630 CM1_1_2IORTMaterialIORT,
"CM1_1_2IORT", 0, 0, 0);
633 "CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom,
false, 0);
635 logCM1_1_2IORT -> SetVisAttributes(yellow);
657 const G4double outRadiusBlocco20mmIORT = 36.5 *
mm;
658 const G4double innRadiusBlocco20mmIORT = 10. *
mm;
661 const G4double spanningAngleBlocco20mmIORT = 360.*
deg;
662 const G4double XPositionBlocco20mmIORT = -830. *
mm;
665 solidBlocco20mmIORT =
new G4Tubs(
"Blocco20mmIORT", innRadiusBlocco20mmIORT,
666 outRadiusBlocco20mmIORT,
668 startAngleBlocco20mmIORT,
669 spanningAngleBlocco20mmIORT);
672 Blocco20mmIORTMaterialIORT,
"Blocco20mmIORT", 0, 0, 0);
675 "Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom,
false, 0);
677 logBlocco20mmIORT -> SetVisAttributes(green);
684 const G4double outRadiusBlocco3IORT = 36.5 *
mm;
685 const G4double innRadiusBlocco3IORT = 15. *
mm;
688 const G4double spanningAngleBlocco3IORT = 360.*
deg;
689 const G4double XPositionBlocco3IORT = -823.5 *
mm;
691 solidBlocco3IORT =
new G4Tubs(
"Blocco3IORT", innRadiusBlocco3IORT,
692 outRadiusBlocco3IORT,
694 startAngleBlocco3IORT,
695 spanningAngleBlocco3IORT);
698 Blocco3IORTMaterialIORT,
"Blocco3IORT", 0, 0, 0);
701 "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom,
false, 0);
703 logBlocco3IORT -> SetVisAttributes(yellow);
709 const G4double outRadiusBlocco2IORT = 41.5 *
mm;
710 const G4double innRadiusBlocco2IORT = 15. *
mm;
713 const G4double spanningAngleBlocco2IORT = 360.*
deg;
714 const G4double XPositionBlocco2IORT = -812. *
mm;
716 solidBlocco2IORT =
new G4Tubs(
"Blocco2IORT", innRadiusBlocco2IORT,
717 outRadiusBlocco2IORT,
719 startAngleBlocco2IORT,
720 spanningAngleBlocco2IORT);
723 Blocco2IORTMaterialIORT,
"Blocco2IORT", 0, 0, 0);
726 "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom,
false, 0);
728 logBlocco2IORT -> SetVisAttributes(red);
734 const G4double outRadiusBlocco1IORT = 52.0 *
mm;
735 const G4double innRadiusBlocco1IORT = 15. *
mm;
738 const G4double spanningAngleBlocco1IORT = 360.*
deg;
739 const G4double XPositionBlocco1IORT = -795.5*
mm;
741 solidBlocco1IORT =
new G4Tubs(
"Blocco1IORT", innRadiusBlocco1IORT,
742 outRadiusBlocco1IORT,
744 startAngleBlocco1IORT,
745 spanningAngleBlocco1IORT);
748 Blocco1IORTMaterialIORT,
"Blocco1IORT", 0, 0, 0);
751 "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom,
false, 0);
753 logBlocco1IORT -> SetVisAttributes(white);
770 const G4double outRadiusGiunz5FinalCollIORT = 48.25 *
mm;
771 const G4double innRadiusGiunz5FinalCollIORT = 13.75 *
mm;
772 const G4double hightGiunz5FinalCollIORT = 3.5 *
mm;
773 const G4double startAngleGiunz5FinalCollIORT = 0.*
deg;
774 const G4double spanningAngleGiunz5FinalCollIORT = 360.*
deg;
775 const G4double Giunz5FinalCollXPositionIORT = -783.5 *
mm;
777 solidGiunz5FinalCollIORT =
new G4Tubs(
"Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
778 outRadiusGiunz5FinalCollIORT,
779 hightGiunz5FinalCollIORT,
780 startAngleGiunz5FinalCollIORT,
781 spanningAngleGiunz5FinalCollIORT);
784 Giunz5FinalCollMaterialIORT,
"Giunz5FinalCollIORT", 0, 0, 0);
787 "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom,
false, 0);
789 logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
795 const G4double outRadiusGiunz4FinalCollIORT = 42. *
mm;
796 const G4double innRadiusGiunz4FinalCollIORT = 13.75 *
mm;
797 const G4double hightGiunz4FinalCollIORT = 8.5 *
mm;
798 const G4double startAngleGiunz4FinalCollIORT = 0.*
deg;
799 const G4double spanningAngleGiunz4FinalCollIORT = 360.*
deg;
800 const G4double Giunz4FinalCollXPositionIORT = -771.5 *
mm;
802 solidGiunz4FinalCollIORT =
new G4Tubs(
"Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
803 outRadiusGiunz4FinalCollIORT,
804 hightGiunz4FinalCollIORT,
805 startAngleGiunz4FinalCollIORT,
806 spanningAngleGiunz4FinalCollIORT);
809 Giunz4FinalCollMaterialIORT,
"Giunz4FinalCollIORT", 0, 0, 0);
812 "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom,
false, 0);
814 logGiunz4FinalCollIORT -> SetVisAttributes(blue);
822 const G4double outRadiusGiunz3FinalCollIORT = 42. *
mm;
823 const G4double innRadiusGiunz3FinalCollIORT = 0. *
mm;
824 const G4double hightGiunz3FinalCollIORT = 4.25 *
mm;
825 const G4double startAngleGiunz3FinalCollIORT = 0.*
deg;
826 const G4double spanningAngleGiunz3FinalCollIORT = 360.*
deg;
827 const G4double Giunz3FinalCollXPositionIORT = -758.75 *
mm;
829 solidGiunz3FinalCollIORT =
new G4Tubs(
"Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
830 outRadiusGiunz3FinalCollIORT,
831 hightGiunz3FinalCollIORT,
832 startAngleGiunz3FinalCollIORT,
833 spanningAngleGiunz3FinalCollIORT);
836 Giunz3FinalCollMaterialIORT,
"Giunz3FinalCollIORT", 0, 0, 0);
839 "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom,
false, 0);
841 logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
852 solidGiunz3FinalCollIntIORT =
new G4Cons(
"Giunz3FinalCollIntIORT",0.*
mm,13.75*
mm,0.*
mm,20.0*
mm,4.25*
mm,0.*
deg,360.*
deg);
855 Giunz3FinalCollMaterialIntIORT,
"Giunz3FinalCollIntIORT", 0, 0, 0);
857 physiGiunz3FinalCollIntIORT =
new G4PVPlacement(0,
G4ThreeVector(0.,0.,0.),
"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT,
false, 0);
859 logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow);
870 const G4double hightFinalCollimatorIORT = 349.75 *
mm;
871 const G4double startAngleFinalCollimatorIORT = 0.*
deg;
872 const G4double spanningAngleFinalCollimatorIORT = 360.*
deg;
873 const G4double finalCollimatorXPositionIORT = -404.75 *
mm;
882 solidFinalCollimatorIORT =
new G4Tubs(
"FinalCollimatorIORT", innerRadiusFinalCollimatorIORT,
883 OuterRadiusFinalCollimatorIORT,
884 hightFinalCollimatorIORT,
885 startAngleFinalCollimatorIORT,
886 spanningAngleFinalCollimatorIORT);
889 finalCollimatorMaterialIORT,
"FinalCollimatorIORT", 0, 0, 0);
892 "FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom,
false, 0);
895 logFinalCollimatorIORT -> SetVisAttributes(gray);
905 solidFinalCollimatorIORT -> SetInnerRadius(value);
907 G4cout<<
"Inner Radius of the final collimator IORT is (mm):"
908 << solidFinalCollimatorIORT -> GetInnerRadius()/
mm
916 solidFinalCollimatorIORT -> SetOuterRadius(value);
918 G4cout<<
"Outer Radius of the final collimator IORT is (mm):"
919 << solidFinalCollimatorIORT -> GetOuterRadius()/
mm
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
static constexpr double mm
CLHEP::Hep3Vector G4ThreeVector
static constexpr double perCent
void SetInnerRadiusFinalCollimatorIORT(G4double)
void IortBeamLineVacuumSource()
HepRotation & rotateY(double delta)
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
const XML_Char int const XML_Char * value
static constexpr double cm
static constexpr double cm3
static G4RunManager * GetRunManager()
void IortBeamLineTitaniumWindows()
void IortBeamLineMonitorChambers()
void IortBeamLineBlocks()
void IortBeamLineFinalCollimator()
void SetOuterRadiusFinalCollimatorIORT(G4double)
G4VPhysicalVolume * Construct()
void IortBeamLineJunctions()
static constexpr double deg
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
static const G4VisAttributes & GetInvisible()