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 // Code developed by: 27 // S.Larsson 28 // 29 // ***************************************** 30 // * * 31 // * PurgMagDetectorConstruction.hh * 32 // * * 33 // ***************************************** 34 // 35 // 36 37 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 38 39 #ifndef PurgMagDetectorConstruction_h 40 #define PurgMagDetectorConstruction_h 1 41 42 #include "G4VUserDetectorConstruction.hh" 43 #include "globals.hh" 44 #include "G4ThreeVector.hh" 45 #include "G4RotationMatrix.hh" 46 #include "G4Cache.hh" 47 #include "G4MagneticField.hh" 48 49 50 class G4Box; 51 class G4Trd; 52 class G4LogicalVolume; 53 class G4VPhysicalVolume; 54 class G4Material; 55 class G4UniformMagField; 56 class PurgMagTabulatedField3D; 57 58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 59 60 class PurgMagDetectorConstruction : public G4VUserDetectorConstruction 61 { 62 public: 63 PurgMagDetectorConstruction(); 64 ~PurgMagDetectorConstruction(); 65 66 public: 67 68 G4VPhysicalVolume* Construct(); 69 void ConstructSDandField(); 70 71 public: 72 73 void PrintDetectorParameters(); 74 75 G4double GetWorldSizeXY() const {return WorldSizeXY;}; 76 G4double GetWorldSizeZ() const {return WorldSizeZ;}; 77 78 G4double GetMeasureVolumeSizeXY() const {return MeasureVolumeSizeXY;}; 79 G4double GetMeasureVolumeSizeZ() const {return MeasureVolumeSizeZ;}; 80 81 G4double GetGapSizeX1() {return GapSizeX1;}; 82 G4double GetGapSizeX2() {return GapSizeX2;}; 83 G4double GetGapSizeY1() {return GapSizeY1;}; 84 G4double GetGapSizeY2() {return GapSizeY2;}; 85 G4double GetGapSizeZ() {return GapSizeZ;}; 86 87 G4Material* GetWorldMaterial() {return WorldMaterial;}; 88 G4Material* GetGapMaterial() {return GapMaterial;}; 89 90 const G4VPhysicalVolume* GetWorld() const {return physiWorld;}; 91 const G4VPhysicalVolume* GetMeasureVolume() const {return physiMeasureVolume;}; 92 const G4VPhysicalVolume* GetGap1() const {return physiGap1;}; 93 const G4VPhysicalVolume* GetGap2() const {return physiGap2;}; 94 95 private: 96 97 98 99 G4double WorldSizeXY; 100 G4double WorldSizeZ; 101 102 G4double MeasureVolumeSizeXY; 103 G4double MeasureVolumeSizeZ; 104 G4double MeasureVolumePosition; 105 106 G4double GapSizeX1; 107 G4double GapSizeX2; 108 G4double GapSizeY1; 109 G4double GapSizeY2; 110 G4double GapSizeZ; 111 G4double Gap1PosX; 112 G4double Gap1PosY; 113 G4double Gap1PosZ; 114 G4double Gap2PosX; 115 G4double Gap2PosY; 116 G4double Gap2PosZ; 117 118 G4double SSD; 119 G4double zOffset; 120 121 G4VPhysicalVolume* physiWorld; 122 G4LogicalVolume* logicWorld; 123 G4Box* solidWorld; 124 125 126 G4VPhysicalVolume* physiGap1; 127 G4LogicalVolume* logicGap1; 128 G4Trd* solidGap1; 129 130 131 G4VPhysicalVolume* physiGap2; 132 G4LogicalVolume* logicGap2; 133 G4Trd* solidGap2; 134 135 G4VPhysicalVolume* physiMeasureVolume; 136 G4LogicalVolume* logicMeasureVolume; 137 G4Box* solidMeasureVolume; 138 139 G4Material* WorldMaterial; 140 G4Material* GapMaterial; 141 142 G4Cache<G4MagneticField*> fField; //pointer to the thread-local fields 143 144 private: 145 146 147 148 void DefineMaterials(); 149 G4VPhysicalVolume* ConstructCalorimeter(); 150 }; 151 152 153 #endif 154 155 156