60 physicalTreatmentRoom(0),iortDetectorConstruction(0),
63 solidFinalCollimatorIORT(0),
64 logicFinalCollimatorIORT(0),
65 physiFinalCollimatorIORT(0),
67 solidGiunz1FinalCollIORT(0),
68 logicGiunz1FinalCollIORT(0),
69 physiGiunz1FinalCollIORT(0),
71 solidGiunz2FinalCollIORT(0),
72 logicGiunz2FinalCollIORT(0),
73 physiGiunz2FinalCollIORT(0),
75 solidGiunz3FinalCollIORT(0),
76 logicGiunz3FinalCollIORT(0),
77 physiGiunz3FinalCollIORT(0),
79 solidGiunz3FinalCollIntIORT(0),
80 logicGiunz3FinalCollIntIORT(0),
81 physiGiunz3FinalCollIntIORT(0),
83 solidGiunz4FinalCollIORT(0),
84 logicGiunz4FinalCollIORT(0),
85 physiGiunz4FinalCollIORT(0),
87 solidGiunz5FinalCollIORT(0),
88 logicGiunz5FinalCollIORT(0),
89 physiGiunz5FinalCollIORT(0),
103 solidBlocco20mmIORT(0),
104 logicBlocco20mmIORT(0),
105 physiBlocco20mmIORT(0),
152 delete collimatorMessenger;
153 delete iortDetectorConstruction;
162 SetDefaultDimensions();
165 ConstructCollimator100BeamLine();
171 return physicalTreatmentRoom;
184 void Collimator100BeamLine::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 = 55. *
mm;
229 OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
231 G4double defaultinnerRadiusFinalCollimatorIORT = 50. *
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 Collimator100BeamLine::ConstructCollimator100BeamLine()
346 G4Box* treatmentRoom =
new G4Box(
"TreatmentRoom",worldX,worldY,worldZ);
349 "logicTreatmentRoom",
353 "physicalTreatmentRoom",
391 const G4double XPositionVSIORT = -1062.797 *
mm;
393 solidVSIORT =
new G4Tubs(
"VSIORT", innRadiusVSIORT,
397 spanningAngleVSIORT);
400 VSIORTMaterialIORT,
"VSIORT", 0, 0, 0);
403 "VSIORT", logicVSIORT, physicalTreatmentRoom,
false, 0);
404 logVSIORT -> SetVisAttributes(green);
425 const G4double XPositionFTIORT = -1061.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 = -1048.755 *
mm;
470 solidPFS3IORT =
new G4Tubs(
"PFS3IORT", innRadiusPFS3IORT,
474 spanningAnglePFS3IORT);
477 PFS3IORTMaterialIORT,
"PFS3IORT", 0, 0, 0);
480 "PFS3IORT", logPFS3IORT, physicalTreatmentRoom,
false, 0);
482 logPFS3IORT -> SetVisAttributes(white);
494 const G4double XPositionPFS2IORT = -1044.255 *
mm;
497 solidPFS2IORT =
new G4Tubs(
"PFS2IORT", innRadiusPFS2IORT,
501 spanningAnglePFS2IORT);
504 PFS2IORTMaterialIORT,
"PFS2IORT", 0, 0, 0);
507 "PFS2IORT", logPFS2IORT, physicalTreatmentRoom,
false, 0);
509 logPFS2IORT -> SetVisAttributes(green);
520 const G4double XPositionPFS1IORT = -1041.905 *
mm;
523 solidPFS1IORT =
new G4Tubs(
"PFS1IORT", innRadiusPFS1IORT,
527 spanningAnglePFS1IORT);
530 PFS1IORTMaterialIORT,
"PFS1IORT", 0, 0, 0);
533 "PFS1IORT", logPFS1IORT, physicalTreatmentRoom,
false, 0);
535 logPFS1IORT -> SetVisAttributes(green);
546 const G4double XPositionCCMIORT = -1037.0125 *
mm;
549 solidCCMIORT =
new G4Tubs(
"CCMIORT", innRadiusCCMIORT,
553 spanningAngleCCMIORT);
556 CCMIORTMaterialIORT,
"CCMIORT", 0, 0, 0);
559 "CCMIORT", logCCMIORT, physicalTreatmentRoom,
false, 0);
561 logCCMIORT -> SetVisAttributes(green);
568 const G4double outRadiusCM2_2_2IORT = 20. *
mm;
572 const G4double spanningAngleCM2_2_2IORT = 360.*
deg;
573 const G4double XPositionCM2_2_2IORT = -1041. *
mm;
576 solidCM2_2_2IORT =
new G4Tubs(
"CM2_2_2IORT", innRadiusCM2_2_2IORT,
577 outRadiusCM2_2_2IORT,
579 startAngleCM2_2_2IORT,
580 spanningAngleCM2_2_2IORT);
583 CM2_2_2IORTMaterialIORT,
"CM2_2_2IORT", 0, 0, 0);
586 "CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom,
false, 0);
588 logCM2_2_2IORT -> SetVisAttributes(green);
595 const G4double outRadiusCM2_1_2IORT = 20. *
mm;
599 const G4double spanningAngleCM2_1_2IORT = 360.*
deg;
600 const G4double XPositionCM2_1_2IORT = -1039. *
mm;
603 solidCM2_1_2IORT =
new G4Tubs(
"CM2_1_2IORT", innRadiusCM2_1_2IORT,
604 outRadiusCM2_1_2IORT,
606 startAngleCM2_1_2IORT,
607 spanningAngleCM2_1_2IORT);
610 CM2_1_2IORTMaterialIORT,
"CM2_1_2IORT", 0, 0, 0);
613 "CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom,
false, 0);
615 logCM2_1_2IORT -> SetVisAttributes(yellow);
621 const G4double outRadiusCM1_2_2IORT = 20. *
mm;
625 const G4double spanningAngleCM1_2_2IORT = 360.*
deg;
626 const G4double XPositionCM1_2_2IORT = -1037. *
mm;
629 solidCM1_2_2IORT =
new G4Tubs(
"CM1_2_2IORT", innRadiusCM1_2_2IORT,
630 outRadiusCM1_2_2IORT,
632 startAngleCM1_2_2IORT,
633 spanningAngleCM1_2_2IORT);
636 CM1_2_2IORTMaterialIORT,
"CM1_2_2IORT", 0, 0, 0);
639 "CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom,
false, 0);
642 logCM1_2_2IORT -> SetVisAttributes(yellow);
648 const G4double outRadiusCM1_1_2IORT = 20. *
mm;
652 const G4double spanningAngleCM1_1_2IORT = 360.*
deg;
653 const G4double XPositionCM1_1_2IORT = -1035. *
mm;
657 solidCM1_1_2IORT =
new G4Tubs(
"CM1_1_2IORT", innRadiusCM1_1_2IORT,
658 outRadiusCM1_1_2IORT,
660 startAngleCM1_1_2IORT,
661 spanningAngleCM1_1_2IORT);
664 CM1_1_2IORTMaterialIORT,
"CM1_1_2IORT", 0, 0, 0);
667 "CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom,
false, 0);
668 logCM1_1_2IORT -> SetVisAttributes(yellow);
690 const G4double outRadiusBlocco20mmIORT = 36.5 *
mm;
691 const G4double innRadiusBlocco20mmIORT = 10. *
mm;
694 const G4double spanningAngleBlocco20mmIORT = 360.*
deg;
695 const G4double XPositionBlocco20mmIORT = -1030. *
mm;
698 solidBlocco20mmIORT =
new G4Tubs(
"Blocco20mmIORT", innRadiusBlocco20mmIORT,
699 outRadiusBlocco20mmIORT,
701 startAngleBlocco20mmIORT,
702 spanningAngleBlocco20mmIORT);
705 Blocco20mmIORTMaterialIORT,
"Blocco20mmIORT", 0, 0, 0);
708 "Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom,
false, 0);
711 logBlocco20mmIORT -> SetVisAttributes(green);
718 const G4double outRadiusBlocco3IORT = 36.5 *
mm;
719 const G4double innRadiusBlocco3IORT = 15. *
mm;
722 const G4double spanningAngleBlocco3IORT = 360.*
deg;
723 const G4double XPositionBlocco3IORT = -1023.5 *
mm;
726 solidBlocco3IORT =
new G4Tubs(
"Blocco3IORT", innRadiusBlocco3IORT,
727 outRadiusBlocco3IORT,
729 startAngleBlocco3IORT,
730 spanningAngleBlocco3IORT);
733 Blocco3IORTMaterialIORT,
"Blocco3IORT", 0, 0, 0);
736 "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom,
false, 0);
739 logBlocco3IORT -> SetVisAttributes(yellow);
745 const G4double outRadiusBlocco2IORT = 41.5 *
mm;
746 const G4double innRadiusBlocco2IORT = 15. *
mm;
749 const G4double spanningAngleBlocco2IORT = 360.*
deg;
750 const G4double XPositionBlocco2IORT = -1012. *
mm;
753 solidBlocco2IORT =
new G4Tubs(
"Blocco2IORT", innRadiusBlocco2IORT,
754 outRadiusBlocco2IORT,
756 startAngleBlocco2IORT,
757 spanningAngleBlocco2IORT);
760 Blocco2IORTMaterialIORT,
"Blocco2IORT", 0, 0, 0);
763 "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom,
false, 0);
766 logBlocco2IORT -> SetVisAttributes(red);
772 const G4double outRadiusBlocco1IORT = 52.0 *
mm;
773 const G4double innRadiusBlocco1IORT = 15. *
mm;
776 const G4double spanningAngleBlocco1IORT = 360.*
deg;
777 const G4double XPositionBlocco1IORT = -995.5*
mm;
780 solidBlocco1IORT =
new G4Tubs(
"Blocco1IORT", innRadiusBlocco1IORT,
781 outRadiusBlocco1IORT,
783 startAngleBlocco1IORT,
784 spanningAngleBlocco1IORT);
787 Blocco1IORTMaterialIORT,
"Blocco1IORT", 0, 0, 0);
790 "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom,
false, 0);
793 logBlocco1IORT -> SetVisAttributes(white);
810 const G4double outRadiusGiunz5FinalCollIORT = 48.25 *
mm;
811 const G4double innRadiusGiunz5FinalCollIORT = 13.75 *
mm;
812 const G4double hightGiunz5FinalCollIORT = 3.5 *
mm;
813 const G4double startAngleGiunz5FinalCollIORT = 0.*
deg;
814 const G4double spanningAngleGiunz5FinalCollIORT = 360.*
deg;
815 const G4double Giunz5FinalCollXPositionIORT = -983.5 *
mm;
819 solidGiunz5FinalCollIORT =
new G4Tubs(
"Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
820 outRadiusGiunz5FinalCollIORT,
821 hightGiunz5FinalCollIORT,
822 startAngleGiunz5FinalCollIORT,
823 spanningAngleGiunz5FinalCollIORT);
826 Giunz5FinalCollMaterialIORT,
"Giunz5FinalCollIORT", 0, 0, 0);
829 "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom,
false, 0);
831 logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
837 const G4double outRadiusGiunz4FinalCollIORT = 42. *
mm;
838 const G4double innRadiusGiunz4FinalCollIORT = 13.75 *
mm;
839 const G4double hightGiunz4FinalCollIORT = 8.5 *
mm;
840 const G4double startAngleGiunz4FinalCollIORT = 0.*
deg;
841 const G4double spanningAngleGiunz4FinalCollIORT = 360.*
deg;
842 const G4double Giunz4FinalCollXPositionIORT = -971.5 *
mm;
846 solidGiunz4FinalCollIORT =
new G4Tubs(
"Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
847 outRadiusGiunz4FinalCollIORT,
848 hightGiunz4FinalCollIORT,
849 startAngleGiunz4FinalCollIORT,
850 spanningAngleGiunz4FinalCollIORT);
853 Giunz4FinalCollMaterialIORT,
"Giunz4FinalCollIORT", 0, 0, 0);
856 "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom,
false, 0);
858 logGiunz4FinalCollIORT -> SetVisAttributes(blue);
866 const G4double outRadiusGiunz3FinalCollIORT = 42. *
mm;
867 const G4double innRadiusGiunz3FinalCollIORT = 0. *
mm;
868 const G4double hightGiunz3FinalCollIORT = 4.25 *
mm;
869 const G4double startAngleGiunz3FinalCollIORT = 0.*
deg;
870 const G4double spanningAngleGiunz3FinalCollIORT = 360.*
deg;
871 const G4double Giunz3FinalCollXPositionIORT = -958.75 *
mm;
874 solidGiunz3FinalCollIORT =
new G4Tubs(
"Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
875 outRadiusGiunz3FinalCollIORT,
876 hightGiunz3FinalCollIORT,
877 startAngleGiunz3FinalCollIORT,
878 spanningAngleGiunz3FinalCollIORT);
881 Giunz3FinalCollMaterialIORT,
"Giunz3FinalCollIORT", 0, 0, 0);
884 "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom,
false, 0);
886 logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
897 solidGiunz3FinalCollIntIORT =
new G4Cons(
"Giunz3FinalCollIntIORT",0.*
mm,13.75*
mm,0.*
mm,22.25*
mm,4.25*
mm,0.*
deg,360.*
deg);
900 Giunz3FinalCollMaterialIntIORT,
"Giunz3FinalCollIntIORT", 0, 0, 0);
902 physiGiunz3FinalCollIntIORT =
new G4PVPlacement(0,
G4ThreeVector(0.,0.,0.),
"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT,
false, 0);
904 logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow);
911 const G4double outRadiusGiunz2FinalCollIORT = 42. *
mm;
912 const G4double innRadiusGiunz2FinalCollIORT = 22.25 *
mm;
913 const G4double hightGiunz2FinalCollIORT = 5.75 *
mm;
914 const G4double startAngleGiunz2FinalCollIORT = 0.*
deg;
915 const G4double spanningAngleGiunz2FinalCollIORT = 360.*
deg;
916 const G4double Giunz2FinalCollXPositionIORT = -948.75 *
mm;
920 solidGiunz2FinalCollIORT =
new G4Tubs(
"Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT,
921 outRadiusGiunz2FinalCollIORT,
922 hightGiunz2FinalCollIORT,
923 startAngleGiunz2FinalCollIORT,
924 spanningAngleGiunz2FinalCollIORT);
927 Giunz2FinalCollMaterialIORT,
"Giunz2FinalCollIORT", 0, 0, 0);
930 "Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom,
false, 0);
932 logGiunz2FinalCollIORT -> SetVisAttributes(red);
938 const G4double outRadiusGiunz1FinalCollIORT = 65. *
mm;
939 const G4double innRadiusGiunz1FinalCollIORT = 22.25 *
mm;
940 const G4double hightGiunz1FinalCollIORT = 10. *
mm;
941 const G4double startAngleGiunz1FinalCollIORT = 0.*
deg;
942 const G4double spanningAngleGiunz1FinalCollIORT = 360.*
deg;
943 const G4double Giunz1FinalCollXPositionIORT = -933.*
mm;
947 solidGiunz1FinalCollIORT =
new G4Tubs(
"Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT,
948 outRadiusGiunz1FinalCollIORT,
949 hightGiunz1FinalCollIORT,
950 startAngleGiunz1FinalCollIORT,
951 spanningAngleGiunz1FinalCollIORT);
954 Giunz1FinalCollMaterialIORT,
"Giunz1FinalCollIORT", 0, 0, 0);
957 "Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom,
false, 0);
959 logGiunz1FinalCollIORT -> SetVisAttributes(gray);
971 const G4double hightFinalCollimatorIORT = 434. *
mm;
972 const G4double startAngleFinalCollimatorIORT = 0.*
deg;
973 const G4double spanningAngleFinalCollimatorIORT = 360.*
deg;
974 const G4double finalCollimatorXPositionIORT = -489.*
mm;
986 solidFinalCollimatorIORT =
new G4Tubs(
"FinalCollimatorIORT", innerRadiusFinalCollimatorIORT,
987 OuterRadiusFinalCollimatorIORT,
988 hightFinalCollimatorIORT,
989 startAngleFinalCollimatorIORT,
990 spanningAngleFinalCollimatorIORT);
993 finalCollimatorMaterialIORT,
"FinalCollimatorIORT", 0, 0, 0);
996 "FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom,
false, 0);
999 logFinalCollimatorIORT -> SetVisAttributes(darkGreen);
1010 solidFinalCollimatorIORT -> SetInnerRadius(value);
1012 G4cout<<
"Inner Radius of the final collimator IORT is (mm):"
1013 << solidFinalCollimatorIORT -> GetInnerRadius()/
mm
1021 solidFinalCollimatorIORT -> SetOuterRadius(value);
1023 G4cout<<
"Outer Radius of the final collimator IORT is (mm):"
1024 << solidFinalCollimatorIORT -> GetOuterRadius()/
mm