61 physicalTreatmentRoom(0),iortDetectorConstruction(0),
65 solidFinalCollimatorIORT(0),
66 logicFinalCollimatorIORT(0),
67 physiFinalCollimatorIORT(0),
69 solidGiunz1FinalCollIORT(0),
70 logicGiunz1FinalCollIORT(0),
71 physiGiunz1FinalCollIORT(0),
73 solidGiunz2FinalCollIORT(0),
74 logicGiunz2FinalCollIORT(0),
75 physiGiunz2FinalCollIORT(0),
77 solidGiunz3FinalCollIORT(0),
78 logicGiunz3FinalCollIORT(0),
79 physiGiunz3FinalCollIORT(0),
81 solidGiunz3FinalCollIntIORT(0),
82 logicGiunz3FinalCollIntIORT(0),
83 physiGiunz3FinalCollIntIORT(0),
85 solidGiunz4FinalCollIORT(0),
86 logicGiunz4FinalCollIORT(0),
87 physiGiunz4FinalCollIORT(0),
89 solidGiunz5FinalCollIORT(0),
90 logicGiunz5FinalCollIORT(0),
91 physiGiunz5FinalCollIORT(0),
105 solidBlocco20mmIORT(0),
106 logicBlocco20mmIORT(0),
107 physiBlocco20mmIORT(0),
154 delete collimatorMessenger;
155 delete iortDetectorConstruction;
164 SetDefaultDimensions();
167 ConstructCollimator50BeamLine();
172 return physicalTreatmentRoom;
185 void Collimator50BeamLine::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);
229 G4double defaultOuterRadiusFinalCollimatorIORT = 30. *
mm;
230 OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
232 G4double defaultinnerRadiusFinalCollimatorIORT = 25. *
mm;
233 innerRadiusFinalCollimatorIORT = defaultinnerRadiusFinalCollimatorIORT;
270 finalCollimatorMaterialIORT = PMMANist;
273 Giunz1FinalCollMaterialIORT = PMMANist;
276 Giunz2FinalCollMaterialIORT = PMMANist;
279 Giunz3FinalCollMaterialIORT = PMMANist;
282 Giunz3FinalCollMaterialIntIORT = airNist;
285 Giunz4FinalCollMaterialIORT = PMMANist;
288 Giunz5FinalCollMaterialIORT = PMMANist;
291 Blocco1IORTMaterialIORT = PMMANist;
294 Blocco2IORTMaterialIORT = PMMANist;
297 Blocco3IORTMaterialIORT = PMMANist;
300 Blocco20mmIORTMaterialIORT = PMMANist;
303 CM1_1_2IORTMaterialIORT = aluminumNist;
306 CM1_2_2IORTMaterialIORT = aluminumNist;
309 CM2_1_2IORTMaterialIORT = aluminumNist;
312 CM2_2_2IORTMaterialIORT = aluminumNist;
315 CCMIORTMaterialIORT = PMMANist;
318 PFS1IORTMaterialIORT = PMMANist;
321 PFS2IORTMaterialIORT = PMMANist;
324 PFS3IORTMaterialIORT = PMMANist;
327 FTIORTMaterialIORT = titanioNist;
330 VSIORTMaterialIORT = galacticNist;
335 void Collimator50BeamLine::ConstructCollimator50BeamLine()
347 G4Box* treatmentRoom =
new G4Box(
"TreatmentRoom",worldX,worldY,worldZ);
350 "logicTreatmentRoom",
354 "physicalTreatmentRoom",
392 const G4double XPositionVSIORT = -862.797 *
mm;
394 solidVSIORT =
new G4Tubs(
"VSIORT", innRadiusVSIORT,
398 spanningAngleVSIORT);
401 VSIORTMaterialIORT,
"VSIORT", 0, 0, 0);
404 "VSIORT", logVSIORT, physicalTreatmentRoom,
false, 0);
406 logVSIORT -> SetVisAttributes(green);
428 const G4double XPositionFTIORT = -861.791 *
mm;
430 solidFTIORT =
new G4Tubs(
"FTIORT", innRadiusFTIORT,
434 spanningAngleFTIORT);
437 FTIORTMaterialIORT,
"FTIORT", 0, 0, 0);
440 "FTIORT", logFTIORT, physicalTreatmentRoom,
false, 0);
442 logFTIORT -> SetVisAttributes(yellow);
469 const G4double XPositionPFS3IORT = -848.755 *
mm;
471 solidPFS3IORT =
new G4Tubs(
"PFS3IORT", innRadiusPFS3IORT,
475 spanningAnglePFS3IORT);
478 PFS3IORTMaterialIORT,
"PFS3IORT", 0, 0, 0);
481 "PFS3IORT", logPFS3IORT, physicalTreatmentRoom,
false, 0);
483 logPFS3IORT -> SetVisAttributes(white);
495 const G4double XPositionPFS2IORT = -844.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 = -841.905 *
mm;
522 solidPFS1IORT =
new G4Tubs(
"PFS1IORT", innRadiusPFS1IORT,
526 spanningAnglePFS1IORT);
529 PFS1IORTMaterialIORT,
"PFS1IORT", 0, 0, 0);
532 "PFS1IORT", logPFS1IORT, physicalTreatmentRoom,
false, 0);
534 logPFS1IORT -> SetVisAttributes(green);
545 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;
573 solidCM2_2_2IORT =
new G4Tubs(
"CM2_2_2IORT", innRadiusCM2_2_2IORT,
574 outRadiusCM2_2_2IORT,
576 startAngleCM2_2_2IORT,
577 spanningAngleCM2_2_2IORT);
580 CM2_2_2IORTMaterialIORT,
"CM2_2_2IORT", 0, 0, 0);
583 "CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom,
false, 0);
585 logCM2_2_2IORT -> SetVisAttributes(green);
592 const G4double outRadiusCM2_1_2IORT = 20. *
mm;
596 const G4double spanningAngleCM2_1_2IORT = 360.*
deg;
597 const G4double XPositionCM2_1_2IORT = -839. *
mm;
599 solidCM2_1_2IORT =
new G4Tubs(
"CM2_1_2IORT", innRadiusCM2_1_2IORT,
600 outRadiusCM2_1_2IORT,
602 startAngleCM2_1_2IORT,
603 spanningAngleCM2_1_2IORT);
606 CM2_1_2IORTMaterialIORT,
"CM2_1_2IORT", 0, 0, 0);
609 "CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom,
false, 0);
611 logCM2_1_2IORT -> SetVisAttributes(yellow);
617 const G4double outRadiusCM1_2_2IORT = 20. *
mm;
621 const G4double spanningAngleCM1_2_2IORT = 360.*
deg;
622 const G4double XPositionCM1_2_2IORT = -837. *
mm;
624 solidCM1_2_2IORT =
new G4Tubs(
"CM1_2_2IORT", innRadiusCM1_2_2IORT,
625 outRadiusCM1_2_2IORT,
627 startAngleCM1_2_2IORT,
628 spanningAngleCM1_2_2IORT);
631 CM1_2_2IORTMaterialIORT,
"CM1_2_2IORT", 0, 0, 0);
634 "CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom,
false, 0);
636 logCM1_2_2IORT -> SetVisAttributes(yellow);
642 const G4double outRadiusCM1_1_2IORT = 20. *
mm;
646 const G4double spanningAngleCM1_1_2IORT = 360.*
deg;
647 const G4double XPositionCM1_1_2IORT = -835. *
mm;
649 solidCM1_1_2IORT =
new G4Tubs(
"CM1_1_2IORT", innRadiusCM1_1_2IORT,
650 outRadiusCM1_1_2IORT,
652 startAngleCM1_1_2IORT,
653 spanningAngleCM1_1_2IORT);
656 CM1_1_2IORTMaterialIORT,
"CM1_1_2IORT", 0, 0, 0);
659 "CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom,
false, 0);
661 logCM1_1_2IORT -> SetVisAttributes(yellow);
683 const G4double outRadiusBlocco20mmIORT = 36.5 *
mm;
684 const G4double innRadiusBlocco20mmIORT = 10. *
mm;
687 const G4double spanningAngleBlocco20mmIORT = 360.*
deg;
688 const G4double XPositionBlocco20mmIORT = -830. *
mm;
691 solidBlocco20mmIORT =
new G4Tubs(
"Blocco20mmIORT", innRadiusBlocco20mmIORT,
692 outRadiusBlocco20mmIORT,
694 startAngleBlocco20mmIORT,
695 spanningAngleBlocco20mmIORT);
698 Blocco20mmIORTMaterialIORT,
"Blocco20mmIORT", 0, 0, 0);
701 "Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom,
false, 0);
703 logBlocco20mmIORT -> SetVisAttributes(green);
710 const G4double outRadiusBlocco3IORT = 36.5 *
mm;
711 const G4double innRadiusBlocco3IORT = 15. *
mm;
714 const G4double spanningAngleBlocco3IORT = 360.*
deg;
715 const G4double XPositionBlocco3IORT = -823.5 *
mm;
717 solidBlocco3IORT =
new G4Tubs(
"Blocco3IORT", innRadiusBlocco3IORT,
718 outRadiusBlocco3IORT,
720 startAngleBlocco3IORT,
721 spanningAngleBlocco3IORT);
724 Blocco3IORTMaterialIORT,
"Blocco3IORT", 0, 0, 0);
727 "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom,
false, 0);
729 logBlocco3IORT -> SetVisAttributes(yellow);
735 const G4double outRadiusBlocco2IORT = 41.5 *
mm;
736 const G4double innRadiusBlocco2IORT = 15. *
mm;
739 const G4double spanningAngleBlocco2IORT = 360.*
deg;
740 const G4double XPositionBlocco2IORT = -812. *
mm;
742 solidBlocco2IORT =
new G4Tubs(
"Blocco2IORT", innRadiusBlocco2IORT,
743 outRadiusBlocco2IORT,
745 startAngleBlocco2IORT,
746 spanningAngleBlocco2IORT);
749 Blocco2IORTMaterialIORT,
"Blocco2IORT", 0, 0, 0);
752 "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom,
false, 0);
754 logBlocco2IORT -> SetVisAttributes(red);
760 const G4double outRadiusBlocco1IORT = 52.0 *
mm;
761 const G4double innRadiusBlocco1IORT = 15. *
mm;
764 const G4double spanningAngleBlocco1IORT = 360.*
deg;
765 const G4double XPositionBlocco1IORT = -795.5*
mm;
767 solidBlocco1IORT =
new G4Tubs(
"Blocco1IORT", innRadiusBlocco1IORT,
768 outRadiusBlocco1IORT,
770 startAngleBlocco1IORT,
771 spanningAngleBlocco1IORT);
774 Blocco1IORTMaterialIORT,
"Blocco1IORT", 0, 0, 0);
777 "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom,
false, 0);
779 logBlocco1IORT -> SetVisAttributes(white);
796 const G4double outRadiusGiunz5FinalCollIORT = 48.25 *
mm;
797 const G4double innRadiusGiunz5FinalCollIORT = 13.75 *
mm;
798 const G4double hightGiunz5FinalCollIORT = 3.5 *
mm;
799 const G4double startAngleGiunz5FinalCollIORT = 0.*
deg;
800 const G4double spanningAngleGiunz5FinalCollIORT = 360.*
deg;
801 const G4double Giunz5FinalCollXPositionIORT = -783.5 *
mm;
803 solidGiunz5FinalCollIORT =
new G4Tubs(
"Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
804 outRadiusGiunz5FinalCollIORT,
805 hightGiunz5FinalCollIORT,
806 startAngleGiunz5FinalCollIORT,
807 spanningAngleGiunz5FinalCollIORT);
810 Giunz5FinalCollMaterialIORT,
"Giunz5FinalCollIORT", 0, 0, 0);
813 "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom,
false, 0);
815 logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
821 const G4double outRadiusGiunz4FinalCollIORT = 42. *
mm;
822 const G4double innRadiusGiunz4FinalCollIORT = 13.75 *
mm;
823 const G4double hightGiunz4FinalCollIORT = 8.5 *
mm;
824 const G4double startAngleGiunz4FinalCollIORT = 0.*
deg;
825 const G4double spanningAngleGiunz4FinalCollIORT = 360.*
deg;
826 const G4double Giunz4FinalCollXPositionIORT = -771.5 *
mm;
828 solidGiunz4FinalCollIORT =
new G4Tubs(
"Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
829 outRadiusGiunz4FinalCollIORT,
830 hightGiunz4FinalCollIORT,
831 startAngleGiunz4FinalCollIORT,
832 spanningAngleGiunz4FinalCollIORT);
835 Giunz4FinalCollMaterialIORT,
"Giunz4FinalCollIORT", 0, 0, 0);
838 "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom,
false, 0);
840 logGiunz4FinalCollIORT -> SetVisAttributes(blue);
848 const G4double outRadiusGiunz3FinalCollIORT = 42. *
mm;
849 const G4double innRadiusGiunz3FinalCollIORT = 0. *
mm;
850 const G4double hightGiunz3FinalCollIORT = 4.25 *
mm;
851 const G4double startAngleGiunz3FinalCollIORT = 0.*
deg;
852 const G4double spanningAngleGiunz3FinalCollIORT = 360.*
deg;
853 const G4double Giunz3FinalCollXPositionIORT = -758.75 *
mm;
855 solidGiunz3FinalCollIORT =
new G4Tubs(
"Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
856 outRadiusGiunz3FinalCollIORT,
857 hightGiunz3FinalCollIORT,
858 startAngleGiunz3FinalCollIORT,
859 spanningAngleGiunz3FinalCollIORT);
862 Giunz3FinalCollMaterialIORT,
"Giunz3FinalCollIORT", 0, 0, 0);
865 "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom,
false, 0);
867 logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
878 solidGiunz3FinalCollIntIORT =
new G4Cons(
"Giunz3FinalCollIntIORT",0.*
mm,13.75*
mm,0.*
mm,20.0*
mm,4.25*
mm,0.*
deg,360.*
deg);
881 Giunz3FinalCollMaterialIntIORT,
"Giunz3FinalCollIntIORT", 0, 0, 0);
883 physiGiunz3FinalCollIntIORT =
new G4PVPlacement(0,
G4ThreeVector(0.,0.,0.),
"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT,
false, 0);
885 logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow);
896 const G4double hightFinalCollimatorIORT = 349.75 *
mm;
897 const G4double startAngleFinalCollimatorIORT = 0.*
deg;
898 const G4double spanningAngleFinalCollimatorIORT = 360.*
deg;
899 const G4double finalCollimatorXPositionIORT = -404.75 *
mm;
908 solidFinalCollimatorIORT =
new G4Tubs(
"FinalCollimatorIORT", innerRadiusFinalCollimatorIORT,
909 OuterRadiusFinalCollimatorIORT,
910 hightFinalCollimatorIORT,
911 startAngleFinalCollimatorIORT,
912 spanningAngleFinalCollimatorIORT);
915 finalCollimatorMaterialIORT,
"FinalCollimatorIORT", 0, 0, 0);
918 "FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom,
false, 0);
921 logFinalCollimatorIORT -> SetVisAttributes(gray);
931 solidFinalCollimatorIORT -> SetInnerRadius(value);
933 G4cout<<
"Inner Radius of the final collimator IORT is (mm):"
934 << solidFinalCollimatorIORT -> GetInnerRadius()/
mm
942 solidFinalCollimatorIORT -> SetOuterRadius(value);
944 G4cout<<
"Outer Radius of the final collimator IORT is (mm):"
945 << solidFinalCollimatorIORT -> GetOuterRadius()/
mm