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 - ULTRA experiment example 29 // -------------------------------------------------------------- 30 // 31 // Code developed by: 32 // B. Tome, M.C. Espirito-Santo, A. Trindade, P. Rodrigues 33 // 34 // ********************************************** 35 // * UltraDetectorConstruction.hh 36 // ********************************************** 37 // 38 // Class used in the definition of the Ultra setup consisting of: 39 // - the UVscope detector 40 // - an optional reflecting surface 41 // Optical photons can reach the UVscope either directly or after reflection in the 42 // surface, which can be polished or diffusing. 43 // The main part of the UVscope definition is the Fresnel lens construction based 44 // on the UltraFresnelLens class. 45 // 46 #ifndef UltraDetectorConstruction_h 47 #define UltraDetectorConstruction_h 1 48 49 #include "globals.hh" 50 #include "G4VUserDetectorConstruction.hh" 51 52 53 class G4VPhysicalVolume; 54 class G4LogicalVolume; 55 class G4SDManager; 56 class G4OpticalSurface; 57 class UltraDetectorMessenger; 58 class UltraScintSD; 59 class UltraPMTSD; 60 class UltraFresnelLens; 61 62 class UltraDetectorConstruction : public G4VUserDetectorConstruction 63 { 64 65 public: 66 UltraDetectorConstruction(); 67 ~UltraDetectorConstruction(); 68 69 public: 70 G4VPhysicalVolume* Construct(); 71 void ConstructSDandField(); 72 void SetReflectionType(G4String); 73 74 inline G4double GetLambdaMin() const {return lambda_min;} 75 inline G4double GetLambdaMax() const {return lambda_max;} 76 77 private: 78 79 // Methods to build ULTRA 80 void ConstructUVscope(); 81 void ConstructReflector(); 82 void SetReflectorOpticalProperties(); 83 84 // Material definitions 85 void ConstructTableMaterials(); 86 87 private: 88 UltraDetectorMessenger *fDetectorMessenger; 89 G4VPhysicalVolume *fWorld_phys ; 90 UltraFresnelLens *FresnelLens ; 91 G4OpticalSurface *fReflectorOpticalSurface; 92 G4LogicalVolume *logicalPMT; 93 G4LogicalVolume *fReflectorLog; 94 G4String fReflectionType; 95 G4bool fIsReflectorConstructed; 96 97 G4double lambda_min ; 98 G4double lambda_max ; 99 }; 100 101 #endif 102