40 physicalTreatmentRoom(0), hadrontherapyDetectorConstruction(0),
41 physiBeamLineSupport(0), physiBeamLineCover(0), physiBeamLineCover2(0),
43 physiFirstMonitorLayer1(0), physiFirstMonitorLayer2(0),
44 physiFirstMonitorLayer3(0), physiFirstMonitorLayer4(0),
45 physiNozzleSupport(0), physiHoleNozzleSupport(0),
46 physiSecondHoleNozzleSupport(0),
47 solidFinalCollimator(0),
48 physiFinalCollimator(0)
59 delete hadrontherapyDetectorConstruction;
66 SetDefaultDimensions();
69 ConstructPassiveCarbonBeamLine();
74 return physicalTreatmentRoom;
87 void PassiveCarbonBeamLine::SetDefaultDimensions()
91 white -> SetVisibility(
true);
92 white -> SetForceSolid(
true);
95 blue -> SetVisibility(
true);
96 blue -> SetForceSolid(
true);
99 gray-> SetVisibility(
true);
100 gray-> SetForceSolid(
true);
103 red-> SetVisibility(
true);
104 red-> SetForceSolid(
true);
107 yellow-> SetVisibility(
true);
108 yellow-> SetForceSolid(
true);
111 green -> SetVisibility(
true);
112 green -> SetForceSolid(
true);
115 darkGreen -> SetVisibility(
true);
116 darkGreen -> SetForceSolid(
true);
119 darkOrange3 -> SetVisibility(
true);
120 darkOrange3 -> SetForceSolid(
true);
123 skyBlue -> SetVisibility(
true);
124 skyBlue -> SetForceSolid(
true);
129 G4double defaultVacuumZoneXSize = 80.5325 *
mm;
130 vacuumZoneXSize = defaultVacuumZoneXSize;
133 vacuumZoneYSize = defaultVacuumZoneYSize;
136 vacuumZoneZSize = defaultVacuumZoneZSize;
139 G4double defaultVacuumZoneXPosition = -1855.5075 *
mm;
140 vacuumZoneXPosition = defaultVacuumZoneXPosition;
145 kaptonWindowXSize = defaultKaptonWindowXSize;
148 kaptonWindowYSize = defaultKaptonWindowYSize;
151 kaptonWindowZSize = defaultKaptonWindowZSize;
153 G4double defaultKaptonWindowXPosition = 80.5075*
mm;
154 kaptonWindowXPosition = defaultKaptonWindowXPosition;
158 G4double defaultFirstScatteringFoilXSize = 0.025 *
mm;
159 firstScatteringFoilXSize = defaultFirstScatteringFoilXSize;
161 G4double defaultFirstScatteringFoilYSize = 105.0 *
mm;
162 firstScatteringFoilYSize = defaultFirstScatteringFoilYSize;
164 G4double defaultFirstScatteringFoilZSize = 105 *
mm;
165 firstScatteringFoilZSize = defaultFirstScatteringFoilZSize;
167 G4double defaultFirstScatteringFoilXPosition = 0.0 *
mm;
168 firstScatteringFoilXPosition = defaultFirstScatteringFoilXPosition;
178 innerRadiusStopper = defaultInnerRadiusStopper;
181 heightStopper = defaultHeightStopper;
184 startAngleStopper = defaultStartAngleStopper;
187 spanningAngleStopper = defaultSpanningAngleStopper;
189 G4double defaultStopperXPosition = -1675.0 *
mm;
190 stopperXPosition = defaultStopperXPosition;
193 stopperYPosition = defaultStopperYPosition;
196 stopperZPosition = defaultStopperZPosition;
199 outerRadiusStopper = defaultOuterRadiusStopper;
204 G4double defaultSecondScatteringFoilXSize = 0.025 *
mm;
205 secondScatteringFoilXSize = defaultSecondScatteringFoilXSize;
207 G4double defaultSecondScatteringFoilYSize = 105.0 *
mm;
208 secondScatteringFoilYSize = defaultSecondScatteringFoilYSize;
210 G4double defaultSecondScatteringFoilZSize = 105.0 *
mm;
211 secondScatteringFoilZSize = defaultSecondScatteringFoilZSize;
213 G4double defaultSecondScatteringFoilXPosition = defaultStopperXPosition + defaultHeightStopper + defaultSecondScatteringFoilXSize/2;
214 secondScatteringFoilXPosition = defaultSecondScatteringFoilXPosition;
216 G4double defaultSecondScatteringFoilYPosition = 0 *
mm;
217 secondScatteringFoilYPosition = defaultSecondScatteringFoilYPosition;
219 G4double defaultSecondScatteringFoilZPosition = 0 *
mm;
220 secondScatteringFoilZPosition = defaultSecondScatteringFoilZPosition;
225 G4double defaultinnerRadiusFinalCollimator = 12.5 *
mm;
226 innerRadiusFinalCollimator = defaultinnerRadiusFinalCollimator;
258 beamLineSupportMaterial = aluminumNist;
261 vacuumZoneMaterial = galacticNist;
264 firstScatteringFoilMaterial = tantalumNist;
267 kaptonWindowMaterial = kaptonNist;
270 stopperMaterial = brass;
273 secondScatteringFoilMaterial = tantalumNist;
276 layer1MonitorChamberMaterial = kaptonNist;
277 layer2MonitorChamberMaterial = copperNistAsMaterial;
278 layer3MonitorChamberMaterial = airNist;
279 layer4MonitorChamberMaterial = copperNistAsMaterial;
283 nozzleSupportMaterial = PMMANist;
284 holeNozzleSupportMaterial = brass;
285 seconHoleNozzleSupportMaterial = airNist;
288 finalCollimatorMaterial = brass;
292 void PassiveCarbonBeamLine::ConstructPassiveCarbonBeamLine()
304 G4Box* treatmentRoom =
new G4Box(
"TreatmentRoom",worldX,worldY,worldZ);
307 "logicTreatmentRoom",
311 "physicalTreatmentRoom",
334 const G4double beamLineSupportXSize = 1.5*
m;
336 const G4double beamLineSupportZSize = 600.*
mm;
338 const G4double beamLineSupportXPosition = -1745.09 *
mm;
339 const G4double beamLineSupportYPosition = -230. *
mm;
340 const G4double beamLineSupportZPosition = 0.*
mm;
342 G4Box* beamLineSupport =
new G4Box(
"BeamLineSupport",
343 beamLineSupportXSize,
344 beamLineSupportYSize,
345 beamLineSupportZSize);
348 beamLineSupportMaterial,
351 beamLineSupportYPosition,
352 beamLineSupportZPosition),
354 logicBeamLineSupport,
355 physicalTreatmentRoom,
false, 0);
359 logicBeamLineSupport -> SetVisAttributes(gray);
364 const G4double beamLineCoverXSize = 1.5*
m;
368 const G4double beamLineCoverXPosition = -1745.09 *
mm;
369 const G4double beamLineCoverYPosition = -980.*
mm;
370 const G4double beamLineCoverZPosition = 600.*
mm;
372 G4Box* beamLineCover =
new G4Box(
"BeamLineCover",
378 beamLineSupportMaterial,
382 beamLineCoverYPosition,
383 beamLineCoverZPosition),
386 physicalTreatmentRoom,
395 beamLineCoverYPosition,
396 - beamLineCoverZPosition),
399 physicalTreatmentRoom,
404 logicBeamLineCover -> SetVisAttributes(blue);
429 physicalTreatmentRoom,
443 firstScatteringFoil =
new G4Box(
"FirstScatteringFoil",
444 firstScatteringFoilXSize/2,
445 firstScatteringFoilYSize/2,
446 firstScatteringFoilZSize/2);
449 firstScatteringFoilMaterial,
450 "FirstScatteringFoil");
454 "FirstScatteringFoil",
455 logicFirstScatteringFoil,
459 logicFirstScatteringFoil -> SetVisAttributes(skyBlue);
468 G4Box* solidKaptonWindow =
new G4Box(
"KaptonWindow",
474 kaptonWindowMaterial,
478 "KaptonWindow", logicKaptonWindow,
479 physiVacuumZone,
false, 0);
481 logicKaptonWindow -> SetVisAttributes(darkOrange3);
499 solidStopper =
new G4Tubs(
"Stopper",
504 spanningAngleStopper);
516 physicalTreatmentRoom,
520 logicStopper -> SetVisAttributes(red);
529 secondScatteringFoil =
new G4Box(
"SecondScatteringFoil",
530 secondScatteringFoilXSize/2,
531 secondScatteringFoilYSize/2,
532 secondScatteringFoilZSize/2);
535 secondScatteringFoilMaterial,
536 "SecondScatteringFoil");
539 secondScatteringFoilYPosition,
540 secondScatteringFoilZPosition),
541 "SeconScatteringFoil",
542 logicSecondScatteringFoil,
543 physicalTreatmentRoom,
547 logicSecondScatteringFoil -> SetVisAttributes(skyBlue);
570 const G4double monitor1XPosition = -1450.474956 *
mm;
571 const G4double monitor2XPosition = -4.500011*
mm;
572 const G4double monitor4XPosition = 4.500011*
mm;
574 G4Box* solidFirstMonitorLayer1 =
new G4Box(
"FirstMonitorLayer1",
580 layer1MonitorChamberMaterial,
581 "FirstMonitorLayer1");
585 "FirstMonitorLayer1",
586 logicFirstMonitorLayer1,
587 physicalTreatmentRoom,
591 G4Box* solidFirstMonitorLayer2 =
new G4Box(
"FirstMonitorLayer2",
597 layer2MonitorChamberMaterial,
598 "FirstMonitorLayer2");
601 "FirstMonitorLayer2",
602 logicFirstMonitorLayer2,
603 physiFirstMonitorLayer1,
607 G4Box* solidFirstMonitorLayer3 =
new G4Box(
"FirstMonitorLayer3",
613 layer3MonitorChamberMaterial,
614 "FirstMonitorLayer3");
619 logicFirstMonitorLayer3,
620 physiFirstMonitorLayer1,
624 G4Box* solidFirstMonitorLayer4 =
new G4Box(
"FirstMonitorLayer4",
630 layer4MonitorChamberMaterial,
631 "FirstMonitorLayer4");
634 "FirstMonitorLayer4",
635 logicFirstMonitorLayer4,
636 physiFirstMonitorLayer1,
false, 0);
638 logicFirstMonitorLayer3 -> SetVisAttributes(white);
662 const G4double nozzleSupportXPosition = -558. *
mm;
669 G4Box* solidNozzleSupport =
new G4Box(
"NozzleSupport",
675 nozzleSupportMaterial,
681 physicalTreatmentRoom,
685 logicNozzleSupport -> SetVisAttributes(yellow);
690 const G4double innerRadiusHoleNozzleSupport = 18.*
mm;
691 const G4double outerRadiusHoleNozzleSupport = 21.5 *
mm;
693 const G4double hightHoleNozzleSupport = 142.5*
mm;
694 const G4double startAngleHoleNozzleSupport = 0.*
deg;
695 const G4double spanningAngleHoleNozzleSupport = 360.*
deg;
697 const G4double holeNozzleSupportXPosition = -462.50 *
mm;
699 G4Tubs* solidHoleNozzleSupport =
new G4Tubs(
"HoleNozzleSupport",
700 innerRadiusHoleNozzleSupport,
701 outerRadiusHoleNozzleSupport,
702 hightHoleNozzleSupport,
703 startAngleHoleNozzleSupport,
704 spanningAngleHoleNozzleSupport);
707 holeNozzleSupportMaterial,
713 logicHoleNozzleSupport,
714 physicalTreatmentRoom,
false, 0);
716 logicHoleNozzleSupport -> SetVisAttributes(darkOrange3);
721 const G4double innerRadiusSecondHoleNozzleSupport = 0.*
mm;
722 const G4double outerRadiusSecondHoleNozzleSupport = 18.*
mm;
723 const G4double hightSecondHoleNozzleSupport = 29.5 *
mm;
724 const G4double startAngleSecondHoleNozzleSupport = 0.*
deg;
725 const G4double spanningAngleSecondHoleNozzleSupport = 360.*
deg;
727 G4Tubs* solidSecondHoleNozzleSupport =
new G4Tubs(
"SecondHoleNozzleSupport",
728 innerRadiusSecondHoleNozzleSupport,
729 outerRadiusSecondHoleNozzleSupport,
730 hightSecondHoleNozzleSupport,
731 startAngleSecondHoleNozzleSupport,
732 spanningAngleSecondHoleNozzleSupport);
735 seconHoleNozzleSupportMaterial,
736 "SecondHoleNozzleSupport",
742 "SecondHoleNozzleSupport",
743 logicSecondHoleNozzleSupport,
748 logicHoleNozzleSupport -> SetVisAttributes(darkOrange3);
757 const G4double outerRadiusFinalCollimator = 21.5*
mm;
760 const G4double spanningAngleFinalCollimator = 360.*
deg;
762 const G4double finalCollimatorXPosition = -323.50 *
mm;
770 solidFinalCollimator =
new G4Tubs(
"FinalCollimator",
771 innerRadiusFinalCollimator,
772 outerRadiusFinalCollimator,
773 hightFinalCollimator,
774 startAngleFinalCollimator,
775 spanningAngleFinalCollimator);
778 finalCollimatorMaterial,
785 "FinalCollimator", logicFinalCollimator, physicalTreatmentRoom,
false, 0);
787 logicFinalCollimator -> SetVisAttributes(yellow);