Geant4_10
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;
50 
52 {
53 public:
54 
55  //PassiveProtonBeamLine(G4VPhysicalVolume*);
58 
60 //***************************** PW **************NON SERVE*************************
61 
63 
64  //***************************** PW **************NON SERVE*************************
65 
67  // Definition of the beam line support
68 
70  // Definition of the first scattering foil,
71  // of the Kapton window, of the stopper
72 
74  // This defines the "range shifter". Is is a slab
75  // (usually of PMMA" acting as energy degrader
76  // of primary beam
77 
79  // Definition of the first collimator, of the range shifter,
80  // of the second collimator, of the first and second
81  // collimator modulators
82 
84  // Definition of three monitor chambers
85 
87  // Construct the MOPI on-line detector
88 
90  // Definition of the beam noozle
91 
93  // Definition of the final collimator
94 
95  // The following methods allow to change parameters
96  // of some beam line components
97 
99  // This method allows to move the Range Shifter along
100  // the X axis
101 
102  void SetRangeShifterXSize(G4double halfSize);
103  // This method allows to change the size of the range shifter along
104  // the X axis
105 
107  // This method allows to change the size of the first scattering foil
108  // along the X axis
109 
111  // This method allows to change the size of the second scattering foil
112  // along the X axis
113 
115  // This method allows to change the size of the outer radius of the stopper
116 
118  // This method allows to change the size of the inner radius of the
119  // final collimator
120 
121  void SetRSMaterial(G4String);
122  // This method allows to change the material
123  // of the range shifter
124 
125  void SetModulatorAngle(G4double angle);
126  // This method allows moving the modulator through UI commands
127 
128 
129 private:
130 
131  static PassiveProtonBeamLine* instance;
132 //passive proton line dimensions
133  void SetDefaultDimensions();
134  void ConstructPassiveProtonBeamLine();
135 
136  HadrontherapyModulator* modulator; // Pointer to the modulator
137  // geometry component
138  PassiveProtonBeamLineMessenger* passiveMessenger;
139  G4VPhysicalVolume* physicalTreatmentRoom;
140  HadrontherapyDetectorConstruction* hadrontherapyDetectorConstruction;
141 
142  G4Material* kapton;
143 
144  G4double vacuumZoneXSize;
145  G4double vacuumZoneYSize;
146  G4double vacuumZoneZSize;
147  G4double vacuumZoneXPosition;
148 
149  G4double firstScatteringFoilXSize;
150  G4double firstScatteringFoilYSize;
151  G4double firstScatteringFoilZSize;
152  G4double firstScatteringFoilXPosition;
153 
154  G4double kaptonWindowXSize;
155  G4double kaptonWindowYSize;
156  G4double kaptonWindowZSize;
157  G4double kaptonWindowXPosition;
158 
159  G4double innerRadiusStopper;
160  G4double heightStopper;
161  G4double startAngleStopper;
162  G4double spanningAngleStopper;
163  G4double stopperXPosition;
164  G4double stopperYPosition;
165  G4double stopperZPosition;
166  G4double outerRadiusStopper;
167 
168  G4double secondScatteringFoilXSize;
169  G4double secondScatteringFoilYSize;
170  G4double secondScatteringFoilZSize;
171  G4double secondScatteringFoilXPosition;
172  G4double secondScatteringFoilYPosition;
173  G4double secondScatteringFoilZPosition;
174 
175  G4double rangeShifterXSize;
176  G4double rangeShifterYSize;
177  G4double rangeShifterZSize;
178  G4double rangeShifterXPosition;
179  G4double rangeShifterYPosition;
180  G4double rangeShifterZPosition;
181 
182 
183  G4VPhysicalVolume* physiBeamLineSupport;
184  G4VPhysicalVolume* physiBeamLineCover;
185  G4VPhysicalVolume* physiBeamLineCover2;
186  G4Box* firstScatteringFoil;
187  G4VPhysicalVolume* physiFirstScatteringFoil;
188  G4VPhysicalVolume* physiKaptonWindow;
189 
190  G4Tubs* solidStopper;
191  G4VPhysicalVolume* physiStopper;
192  G4LogicalVolume* logicStopper;
193 
194  G4Box* secondScatteringFoil;
195  G4VPhysicalVolume* physiSecondScatteringFoil;
196  G4VPhysicalVolume* physiFirstCollimator;
197  G4VPhysicalVolume* physiHoleFirstCollimator;
198  G4Box* solidRangeShifterBox;
199  G4LogicalVolume* logicRangeShifterBox;
200  G4VPhysicalVolume* physiRangeShifterBox;
201  G4VPhysicalVolume* physiSecondCollimator;
202  G4VPhysicalVolume* physiHoleSecondCollimator;
203 
204  G4VPhysicalVolume* physiFirstCollimatorModulatorBox;
205  G4VPhysicalVolume* physiHoleFirstCollimatorModulatorBox;
206 
207  G4VPhysicalVolume* physiSecondCollimatorModulatorBox;
208  G4VPhysicalVolume* physiHoleSecondCollimatorModulatorBox;
209 
210  // MOPI Detector
211  // Mother volume
212  G4VPhysicalVolume* physiMOPIMotherVolume;
213  G4LogicalVolume* logicMOPIMotherVolume;
214  G4Box* solidMOPIMotherVolume;
215 
216  G4double MOPIMotherVolumeXSize;
217  G4double MOPIMotherVolumeYSize;
218  G4double MOPIMotherVolumeZSize;
219  G4double MOPIMotherVolumeXPosition;
220  G4double MOPIMotherVolumeYPosition;
221  G4double MOPIMotherVolumeZPosition;
222 
223  // First Kapton layer
224  G4double MOPIFirstKaptonLayerXSize;
225  G4double MOPIFirstKaptonLayerYSize;
226  G4double MOPIFirstKaptonLayerZSize;
227  G4double MOPIFirstKaptonLayerXPosition;
228  G4double MOPIFirstKaptonLayerYPosition;
229  G4double MOPIFirstKaptonLayerZPosition;
230  G4Box* solidMOPIFirstKaptonLayer;
231  G4LogicalVolume* logicMOPIFirstKaptonLayer;
232  G4VPhysicalVolume* physiMOPIFirstKaptonLayer;
233 
234  // First Aluminum layer
235  G4double MOPIFirstAluminumLayerXSize;
236  G4double MOPIFirstAluminumLayerYSize;
237  G4double MOPIFirstAluminumLayerZSize;
238  G4double MOPIFirstAluminumLayerXPosition;
239  G4double MOPIFirstAluminumLayerYPosition;
240  G4double MOPIFirstAluminumLayerZPosition;
241  G4Box* solidMOPIFirstAluminumLayer;
242  G4LogicalVolume* logicMOPIFirstAluminumLayer;
243  G4VPhysicalVolume* physiMOPIFirstAluminumLayer;
244 
245  // First Air Gap
246  G4double MOPIFirstAirGapXSize;
247  G4double MOPIFirstAirGapYSize;
248  G4double MOPIFirstAirGapZSize;
249  G4double MOPIFirstAirGapXPosition;
250  G4double MOPIFirstAirGapYPosition;
251  G4double MOPIFirstAirGapZPosition;
252  G4Box* solidMOPIFirstAirGap;
253  G4LogicalVolume* logicMOPIFirstAirGap;
254  G4VPhysicalVolume* physiMOPIFirstAirGap;
255 
256  // Cathode
257  G4double MOPICathodeXSize;
258  G4double MOPICathodeYSize;
259  G4double MOPICathodeZSize;
260  G4double MOPICathodeXPosition;
261  G4double MOPICathodeYPosition;
262  G4double MOPICathodeZPosition;
263  G4Box* solidMOPICathode;
264  G4LogicalVolume* logicMOPICathode;
265  G4VPhysicalVolume* physiMOPICathode;
266 
267  G4VisAttributes* redWire;
268 
269  // First Air Gap
270  G4double MOPISecondAirGapXSize;
271  G4double MOPISecondAirGapYSize;
272  G4double MOPISecondAirGapZSize;
273  G4double MOPISecondAirGapXPosition;
274  G4double MOPISecondAirGapYPosition;
275  G4double MOPISecondAirGapZPosition;
276  G4Box* solidMOPISecondAirGap;
277  G4LogicalVolume* logicMOPISecondAirGap;
278  G4VPhysicalVolume* physiMOPISecondAirGap;
279 
280  // First Aluminum layer
281  G4double MOPISecondAluminumLayerXSize;
282  G4double MOPISecondAluminumLayerYSize;
283  G4double MOPISecondAluminumLayerZSize;
284  G4double MOPISecondAluminumLayerXPosition;
285  G4double MOPISecondAluminumLayerYPosition;
286  G4double MOPISecondAluminumLayerZPosition;
287  G4Box* solidMOPISecondAluminumLayer;
288  G4LogicalVolume* logicMOPISecondAluminumLayer;
289  G4VPhysicalVolume* physiMOPISecondAluminumLayer;
290 
291  // Second Kapton layer
292  G4double MOPISecondKaptonLayerXSize;
293  G4double MOPISecondKaptonLayerYSize;
294  G4double MOPISecondKaptonLayerZSize;
295  G4double MOPISecondKaptonLayerXPosition;
296  G4double MOPISecondKaptonLayerYPosition;
297  G4double MOPISecondKaptonLayerZPosition;
298  G4Box* solidMOPISecondKaptonLayer;
299  G4LogicalVolume* logicMOPISecondKaptonLayer;
300  G4VPhysicalVolume* physiMOPISecondKaptonLayer;
301 
302  G4double innerRadiusFinalCollimator;
303  G4VPhysicalVolume* mother;
304 
305  G4VPhysicalVolume* physiFirstMonitorLayer1;
306  G4VPhysicalVolume* physiFirstMonitorLayer2;
307  G4VPhysicalVolume* physiFirstMonitorLayer3;
308  G4VPhysicalVolume* physiFirstMonitorLayer4;
309  G4VPhysicalVolume* physiSecondMonitorLayer1;
310  G4VPhysicalVolume* physiSecondMonitorLayer2;
311  G4VPhysicalVolume* physiSecondMonitorLayer3;
312  G4VPhysicalVolume* physiSecondMonitorLayer4;
313  G4VPhysicalVolume* physiNozzleSupport;
314  G4VPhysicalVolume* physiHoleNozzleSupport;
315  G4VPhysicalVolume* physiBrassTube;
316  G4VPhysicalVolume* physiBrassTube2;
317  G4VPhysicalVolume* physiBrassTube3;
318  G4Tubs* solidFinalCollimator;
319  G4VPhysicalVolume* physiFinalCollimator;
320 
321  G4VisAttributes* blue;
322  G4VisAttributes* gray;
323  G4VisAttributes* white;
324  G4VisAttributes* red;
325  G4VisAttributes* yellow;
326  G4VisAttributes* green;
327  G4VisAttributes* darkGreen;
328  G4VisAttributes* darkOrange3;
329  G4VisAttributes* skyBlue;
330 
331  G4Material* rangeShifterMaterial;
332  G4Material* beamLineSupportMaterial;
333  G4Material* vacuumZoneMaterial;
334  G4Material* firstScatteringFoilMaterial;
335  G4Material* kaptonWindowMaterial;
336  G4Material* stopperMaterial;
337  G4Material* secondScatteringFoilMaterial;
338  G4Material* firstCollimatorMaterial;
339  G4Material* holeFirstCollimatorMaterial;
340  G4Material* modulatorBoxMaterial;
341  G4Material* holeModulatorBoxMaterial;
342  G4Material* layer1MonitorChamberMaterial;
343  G4Material* layer2MonitorChamberMaterial;
344  G4Material* layer3MonitorChamberMaterial;
345  G4Material* layer4MonitorChamberMaterial;
346  G4Material* MOPIMotherVolumeMaterial;
347  G4Material* MOPIFirstKaptonLayerMaterial;
348  G4Material* MOPIFirstAluminumLayerMaterial;
349  G4Material* MOPIFirstAirGapMaterial;
350  G4Material* MOPICathodeMaterial;
351  G4Material* MOPISecondAirGapMaterial;
352  G4Material* MOPISecondAluminumLayerMaterial;
353  G4Material* MOPISecondKaptonLayerMaterial;
354  G4Material* nozzleSupportMaterial;
355  G4Material* holeNozzleSupportMaterial;
356 
357  G4Material* brassTubeMaterial;
358  G4Material* brassTube2Material;
359  G4Material* brassTube3Material;
360  G4Material* finalCollimatorMaterial;
361 
362 
364 
365 
366 };
367 #endif
Definition: G4Box.hh:63
void SetModulatorAngle(G4double angle)
Definition: G4Tubs.hh:84
static PassiveProtonBeamLine * GetInstance()
void SetSecondScatteringFoilXSize(G4double)
void SetRangeShifterXPosition(G4double value)
void SetInnerRadiusFinalCollimator(G4double)
void SetFirstScatteringFoilXSize(G4double)
void SetRangeShifterXSize(G4double halfSize)
const XML_Char int const XML_Char * value
Definition: expat.h:331
G4VPhysicalVolume * Construct()
double G4double
Definition: G4Types.hh:76