Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
PassiveCarbonBeamLine.cc
이 파일의 문서화 페이지로 가기
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 // Hadrontherapy advanced example for Geant4
27 // See more at: https://twiki.cern.ch/twiki/bin/view/Geant4/AdvancedExamplesHadrontherapy
28 // Simulation of the "Zero degree" experimental beamline of INFN-LNS (Catania, Italy).
29 
30 #include "G4Box.hh"
31 #include "G4Tubs.hh"
32 #include "G4VisAttributes.hh"
33 #include "G4Colour.hh"
34 #include "globals.hh"
35 #include "G4RunManager.hh"
36 #include "G4LogicalVolume.hh"
37 #include "G4PVPlacement.hh"
38 #include "G4RotationMatrix.hh"
39 #include "G4NistManager.hh"
40 #include "G4NistElementBuilder.hh"
43 #include "PassiveCarbonBeamLine.hh"
44 #include "G4SystemOfUnits.hh"
45 #include "G4Trd.hh"
47 
48 //G4bool PassiveCarbonBeamLine::doCalculation = false;
51 physicalTreatmentRoom(0),hadrontherapyDetectorConstruction(0),
52 physiBeamLineSupport(0), physiBeamLineCover(0), physiBeamLineCover2(0),
53 physiKaptonWindow(0),PhysiRippleFilter(0),PhysiRippleFilterBase(0),PhysiRippleFilterTrd(0),
54 physiFirstMonitorLayer1(0), physiFirstMonitorLayer2(0),
55 physiFirstMonitorLayer3(0), physiFirstMonitorLayer4(0),
56 physiNozzleSupport(0), physiHoleNozzleSupport(0)
57 {
58 
59  // Messenger to change parameters of the passiveCarbonBeamLine geometry
61 
62  //***************************** PW ***************************************
63 
64  static G4String ROGeometryName = "DetectorROGeometry";
65  RO = new HadrontherapyDetectorROGeometry(ROGeometryName);
66 
67 
68  G4cout << "Going to register Parallel world...";
70  G4cout << "... done" << G4endl;
71  //***************************** PW ***************************************
72 }
73 
76 {
79 }
80 
83 {
84  // Sets default geometry and materials
86 
87  // Construct the whole CarbonPassive Beam Line
89 
90 
91  //***************************** PW ***************************************
93 
94  //***************************** PW ***************************************
95  // HadrontherapyDetectorConstruction builds ONLY the phantom and the detector with its associated ROGeometry
97 
98  //***************************** PW ***************************************
99 
101 
102  //***************************** PW ***************************************
103  return physicalTreatmentRoom;
104 }
105 
106 // In the following method the DEFAULTS used in the geometry of
107 // passive beam line are provided
108 // HERE THE USER CAN CHANGE THE GEOMETRY CHARACTERISTICS OF BEAM
109 // LINE ELEMENTS, ALTERNATIVELY HE/SHE CAN USE THE MACRO FILE (IF A
110 // MESSENGER IS PROVIDED)
111 //
112 // DEFAULT MATERIAL ARE ALSO PROVIDED
113 // and COLOURS ARE ALSO DEFINED
114 // ----------------------------------------------------------
117 {
118  // Set of coulors that can be used
119  white = new G4VisAttributes( G4Colour());
120  white -> SetVisibility(true);
121  white -> SetForceSolid(true);
122 
123  black = new G4VisAttributes( G4Colour(1., 1., 1.));
124  black -> SetVisibility(true);
125  black -> SetForceSolid(true);
126 
127 
128  blue = new G4VisAttributes(G4Colour(0. ,0. ,1.));
129  blue -> SetVisibility(true);
130  blue -> SetForceSolid(true);
131 
132  gray = new G4VisAttributes( G4Colour(0.5, 0.5, 0.5 ));
133  gray-> SetVisibility(true);
134  gray-> SetForceSolid(true);
135 
136  red = new G4VisAttributes(G4Colour(1. ,0. ,0.));
137  red-> SetVisibility(true);
138  red-> SetForceSolid(true);
139 
140  yellow = new G4VisAttributes(G4Colour(1., 1., 0. ));
141  yellow-> SetVisibility(true);
142  yellow-> SetForceSolid(true);
143 
144  green = new G4VisAttributes( G4Colour(25/255. , 255/255. , 25/255. ));
145  green -> SetVisibility(true);
146  green -> SetForceSolid(true);
147 
148  darkGreen = new G4VisAttributes( G4Colour(0/255. , 100/255. , 0/255. ));
149  darkGreen -> SetVisibility(true);
150  darkGreen -> SetForceSolid(true);
151 
152  darkOrange3 = new G4VisAttributes( G4Colour(205/255. , 102/255. , 000/255. ));
153  darkOrange3 -> SetVisibility(true);
154  darkOrange3 -> SetForceSolid(true);
155 
156  skyBlue = new G4VisAttributes( G4Colour(135/255. , 206/255. , 235/255. ));
157  skyBlue -> SetVisibility(true);
158  skyBlue -> SetForceSolid(true);
159 
160 
161  // FINAL COLLIMATOR: is the collimator giving the final transversal shape
162  // of the beam
163 
164  G4double defaultinnerRadiusFinalCollimator = 12.5 *mm;
165  innerRadiusFinalCollimator = defaultinnerRadiusFinalCollimator;
166 
167  // DEFAULT DEFINITION OF THE MATERIALS
168  // All elements and compound definition follows the NIST database
169 
170  // ELEMENTS
171  G4bool isotopes = false;
175 
176  // MATERIAL (Including compounds)
178  airNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_AIR", isotopes);
179  kaptonNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_KAPTON", isotopes);
180  galacticNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Galactic", isotopes);
181  PMMANist = G4NistManager::Instance()->FindOrBuildMaterial("G4_PLEXIGLASS", isotopes);
183 
184  G4double d; // Density
185  G4int nComponents;// Number of components
186  G4double fractionmass; // Fraction in mass of an element in a material
187 
188  d = 8.40*g/cm3;
189  nComponents = 2;
190  brass = new G4Material("Brass", d, nComponents);
191  brass -> AddElement(zincNist, fractionmass = 30 *perCent);
192  brass -> AddElement(copperNist, fractionmass = 70 *perCent);
193 
194  //***************************** PW ***************************************
195 
196  // DetectorROGeometry Material
197  new G4Material("dummyMat", 1., 1.*g/mole, 1.*g/cm3);
198 
199  //***************************** PW ***************************************
200 
201  // MATERIAL ASSIGNMENT
202  // Support of the beam line
204 
205  // Vacuum pipe
208 
209  // Material of kapton window
211 
212  // Material of ripple filter
215 
216  // Materials of the monitor chamber
221 
222  // Material of the final nozzle
226 
227  // Material of the final collimator
229 
230  // Material of the final collimator
232 
233  // Material of the PMMA collimator
235 }
236 
239 {
240  // -----------------------------
241  // Treatment room - World volume
242  //------------------------------
243  // Treatment room sizes
244 
245  const G4double worldX = 400.0 *cm;
246  const G4double worldY = 400.0 *cm;
247  const G4double worldZ = 400.0 *cm;
248  G4bool isotopes = false;
249 
250  airNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_AIR", isotopes);
251  treatmentRoom = new G4Box("TreatmentRoom",worldX,worldY,worldZ);
253  airNist,
254  "logicTreatmentRoom",
255  0,0,0);
257  G4ThreeVector(),
258  "physicalTreatmentRoom",
260  0,false,0);
261 
262 
263  // The treatment room is invisible in the Visualisation
264  logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::GetInvisible());
265 
266  // Components of the Passive Carbon Beam Line
274 }
275 
278 {
279  // ------------------//
280  // BEAM LINE SUPPORT //
281  //-------------------//
282 
283  beamLineSupportXSize = 1.5*m;
284  beamLineSupportYSize = 20.*mm;
285  beamLineSupportZSize = 600.*mm;
286 
287  beamLineSupportXPosition = -1745.09 *mm;
288  beamLineSupportYPosition = -230. *mm;
290 
291  beamLineSupport = new G4Box("BeamLineSupport",
295 
298  "BeamLineSupport");
302  "BeamLineSupport",
304  physicalTreatmentRoom, false, 0);
305 
306  // Visualisation attributes of the beam line support
307  logicBeamLineSupport -> SetVisAttributes(gray);
308 
309  //---------------------------------//
310  // Beam line cover 1 (left panel) //
311  //---------------------------------//
312  beamLineCoverXSize = 1.5*m;
313  beamLineCoverYSize = 750.*mm;
314  beamLineCoverZSize = 10.*mm;
315 
316  beamLineCoverXPosition = -1745.09 *mm;
317  beamLineCoverYPosition = -1000.*mm;
318  beamLineCoverZPosition = 610.*mm;
319 
320  beamLineCover = new G4Box("BeamLineCover",
324 
327  "BeamLineCover");
328 
332  "BeamLineCover",
335  false,
336  0);
337 
338  // ---------------------------------//
339  // Beam line cover 2 (rigth panel) //
340  // ---------------------------------//
341  // It has the same characteristic of beam line cover 1 but set in a different position
345  "BeamLineCover2",
348  false,
349  0);
350 
351 
352  logicBeamLineCover -> SetVisAttributes(blue);
353 }
354 
357 {
358  // ------------//
359  // VACUUM PIPE //
360  //-------------//
361  //
362  // First track of the beam line is inside vacuum;
363 
364  vacuumZoneXSize = 100 *mm;
365  vacuumZoneYSize = 52.5 *mm;
366  vacuumZoneZSize = 52.5 *mm;
367  vacuumPipeXPosition = -1708.0 *mm;
368 
369 
370  vacuumZone = new G4Box("VacuumZone",
371  vacuumZoneXSize/2,
372  vacuumZoneYSize/2,
373  vacuumZoneZSize/2);
374 
376 
378  "VacuumZone",
381  false,
382  0);
383 
384  // --------------------------//
385  // THE FIRST SCATTERING FOIL //
386  // --------------------------//
387  // A thin foil performing a first scattering
388  // of the original beam
389 
390  firstScatteringFoilXSize = 0.015 *mm;
394 
395  firstScatteringFoil = new G4Box("FirstScatteringFoil",
399 
402  "FirstScatteringFoil");
403 
405  "FirstScatteringFoil", logicFirstScatteringFoil, physiVacuumZone,
406  false, 0);
407 
408  logicFirstScatteringFoil -> SetVisAttributes(skyBlue);
409 
410  // -------------------//
411  // THE KAPTON WINDOWS //
412  //--------------------//
413  //It permits the passage of the beam from vacuum to air
414 
415  // KAPTON WINDOW: it permits the passage of the beam from vacuum to air
416  kaptonWindowXSize = 0.050 *mm;
417  kaptonWindowYSize = 52.5 *mm;
418  kaptonWindowZSize = 52.5 *mm;
420 
421  solidKaptonWindow = new G4Box("KaptonWindow",
425 
428  "KaptonWindow");
429 
431  "KaptonWindow", logicKaptonWindow,
432  physiVacuumZone, false, 0);
433 
434  logicKaptonWindow -> SetVisAttributes(darkOrange3);
435 }
438 {
439 
440  G4double defaultRippleFilterXPosition = -1638.0*mm;
441  G4double ripple_position=(defaultRippleFilterXPosition);
442  G4double RF_x = 200.0 * mm;
443  G4double RF_y = 200.0 * mm;
444  G4double RF_z = 1.4 * mm;
445  G4double RFbase_z = 0.2 * mm;
446  G4double RFtrd_z = RF_z - RFbase_z;
447  G4double RFtrd_top = 1e-4 * mm;
448  G4double RFtrd_bottom = 1.5 * mm;
449  G4double distanceBetweenTrd = 0.1*mm;
450 
451 
452 
453 
454  G4double theta = -90. *deg;
455  // Matrix definition for a "theta" deg rotation with respect to Y axis
456  G4RotationMatrix rot;
457  rot.rotateY(theta);
458 
459 
460  SolidRippleFilter= new G4Box("RippleFilter",
461  RF_x/2 + 1*mm,
462  RF_y/2 + 1*mm,
463  RF_z/2 + 1*mm);
464 
467  "LogicRippleFilter",
468  0,0,0);
469 
470  PhysiRippleFilter = new G4PVPlacement(G4Transform3D(rot,G4ThreeVector(ripple_position,0,0)),
471  "PhysiRippleFilter",
474  false,
475  1,
476  true);
477 
478  PhysiRippleFilter = new G4PVPlacement(G4Transform3D(rot,G4ThreeVector(ripple_position + 10*cm,0,0)),
479  "PhysiRippleFilter",
482  false,
483  2,
484  true);
485 
486  LogicRippleFilter -> SetVisAttributes(G4VisAttributes::GetInvisible());
487 
488  SolidRippleFilterBase = new G4Box("RippleFilterBase",
489  RF_x/2,
490  RF_y/2,
491  RFbase_z/2);
492 
495  "LogicRippleFilterBase",
496  0,0,0);
497 
498  LogicRippleFilterBase -> SetVisAttributes(green);
499 
501  G4ThreeVector(0, 0, -RF_z/2 + RFbase_z/2),
502  "PhysiRippleFilter",
505  false,
506  0,
507  false);
508 
509  SolidRippleFilterTrd = new G4Trd("SolidRippleFilterTrd",
510  RF_x/2,
511  RF_x/2,
512  RFtrd_bottom/2,
513  RFtrd_top/2,
514  RFtrd_z/2);
515 
518  "LogicRippleFilterTrd",
519  0,0,0);
520 
521  LogicRippleFilterTrd -> SetVisAttributes(green);
522 
523  G4int numberOfTrd = static_cast<int>(std::floor( RF_y / (RFtrd_bottom+distanceBetweenTrd) ));
524 
525  G4int N = static_cast<int>( std::floor(numberOfTrd-1)/2 );
526 
527  G4int copyNumber = 0;
528 
529  for( int i = -N; i <= N; i++ )
530  {
532  G4ThreeVector(0,
533  i*(RFtrd_bottom+distanceBetweenTrd),
534  -RF_z/2+RFbase_z+RFtrd_z/2),
535  "PhysiRippleFilterTrd",
538  false,
539  copyNumber,
540  false);
541 
542  copyNumber++;
543  }
544 
545 }
546 
547 
550 {
551 
552  // ----------------------//
553  // PMMA COLLIMATOR //
554  // ----------------------//
558 
559  PMMACollimatorXPosition = -1082.00 *mm;
560 
561  G4double phi = 90. *deg;
562  G4RotationMatrix rm;
563  rm.rotateY(phi);
564 
565  solidPMMACollimatorSupport = new G4Box("PMMACollimatorSupport",
569 
572  "PMMACollimatorSupport");
573 
575  "PMMACollimatorSupport",
578  false,
579  0);
580 
581 
582  yellow = new G4VisAttributes(G4Colour(1., 1., 0. ));
583  yellow-> SetVisibility(true);
584  yellow-> SetForceWireframe(true);
585 
586  logicPMMACollimatorSupport -> SetVisAttributes(yellow);
587 
588  // ----------------------//
589  // PMMA COLLIMATOR //
590  //-----------------------//
596 
597 
598  solidPMMACollimator = new G4Tubs("PMMACollimator",
604 
607  "PMMACollimator",
608  0,
609  0,
610  0);
611 
613  G4ThreeVector(0,0.,0.)),
614  "PMMACollimator",
617  false,
618  0);
619 
620  logicPMMACollimator -> SetVisAttributes(yellow);
621 
622 
623 
624 
625 }
628 {
629  // ----------------------------
630  // MONITOR CHAMBER
631  // ----------------------------
632  // A monitor chamber is a free-air ionisation chamber
633  // able to measure do carbon fluence during the treatment.
634  // Here its responce is not simulated in terms of produced
635  // charge but only the energy losses are taked into account.
636  // Each chamber consist of 9 mm of air in a box
637  // that has two layers one of kapton and one
638  // of copper
639 
640  monitor1XSize = 4.525022*mm;
641  monitor2XSize = 0.000011*mm;
642  monitor3XSize = 4.5*mm;
643  monitorYSize = 10.*cm;
644  monitorZSize = 10.*cm;
645  monitor1XPosition = -1059.0 *mm;
646  monitor2XPosition = -4.500011*mm;
647  monitor4XPosition = 4.500011*mm;
648 
649  solidFirstMonitorLayer1 = new G4Box("FirstMonitorLayer1",
651  monitorYSize,
652  monitorZSize);
653 
656  "FirstMonitorLayer1");
657 
660  "FirstMonitorLayer1",
663  false,
664  0);
665 
666  solidFirstMonitorLayer2 = new G4Box("FirstMonitorLayer2",
668  monitorYSize,
669  monitorZSize);
670 
673  "FirstMonitorLayer2");
674 
676  "FirstMonitorLayer2",
679  false,
680  0);
681 
682  solidFirstMonitorLayer3 = new G4Box("FirstMonitorLayer3",
684  monitorYSize,
685  monitorZSize);
686 
689  "FirstMonitorLayer3");
690 
692  G4ThreeVector(0.*mm,0.*cm,0.*cm),
693  "MonitorLayer3",
696  false,
697  0);
698 
699  solidFirstMonitorLayer4 = new G4Box("FirstMonitorLayer4",
701  monitorYSize,
702  monitorZSize);
703 
706  "FirstMonitorLayer4");
707 
709  "FirstMonitorLayer4",
711  physiFirstMonitorLayer1, false, 0);
712 
713  logicFirstMonitorLayer3 -> SetVisAttributes(white);
714 
715 }
716 
720 {
721  // ------------------------------//
722  // THE FINAL TUBE AND COLLIMATOR //
723  //-------------------------------//
724  // The last part of the transport beam line consists of
725  // a 59 mm thick PMMA slab (to stop all the diffused radiation), a 370 mm brass tube
726  // (to well collimate the proton beam) and a final collimator with 25 mm diameter
727  // aperture (that provide the final trasversal shape of the beam)
728 
729  // -------------------//
730  // PMMA SUPPORT //
731  // -------------------//
732 
733  nozzleSupportXSize = 50 *mm;
734  nozzleSupportYSize = 360. *mm;
735  nozzleSupportZSize = 360. *mm;
736  nozzleSupportXPosition = -423.0 *mm;
737 
738  G4double phi = 90. *deg;
739  // Matrix definition for a 90 deg rotation. Also used for other volumes
740  G4RotationMatrix rm;
741  rm.rotateY(phi);
742 
743  solidNozzleSupport = new G4Box("NozzleSupport",
747 
750  "NozzleSupport");
751 
753  "NozzleSupport",
756  false,
757  0);
758 
759  yellow = new G4VisAttributes(G4Colour(1., 1., 0. ));
760  yellow-> SetVisibility(true);
761  yellow-> SetForceWireframe(true);
762 
763  //------------------------------------//
764  // HOLE IN THE SUPPORT //
765  //------------------------------------//
771 
772  solidHoleNozzleSupport = new G4Tubs("HoleNozzleSupport",
778 
781  "HoleNozzleSupport",
782  0,
783  0,
784  0);
785 
787  "HoleNozzleSupport",
790  false, 0);
791 
792 
793  // --------------------------------------//
794  // BRASS TUBE 3 (beam line side) //
795  // -------------------------------------//
796  innerRadiusBrassTube3 = 13.5 *mm;
797  outerRadiusBrassTube3 = 21.5 *mm;
798  hightBrassTube3 = 20.0 *mm;
801  brassTube3XPosition = -458.0 *mm;
802 
803  solidBrassTube3 = new G4Tubs("BrassTube3",
806  hightBrassTube3/2,
809 
812  "BrassTube3",
813  0, 0, 0);
814 
817  0.,
818  0.)),
819  "BrassTube3",
822  false,
823  0);
824 
825  logicBrassTube3 -> SetVisAttributes(darkOrange3);
826 
827  // ----------------------------------------------//
828  // BRASS TUBE 2 (inside the PMMA support) //
829  // ----------------------------------------------//
830 
831  innerRadiusBrassTube2 = 13.5 *mm;
832  outerRadiusBrassTube2 = 21.5 *mm;
836 
837 
838  solidBrassTube2 = new G4Tubs("BrassTube2",
841  hightBrassTube2/2,
844 
847  "BrassTube2",
848  0, 0, 0);
850  G4ThreeVector(0,0.,0.),
852  "BrassTube2",
854  false,
855  0);
856 
857  logicBrassTube2 -> SetVisAttributes(darkOrange3);
858 
859  // ---------------------------------//
860  // BRASS TUBE 1 (phantom side) //
861  // ---------------------------------//
863  outerRadiusBrassTube = 21.5 *mm;
864  hightBrassTube = 208.0 *mm;
867  brassTubeXPosition = -294 *mm;
868  solidBrassTube = new G4Tubs("BrassTube",
871  hightBrassTube/2,
874 
877  "BrassTube",
878  0, 0, 0);
879 
882  0.,
883  0.)),
884  "BrassTube",
887  false,
888  0);
889 
890  logicBrassTube -> SetVisAttributes(darkOrange3);
891 }
892 
895 {
896  // -----------------------//
897  // FINAL COLLIMATOR //
898  //------------------------//
900  hightFinalCollimator = 7.0 *mm;
903  finalCollimatorXPosition = -186.5 *mm;
904 
905  G4double phi = 90. *deg;
906 
907  // Matrix definition for a 90 deg rotation. Also used for other volumes
908  G4RotationMatrix rm;
909  rm.rotateY(phi);
910 
911  solidFinalCollimator = new G4Tubs("FinalCollimator",
917 
920  "FinalCollimator",
921  0,
922  0,
923  0);
924 
927  "FinalCollimator",
930  false,
931  0);
932 
933  logicFinalCollimator -> SetVisAttributes(yellow);
934 }
935 
936 
940 
942 {
943  PhysiRippleFilter -> SetTranslation(G4ThreeVector(value, 0., 0.));
945  G4cout << "The Ripple Filter is translated to"<< value/mm <<"mm along the X axis" <<G4endl;
946 }
947 
948 
951 {
952  solidFinalCollimator -> SetInnerRadius(value);
954  G4cout<<"Inner Radius of the final collimator is (mm):"
955  << solidFinalCollimator -> GetInnerRadius()/mm
956  << G4endl;
957 }
958 
961 {
962  if (G4Material* RFMaterial = G4NistManager::Instance()->FindOrBuildMaterial(materialChoice, false) )
963  {
964  if (RFMaterial)
965  {
966  rippleFilterMaterial = RFMaterial;
967  LogicRippleFilter -> SetMaterial(RFMaterial);
968  LogicRippleFilterBase -> SetMaterial(RFMaterial);
969  LogicRippleFilterTrd -> SetMaterial(RFMaterial);
970  G4cout << "The material of the Ripple Filter has been changed to " << materialChoice << G4endl;
971  }
972  }
973  else
974  {
975  G4cout << "WARNING: material \"" << materialChoice << "\" doesn't exist in NIST elements/materials"
976  " table [located in $G4INSTALL/source/materials/src/G4NistMaterialBuilder.cc]" << G4endl;
977  G4cout << "Use command \"/parameter/nist\" to see full materials list!" << G4endl;
978  }
979 }
980 
981 
982 
G4LogicalVolume * logicBeamLineCover
static G4RunManager * GetRunManager()
Definition: G4RunManager.cc:80
CLHEP::Hep3Vector G4ThreeVector
G4VPhysicalVolume * physiVacuumZone
HepGeom::Transform3D G4Transform3D
void SetInnerRadiusFinalCollimator(G4double)
static constexpr double mm
Definition: G4SIunits.hh:115
Definition: G4Tubs.hh:85
#define G4endl
Definition: G4ios.hh:61
G4VPhysicalVolume * physiBrassTube2
G4LogicalVolume * logicTreatmentRoom
static constexpr double perCent
Definition: G4SIunits.hh:332
G4VPhysicalVolume * physiHoleNozzleSupport
G4LogicalVolume * logicVacuumZone
void InitializeDetectorROGeometry(HadrontherapyDetectorROGeometry *, G4ThreeVector detectorToWorldPosition)
G4Material * firstScatteringFoilMaterial
G4Material * layer1MonitorChamberMaterial
G4VPhysicalVolume * physiBrassTube3
void SetRippleFilterXPosition(G4double)
G4VPhysicalVolume * physicalTreatmentRoom
G4VPhysicalVolume * physiBeamLineSupport
static const G4VisAttributes & GetInvisible()
G4VPhysicalVolume * physiFirstMonitorLayer1
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
static constexpr double g
Definition: G4SIunits.hh:183
G4LogicalVolume * logicFinalCollimator
G4LogicalVolume * logicFirstMonitorLayer1
G4Material * seconHoleNozzleSupportMaterial
static constexpr double m
Definition: G4SIunits.hh:129
G4Material * layer4MonitorChamberMaterial
double G4double
Definition: G4Types.hh:76
bool G4bool
Definition: G4Types.hh:79
G4VPhysicalVolume * physiPMMACollimatorSupport
**D E S C R I P T I O N
G4LogicalVolume * logicBrassTube2
const XML_Char int const XML_Char * value
Definition: expat.h:331
G4LogicalVolume * logicFirstScatteringFoil
G4LogicalVolume * logicBeamLineSupport
static constexpr double deg
Definition: G4SIunits.hh:152
G4VPhysicalVolume * physiFirstMonitorLayer2
G4LogicalVolume * logicFirstMonitorLayer2
Definition: G4Box.hh:64
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
G4VPhysicalVolume * physiFinalCollimator
Float_t d
HadrontherapyDetectorROGeometry * RO
G4LogicalVolume * logicHoleNozzleSupport
G4VPhysicalVolume * physiFirstMonitorLayer4
G4LogicalVolume * logicFirstMonitorLayer4
G4VPhysicalVolume * physiFirstScatteringFoil
G4VPhysicalVolume * PhysiRippleFilter
G4VPhysicalVolume * physiFirstMonitorLayer3
G4VPhysicalVolume * physiBrassTube
G4VPhysicalVolume * PhysiRippleFilterBase
HadrontherapyDetectorConstruction * hadrontherapyDetectorConstruction
G4LogicalVolume * LogicRippleFilterTrd
HepRotation & rotateY(double delta)
Definition: Rotation.cc:79
G4LogicalVolume * logicPMMACollimatorSupport
int G4int
Definition: G4Types.hh:78
G4LogicalVolume * LogicRippleFilterBase
G4VPhysicalVolume * Construct()
G4VPhysicalVolume * PhysiRippleFilterTrd
void SetRippleFilterMaterial(G4String)
Definition: G4Trd.hh:72
G4LogicalVolume * logicBrassTube3
G4LogicalVolume * logicBrassTube
G4LogicalVolume * LogicRippleFilter
static constexpr double cm
Definition: G4SIunits.hh:119
G4GLOB_DLL std::ostream G4cout
G4Material * layer2MonitorChamberMaterial
PassiveCarbonBeamLineMessenger * PassiveCarbonMessenger
G4LogicalVolume * logicKaptonWindow
G4LogicalVolume * logicNozzleSupport
G4LogicalVolume * logicFirstMonitorLayer3
void RegisterParallelWorld(G4VUserParallelWorld *)
static constexpr double mole
Definition: G4SIunits.hh:286
G4VPhysicalVolume * physiBeamLineCover2
G4LogicalVolume * logicPMMACollimator
static constexpr double cm3
Definition: G4SIunits.hh:121
G4VPhysicalVolume * physiPMMACollimator
G4Material * layer3MonitorChamberMaterial
G4VPhysicalVolume * physiKaptonWindow
G4VPhysicalVolume * physiBeamLineCover
static G4NistManager * Instance()
G4VPhysicalVolume * physiNozzleSupport