Geant4 Cross Reference |
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 29 #ifndef TrentoPassiveProtonBeamLine_H 30 #define TrentoPassiveProtonBeamLine_H 1 31 32 #include "globals.hh" 33 #include "G4VUserDetectorConstruction.hh" 34 #include "G4Box.hh" 35 #include "G4Tubs.hh" 36 #include "G4VisAttributes.hh" 37 #include "G4LogicalVolume.hh" 38 39 class G4VPhysicalVolume; 40 class HadrontherapyDetectorConstruction; 41 class HadrontherapyModulator; 42 class TrentoPassiveProtonBeamLineMessenger; 43 class HadrontherapyDetectorROGeometry; 44 45 class TrentoPassiveProtonBeamLine : public G4VUserDetectorConstruction 46 { 47 public: 48 49 //TrentoPassiveProtonBeamLine(G4VPhysicalVolume*); 50 TrentoPassiveProtonBeamLine(); 51 ~TrentoPassiveProtonBeamLine(); 52 // static G4bool doCalculation; 53 54 G4VPhysicalVolume* Construct(); 55 // 56 static TrentoPassiveProtonBeamLine* GetInstance(); 57 58 // 59 void HadrontherapyBeamLineSupport(); 60 // Definition of the beam line support 61 62 void HadrontherapyBeamMonitoring(); 63 //Definition of the monitor chamber 64 65 void HadrontherapyBeamScatteringFoils(); 66 // Definition of the first scattering foil made of tantalum 67 68 void HadrontherapyBeamCollimators(); 69 // Definition of the pre collimator made of plastic 70 // and the collimator in front of the detector 71 72 void HadrontherapyRidgeFilter(); 73 // The following methods allow to change parameters 74 // of some beam line components (through Messenger files) 75 76 void SetScatteringFoilXSize(G4double); 77 // This method allows to change the size of the scattering foil 78 // along the X axis 79 80 void SetPreCollimatorXSize(G4double); 81 // This method allows to change the size of the pre collimator along 82 // the Z axis 83 84 void SetPreCollimatorXPosition(G4double); 85 // This method allows to change the position of the pre collimator along 86 // the X axis 87 88 void SetAirTubeYSize(G4double); 89 // This method allows to change the y side of 90 // air tube 91 92 void SetAirTubeZSize(G4double); 93 // This method allows to change the z side of 94 // the air tube 95 96 void SetScattererMaterial(G4String); 97 // This method permit to change 98 //the material of scatterer 99 100 private: 101 static TrentoPassiveProtonBeamLine* instance; 102 //passive proton line dimensions 103 void SetDefaultDimensions(); 104 void ConstructTrentoPassiveProtonBeamLine(); 105 106 // geometry component 107 TrentoPassiveProtonBeamLineMessenger* TrentoPassiveMessenger; 108 G4LogicalVolume* logicTreatmentRoom; 109 G4VPhysicalVolume* physicalTreatmentRoom; 110 HadrontherapyDetectorConstruction* hadrontherapyDetectorConstruction; 111 112 113 G4Material* kapton; 114 115 G4double ScatteringFoilXSize; 116 G4double ScatteringFoilYSize; 117 G4double ScatteringFoilZSize; 118 G4double ScatteringFoilXPosition; 119 G4double ScatteringFoilYPosition; 120 G4double ScatteringFoilZPosition; 121 122 G4double preCollimatorXHalfSide; 123 G4double preCollimatorXPosition; 124 G4double preCollimatorYPosition; 125 G4double preCollimatorZPosition; 126 127 G4double YHalfSideAirTube; 128 G4double ZHalfSideAirTube; 129 130 G4VPhysicalVolume* physiBeamLineSupport; 131 G4VPhysicalVolume* physiBeamLineCover; 132 G4VPhysicalVolume* physiBeamLineCover2; 133 134 G4VPhysicalVolume* physiMonitorLayer1; 135 G4VPhysicalVolume* physiMonitorLayer2; 136 137 G4VPhysicalVolume* internalMonitorStructurePV; 138 G4VPhysicalVolume* firstFoilPV; 139 G4VPhysicalVolume* secondFoilPV; 140 G4VPhysicalVolume* airgapPV; 141 142 G4Box* ScatteringFoil; 143 G4LogicalVolume* logicScatteringFoil; 144 G4VPhysicalVolume* physiScatteringFoil; 145 146 G4VPhysicalVolume* ridgeFilterPhys; 147 148 G4Box* preCollimator; 149 G4VPhysicalVolume* physiPreCollimator; 150 151 G4Box* Collimator; 152 G4VPhysicalVolume* physiCollimator; 153 154 G4Box* solidAirTube; 155 G4Box* solidAirPreTube; 156 157 G4VPhysicalVolume* mother; 158 G4VPhysicalVolume* physiAirTube; 159 G4VPhysicalVolume* physiAirPreTube; 160 161 G4VisAttributes* blue; 162 G4VisAttributes* gray; 163 G4VisAttributes* white; 164 G4VisAttributes* red; 165 G4VisAttributes* yellow; 166 G4VisAttributes* green; 167 G4VisAttributes* darkGreen; 168 G4VisAttributes* darkOrange3; 169 G4VisAttributes* skyBlue; 170 171 G4Material* beamLineSupportMaterial; 172 G4Material* vacuumZoneMaterial; 173 G4Material* layerMonitorChamberMaterial; 174 G4Material* layerDefaultMaterial; 175 G4Material* FoilMaterial; 176 G4Material* internalStructureMaterial; 177 G4Material* airgapMaterial; 178 G4Material* ScatteringFoilMaterial; 179 G4Material* singleTrapMaterial; 180 G4Material* CollimatorMaterial; 181 G4Material* preCollimatorMaterial; 182 G4Material* airTubeMaterial; 183 G4Material* airTube2Material; 184 G4Material* airTube3Material; 185 G4Material* ridgeFilterMaterial; 186 187 HadrontherapyDetectorROGeometry* RO; 188 189 190 }; 191 #endif 192