Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer << 3 // * DISCLAIMER * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th << 5 // * The following disclaimer summarizes all the specific disclaimers * 6 // * the Geant4 Collaboration. It is provided << 6 // * of contributors to this software. The specific disclaimers,which * 7 // * conditions of the Geant4 Software License << 7 // * govern, are listed with their locations in: * 8 // * LICENSE and available at http://cern.ch/ << 8 // * http://cern.ch/geant4/license * 9 // * include a list of copyright holders. << 10 // * 9 // * * 11 // * Neither the authors of this software syst 10 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 11 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 12 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 13 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file << 14 // * use. * 16 // * for the full disclaimer and the limitatio << 17 // * 15 // * * 18 // * This code implementation is the result << 16 // * This code implementation is the intellectual property of the * 19 // * technical work of the GEANT4 collaboratio << 17 // * GEANT4 collaboration. * 20 // * By using, copying, modifying or distri << 18 // * By copying, distributing or modifying the Program (or any work * 21 // * any work based on the software) you ag << 19 // * based on the Program) you indicate your acceptance of this * 22 // * use in resulting scientific publicati << 20 // * statement, and all its terms. * 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* 21 // ******************************************************************** 25 // 22 // 26 // << 27 /// \file medical/GammaTherapy/include/Detecto << 28 /// \brief Definition of the DetectorConstruct << 29 // << 30 #ifndef DetectorConstruction_h 23 #ifndef DetectorConstruction_h 31 #define DetectorConstruction_h 1 24 #define DetectorConstruction_h 1 32 25 33 // ------------------------------------------- 26 // ------------------------------------------------------------- 34 // GEANT4 test IBREM 27 // GEANT4 test IBREM 35 // 28 // 36 // Authors: V.Grichine, V.Ivanchenko 29 // Authors: V.Grichine, V.Ivanchenko 37 // 30 // 38 // Modified: 31 // Modified: 39 // 32 // 40 // 18-02-03 V.Ivanchenko create 33 // 18-02-03 V.Ivanchenko create 41 // 34 // 42 // ------------------------------------------- 35 // ------------------------------------------------------------- 43 36 44 //....oooOO0OOooo........oooOO0OOooo........oo << 37 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 45 //....oooOO0OOooo........oooOO0OOooo........oo << 38 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 46 39 47 #include "G4Material.hh" << 48 #include "G4VPhysicalVolume.hh" << 49 #include "G4VUserDetectorConstruction.hh" 40 #include "G4VUserDetectorConstruction.hh" >> 41 #include "G4VPhysicalVolume.hh" >> 42 #include "G4Material.hh" 50 43 51 //....oooOO0OOooo........oooOO0OOooo........oo << 44 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 52 45 53 class CheckVolumeSD; 46 class CheckVolumeSD; 54 class PhantomSD; 47 class PhantomSD; 55 class TargetSD; 48 class TargetSD; 56 class DetectorMessenger; 49 class DetectorMessenger; 57 class G4LogicalVolume; 50 class G4LogicalVolume; 58 51 59 class DetectorConstruction : public G4VUserDet 52 class DetectorConstruction : public G4VUserDetectorConstruction 60 { 53 { 61 public: << 54 public: 62 DetectorConstruction(); << 63 virtual ~DetectorConstruction(); << 64 << 65 G4VPhysicalVolume* Construct(); << 66 << 67 void SetTarget1Material(const G4String& m) << 68 void SetTarget2Material(const G4String& m) << 69 << 70 inline G4double GetGeneratorPosZ() const { << 71 << 72 inline void SetGap(G4double val) { fDelta << 73 inline void SetTarget1Z(G4double val) { fT << 74 inline void SetTarget2Z(G4double val) { fT << 75 inline void SetMylarZ(G4double val) { fMyl << 76 inline void SetCheckShiftZ(G4double val) { << 77 inline void SetAbsorberZ(G4double val) { f << 78 inline void SetAbsorberShiftZ(G4double val << 79 << 80 inline void SetNumberDivZ(G4int val) { fNu << 81 inline void SetNumberDivR(G4int val) { fNu << 82 << 83 const G4VPhysicalVolume* GetCheckVolume() << 84 const G4VPhysicalVolume* GetGasVolume() co << 85 const G4VPhysicalVolume* GetPhantom() cons << 86 const G4VPhysicalVolume* GetTarget1() cons << 87 const G4VPhysicalVolume* GetTarget2() cons << 88 << 89 G4double GetAbsorberZ() const { return fPh << 90 G4double GetAbsorberR() const { return fAb << 91 G4double GetScoreZ() const { return fAbsor << 92 << 93 G4int GetNumberDivZ() const { return fNumZ << 94 G4int GetNumberDivR() const { return fNumR << 95 << 96 void SetMaxEnergy(G4double e) { fMaxEnergy << 97 inline G4double GetMaxEnergy() const { ret << 98 G4int GetNumberDivE() const { return fNumE << 99 inline void SetNumberDivE(G4int val) { fNu << 100 << 101 void SetVerbose(G4bool v) { fVerbose = v; << 102 inline G4bool GetVerbose() const { return << 103 55 104 void DumpGeometryParameters(); << 56 DetectorConstruction(); >> 57 ~DetectorConstruction(); 105 58 106 private: << 59 public: 107 void InitialiseGeometryParameters(); << 108 60 109 DetectorConstruction& operator=(const Dete << 61 G4VPhysicalVolume* Construct(); 110 DetectorConstruction(const DetectorConstru << 62 G4double GetGeneratorPosZ() const {return fGeneratorPosZ;}; 111 void ConstructSDandField(); << 112 63 113 G4bool fVerbose; << 64 void setGap(G4double val) {fDelta = val;}; >> 65 void setTarget1Z(G4double val) {fTarget1Z = val;}; >> 66 void setTarget2Z(G4double val) {fTarget2Z = val;}; >> 67 void setMylarZ(G4double val) {fMylarVolumeZ = val;}; >> 68 void setCheckShiftZ(G4double val) {fCheckShiftZ = val;}; >> 69 void setAbsorberZ(G4double val) {fAbsorberZ = val;}; >> 70 void setAbsorberShiftZ(G4double val) {fAbsorberShiftZ = val;}; 114 71 115 G4int fNumZ; << 72 void setTarget1Material(const G4String& m); 116 G4int fNumR; << 73 void setTarget2Material(const G4String& m); >> 74 void UpdateGeometry(); 117 75 118 G4int fNumE; << 76 private: // methods 119 G4double fMaxEnergy; << 120 77 121 G4LogicalVolume* fLogicCheckVolume; << 78 void Initialise(); 122 std::vector<G4LogicalVolume*> fLogicRing; << 79 void DefineMaterials(); 123 G4LogicalVolume* fLogicPh; << 80 void InitialiseGeometryParameters(); 124 G4LogicalVolume* fLogicAbsorber; << 81 G4VPhysicalVolume* ConstructVolumes(); 125 82 126 G4double fWorldXY, fWorldZ; << 83 private: // fields 127 G4double fDelta; << 128 G4double fGeneratorPosZ; << 129 84 130 G4double fTargetRadius, fTarget1Z, fTarget << 85 CheckVolumeSD* checkSD; 131 G4double fTarget2Z, fTarget2PosZ; << 86 PhantomSD* calorimeterSD; >> 87 TargetSD* targetSD; >> 88 G4double fWorldXY, fWorldZ; >> 89 G4double fDelta; >> 90 G4double fGeneratorPosZ; 132 91 133 G4double fGasVolumeRadius, fGasVolumeZ, fG << 92 G4double fTargetRadius, fTarget1Z, fTarget1PosZ; 134 G4double fAirZ, fMylarVolumeZ, fMylarPosZ; << 93 G4double fTarget2Z, fTarget2PosZ; 135 G4double fCheckVolumeRadius, fCheckVolumeZ << 136 G4double fTargetVolumeZ, fTargetVolumePosZ << 137 G4double fShiftZPh; << 138 94 139 G4double fPhantomRadius, fPhantomZ, fPhant << 95 G4double fGasVolumeRadius,fGasVolumeZ, fGasVolumePosZ, fAirZ, fMylarVolumeZ, fMylarPosZ; 140 G4double fAbsorberRadius, fAbsorberZ, fAbs << 96 G4double fCheckVolumeRadius, fCheckVolumeZ, fCheckShiftZ, fCheckVolumePosZ; 141 G4double fDistanceVacuumTarget, fWindowZ, << 97 G4double fTargetVolumeZ, fTargetVolumePosZ; 142 98 143 G4Material* fWorldMaterial; << 99 G4double fPhantomRadius, fPhantomZ, fPhantomPosZ; >> 100 G4double fAbsorberRadius, fAbsorberZ, fAbsorberShiftZ, fAbsorberPosZ; >> 101 G4double fDistanceVacuumTarget, fWindowZ, fWindowPosZ; 144 102 145 G4Material* fTarget1Material; << 103 G4Material* fWorldMaterial; 146 G4Material* fTarget2Material; << 147 G4Material* fMylar; << 148 G4Material* fWindowMaterial; << 149 104 150 G4Material* fLightMaterial; << 105 G4Material* fTarget1Material; 151 G4Material* fAbsorberMaterial; << 106 G4Material* fTarget2Material; >> 107 G4Material* fMylar; >> 108 G4Material* fWindowMaterial; 152 109 153 G4LogicalVolume* fLogicTarget1; << 110 G4Material* fLightMaterial; 154 G4LogicalVolume* fLogicTarget2; << 111 G4Material* fAbsorberMaterial; 155 112 156 G4VPhysicalVolume* fCheckVolume; << 113 G4LogicalVolume* logicTarget1; 157 G4VPhysicalVolume* fGasVolume; << 114 G4LogicalVolume* logicTarget2; 158 G4VPhysicalVolume* fPhantom; << 159 G4VPhysicalVolume* fTarget1; << 160 G4VPhysicalVolume* fTarget2; << 161 115 162 DetectorMessenger* fMessenger; << 116 DetectorMessenger* dMessenger; 163 }; 117 }; 164 118 165 //....oooOO0OOooo........oooOO0OOooo........oo << 119 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 166 120 167 #endif 121 #endif 168 122