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