60 physicalTreatmentRoom(0),iortDetectorConstruction(0),
64 solidFinalCollimatorIORT(0),
65 physiFinalCollimatorIORT(0),
67 solidGiunz1FinalCollIORT(0),
68 physiGiunz1FinalCollIORT(0),
70 solidGiunz2FinalCollIORT(0),
71 physiGiunz2FinalCollIORT(0),
73 solidGiunz3FinalCollIORT(0),
74 physiGiunz3FinalCollIORT(0),
76 solidGiunz3FinalCollIntIORT(0),
77 physiGiunz3FinalCollIntIORT(0),
79 solidGiunz4FinalCollIORT(0),
80 physiGiunz4FinalCollIORT(0),
82 solidGiunz5FinalCollIORT(0),
83 physiGiunz5FinalCollIORT(0),
94 solidBlocco20mmIORT(0),
95 physiBlocco20mmIORT(0),
133 delete collimatorMessenger;
134 delete iortDetectorConstruction;
143 SetDefaultDimensions();
146 ConstructCollimator80BeamLine();
152 return physicalTreatmentRoom;
165 void Collimator80BeamLine::SetDefaultDimensions()
170 white -> SetVisibility(
true);
174 blue -> SetVisibility(
true);
178 gray-> SetVisibility(
true);
182 red-> SetVisibility(
true);
186 yellow-> SetVisibility(
true);
190 green -> SetVisibility(
true);
194 darkGreen -> SetVisibility(
true);
198 darkOrange3 -> SetVisibility(
true);
202 skyBlue -> SetVisibility(
true);
209 G4double defaultOuterRadiusFinalCollimatorIORT = 45. *
mm;
210 OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
212 G4double defaultinnerRadiusFinalCollimatorIORT = 40. *
mm;
213 innerRadiusFinalCollimatorIORT = defaultinnerRadiusFinalCollimatorIORT;
242 brass -> AddElement(zincNist, fractionmass = 30 *
perCent);
243 brass -> AddElement(copperNist, fractionmass = 70 *
perCent);
250 finalCollimatorMaterialIORT = PMMANist;
253 Giunz1FinalCollMaterialIORT = PMMANist;
256 Giunz2FinalCollMaterialIORT = PMMANist;
259 Giunz3FinalCollMaterialIORT = PMMANist;
262 Giunz3FinalCollMaterialIntIORT = airNist;
265 Giunz4FinalCollMaterialIORT = PMMANist;
268 Giunz5FinalCollMaterialIORT = PMMANist;
271 Blocco1IORTMaterialIORT = PMMANist;
274 Blocco2IORTMaterialIORT = PMMANist;
277 Blocco3IORTMaterialIORT = PMMANist;
280 Blocco20mmIORTMaterialIORT = PMMANist;
283 CM1_1_2IORTMaterialIORT = aluminumNist;
286 CM1_2_2IORTMaterialIORT = aluminumNist;
289 CM2_1_2IORTMaterialIORT = aluminumNist;
292 CM2_2_2IORTMaterialIORT = aluminumNist;
295 CCMIORTMaterialIORT = PMMANist;
298 PFS1IORTMaterialIORT = PMMANist;
301 PFS2IORTMaterialIORT = PMMANist;
304 PFS3IORTMaterialIORT = PMMANist;
307 FTIORTMaterialIORT = titanioNist;
310 VSIORTMaterialIORT = galacticNist;
315 void Collimator80BeamLine::ConstructCollimator80BeamLine()
327 G4Box* treatmentRoom =
new G4Box(
"TreatmentRoom",worldX,worldY,worldZ);
330 "logicTreatmentRoom",
334 "physicalTreatmentRoom",
372 const G4double XPositionVSIORT = -862.797 *
mm;
374 solidVSIORT =
new G4Tubs(
"VSIORT", innRadiusVSIORT,
378 spanningAngleVSIORT);
381 VSIORTMaterialIORT,
"VSIORT", 0, 0, 0);
384 "VSIORT", logVSIORT, physicalTreatmentRoom,
false, 0);
386 logVSIORT -> SetVisAttributes(green);
407 const G4double XPositionFTIORT = -861.791 *
mm;
409 solidFTIORT =
new G4Tubs(
"FTIORT", innRadiusFTIORT,
413 spanningAngleFTIORT);
416 FTIORTMaterialIORT,
"FTIORT", 0, 0, 0);
419 "FTIORT", logFTIORT, physicalTreatmentRoom,
false, 0);
421 logFTIORT -> SetVisAttributes(yellow);
448 const G4double XPositionPFS3IORT = -848.755 *
mm;
450 solidPFS3IORT =
new G4Tubs(
"PFS3IORT", innRadiusPFS3IORT,
454 spanningAnglePFS3IORT);
457 PFS3IORTMaterialIORT,
"PFS3IORT", 0, 0, 0);
460 "PFS3IORT", logPFS3IORT, physicalTreatmentRoom,
false, 0);
462 logPFS3IORT -> SetVisAttributes(white);
474 const G4double XPositionPFS2IORT = -844.255 *
mm;
476 solidPFS2IORT =
new G4Tubs(
"PFS2IORT", innRadiusPFS2IORT,
480 spanningAnglePFS2IORT);
483 PFS2IORTMaterialIORT,
"PFS2IORT", 0, 0, 0);
486 "PFS2IORT", logPFS2IORT, physicalTreatmentRoom,
false, 0);
488 logPFS2IORT -> SetVisAttributes(green);
499 const G4double XPositionPFS1IORT = -841.905 *
mm;
501 solidPFS1IORT =
new G4Tubs(
"PFS1IORT", innRadiusPFS1IORT,
505 spanningAnglePFS1IORT);
508 PFS1IORTMaterialIORT,
"PFS1IORT", 0, 0, 0);
511 "PFS1IORT", logPFS1IORT, physicalTreatmentRoom,
false, 0);
513 logPFS1IORT -> SetVisAttributes(green);
524 const G4double XPositionCCMIORT = -837.0125 *
mm;
526 solidCCMIORT =
new G4Tubs(
"CCMIORT", innRadiusCCMIORT,
530 spanningAngleCCMIORT);
533 CCMIORTMaterialIORT,
"CCMIORT", 0, 0, 0);
536 "CCMIORT", logCCMIORT, physicalTreatmentRoom,
false, 0);
538 logCCMIORT -> SetVisAttributes(green);
545 const G4double outRadiusCM2_2_2IORT = 20. *
mm;
549 const G4double spanningAngleCM2_2_2IORT = 360.*
deg;
550 const G4double XPositionCM2_2_2IORT = -841. *
mm;
552 solidCM2_2_2IORT =
new G4Tubs(
"CM2_2_2IORT", innRadiusCM2_2_2IORT,
553 outRadiusCM2_2_2IORT,
555 startAngleCM2_2_2IORT,
556 spanningAngleCM2_2_2IORT);
559 CM2_2_2IORTMaterialIORT,
"CM2_2_2IORT", 0, 0, 0);
562 "CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom,
false, 0);
564 logCM2_2_2IORT -> SetVisAttributes(green);
571 const G4double outRadiusCM2_1_2IORT = 20. *
mm;
575 const G4double spanningAngleCM2_1_2IORT = 360.*
deg;
576 const G4double XPositionCM2_1_2IORT = -839. *
mm;
578 solidCM2_1_2IORT =
new G4Tubs(
"CM2_1_2IORT", innRadiusCM2_1_2IORT,
579 outRadiusCM2_1_2IORT,
581 startAngleCM2_1_2IORT,
582 spanningAngleCM2_1_2IORT);
585 CM2_1_2IORTMaterialIORT,
"CM2_1_2IORT", 0, 0, 0);
588 "CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom,
false, 0);
590 logCM2_1_2IORT -> SetVisAttributes(yellow);
596 const G4double outRadiusCM1_2_2IORT = 20. *
mm;
600 const G4double spanningAngleCM1_2_2IORT = 360.*
deg;
601 const G4double XPositionCM1_2_2IORT = -837. *
mm;
603 solidCM1_2_2IORT =
new G4Tubs(
"CM1_2_2IORT", innRadiusCM1_2_2IORT,
604 outRadiusCM1_2_2IORT,
606 startAngleCM1_2_2IORT,
607 spanningAngleCM1_2_2IORT);
610 CM1_2_2IORTMaterialIORT,
"CM1_2_2IORT", 0, 0, 0);
613 "CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom,
false, 0);
615 logCM1_2_2IORT -> SetVisAttributes(yellow);
621 const G4double outRadiusCM1_1_2IORT = 20. *
mm;
625 const G4double spanningAngleCM1_1_2IORT = 360.*
deg;
626 const G4double XPositionCM1_1_2IORT = -835. *
mm;
628 solidCM1_1_2IORT =
new G4Tubs(
"CM1_1_2IORT", innRadiusCM1_1_2IORT,
629 outRadiusCM1_1_2IORT,
631 startAngleCM1_1_2IORT,
632 spanningAngleCM1_1_2IORT);
635 CM1_1_2IORTMaterialIORT,
"CM1_1_2IORT", 0, 0, 0);
638 "CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom,
false, 0);
640 logCM1_1_2IORT -> SetVisAttributes(yellow);
662 const G4double outRadiusBlocco20mmIORT = 36.5 *
mm;
663 const G4double innRadiusBlocco20mmIORT = 10. *
mm;
666 const G4double spanningAngleBlocco20mmIORT = 360.*
deg;
667 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;
695 solidBlocco3IORT =
new G4Tubs(
"Blocco3IORT", innRadiusBlocco3IORT,
696 outRadiusBlocco3IORT,
698 startAngleBlocco3IORT,
699 spanningAngleBlocco3IORT);
702 Blocco3IORTMaterialIORT,
"Blocco3IORT", 0, 0, 0);
705 "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom,
false, 0);
707 logBlocco3IORT -> SetVisAttributes(yellow);
713 const G4double outRadiusBlocco2IORT = 41.5 *
mm;
714 const G4double innRadiusBlocco2IORT = 15. *
mm;
717 const G4double spanningAngleBlocco2IORT = 360.*
deg;
718 const G4double XPositionBlocco2IORT = -812. *
mm;
720 solidBlocco2IORT =
new G4Tubs(
"Blocco2IORT", innRadiusBlocco2IORT,
721 outRadiusBlocco2IORT,
723 startAngleBlocco2IORT,
724 spanningAngleBlocco2IORT);
727 Blocco2IORTMaterialIORT,
"Blocco2IORT", 0, 0, 0);
730 "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom,
false, 0);
732 logBlocco2IORT -> SetVisAttributes(red);
738 const G4double outRadiusBlocco1IORT = 52.0 *
mm;
739 const G4double innRadiusBlocco1IORT = 15. *
mm;
742 const G4double spanningAngleBlocco1IORT = 360.*
deg;
743 const G4double XPositionBlocco1IORT = -795.5*
mm;
745 solidBlocco1IORT =
new G4Tubs(
"Blocco1IORT", innRadiusBlocco1IORT,
746 outRadiusBlocco1IORT,
748 startAngleBlocco1IORT,
749 spanningAngleBlocco1IORT);
752 Blocco1IORTMaterialIORT,
"Blocco1IORT", 0, 0, 0);
755 "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom,
false, 0);
757 logBlocco1IORT -> SetVisAttributes(white);
773 const G4double outRadiusGiunz5FinalCollIORT = 48.25 *
mm;
774 const G4double innRadiusGiunz5FinalCollIORT = 13.75 *
mm;
775 const G4double hightGiunz5FinalCollIORT = 3.5 *
mm;
776 const G4double startAngleGiunz5FinalCollIORT = 0.*
deg;
777 const G4double spanningAngleGiunz5FinalCollIORT = 360.*
deg;
778 const G4double Giunz5FinalCollXPositionIORT = -783.5 *
mm;
780 solidGiunz5FinalCollIORT =
new G4Tubs(
"Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
781 outRadiusGiunz5FinalCollIORT,
782 hightGiunz5FinalCollIORT,
783 startAngleGiunz5FinalCollIORT,
784 spanningAngleGiunz5FinalCollIORT);
787 Giunz5FinalCollMaterialIORT,
"Giunz5FinalCollIORT", 0, 0, 0);
790 "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom,
false, 0);
792 logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
798 const G4double outRadiusGiunz4FinalCollIORT = 42. *
mm;
799 const G4double innRadiusGiunz4FinalCollIORT = 13.75 *
mm;
800 const G4double hightGiunz4FinalCollIORT = 8.5 *
mm;
801 const G4double startAngleGiunz4FinalCollIORT = 0.*
deg;
802 const G4double spanningAngleGiunz4FinalCollIORT = 360.*
deg;
803 const G4double Giunz4FinalCollXPositionIORT = -771.5 *
mm;
805 solidGiunz4FinalCollIORT =
new G4Tubs(
"Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
806 outRadiusGiunz4FinalCollIORT,
807 hightGiunz4FinalCollIORT,
808 startAngleGiunz4FinalCollIORT,
809 spanningAngleGiunz4FinalCollIORT);
812 Giunz4FinalCollMaterialIORT,
"Giunz4FinalCollIORT", 0, 0, 0);
815 "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom,
false, 0);
817 logGiunz4FinalCollIORT -> SetVisAttributes(blue);
825 const G4double outRadiusGiunz3FinalCollIORT = 42. *
mm;
826 const G4double innRadiusGiunz3FinalCollIORT = 0. *
mm;
827 const G4double hightGiunz3FinalCollIORT = 4.25 *
mm;
828 const G4double startAngleGiunz3FinalCollIORT = 0.*
deg;
829 const G4double spanningAngleGiunz3FinalCollIORT = 360.*
deg;
830 const G4double Giunz3FinalCollXPositionIORT = -758.75 *
mm;
832 solidGiunz3FinalCollIORT =
new G4Tubs(
"Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
833 outRadiusGiunz3FinalCollIORT,
834 hightGiunz3FinalCollIORT,
835 startAngleGiunz3FinalCollIORT,
836 spanningAngleGiunz3FinalCollIORT);
839 Giunz3FinalCollMaterialIORT,
"Giunz3FinalCollIORT", 0, 0, 0);
842 "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom,
false, 0);
844 logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
855 solidGiunz3FinalCollIntIORT =
new G4Cons(
"Giunz3FinalCollIntIORT",0.*
mm,13.75*
mm,0.*
mm,22.25*
mm,4.25*
mm,0.*
deg,360.*
deg);
858 Giunz3FinalCollMaterialIntIORT,
"Giunz3FinalCollIntIORT", 0, 0, 0);
860 physiGiunz3FinalCollIntIORT =
new G4PVPlacement(0,
G4ThreeVector(0.,0.,0.),
"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT,
false, 0);
862 logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow);
869 const G4double outRadiusGiunz2FinalCollIORT = 42. *
mm;
870 const G4double innRadiusGiunz2FinalCollIORT = 22.25 *
mm;
871 const G4double hightGiunz2FinalCollIORT = 5.75 *
mm;
872 const G4double startAngleGiunz2FinalCollIORT = 0.*
deg;
873 const G4double spanningAngleGiunz2FinalCollIORT = 360.*
deg;
874 const G4double Giunz2FinalCollXPositionIORT = -748.75 *
mm;
876 solidGiunz2FinalCollIORT =
new G4Tubs(
"Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT,
877 outRadiusGiunz2FinalCollIORT,
878 hightGiunz2FinalCollIORT,
879 startAngleGiunz2FinalCollIORT,
880 spanningAngleGiunz2FinalCollIORT);
883 Giunz2FinalCollMaterialIORT,
"Giunz2FinalCollIORT", 0, 0, 0);
886 "Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom,
false, 0);
888 logGiunz2FinalCollIORT -> SetVisAttributes(red);
894 const G4double outRadiusGiunz1FinalCollIORT = 55. *
mm;
895 const G4double innRadiusGiunz1FinalCollIORT = 22.25 *
mm;
896 const G4double hightGiunz1FinalCollIORT = 10. *
mm;
897 const G4double startAngleGiunz1FinalCollIORT = 0.*
deg;
898 const G4double spanningAngleGiunz1FinalCollIORT = 360.*
deg;
899 const G4double Giunz1FinalCollXPositionIORT = -733.*
mm;
901 solidGiunz1FinalCollIORT =
new G4Tubs(
"Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT,
902 outRadiusGiunz1FinalCollIORT,
903 hightGiunz1FinalCollIORT,
904 startAngleGiunz1FinalCollIORT,
905 spanningAngleGiunz1FinalCollIORT);
908 Giunz1FinalCollMaterialIORT,
"Giunz1FinalCollIORT", 0, 0, 0);
911 "Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom,
false, 0);
913 logGiunz1FinalCollIORT -> SetVisAttributes(gray);
924 const G4double hightFinalCollimatorIORT = 334. *
mm;
925 const G4double startAngleFinalCollimatorIORT = 0.*
deg;
926 const G4double spanningAngleFinalCollimatorIORT = 360.*
deg;
927 const G4double finalCollimatorXPositionIORT = -389.*
mm;
939 solidFinalCollimatorIORT =
new G4Tubs(
"FinalCollimatorIORT", innerRadiusFinalCollimatorIORT,
940 OuterRadiusFinalCollimatorIORT,
941 hightFinalCollimatorIORT,
942 startAngleFinalCollimatorIORT,
943 spanningAngleFinalCollimatorIORT);
946 finalCollimatorMaterialIORT,
"FinalCollimatorIORT", 0, 0, 0);
949 "FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom,
false, 0);
952 logFinalCollimatorIORT -> SetVisAttributes(red);
962 solidFinalCollimatorIORT -> SetInnerRadius(value);
964 G4cout<<
"Inner Radius of the final collimator IORT is (mm):"
965 << solidFinalCollimatorIORT -> GetInnerRadius()/
mm
973 solidFinalCollimatorIORT -> SetOuterRadius(value);
975 G4cout<<
"Outer Radius of the final collimator IORT is (mm):"
976 << solidFinalCollimatorIORT -> GetOuterRadius()/
mm
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
static constexpr double mm
CLHEP::Hep3Vector G4ThreeVector
void IortBeamLineMonitorChambers()
static constexpr double perCent
void IortBeamLineVacuumSource()
HepRotation & rotateY(double delta)
static G4NistManager * Instance()
void IortBeamLineFinalCollimator()
G4GLOB_DLL std::ostream G4cout
const XML_Char int const XML_Char * value
static constexpr double cm
static constexpr double cm3
void SetInnerRadiusFinalCollimatorIORT(G4double)
static G4RunManager * GetRunManager()
void IortBeamLineJunctions()
void IortBeamLineBlocks()
static constexpr double deg
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
static const G4VisAttributes & GetInvisible()
void SetOuterRadiusFinalCollimatorIORT(G4double)
G4VPhysicalVolume * Construct()
void IortBeamLineTitaniumWindows()