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 ConstructCollimator70BeamLine();
172 return physicalTreatmentRoom;
185 void Collimator70BeamLine::SetDefaultDimensions()
190 white -> SetVisibility(
true);
194 blue -> SetVisibility(
true);
198 gray-> SetVisibility(
true);
202 red-> SetVisibility(
true);
206 yellow-> SetVisibility(
true);
210 green -> SetVisibility(
true);
214 darkGreen -> SetVisibility(
true);
218 darkOrange3 -> SetVisibility(
true);
222 skyBlue -> SetVisibility(
true);
228 G4double defaultOuterRadiusFinalCollimatorIORT = 40. *
mm;
229 OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
231 G4double defaultinnerRadiusFinalCollimatorIORT = 35. *
mm;
232 innerRadiusFinalCollimatorIORT = defaultinnerRadiusFinalCollimatorIORT;
269 finalCollimatorMaterialIORT = PMMANist;
272 Giunz1FinalCollMaterialIORT = PMMANist;
275 Giunz2FinalCollMaterialIORT = PMMANist;
278 Giunz3FinalCollMaterialIORT = PMMANist;
281 Giunz3FinalCollMaterialIntIORT = airNist;
284 Giunz4FinalCollMaterialIORT = PMMANist;
287 Giunz5FinalCollMaterialIORT = PMMANist;
290 Blocco1IORTMaterialIORT = PMMANist;
293 Blocco2IORTMaterialIORT = PMMANist;
296 Blocco3IORTMaterialIORT = PMMANist;
299 Blocco20mmIORTMaterialIORT = PMMANist;
302 CM1_1_2IORTMaterialIORT = aluminumNist;
305 CM1_2_2IORTMaterialIORT = aluminumNist;
308 CM2_1_2IORTMaterialIORT = aluminumNist;
311 CM2_2_2IORTMaterialIORT = aluminumNist;
314 CCMIORTMaterialIORT = PMMANist;
317 PFS1IORTMaterialIORT = PMMANist;
320 PFS2IORTMaterialIORT = PMMANist;
323 PFS3IORTMaterialIORT = PMMANist;
326 FTIORTMaterialIORT = titanioNist;
329 VSIORTMaterialIORT = galacticNist;
334 void Collimator70BeamLine::ConstructCollimator70BeamLine()
346 G4Box* treatmentRoom =
new G4Box(
"TreatmentRoom",worldX,worldY,worldZ);
349 "logicTreatmentRoom",
353 "physicalTreatmentRoom",
391 const G4double XPositionVSIORT = -862.797 *
mm;
393 solidVSIORT =
new G4Tubs(
"VSIORT", innRadiusVSIORT,
397 spanningAngleVSIORT);
400 VSIORTMaterialIORT,
"VSIORT", 0, 0, 0);
403 "VSIORT", logVSIORT, physicalTreatmentRoom,
false, 0);
405 logVSIORT -> SetVisAttributes(green);
426 const G4double XPositionFTIORT = -861.791 *
mm;
428 solidFTIORT =
new G4Tubs(
"FTIORT", innRadiusFTIORT,
432 spanningAngleFTIORT);
435 FTIORTMaterialIORT,
"FTIORT", 0, 0, 0);
438 "FTIORT", logFTIORT, physicalTreatmentRoom,
false, 0);
440 logFTIORT -> SetVisAttributes(yellow);
467 const G4double XPositionPFS3IORT = -848.755 *
mm;
469 solidPFS3IORT =
new G4Tubs(
"PFS3IORT", innRadiusPFS3IORT,
473 spanningAnglePFS3IORT);
476 PFS3IORTMaterialIORT,
"PFS3IORT", 0, 0, 0);
479 "PFS3IORT", logPFS3IORT, physicalTreatmentRoom,
false, 0);
481 logPFS3IORT -> SetVisAttributes(white);
493 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;
520 solidPFS1IORT =
new G4Tubs(
"PFS1IORT", innRadiusPFS1IORT,
524 spanningAnglePFS1IORT);
527 PFS1IORTMaterialIORT,
"PFS1IORT", 0, 0, 0);
530 "PFS1IORT", logPFS1IORT, physicalTreatmentRoom,
false, 0);
532 logPFS1IORT -> SetVisAttributes(green);
543 const G4double XPositionCCMIORT = -837.0125 *
mm;
545 solidCCMIORT =
new G4Tubs(
"CCMIORT", innRadiusCCMIORT,
549 spanningAngleCCMIORT);
552 CCMIORTMaterialIORT,
"CCMIORT", 0, 0, 0);
555 "CCMIORT", logCCMIORT, physicalTreatmentRoom,
false, 0);
557 logCCMIORT -> SetVisAttributes(green);
564 const G4double outRadiusCM2_2_2IORT = 20. *
mm;
568 const G4double spanningAngleCM2_2_2IORT = 360.*
deg;
569 const G4double XPositionCM2_2_2IORT = -841. *
mm;
571 solidCM2_2_2IORT =
new G4Tubs(
"CM2_2_2IORT", innRadiusCM2_2_2IORT,
572 outRadiusCM2_2_2IORT,
574 startAngleCM2_2_2IORT,
575 spanningAngleCM2_2_2IORT);
578 CM2_2_2IORTMaterialIORT,
"CM2_2_2IORT", 0, 0, 0);
581 "CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom,
false, 0);
583 logCM2_2_2IORT -> SetVisAttributes(green);
590 const G4double outRadiusCM2_1_2IORT = 20. *
mm;
594 const G4double spanningAngleCM2_1_2IORT = 360.*
deg;
595 const G4double XPositionCM2_1_2IORT = -839. *
mm;
597 solidCM2_1_2IORT =
new G4Tubs(
"CM2_1_2IORT", innRadiusCM2_1_2IORT,
598 outRadiusCM2_1_2IORT,
600 startAngleCM2_1_2IORT,
601 spanningAngleCM2_1_2IORT);
604 CM2_1_2IORTMaterialIORT,
"CM2_1_2IORT", 0, 0, 0);
607 "CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom,
false, 0);
609 logCM2_1_2IORT -> SetVisAttributes(yellow);
615 const G4double outRadiusCM1_2_2IORT = 20. *
mm;
619 const G4double spanningAngleCM1_2_2IORT = 360.*
deg;
620 const G4double XPositionCM1_2_2IORT = -837. *
mm;
622 solidCM1_2_2IORT =
new G4Tubs(
"CM1_2_2IORT", innRadiusCM1_2_2IORT,
623 outRadiusCM1_2_2IORT,
625 startAngleCM1_2_2IORT,
626 spanningAngleCM1_2_2IORT);
629 CM1_2_2IORTMaterialIORT,
"CM1_2_2IORT", 0, 0, 0);
632 "CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom,
false, 0);
634 logCM1_2_2IORT -> SetVisAttributes(yellow);
640 const G4double outRadiusCM1_1_2IORT = 20. *
mm;
644 const G4double spanningAngleCM1_1_2IORT = 360.*
deg;
645 const G4double XPositionCM1_1_2IORT = -835. *
mm;
647 solidCM1_1_2IORT =
new G4Tubs(
"CM1_1_2IORT", innRadiusCM1_1_2IORT,
648 outRadiusCM1_1_2IORT,
650 startAngleCM1_1_2IORT,
651 spanningAngleCM1_1_2IORT);
654 CM1_1_2IORTMaterialIORT,
"CM1_1_2IORT", 0, 0, 0);
657 "CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom,
false, 0);
659 logCM1_1_2IORT -> SetVisAttributes(yellow);
681 const G4double outRadiusBlocco20mmIORT = 36.5 *
mm;
682 const G4double innRadiusBlocco20mmIORT = 10. *
mm;
685 const G4double spanningAngleBlocco20mmIORT = 360.*
deg;
686 const G4double XPositionBlocco20mmIORT = -830. *
mm;
688 solidBlocco20mmIORT =
new G4Tubs(
"Blocco20mmIORT", innRadiusBlocco20mmIORT,
689 outRadiusBlocco20mmIORT,
691 startAngleBlocco20mmIORT,
692 spanningAngleBlocco20mmIORT);
695 Blocco20mmIORTMaterialIORT,
"Blocco20mmIORT", 0, 0, 0);
698 "Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom,
false, 0);
700 logBlocco20mmIORT -> SetVisAttributes(green);
707 const G4double outRadiusBlocco3IORT = 36.5 *
mm;
708 const G4double innRadiusBlocco3IORT = 15. *
mm;
711 const G4double spanningAngleBlocco3IORT = 360.*
deg;
712 const G4double XPositionBlocco3IORT = -823.5 *
mm;
714 solidBlocco3IORT =
new G4Tubs(
"Blocco3IORT", innRadiusBlocco3IORT,
715 outRadiusBlocco3IORT,
717 startAngleBlocco3IORT,
718 spanningAngleBlocco3IORT);
721 Blocco3IORTMaterialIORT,
"Blocco3IORT", 0, 0, 0);
724 "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom,
false, 0);
726 logBlocco3IORT -> SetVisAttributes(yellow);
732 const G4double outRadiusBlocco2IORT = 41.5 *
mm;
733 const G4double innRadiusBlocco2IORT = 15. *
mm;
736 const G4double spanningAngleBlocco2IORT = 360.*
deg;
737 const G4double XPositionBlocco2IORT = -812. *
mm;
739 solidBlocco2IORT =
new G4Tubs(
"Blocco2IORT", innRadiusBlocco2IORT,
740 outRadiusBlocco2IORT,
742 startAngleBlocco2IORT,
743 spanningAngleBlocco2IORT);
746 Blocco2IORTMaterialIORT,
"Blocco2IORT", 0, 0, 0);
749 "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom,
false, 0);
751 logBlocco2IORT -> SetVisAttributes(red);
757 const G4double outRadiusBlocco1IORT = 52.0 *
mm;
758 const G4double innRadiusBlocco1IORT = 15. *
mm;
761 const G4double spanningAngleBlocco1IORT = 360.*
deg;
762 const G4double XPositionBlocco1IORT = -795.5*
mm;
764 solidBlocco1IORT =
new G4Tubs(
"Blocco1IORT", innRadiusBlocco1IORT,
765 outRadiusBlocco1IORT,
767 startAngleBlocco1IORT,
768 spanningAngleBlocco1IORT);
771 Blocco1IORTMaterialIORT,
"Blocco1IORT", 0, 0, 0);
774 "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom,
false, 0);
776 logBlocco1IORT -> SetVisAttributes(white);
792 const G4double outRadiusGiunz5FinalCollIORT = 48.25 *
mm;
793 const G4double innRadiusGiunz5FinalCollIORT = 13.75 *
mm;
794 const G4double hightGiunz5FinalCollIORT = 3.5 *
mm;
795 const G4double startAngleGiunz5FinalCollIORT = 0.*
deg;
796 const G4double spanningAngleGiunz5FinalCollIORT = 360.*
deg;
797 const G4double Giunz5FinalCollXPositionIORT = -783.5 *
mm;
799 solidGiunz5FinalCollIORT =
new G4Tubs(
"Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
800 outRadiusGiunz5FinalCollIORT,
801 hightGiunz5FinalCollIORT,
802 startAngleGiunz5FinalCollIORT,
803 spanningAngleGiunz5FinalCollIORT);
806 Giunz5FinalCollMaterialIORT,
"Giunz5FinalCollIORT", 0, 0, 0);
809 "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom,
false, 0);
811 logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
817 const G4double outRadiusGiunz4FinalCollIORT = 42. *
mm;
818 const G4double innRadiusGiunz4FinalCollIORT = 13.75 *
mm;
819 const G4double hightGiunz4FinalCollIORT = 8.5 *
mm;
820 const G4double startAngleGiunz4FinalCollIORT = 0.*
deg;
821 const G4double spanningAngleGiunz4FinalCollIORT = 360.*
deg;
822 const G4double Giunz4FinalCollXPositionIORT = -771.5 *
mm;
824 solidGiunz4FinalCollIORT =
new G4Tubs(
"Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
825 outRadiusGiunz4FinalCollIORT,
826 hightGiunz4FinalCollIORT,
827 startAngleGiunz4FinalCollIORT,
828 spanningAngleGiunz4FinalCollIORT);
831 Giunz4FinalCollMaterialIORT,
"Giunz4FinalCollIORT", 0, 0, 0);
834 "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom,
false, 0);
836 logGiunz4FinalCollIORT -> SetVisAttributes(blue);
844 const G4double outRadiusGiunz3FinalCollIORT = 42. *
mm;
845 const G4double innRadiusGiunz3FinalCollIORT = 0. *
mm;
846 const G4double hightGiunz3FinalCollIORT = 4.25 *
mm;
847 const G4double startAngleGiunz3FinalCollIORT = 0.*
deg;
848 const G4double spanningAngleGiunz3FinalCollIORT = 360.*
deg;
849 const G4double Giunz3FinalCollXPositionIORT = -758.75 *
mm;
851 solidGiunz3FinalCollIORT =
new G4Tubs(
"Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
852 outRadiusGiunz3FinalCollIORT,
853 hightGiunz3FinalCollIORT,
854 startAngleGiunz3FinalCollIORT,
855 spanningAngleGiunz3FinalCollIORT);
858 Giunz3FinalCollMaterialIORT,
"Giunz3FinalCollIORT", 0, 0, 0);
861 "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom,
false, 0);
863 logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
874 solidGiunz3FinalCollIntIORT =
new G4Cons(
"Giunz3FinalCollIntIORT",0.*
mm,13.75*
mm,0.*
mm,22.25*
mm,4.25*
mm,0.*
deg,360.*
deg);
877 Giunz3FinalCollMaterialIntIORT,
"Giunz3FinalCollIntIORT", 0, 0, 0);
879 physiGiunz3FinalCollIntIORT =
new G4PVPlacement(0,
G4ThreeVector(0.,0.,0.),
"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT,
false, 0);
881 logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow);
888 const G4double outRadiusGiunz2FinalCollIORT = 42. *
mm;
889 const G4double innRadiusGiunz2FinalCollIORT = 22.25 *
mm;
890 const G4double hightGiunz2FinalCollIORT = 5.75 *
mm;
891 const G4double startAngleGiunz2FinalCollIORT = 0.*
deg;
892 const G4double spanningAngleGiunz2FinalCollIORT = 360.*
deg;
893 const G4double Giunz2FinalCollXPositionIORT = -748.75 *
mm;
895 solidGiunz2FinalCollIORT =
new G4Tubs(
"Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT,
896 outRadiusGiunz2FinalCollIORT,
897 hightGiunz2FinalCollIORT,
898 startAngleGiunz2FinalCollIORT,
899 spanningAngleGiunz2FinalCollIORT);
902 Giunz2FinalCollMaterialIORT,
"Giunz2FinalCollIORT", 0, 0, 0);
905 "Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom,
false, 0);
907 logGiunz2FinalCollIORT -> SetVisAttributes(red);
913 const G4double outRadiusGiunz1FinalCollIORT = 50. *
mm;
914 const G4double innRadiusGiunz1FinalCollIORT = 22.25 *
mm;
915 const G4double hightGiunz1FinalCollIORT = 10. *
mm;
916 const G4double startAngleGiunz1FinalCollIORT = 0.*
deg;
917 const G4double spanningAngleGiunz1FinalCollIORT = 360.*
deg;
918 const G4double Giunz1FinalCollXPositionIORT = -733.*
mm;
920 solidGiunz1FinalCollIORT =
new G4Tubs(
"Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT,
921 outRadiusGiunz1FinalCollIORT,
922 hightGiunz1FinalCollIORT,
923 startAngleGiunz1FinalCollIORT,
924 spanningAngleGiunz1FinalCollIORT);
927 Giunz1FinalCollMaterialIORT,
"Giunz1FinalCollIORT", 0, 0, 0);
930 "Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom,
false, 0);
932 logGiunz1FinalCollIORT -> SetVisAttributes(gray);
944 const G4double hightFinalCollimatorIORT = 334. *
mm;
945 const G4double startAngleFinalCollimatorIORT = 0.*
deg;
946 const G4double spanningAngleFinalCollimatorIORT = 360.*
deg;
947 const G4double finalCollimatorXPositionIORT = -389.*
mm;
959 solidFinalCollimatorIORT =
new G4Tubs(
"FinalCollimatorIORT", innerRadiusFinalCollimatorIORT,
960 OuterRadiusFinalCollimatorIORT,
961 hightFinalCollimatorIORT,
962 startAngleFinalCollimatorIORT,
963 spanningAngleFinalCollimatorIORT);
966 finalCollimatorMaterialIORT,
"FinalCollimatorIORT", 0, 0, 0);
969 "FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom,
false, 0);
972 logFinalCollimatorIORT -> SetVisAttributes(darkOrange3);
982 solidFinalCollimatorIORT -> SetInnerRadius(value);
984 G4cout<<
"Inner Radius of the final collimator IORT is (mm):"
985 << solidFinalCollimatorIORT -> GetInnerRadius()/
mm
993 solidFinalCollimatorIORT -> SetOuterRadius(value);
995 G4cout<<
"Outer Radius of the final collimator IORT is (mm):"
996 << solidFinalCollimatorIORT -> GetOuterRadius()/
mm