File indexing completed on 2025-02-23 09:22:31
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifndef ExGflashDetectorConstruction_h
0030 #define ExGflashDetectorConstruction_h 1
0031
0032 #include "ExGflashSensitiveDetector.hh"
0033
0034 #include "G4Cache.hh"
0035 #include "G4ThreeVector.hh"
0036 #include "G4VUserDetectorConstruction.hh"
0037 #include "globals.hh"
0038
0039 class G4LogicalVolume;
0040 class G4VPhysicalVolume;
0041 class G4Material;
0042 class G4Region;
0043
0044 class GFlashHomoShowerParameterisation;
0045 class GFlashShowerModel;
0046 class GFlashHitMaker;
0047 class GFlashParticleBounds;
0048 class ExGflashMessenger;
0049
0050 class ExGflashDetectorConstruction : public G4VUserDetectorConstruction
0051 {
0052 public:
0053 ExGflashDetectorConstruction();
0054 ~ExGflashDetectorConstruction() override;
0055
0056 G4VPhysicalVolume* Construct() override;
0057 void ConstructSDandField() override;
0058
0059 void SetLBining(G4ThreeVector);
0060 void SetRBining(G4ThreeVector);
0061 void SetVerbose(G4int val) { fVerbose = val; }
0062
0063 void SetMaterial(G4String mat);
0064
0065 G4int GetVerbose() const { return fVerbose; }
0066
0067 G4int GetnLtot() const { return fNLtot; }
0068 G4int GetnRtot() const { return fNRtot; }
0069 G4double GetdLradl() const { return fDLradl; }
0070 G4double GetdRradl() const { return fDRradl; }
0071
0072 G4double GetSDRadLen() const { return fSDRadLen; }
0073
0074 private:
0075 G4int fNbOfCrystals{10};
0076
0077 G4double fCrystalWidth;
0078 G4double fCrystalLength;
0079
0080 G4LogicalVolume* fCrystal_log{nullptr};
0081 G4Material* fDetMat{nullptr};
0082 G4Region* fRegion{nullptr};
0083
0084 G4double fSDRadLen;
0085
0086 G4int fVerbose{0};
0087 G4int fNLtot{40}, fNRtot{50};
0088 G4double fDLradl{0.5}, fDRradl{0.1};
0089
0090 ExGflashMessenger* fGflashMessenger;
0091
0092 inline static G4ThreadLocal GFlashShowerModel* fFastShowerModel = nullptr;
0093 inline static G4ThreadLocal GFlashHomoShowerParameterisation* fParameterisation = nullptr;
0094 inline static G4ThreadLocal GFlashParticleBounds* fParticleBounds = nullptr;
0095 inline static G4ThreadLocal GFlashHitMaker* fHitMaker = nullptr;
0096 };
0097
0098 #endif