60 physicalTreatmentRoom(0),iortDetectorConstruction(0),
64 solidFinalCollimatorIORT(0),
65 physiFinalCollimatorIORT(0),
67 solidGiunz3FinalCollIORT(0),
68 physiGiunz3FinalCollIORT(0),
70 solidGiunz3FinalCollIntIORT(0),
71 physiGiunz3FinalCollIntIORT(0),
73 solidGiunz4FinalCollIORT(0),
74 physiGiunz4FinalCollIORT(0),
76 solidGiunz5FinalCollIORT(0),
77 physiGiunz5FinalCollIORT(0),
88 solidBlocco20mmIORT(0),
89 physiBlocco20mmIORT(0),
127 delete collimatorMessenger;
128 delete iortDetectorConstruction;
137 SetDefaultDimensions();
140 ConstructCollimator40BeamLine();
145 return physicalTreatmentRoom;
158 void Collimator40BeamLine::SetDefaultDimensions()
163 white -> SetVisibility(
true);
167 blue -> SetVisibility(
true);
171 gray-> SetVisibility(
true);
175 red-> SetVisibility(
true);
179 yellow-> SetVisibility(
true);
183 green -> SetVisibility(
true);
187 darkGreen -> SetVisibility(
true);
191 darkOrange3 -> SetVisibility(
true);
195 skyBlue -> SetVisibility(
true);
202 G4double defaultOuterRadiusFinalCollimatorIORT = 25. *
mm;
203 OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
205 G4double defaultinnerRadiusFinalCollimatorIORT = 20. *
mm;
206 innerRadiusFinalCollimatorIORT = defaultinnerRadiusFinalCollimatorIORT;
234 brass -> AddElement(zincNist, fractionmass = 30 *
perCent);
235 brass -> AddElement(copperNist, fractionmass = 70 *
perCent);
242 finalCollimatorMaterialIORT = PMMANist;
245 Giunz1FinalCollMaterialIORT = PMMANist;
248 Giunz2FinalCollMaterialIORT = PMMANist;
251 Giunz3FinalCollMaterialIORT = PMMANist;
254 Giunz3FinalCollMaterialIntIORT = airNist;
257 Giunz4FinalCollMaterialIORT = PMMANist;
260 Giunz5FinalCollMaterialIORT = PMMANist;
263 Blocco1IORTMaterialIORT = PMMANist;
266 Blocco2IORTMaterialIORT = PMMANist;
269 Blocco3IORTMaterialIORT = PMMANist;
272 Blocco20mmIORTMaterialIORT = PMMANist;
275 CM1_1_2IORTMaterialIORT = aluminumNist;
278 CM1_2_2IORTMaterialIORT = aluminumNist;
281 CM2_1_2IORTMaterialIORT = aluminumNist;
284 CM2_2_2IORTMaterialIORT = aluminumNist;
287 CCMIORTMaterialIORT = PMMANist;
290 PFS1IORTMaterialIORT = PMMANist;
293 PFS2IORTMaterialIORT = PMMANist;
296 PFS3IORTMaterialIORT = PMMANist;
299 FTIORTMaterialIORT = titanioNist;
302 VSIORTMaterialIORT = galacticNist;
306 void Collimator40BeamLine::ConstructCollimator40BeamLine()
318 G4Box* treatmentRoom =
new G4Box(
"TreatmentRoom",worldX,worldY,worldZ);
321 "logicTreatmentRoom",
325 "physicalTreatmentRoom",
363 const G4double XPositionVSIORT = -862.797 *
mm;
365 solidVSIORT =
new G4Tubs(
"VSIORT", innRadiusVSIORT,
369 spanningAngleVSIORT);
372 VSIORTMaterialIORT,
"VSIORT", 0, 0, 0);
375 "VSIORT", logVSIORT, physicalTreatmentRoom,
false, 0);
377 logVSIORT -> SetVisAttributes(green);
398 const G4double XPositionFTIORT = -861.791 *
mm;
400 solidFTIORT =
new G4Tubs(
"FTIORT", innRadiusFTIORT,
404 spanningAngleFTIORT);
407 FTIORTMaterialIORT,
"FTIORT", 0, 0, 0);
410 "FTIORT", logFTIORT, physicalTreatmentRoom,
false, 0);
412 logFTIORT -> SetVisAttributes(yellow);
440 const G4double XPositionPFS3IORT = -848.755 *
mm;
442 solidPFS3IORT =
new G4Tubs(
"PFS3IORT", innRadiusPFS3IORT,
446 spanningAnglePFS3IORT);
449 PFS3IORTMaterialIORT,
"PFS3IORT", 0, 0, 0);
452 "PFS3IORT", logPFS3IORT, physicalTreatmentRoom,
false, 0);
454 logPFS3IORT -> SetVisAttributes(white);
466 const G4double XPositionPFS2IORT = -844.255 *
mm;
469 solidPFS2IORT =
new G4Tubs(
"PFS2IORT", innRadiusPFS2IORT,
473 spanningAnglePFS2IORT);
476 PFS2IORTMaterialIORT,
"PFS2IORT", 0, 0, 0);
479 "PFS2IORT", logPFS2IORT, physicalTreatmentRoom,
false, 0);
481 logPFS2IORT -> SetVisAttributes(green);
492 const G4double XPositionPFS1IORT = -841.905 *
mm;
495 solidPFS1IORT =
new G4Tubs(
"PFS1IORT", innRadiusPFS1IORT,
499 spanningAnglePFS1IORT);
502 PFS1IORTMaterialIORT,
"PFS1IORT", 0, 0, 0);
505 "PFS1IORT", logPFS1IORT, physicalTreatmentRoom,
false, 0);
507 logPFS1IORT -> SetVisAttributes(green);
518 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;
548 solidCM2_2_2IORT =
new G4Tubs(
"CM2_2_2IORT", innRadiusCM2_2_2IORT,
549 outRadiusCM2_2_2IORT,
551 startAngleCM2_2_2IORT,
552 spanningAngleCM2_2_2IORT);
555 CM2_2_2IORTMaterialIORT,
"CM2_2_2IORT", 0, 0, 0);
558 "CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom,
false, 0);
560 logCM2_2_2IORT -> SetVisAttributes(green);
567 const G4double outRadiusCM2_1_2IORT = 20. *
mm;
571 const G4double spanningAngleCM2_1_2IORT = 360.*
deg;
572 const G4double XPositionCM2_1_2IORT = -839. *
mm;
575 solidCM2_1_2IORT =
new G4Tubs(
"CM2_1_2IORT", innRadiusCM2_1_2IORT,
576 outRadiusCM2_1_2IORT,
578 startAngleCM2_1_2IORT,
579 spanningAngleCM2_1_2IORT);
582 CM2_1_2IORTMaterialIORT,
"CM2_1_2IORT", 0, 0, 0);
585 "CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom,
false, 0);
587 logCM2_1_2IORT -> SetVisAttributes(yellow);
593 const G4double outRadiusCM1_2_2IORT = 20. *
mm;
597 const G4double spanningAngleCM1_2_2IORT = 360.*
deg;
598 const G4double XPositionCM1_2_2IORT = -837. *
mm;
600 solidCM1_2_2IORT =
new G4Tubs(
"CM1_2_2IORT", innRadiusCM1_2_2IORT,
601 outRadiusCM1_2_2IORT,
603 startAngleCM1_2_2IORT,
604 spanningAngleCM1_2_2IORT);
607 CM1_2_2IORTMaterialIORT,
"CM1_2_2IORT", 0, 0, 0);
610 "CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom,
false, 0);
612 logCM1_2_2IORT -> SetVisAttributes(yellow);
618 const G4double outRadiusCM1_1_2IORT = 20. *
mm;
622 const G4double spanningAngleCM1_1_2IORT = 360.*
deg;
623 const G4double XPositionCM1_1_2IORT = -835. *
mm;
627 solidCM1_1_2IORT =
new G4Tubs(
"CM1_1_2IORT", innRadiusCM1_1_2IORT,
628 outRadiusCM1_1_2IORT,
630 startAngleCM1_1_2IORT,
631 spanningAngleCM1_1_2IORT);
634 CM1_1_2IORTMaterialIORT,
"CM1_1_2IORT", 0, 0, 0);
637 "CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom,
false, 0);
639 logCM1_1_2IORT -> SetVisAttributes(yellow);
661 const G4double outRadiusBlocco20mmIORT = 36.5 *
mm;
662 const G4double innRadiusBlocco20mmIORT = 10. *
mm;
665 const G4double spanningAngleBlocco20mmIORT = 360.*
deg;
666 const G4double XPositionBlocco20mmIORT = -830. *
mm;
669 solidBlocco20mmIORT =
new G4Tubs(
"Blocco20mmIORT", innRadiusBlocco20mmIORT,
670 outRadiusBlocco20mmIORT,
672 startAngleBlocco20mmIORT,
673 spanningAngleBlocco20mmIORT);
676 Blocco20mmIORTMaterialIORT,
"Blocco20mmIORT", 0, 0, 0);
679 "Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom,
false, 0);
681 logBlocco20mmIORT -> SetVisAttributes(green);
688 const G4double outRadiusBlocco3IORT = 36.5 *
mm;
689 const G4double innRadiusBlocco3IORT = 15. *
mm;
692 const G4double spanningAngleBlocco3IORT = 360.*
deg;
693 const G4double XPositionBlocco3IORT = -823.5 *
mm;
696 solidBlocco3IORT =
new G4Tubs(
"Blocco3IORT", innRadiusBlocco3IORT,
697 outRadiusBlocco3IORT,
699 startAngleBlocco3IORT,
700 spanningAngleBlocco3IORT);
703 Blocco3IORTMaterialIORT,
"Blocco3IORT", 0, 0, 0);
706 "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom,
false, 0);
708 logBlocco3IORT -> SetVisAttributes(yellow);
714 const G4double outRadiusBlocco2IORT = 41.5 *
mm;
715 const G4double innRadiusBlocco2IORT = 15. *
mm;
718 const G4double spanningAngleBlocco2IORT = 360.*
deg;
719 const G4double XPositionBlocco2IORT = -812. *
mm;
722 solidBlocco2IORT =
new G4Tubs(
"Blocco2IORT", innRadiusBlocco2IORT,
723 outRadiusBlocco2IORT,
725 startAngleBlocco2IORT,
726 spanningAngleBlocco2IORT);
729 Blocco2IORTMaterialIORT,
"Blocco2IORT", 0, 0, 0);
732 "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom,
false, 0);
734 logBlocco2IORT -> SetVisAttributes(red);
740 const G4double outRadiusBlocco1IORT = 52.0 *
mm;
741 const G4double innRadiusBlocco1IORT = 15. *
mm;
744 const G4double spanningAngleBlocco1IORT = 360.*
deg;
745 const G4double XPositionBlocco1IORT = -795.5*
mm;
748 solidBlocco1IORT =
new G4Tubs(
"Blocco1IORT", innRadiusBlocco1IORT,
749 outRadiusBlocco1IORT,
751 startAngleBlocco1IORT,
752 spanningAngleBlocco1IORT);
755 Blocco1IORTMaterialIORT,
"Blocco1IORT", 0, 0, 0);
758 "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom,
false, 0);
760 logBlocco1IORT -> SetVisAttributes(white);
776 const G4double outRadiusGiunz5FinalCollIORT = 48.25 *
mm;
777 const G4double innRadiusGiunz5FinalCollIORT = 13.75 *
mm;
778 const G4double hightGiunz5FinalCollIORT = 3.5 *
mm;
779 const G4double startAngleGiunz5FinalCollIORT = 0.*
deg;
780 const G4double spanningAngleGiunz5FinalCollIORT = 360.*
deg;
781 const G4double Giunz5FinalCollXPositionIORT = -783.5 *
mm;
783 solidGiunz5FinalCollIORT =
new G4Tubs(
"Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
784 outRadiusGiunz5FinalCollIORT,
785 hightGiunz5FinalCollIORT,
786 startAngleGiunz5FinalCollIORT,
787 spanningAngleGiunz5FinalCollIORT);
790 Giunz5FinalCollMaterialIORT,
"Giunz5FinalCollIORT", 0, 0, 0);
793 "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom,
false, 0);
795 logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
801 const G4double outRadiusGiunz4FinalCollIORT = 42. *
mm;
802 const G4double innRadiusGiunz4FinalCollIORT = 13.75 *
mm;
803 const G4double hightGiunz4FinalCollIORT = 8.5 *
mm;
804 const G4double startAngleGiunz4FinalCollIORT = 0.*
deg;
805 const G4double spanningAngleGiunz4FinalCollIORT = 360.*
deg;
806 const G4double Giunz4FinalCollXPositionIORT = -771.5 *
mm;
810 solidGiunz4FinalCollIORT =
new G4Tubs(
"Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
811 outRadiusGiunz4FinalCollIORT,
812 hightGiunz4FinalCollIORT,
813 startAngleGiunz4FinalCollIORT,
814 spanningAngleGiunz4FinalCollIORT);
817 Giunz4FinalCollMaterialIORT,
"Giunz4FinalCollIORT", 0, 0, 0);
820 "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom,
false, 0);
822 logGiunz4FinalCollIORT -> SetVisAttributes(blue);
830 const G4double outRadiusGiunz3FinalCollIORT = 42. *
mm;
831 const G4double innRadiusGiunz3FinalCollIORT = 0. *
mm;
832 const G4double hightGiunz3FinalCollIORT = 4.25 *
mm;
833 const G4double startAngleGiunz3FinalCollIORT = 0.*
deg;
834 const G4double spanningAngleGiunz3FinalCollIORT = 360.*
deg;
835 const G4double Giunz3FinalCollXPositionIORT = -758.75 *
mm;
838 solidGiunz3FinalCollIORT =
new G4Tubs(
"Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
839 outRadiusGiunz3FinalCollIORT,
840 hightGiunz3FinalCollIORT,
841 startAngleGiunz3FinalCollIORT,
842 spanningAngleGiunz3FinalCollIORT);
845 Giunz3FinalCollMaterialIORT,
"Giunz3FinalCollIORT", 0, 0, 0);
848 "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom,
false, 0);
850 logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
861 solidGiunz3FinalCollIntIORT =
new G4Cons(
"Giunz3FinalCollIntIORT",0.*
mm,13.75*
mm,0.*
mm,20.0*
mm,4.25*
mm,0.*
deg,360.*
deg);
864 Giunz3FinalCollMaterialIntIORT,
"Giunz3FinalCollIntIORT", 0, 0, 0);
866 physiGiunz3FinalCollIntIORT =
new G4PVPlacement(0,
G4ThreeVector(0.,0.,0.),
"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT,
false, 0);
868 logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow);
879 const G4double hightFinalCollimatorIORT = 349.75 *
mm;
880 const G4double startAngleFinalCollimatorIORT = 0.*
deg;
881 const G4double spanningAngleFinalCollimatorIORT = 360.*
deg;
882 const G4double finalCollimatorXPositionIORT = -404.75 *
mm;
891 solidFinalCollimatorIORT =
new G4Tubs(
"FinalCollimatorIORT", innerRadiusFinalCollimatorIORT,
892 OuterRadiusFinalCollimatorIORT,
893 hightFinalCollimatorIORT,
894 startAngleFinalCollimatorIORT,
895 spanningAngleFinalCollimatorIORT);
898 finalCollimatorMaterialIORT,
"FinalCollimatorIORT", 0, 0, 0);
901 "FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom,
false, 0);
904 logFinalCollimatorIORT -> SetVisAttributes(green);
915 solidFinalCollimatorIORT -> SetInnerRadius(value);
917 G4cout<<
"Inner Radius of the final collimator IORT is (mm):"
918 << solidFinalCollimatorIORT -> GetInnerRadius()/
mm
926 solidFinalCollimatorIORT -> SetOuterRadius(value);
928 G4cout<<
"Outer Radius of the final collimator IORT is (mm):"
929 << 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
HepRotation & rotateY(double delta)
static G4NistManager * Instance()
void IortBeamLineFinalCollimator()
void SetOuterRadiusFinalCollimatorIORT(G4double)
G4GLOB_DLL std::ostream G4cout
const XML_Char int const XML_Char * value
static constexpr double cm
void IortBeamLineMonitorChambers()
void SetInnerRadiusFinalCollimatorIORT(G4double)
static constexpr double cm3
static G4RunManager * GetRunManager()
G4VPhysicalVolume * Construct()
void IortBeamLineBlocks()
void IortBeamLineVacuumSource()
static constexpr double deg
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
static const G4VisAttributes & GetInvisible()
void IortBeamLineJunctions()
void IortBeamLineTitaniumWindows()