Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PassiveProtonBeamLine.hh
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 // This is the *BASIC* version of Hadrontherapy, a Geant4-based application
27 // See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
28 //
29 // Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
30 // the *COMPLETE* version of this program, together with its documentation;
31 // Hadrontherapy (both basic and full version) are supported by the Italian INFN
32 // Institute in the framework of the MC-INFN Group
33 //
34 
35 #ifndef PassiveProtonBeamLine_H
36 #define PassiveProtonBeamLine_H 1
37 
38 #include "globals.hh"
40 #include "G4Box.hh"
41 #include "G4Tubs.hh"
42 #include "G4VisAttributes.hh"
43 #include "G4LogicalVolume.hh"
44 
45 class G4VPhysicalVolume;
49 
51 {
52 public:
53 
54  //PassiveProtonBeamLine(G4VPhysicalVolume*);
57 
59 
61  // Definition of the beam line support
62 
64  // Definition of the first scattering foil,
65  // of the Kapton window, of the stopper
66 
68  // This defines the "range shifter". Is is a slab
69  // (usually of PMMA" acting as energy degrader
70  // of primary beam
71 
73  // Definition of the first collimator, of the range shifter,
74  // of the second collimator, of the first and second
75  // collimator modulators
76 
78  // Definition of three monitor chambers
79 
81  // Construct the MOPI on-line detector
82 
84  // Definition of the beam noozle
85 
87  // Definition of the final collimator
88 
89  // The following methods allow to change parameters
90  // of some beam line components
91 
93  // This method allows to move the Range Shifter along
94  // the X axis
95 
96  void SetRangeShifterXSize(G4double halfSize);
97  // This method allows to change the size of the range shifter along
98  // the X axis
99 
101  // This method allows to change the size of the first scattering foil
102  // along the X axis
103 
105  // This method allows to change the size of the second scattering foil
106  // along the X axis
107 
109  // This method allows to change the size of the outer radius of the stopper
110 
112  // This method allows to change the size of the inner radius of the
113  // final collimator
114 
115  void SetRSMaterial(G4String);
116  // This method allows to change the material
117  // of the range shifter
118 
119  void SetModulatorAngle(G4double angle);
120  // This method allows moving the modulator through UI commands
121 
122 
123 private:
124 //passive proton line dimensions
125  void SetDefaultDimensions();
126  void ConstructPassiveProtonBeamLine();
127 
128  HadrontherapyModulator* modulator; // Pointer to the modulator
129  // geometry component
130  PassiveProtonBeamLineMessenger* passiveMessenger;
131  G4VPhysicalVolume* physicalTreatmentRoom;
132  HadrontherapyDetectorConstruction* hadrontherapyDetectorConstruction;
133 
134  G4Material* kapton;
135 
136  G4double vacuumZoneXSize;
137  G4double vacuumZoneYSize;
138  G4double vacuumZoneZSize;
139  G4double vacuumZoneXPosition;
140 
141  G4double firstScatteringFoilXSize;
142  G4double firstScatteringFoilYSize;
143  G4double firstScatteringFoilZSize;
144  G4double firstScatteringFoilXPosition;
145 
146  G4double kaptonWindowXSize;
147  G4double kaptonWindowYSize;
148  G4double kaptonWindowZSize;
149  G4double kaptonWindowXPosition;
150 
151  G4double innerRadiusStopper;
152  G4double heightStopper;
153  G4double startAngleStopper;
154  G4double spanningAngleStopper;
155  G4double stopperXPosition;
156  G4double stopperYPosition;
157  G4double stopperZPosition;
158  G4double outerRadiusStopper;
159 
160  G4double secondScatteringFoilXSize;
161  G4double secondScatteringFoilYSize;
162  G4double secondScatteringFoilZSize;
163  G4double secondScatteringFoilXPosition;
164  G4double secondScatteringFoilYPosition;
165  G4double secondScatteringFoilZPosition;
166 
167  G4double rangeShifterXSize;
168  G4double rangeShifterYSize;
169  G4double rangeShifterZSize;
170  G4double rangeShifterXPosition;
171  G4double rangeShifterYPosition;
172  G4double rangeShifterZPosition;
173 
174 
175  G4VPhysicalVolume* physiBeamLineSupport;
176  G4VPhysicalVolume* physiBeamLineCover;
177  G4VPhysicalVolume* physiBeamLineCover2;
178  G4Box* firstScatteringFoil;
179  G4VPhysicalVolume* physiFirstScatteringFoil;
180  G4VPhysicalVolume* physiKaptonWindow;
181 
182  G4Tubs* solidStopper;
183  G4VPhysicalVolume* physiStopper;
184  G4LogicalVolume* logicStopper;
185 
186  G4Box* secondScatteringFoil;
187  G4VPhysicalVolume* physiSecondScatteringFoil;
188  G4VPhysicalVolume* physiFirstCollimator;
189  G4VPhysicalVolume* physiHoleFirstCollimator;
190  G4Box* solidRangeShifterBox;
191  G4LogicalVolume* logicRangeShifterBox;
192  G4VPhysicalVolume* physiRangeShifterBox;
193  G4VPhysicalVolume* physiSecondCollimator;
194  G4VPhysicalVolume* physiHoleSecondCollimator;
195 
196  G4VPhysicalVolume* physiFirstCollimatorModulatorBox;
197  G4VPhysicalVolume* physiHoleFirstCollimatorModulatorBox;
198 
199  G4VPhysicalVolume* physiSecondCollimatorModulatorBox;
200  G4VPhysicalVolume* physiHoleSecondCollimatorModulatorBox;
201 
202  // MOPI Detector
203  // Mother volume
204  G4VPhysicalVolume* physiMOPIMotherVolume;
205  G4LogicalVolume* logicMOPIMotherVolume;
206  G4Box* solidMOPIMotherVolume;
207 
208  G4double MOPIMotherVolumeXSize;
209  G4double MOPIMotherVolumeYSize;
210  G4double MOPIMotherVolumeZSize;
211  G4double MOPIMotherVolumeXPosition;
212  G4double MOPIMotherVolumeYPosition;
213  G4double MOPIMotherVolumeZPosition;
214 
215  // First Kapton layer
216  G4double MOPIFirstKaptonLayerXSize;
217  G4double MOPIFirstKaptonLayerYSize;
218  G4double MOPIFirstKaptonLayerZSize;
219  G4double MOPIFirstKaptonLayerXPosition;
220  G4double MOPIFirstKaptonLayerYPosition;
221  G4double MOPIFirstKaptonLayerZPosition;
222  G4Box* solidMOPIFirstKaptonLayer;
223  G4LogicalVolume* logicMOPIFirstKaptonLayer;
224  G4VPhysicalVolume* physiMOPIFirstKaptonLayer;
225 
226  // First Aluminum layer
227  G4double MOPIFirstAluminumLayerXSize;
228  G4double MOPIFirstAluminumLayerYSize;
229  G4double MOPIFirstAluminumLayerZSize;
230  G4double MOPIFirstAluminumLayerXPosition;
231  G4double MOPIFirstAluminumLayerYPosition;
232  G4double MOPIFirstAluminumLayerZPosition;
233  G4Box* solidMOPIFirstAluminumLayer;
234  G4LogicalVolume* logicMOPIFirstAluminumLayer;
235  G4VPhysicalVolume* physiMOPIFirstAluminumLayer;
236 
237  // First Air Gap
238  G4double MOPIFirstAirGapXSize;
239  G4double MOPIFirstAirGapYSize;
240  G4double MOPIFirstAirGapZSize;
241  G4double MOPIFirstAirGapXPosition;
242  G4double MOPIFirstAirGapYPosition;
243  G4double MOPIFirstAirGapZPosition;
244  G4Box* solidMOPIFirstAirGap;
245  G4LogicalVolume* logicMOPIFirstAirGap;
246  G4VPhysicalVolume* physiMOPIFirstAirGap;
247 
248  // Cathode
249  G4double MOPICathodeXSize;
250  G4double MOPICathodeYSize;
251  G4double MOPICathodeZSize;
252  G4double MOPICathodeXPosition;
253  G4double MOPICathodeYPosition;
254  G4double MOPICathodeZPosition;
255  G4Box* solidMOPICathode;
256  G4LogicalVolume* logicMOPICathode;
257  G4VPhysicalVolume* physiMOPICathode;
258 
259  G4VisAttributes* redWire;
260 
261  // First Air Gap
262  G4double MOPISecondAirGapXSize;
263  G4double MOPISecondAirGapYSize;
264  G4double MOPISecondAirGapZSize;
265  G4double MOPISecondAirGapXPosition;
266  G4double MOPISecondAirGapYPosition;
267  G4double MOPISecondAirGapZPosition;
268  G4Box* solidMOPISecondAirGap;
269  G4LogicalVolume* logicMOPISecondAirGap;
270  G4VPhysicalVolume* physiMOPISecondAirGap;
271 
272  // First Aluminum layer
273  G4double MOPISecondAluminumLayerXSize;
274  G4double MOPISecondAluminumLayerYSize;
275  G4double MOPISecondAluminumLayerZSize;
276  G4double MOPISecondAluminumLayerXPosition;
277  G4double MOPISecondAluminumLayerYPosition;
278  G4double MOPISecondAluminumLayerZPosition;
279  G4Box* solidMOPISecondAluminumLayer;
280  G4LogicalVolume* logicMOPISecondAluminumLayer;
281  G4VPhysicalVolume* physiMOPISecondAluminumLayer;
282 
283  // Second Kapton layer
284  G4double MOPISecondKaptonLayerXSize;
285  G4double MOPISecondKaptonLayerYSize;
286  G4double MOPISecondKaptonLayerZSize;
287  G4double MOPISecondKaptonLayerXPosition;
288  G4double MOPISecondKaptonLayerYPosition;
289  G4double MOPISecondKaptonLayerZPosition;
290  G4Box* solidMOPISecondKaptonLayer;
291  G4LogicalVolume* logicMOPISecondKaptonLayer;
292  G4VPhysicalVolume* physiMOPISecondKaptonLayer;
293 
294  G4double innerRadiusFinalCollimator;
295  G4VPhysicalVolume* mother;
296 
297  G4VPhysicalVolume* physiFirstMonitorLayer1;
298  G4VPhysicalVolume* physiFirstMonitorLayer2;
299  G4VPhysicalVolume* physiFirstMonitorLayer3;
300  G4VPhysicalVolume* physiFirstMonitorLayer4;
301  G4VPhysicalVolume* physiSecondMonitorLayer1;
302  G4VPhysicalVolume* physiSecondMonitorLayer2;
303  G4VPhysicalVolume* physiSecondMonitorLayer3;
304  G4VPhysicalVolume* physiSecondMonitorLayer4;
305  G4VPhysicalVolume* physiNozzleSupport;
306  G4VPhysicalVolume* physiHoleNozzleSupport;
307  G4VPhysicalVolume* physiBrassTube;
308  G4VPhysicalVolume* physiBrassTube2;
309  G4VPhysicalVolume* physiBrassTube3;
310  G4Tubs* solidFinalCollimator;
311  G4VPhysicalVolume* physiFinalCollimator;
312 
313  G4VisAttributes* blue;
314  G4VisAttributes* gray;
315  G4VisAttributes* white;
316  G4VisAttributes* red;
317  G4VisAttributes* yellow;
318  G4VisAttributes* green;
319  G4VisAttributes* darkGreen;
320  G4VisAttributes* darkOrange3;
321  G4VisAttributes* skyBlue;
322 
323  G4Material* rangeShifterMaterial;
324  G4Material* beamLineSupportMaterial;
325  G4Material* vacuumZoneMaterial;
326  G4Material* firstScatteringFoilMaterial;
327  G4Material* kaptonWindowMaterial;
328  G4Material* stopperMaterial;
329  G4Material* secondScatteringFoilMaterial;
330  G4Material* firstCollimatorMaterial;
331  G4Material* holeFirstCollimatorMaterial;
332  G4Material* modulatorBoxMaterial;
333  G4Material* holeModulatorBoxMaterial;
334  G4Material* layer1MonitorChamberMaterial;
335  G4Material* layer2MonitorChamberMaterial;
336  G4Material* layer3MonitorChamberMaterial;
337  G4Material* layer4MonitorChamberMaterial;
338  G4Material* MOPIMotherVolumeMaterial;
339  G4Material* MOPIFirstKaptonLayerMaterial;
340  G4Material* MOPIFirstAluminumLayerMaterial;
341  G4Material* MOPIFirstAirGapMaterial;
342  G4Material* MOPICathodeMaterial;
343  G4Material* MOPISecondAirGapMaterial;
344  G4Material* MOPISecondAluminumLayerMaterial;
345  G4Material* MOPISecondKaptonLayerMaterial;
346  G4Material* nozzleSupportMaterial;
347  G4Material* holeNozzleSupportMaterial;
348 
349  G4Material* brassTubeMaterial;
350  G4Material* brassTube2Material;
351  G4Material* brassTube3Material;
352  G4Material* finalCollimatorMaterial;
353 };
354 #endif