File indexing completed on 2025-02-23 09:22:45
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
0030
0031 #ifndef RE06DetectorConstruction_h
0032 #define RE06DetectorConstruction_h 1
0033
0034 #include "G4VUserDetectorConstruction.hh"
0035 #include "globals.hh"
0036
0037 class G4LogicalVolume;
0038 class G4VPhysicalVolume;
0039 class G4PVReplica;
0040 class G4Material;
0041 class G4Box;
0042 class RE06DetectorMessenger;
0043
0044 class RE06DetectorConstruction : public G4VUserDetectorConstruction
0045 {
0046 public:
0047 RE06DetectorConstruction();
0048 virtual ~RE06DetectorConstruction();
0049
0050 virtual G4VPhysicalVolume* Construct();
0051
0052 void ConstructSDandField();
0053
0054 void PrintCalorParameters() const;
0055 void SetAbsorberMaterial(G4String materialChoice);
0056 G4String GetAbsorberMaterial() const;
0057 void SetGapMaterial(G4String materialChoice);
0058 G4String GetGapMaterial() const;
0059 void SetSerialGeometry(G4bool ser);
0060 void SetNumberOfLayers(G4int nl);
0061 G4int GetNumberOfLayers() const { return fNumberOfLayers; }
0062 G4bool IsSerial() const { return fSerial; }
0063
0064 void AddMaterial();
0065
0066 G4int GetVerboseLevel() const { return fVerboseLevel; }
0067 void SetVerboseLevel(G4int val) { fVerboseLevel = val; }
0068
0069 private:
0070 void DefineMaterials();
0071 void SetupGeometry();
0072 void SetupDetectors();
0073
0074
0075 G4int fNumberOfLayers;
0076
0077 G4double fTotalThickness;
0078 G4double fLayerThickness;
0079
0080 G4bool fConstructed;
0081 static G4ThreadLocal G4bool fConstructedSDandField;
0082
0083 G4String fCalName[3];
0084
0085 G4Material* fWorldMaterial;
0086 G4Material* fAbsorberMaterial;
0087 G4Material* fGapMaterial;
0088
0089 G4Box* fLayerSolid;
0090 G4Box* fGapSolid;
0091
0092 G4LogicalVolume* fWorldLogical;
0093 G4LogicalVolume* fCalorLogical[3];
0094 G4LogicalVolume* fLayerLogical[3];
0095 G4LogicalVolume* fGapLogical[3];
0096
0097 G4VPhysicalVolume* fWorldPhysical;
0098 G4VPhysicalVolume* fCalorPhysical[3];
0099 G4PVReplica* fLayerPhysical[3];
0100 G4VPhysicalVolume* fGapPhysical[3];
0101
0102 G4bool fSerial;
0103
0104 RE06DetectorMessenger* fDetectorMessenger;
0105
0106 G4int fVerboseLevel;
0107 };
0108
0109 #endif