60 physicalTreatmentRoom(0),iortDetectorConstruction(0),
64 solidFinalCollimatorIORT(0),
65 logicFinalCollimatorIORT(0),
66 physiFinalCollimatorIORT(0),
68 solidGiunz1FinalCollIORT(0),
69 logicGiunz1FinalCollIORT(0),
70 physiGiunz1FinalCollIORT(0),
72 solidGiunz2FinalCollIORT(0),
73 logicGiunz2FinalCollIORT(0),
74 physiGiunz2FinalCollIORT(0),
76 solidGiunz3FinalCollIORT(0),
77 logicGiunz3FinalCollIORT(0),
78 physiGiunz3FinalCollIORT(0),
80 solidGiunz3FinalCollIntIORT(0),
81 logicGiunz3FinalCollIntIORT(0),
82 physiGiunz3FinalCollIntIORT(0),
84 solidGiunz4FinalCollIORT(0),
85 logicGiunz4FinalCollIORT(0),
86 physiGiunz4FinalCollIORT(0),
88 solidGiunz5FinalCollIORT(0),
89 logicGiunz5FinalCollIORT(0),
90 physiGiunz5FinalCollIORT(0),
104 solidBlocco20mmIORT(0),
105 logicBlocco20mmIORT(0),
106 physiBlocco20mmIORT(0),
153 delete collimatorMessenger;
154 delete iortDetectorConstruction;
163 SetDefaultDimensions();
166 ConstructCollimator40BeamLine();
171 return physicalTreatmentRoom;
184 void Collimator40BeamLine::SetDefaultDimensions()
189 white -> SetVisibility(
true);
193 blue -> SetVisibility(
true);
197 gray-> SetVisibility(
true);
201 red-> SetVisibility(
true);
205 yellow-> SetVisibility(
true);
209 green -> SetVisibility(
true);
213 darkGreen -> SetVisibility(
true);
217 darkOrange3 -> SetVisibility(
true);
221 skyBlue -> SetVisibility(
true);
228 G4double defaultOuterRadiusFinalCollimatorIORT = 25. *
mm;
229 OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
231 G4double defaultinnerRadiusFinalCollimatorIORT = 20. *
mm;
232 innerRadiusFinalCollimatorIORT = defaultinnerRadiusFinalCollimatorIORT;
268 finalCollimatorMaterialIORT = PMMANist;
271 Giunz1FinalCollMaterialIORT = PMMANist;
274 Giunz2FinalCollMaterialIORT = PMMANist;
277 Giunz3FinalCollMaterialIORT = PMMANist;
280 Giunz3FinalCollMaterialIntIORT = airNist;
283 Giunz4FinalCollMaterialIORT = PMMANist;
286 Giunz5FinalCollMaterialIORT = PMMANist;
289 Blocco1IORTMaterialIORT = PMMANist;
292 Blocco2IORTMaterialIORT = PMMANist;
295 Blocco3IORTMaterialIORT = PMMANist;
298 Blocco20mmIORTMaterialIORT = PMMANist;
301 CM1_1_2IORTMaterialIORT = aluminumNist;
304 CM1_2_2IORTMaterialIORT = aluminumNist;
307 CM2_1_2IORTMaterialIORT = aluminumNist;
310 CM2_2_2IORTMaterialIORT = aluminumNist;
313 CCMIORTMaterialIORT = PMMANist;
316 PFS1IORTMaterialIORT = PMMANist;
319 PFS2IORTMaterialIORT = PMMANist;
322 PFS3IORTMaterialIORT = PMMANist;
325 FTIORTMaterialIORT = titanioNist;
328 VSIORTMaterialIORT = galacticNist;
332 void Collimator40BeamLine::ConstructCollimator40BeamLine()
344 G4Box* treatmentRoom =
new G4Box(
"TreatmentRoom",worldX,worldY,worldZ);
347 "logicTreatmentRoom",
351 "physicalTreatmentRoom",
389 const G4double XPositionVSIORT = -862.797 *
mm;
391 solidVSIORT =
new G4Tubs(
"VSIORT", innRadiusVSIORT,
395 spanningAngleVSIORT);
398 VSIORTMaterialIORT,
"VSIORT", 0, 0, 0);
401 "VSIORT", logVSIORT, physicalTreatmentRoom,
false, 0);
403 logVSIORT -> SetVisAttributes(green);
424 const G4double XPositionFTIORT = -861.791 *
mm;
426 solidFTIORT =
new G4Tubs(
"FTIORT", innRadiusFTIORT,
430 spanningAngleFTIORT);
433 FTIORTMaterialIORT,
"FTIORT", 0, 0, 0);
436 "FTIORT", logFTIORT, physicalTreatmentRoom,
false, 0);
438 logFTIORT -> SetVisAttributes(yellow);
466 const G4double XPositionPFS3IORT = -848.755 *
mm;
468 solidPFS3IORT =
new G4Tubs(
"PFS3IORT", innRadiusPFS3IORT,
472 spanningAnglePFS3IORT);
475 PFS3IORTMaterialIORT,
"PFS3IORT", 0, 0, 0);
478 "PFS3IORT", logPFS3IORT, physicalTreatmentRoom,
false, 0);
480 logPFS3IORT -> SetVisAttributes(white);
492 const G4double XPositionPFS2IORT = -844.255 *
mm;
495 solidPFS2IORT =
new G4Tubs(
"PFS2IORT", innRadiusPFS2IORT,
499 spanningAnglePFS2IORT);
502 PFS2IORTMaterialIORT,
"PFS2IORT", 0, 0, 0);
505 "PFS2IORT", logPFS2IORT, physicalTreatmentRoom,
false, 0);
507 logPFS2IORT -> SetVisAttributes(green);
518 const G4double XPositionPFS1IORT = -841.905 *
mm;
521 solidPFS1IORT =
new G4Tubs(
"PFS1IORT", innRadiusPFS1IORT,
525 spanningAnglePFS1IORT);
528 PFS1IORTMaterialIORT,
"PFS1IORT", 0, 0, 0);
531 "PFS1IORT", logPFS1IORT, physicalTreatmentRoom,
false, 0);
533 logPFS1IORT -> SetVisAttributes(green);
544 const G4double XPositionCCMIORT = -837.0125 *
mm;
547 solidCCMIORT =
new G4Tubs(
"CCMIORT", innRadiusCCMIORT,
551 spanningAngleCCMIORT);
554 CCMIORTMaterialIORT,
"CCMIORT", 0, 0, 0);
557 "CCMIORT", logCCMIORT, physicalTreatmentRoom,
false, 0);
559 logCCMIORT -> SetVisAttributes(green);
566 const G4double outRadiusCM2_2_2IORT = 20. *
mm;
570 const G4double spanningAngleCM2_2_2IORT = 360.*
deg;
571 const G4double XPositionCM2_2_2IORT = -841. *
mm;
574 solidCM2_2_2IORT =
new G4Tubs(
"CM2_2_2IORT", innRadiusCM2_2_2IORT,
575 outRadiusCM2_2_2IORT,
577 startAngleCM2_2_2IORT,
578 spanningAngleCM2_2_2IORT);
581 CM2_2_2IORTMaterialIORT,
"CM2_2_2IORT", 0, 0, 0);
584 "CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom,
false, 0);
586 logCM2_2_2IORT -> SetVisAttributes(green);
593 const G4double outRadiusCM2_1_2IORT = 20. *
mm;
597 const G4double spanningAngleCM2_1_2IORT = 360.*
deg;
598 const G4double XPositionCM2_1_2IORT = -839. *
mm;
601 solidCM2_1_2IORT =
new G4Tubs(
"CM2_1_2IORT", innRadiusCM2_1_2IORT,
602 outRadiusCM2_1_2IORT,
604 startAngleCM2_1_2IORT,
605 spanningAngleCM2_1_2IORT);
608 CM2_1_2IORTMaterialIORT,
"CM2_1_2IORT", 0, 0, 0);
611 "CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom,
false, 0);
613 logCM2_1_2IORT -> SetVisAttributes(yellow);
619 const G4double outRadiusCM1_2_2IORT = 20. *
mm;
623 const G4double spanningAngleCM1_2_2IORT = 360.*
deg;
624 const G4double XPositionCM1_2_2IORT = -837. *
mm;
626 solidCM1_2_2IORT =
new G4Tubs(
"CM1_2_2IORT", innRadiusCM1_2_2IORT,
627 outRadiusCM1_2_2IORT,
629 startAngleCM1_2_2IORT,
630 spanningAngleCM1_2_2IORT);
633 CM1_2_2IORTMaterialIORT,
"CM1_2_2IORT", 0, 0, 0);
636 "CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom,
false, 0);
638 logCM1_2_2IORT -> SetVisAttributes(yellow);
644 const G4double outRadiusCM1_1_2IORT = 20. *
mm;
648 const G4double spanningAngleCM1_1_2IORT = 360.*
deg;
649 const G4double XPositionCM1_1_2IORT = -835. *
mm;
653 solidCM1_1_2IORT =
new G4Tubs(
"CM1_1_2IORT", innRadiusCM1_1_2IORT,
654 outRadiusCM1_1_2IORT,
656 startAngleCM1_1_2IORT,
657 spanningAngleCM1_1_2IORT);
660 CM1_1_2IORTMaterialIORT,
"CM1_1_2IORT", 0, 0, 0);
663 "CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom,
false, 0);
665 logCM1_1_2IORT -> SetVisAttributes(yellow);
687 const G4double outRadiusBlocco20mmIORT = 36.5 *
mm;
688 const G4double innRadiusBlocco20mmIORT = 10. *
mm;
691 const G4double spanningAngleBlocco20mmIORT = 360.*
deg;
692 const G4double XPositionBlocco20mmIORT = -830. *
mm;
695 solidBlocco20mmIORT =
new G4Tubs(
"Blocco20mmIORT", innRadiusBlocco20mmIORT,
696 outRadiusBlocco20mmIORT,
698 startAngleBlocco20mmIORT,
699 spanningAngleBlocco20mmIORT);
702 Blocco20mmIORTMaterialIORT,
"Blocco20mmIORT", 0, 0, 0);
705 "Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom,
false, 0);
707 logBlocco20mmIORT -> SetVisAttributes(green);
714 const G4double outRadiusBlocco3IORT = 36.5 *
mm;
715 const G4double innRadiusBlocco3IORT = 15. *
mm;
718 const G4double spanningAngleBlocco3IORT = 360.*
deg;
719 const G4double XPositionBlocco3IORT = -823.5 *
mm;
722 solidBlocco3IORT =
new G4Tubs(
"Blocco3IORT", innRadiusBlocco3IORT,
723 outRadiusBlocco3IORT,
725 startAngleBlocco3IORT,
726 spanningAngleBlocco3IORT);
729 Blocco3IORTMaterialIORT,
"Blocco3IORT", 0, 0, 0);
732 "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom,
false, 0);
734 logBlocco3IORT -> SetVisAttributes(yellow);
740 const G4double outRadiusBlocco2IORT = 41.5 *
mm;
741 const G4double innRadiusBlocco2IORT = 15. *
mm;
744 const G4double spanningAngleBlocco2IORT = 360.*
deg;
745 const G4double XPositionBlocco2IORT = -812. *
mm;
748 solidBlocco2IORT =
new G4Tubs(
"Blocco2IORT", innRadiusBlocco2IORT,
749 outRadiusBlocco2IORT,
751 startAngleBlocco2IORT,
752 spanningAngleBlocco2IORT);
755 Blocco2IORTMaterialIORT,
"Blocco2IORT", 0, 0, 0);
758 "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom,
false, 0);
760 logBlocco2IORT -> SetVisAttributes(red);
766 const G4double outRadiusBlocco1IORT = 52.0 *
mm;
767 const G4double innRadiusBlocco1IORT = 15. *
mm;
770 const G4double spanningAngleBlocco1IORT = 360.*
deg;
771 const G4double XPositionBlocco1IORT = -795.5*
mm;
774 solidBlocco1IORT =
new G4Tubs(
"Blocco1IORT", innRadiusBlocco1IORT,
775 outRadiusBlocco1IORT,
777 startAngleBlocco1IORT,
778 spanningAngleBlocco1IORT);
781 Blocco1IORTMaterialIORT,
"Blocco1IORT", 0, 0, 0);
784 "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom,
false, 0);
786 logBlocco1IORT -> SetVisAttributes(white);
802 const G4double outRadiusGiunz5FinalCollIORT = 48.25 *
mm;
803 const G4double innRadiusGiunz5FinalCollIORT = 13.75 *
mm;
804 const G4double hightGiunz5FinalCollIORT = 3.5 *
mm;
805 const G4double startAngleGiunz5FinalCollIORT = 0.*
deg;
806 const G4double spanningAngleGiunz5FinalCollIORT = 360.*
deg;
807 const G4double Giunz5FinalCollXPositionIORT = -783.5 *
mm;
809 solidGiunz5FinalCollIORT =
new G4Tubs(
"Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
810 outRadiusGiunz5FinalCollIORT,
811 hightGiunz5FinalCollIORT,
812 startAngleGiunz5FinalCollIORT,
813 spanningAngleGiunz5FinalCollIORT);
816 Giunz5FinalCollMaterialIORT,
"Giunz5FinalCollIORT", 0, 0, 0);
819 "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom,
false, 0);
821 logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
827 const G4double outRadiusGiunz4FinalCollIORT = 42. *
mm;
828 const G4double innRadiusGiunz4FinalCollIORT = 13.75 *
mm;
829 const G4double hightGiunz4FinalCollIORT = 8.5 *
mm;
830 const G4double startAngleGiunz4FinalCollIORT = 0.*
deg;
831 const G4double spanningAngleGiunz4FinalCollIORT = 360.*
deg;
832 const G4double Giunz4FinalCollXPositionIORT = -771.5 *
mm;
836 solidGiunz4FinalCollIORT =
new G4Tubs(
"Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
837 outRadiusGiunz4FinalCollIORT,
838 hightGiunz4FinalCollIORT,
839 startAngleGiunz4FinalCollIORT,
840 spanningAngleGiunz4FinalCollIORT);
843 Giunz4FinalCollMaterialIORT,
"Giunz4FinalCollIORT", 0, 0, 0);
846 "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom,
false, 0);
848 logGiunz4FinalCollIORT -> SetVisAttributes(blue);
856 const G4double outRadiusGiunz3FinalCollIORT = 42. *
mm;
857 const G4double innRadiusGiunz3FinalCollIORT = 0. *
mm;
858 const G4double hightGiunz3FinalCollIORT = 4.25 *
mm;
859 const G4double startAngleGiunz3FinalCollIORT = 0.*
deg;
860 const G4double spanningAngleGiunz3FinalCollIORT = 360.*
deg;
861 const G4double Giunz3FinalCollXPositionIORT = -758.75 *
mm;
864 solidGiunz3FinalCollIORT =
new G4Tubs(
"Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
865 outRadiusGiunz3FinalCollIORT,
866 hightGiunz3FinalCollIORT,
867 startAngleGiunz3FinalCollIORT,
868 spanningAngleGiunz3FinalCollIORT);
871 Giunz3FinalCollMaterialIORT,
"Giunz3FinalCollIORT", 0, 0, 0);
874 "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom,
false, 0);
876 logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
887 solidGiunz3FinalCollIntIORT =
new G4Cons(
"Giunz3FinalCollIntIORT",0.*
mm,13.75*
mm,0.*
mm,20.0*
mm,4.25*
mm,0.*
deg,360.*
deg);
890 Giunz3FinalCollMaterialIntIORT,
"Giunz3FinalCollIntIORT", 0, 0, 0);
892 physiGiunz3FinalCollIntIORT =
new G4PVPlacement(0,
G4ThreeVector(0.,0.,0.),
"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT,
false, 0);
894 logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow);
905 const G4double hightFinalCollimatorIORT = 349.75 *
mm;
906 const G4double startAngleFinalCollimatorIORT = 0.*
deg;
907 const G4double spanningAngleFinalCollimatorIORT = 360.*
deg;
908 const G4double finalCollimatorXPositionIORT = -404.75 *
mm;
917 solidFinalCollimatorIORT =
new G4Tubs(
"FinalCollimatorIORT", innerRadiusFinalCollimatorIORT,
918 OuterRadiusFinalCollimatorIORT,
919 hightFinalCollimatorIORT,
920 startAngleFinalCollimatorIORT,
921 spanningAngleFinalCollimatorIORT);
924 finalCollimatorMaterialIORT,
"FinalCollimatorIORT", 0, 0, 0);
927 "FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom,
false, 0);
930 logFinalCollimatorIORT -> SetVisAttributes(green);
941 solidFinalCollimatorIORT -> SetInnerRadius(value);
943 G4cout<<
"Inner Radius of the final collimator IORT is (mm):"
944 << solidFinalCollimatorIORT -> GetInnerRadius()/
mm
952 solidFinalCollimatorIORT -> SetOuterRadius(value);
954 G4cout<<
"Outer Radius of the final collimator IORT is (mm):"
955 << solidFinalCollimatorIORT -> GetOuterRadius()/
mm