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 // 27 // -------------------------------------------------------------- 28 // GEANT 4 - Underground Dark Matter Detector Advanced Example 29 // 30 // For information related to this code contact: Alex Howard 31 // e-mail: alexander.howard@cern.ch 32 // -------------------------------------------------------------- 33 // Comments 34 // 35 // Underground Advanced 36 // by A. Howard and H. Araujo 37 // (27th November 2001) 38 // 39 // DetectorConstruction header 40 // -------------------------------------------------------------- 41 42 #ifndef DMXDetectorConstruction_h 43 #define DMXDetectorConstruction_h 1 44 45 #include "G4VUserDetectorConstruction.hh" 46 #include "globals.hh" 47 #include "G4Cache.hh" 48 49 class G4LogicalVolume; 50 class G4VPhysicalVolume; 51 class G4Material; 52 53 class G4UserLimits; 54 55 class DMXScintSD; 56 class DMXPmtSD; 57 58 class DMXDetectorMessenger; 59 60 class DMXDetectorConstruction : public G4VUserDetectorConstruction 61 { 62 public: 63 64 DMXDetectorConstruction(); 65 ~DMXDetectorConstruction(); 66 67 public: 68 69 G4VPhysicalVolume* Construct(); 70 void ConstructSDandField(); 71 72 void SetRoomEnergyCut(G4double); 73 void SetEnergyCut(G4double); 74 void SetTimeCut(G4double); 75 void SetRoomTimeCut(G4double); 76 77 private: 78 79 void DefineMaterials(); 80 81 G4UserLimits* theUserLimitsForRoom; 82 G4UserLimits* theUserLimitsForDetector; 83 // G4UserLimits* theUserLimitsForXenon; 84 85 G4double theMaxTimeCuts; 86 G4double theMaxStepSize; 87 G4double theDetectorStepSize; 88 G4double theMinEkine; 89 G4double theRoomMinEkine; 90 91 G4double theRoomTimeCut; 92 93 94 #include "DMXDetectorMaterial.ihh" // materials used 95 96 G4double sourceZ; 97 98 G4LogicalVolume* world_log; // pointers 99 G4VPhysicalVolume* world_phys; 100 101 #include "DMXDetectorRoom.ihh" 102 103 G4LogicalVolume* lab_log; 104 G4VPhysicalVolume* lab_phys; 105 106 G4LogicalVolume* LN2jacket_log; 107 G4VPhysicalVolume* LN2jacket_phys; 108 G4LogicalVolume* LN2vacuum_log; 109 G4VPhysicalVolume* LN2vacuum_phys; 110 G4LogicalVolume* LN2vessel_log; 111 G4VPhysicalVolume* LN2vessel_phys; 112 G4LogicalVolume* LN2_log; 113 G4VPhysicalVolume* LN2_phys; 114 G4LogicalVolume* jacket_log; 115 G4VPhysicalVolume* jacket_phys; 116 G4LogicalVolume* jacketflange_log; 117 G4VPhysicalVolume* topjacketflange_phys; 118 G4VPhysicalVolume* bottomjacketflange_phys; 119 G4LogicalVolume* vacuum_log; 120 G4VPhysicalVolume* vacuum_phys; 121 G4LogicalVolume* copper_log; 122 G4VPhysicalVolume* copper_phys; 123 G4LogicalVolume* coppertop_log; 124 G4VPhysicalVolume* coppertop_phys; 125 G4LogicalVolume* vessel_log; 126 G4VPhysicalVolume* vessel_phys; 127 G4LogicalVolume* vesseltop_log1; 128 G4VPhysicalVolume* vesseltop_phys1; 129 G4LogicalVolume* vesseltop_log2; 130 G4VPhysicalVolume* vesseltop_phys2; 131 G4LogicalVolume* vesselbottom_log1; 132 G4VPhysicalVolume* vesselbottom_phys1; 133 G4LogicalVolume* vesselbottom_log2; 134 G4VPhysicalVolume* vesselbottom_phys2; 135 G4LogicalVolume* pmtvesselbottom_log1; 136 G4VPhysicalVolume* pmtvesselbottom_phys1; 137 G4LogicalVolume* pmtvesselbottom_log2; 138 G4VPhysicalVolume* pmtvesselbottom_phys2; 139 G4LogicalVolume* GXe_log; 140 G4VPhysicalVolume* GXe_phys; 141 G4LogicalVolume* gaslag_log; 142 G4VPhysicalVolume* gaslag_phys; 143 G4LogicalVolume* CuShield_log; 144 G4VPhysicalVolume* CuShield_phys; 145 G4LogicalVolume* LXe_log; 146 G4VPhysicalVolume* LXe_phys; 147 G4LogicalVolume* liqLag_log; 148 G4VPhysicalVolume* liqLag_phys; 149 G4LogicalVolume* alpha_log; 150 G4VPhysicalVolume* alpha_phys; 151 G4LogicalVolume* americium_log; 152 G4VPhysicalVolume* americium_phys; 153 G4LogicalVolume* ring_log; 154 G4VPhysicalVolume* ring_phys_gas[2]; 155 G4VPhysicalVolume* ring_phys_liq[6]; 156 G4LogicalVolume* mirror_log; 157 G4VPhysicalVolume* mirror_phys; 158 G4LogicalVolume* grid1_log; 159 G4VPhysicalVolume* grid1_phys; 160 G4LogicalVolume* grid2_log; 161 G4VPhysicalVolume* grid2_phys; 162 G4LogicalVolume* pmt_log; 163 G4VPhysicalVolume* pmt_phys; 164 G4LogicalVolume* phcath_log; 165 G4VPhysicalVolume* phcath_phys; 166 167 G4Cache<DMXScintSD*> LXeSD; //pointer to sensitive detectors 168 G4Cache<DMXPmtSD*> pmtSD; 169 170 // pointer to the Detector Messenger: 171 DMXDetectorMessenger* detectorMessenger; 172 173 }; 174 175 #endif 176 177