File indexing completed on 2025-01-18 09:16:09
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 #ifndef DetectorConstruction_h
0031 #define DetectorConstruction_h 1
0032
0033 #include "G4VUserDetectorConstruction.hh"
0034 #include "globals.hh"
0035 #include "G4Cache.hh"
0036
0037 class G4VPhysicalVolume;
0038 class G4LogicalVolume;
0039 class G4Material;
0040 class G4GlobalMagFieldMessenger;
0041
0042
0043
0044 class DetectorConstruction : public G4VUserDetectorConstruction
0045 {
0046 public:
0047
0048 DetectorConstruction();
0049 ~DetectorConstruction();
0050
0051 public:
0052
0053 virtual G4VPhysicalVolume* Construct();
0054 virtual void ConstructSDandField();
0055
0056 void PrintCalorParameters();
0057
0058 public:
0059
0060 G4VPhysicalVolume* GetPvolWorld() {return pvol_world;};
0061 G4Material* GetWorldMaterial() {return worldMat;};
0062 G4double GetWorldSizeX() {return worldSizeX;};
0063 G4double GetCalorThickness() {return calorThickness;};
0064 G4double GetCalorSizeYZ() {return fiberLength;};
0065 G4double GetModuleThickness() {return moduleThickness;};
0066
0067 G4LogicalVolume* GetLvolFiber() {return lvol_fiber;};
0068 G4LogicalVolume* GetLvolLayer() {return lvol_layer;};
0069 G4LogicalVolume* GetLvolModule() {return lvol_module;};
0070 G4LogicalVolume* GetLvolCalorimeter() {return lvol_calorimeter;};
0071 G4LogicalVolume* GetLvolWorld() {return lvol_world;};
0072
0073 G4int GetNbFibers() {return nbOfFibers;};
0074 G4int GetNbLayers() {return nbOfLayers;};
0075 G4int GetNbModules() {return nbOfModules;};
0076
0077 private:
0078
0079
0080
0081 G4Material* fiberMat;
0082 G4double fiberDiameter, fiberLength;
0083 G4LogicalVolume* lvol_fiber;
0084
0085
0086
0087 G4Material* absorberMat;
0088 G4int nbOfFibers;
0089 G4double distanceInterFibers;
0090 G4double layerThickness;
0091 G4LogicalVolume* lvol_layer;
0092
0093
0094
0095 G4Material* moduleMat;
0096 G4int nbOfLayers;
0097 G4double milledLayer;
0098 G4double moduleThickness;
0099 G4LogicalVolume* lvol_module;
0100
0101
0102
0103 G4Material* calorimeterMat;
0104 G4int nbOfModules;
0105 G4double calorThickness;
0106 G4LogicalVolume* lvol_calorimeter;
0107
0108
0109
0110 G4Material* worldMat;
0111 G4double worldSizeX;
0112 G4LogicalVolume* lvol_world;
0113 G4VPhysicalVolume* pvol_world;
0114
0115 G4Material* defaultMat;
0116
0117 G4Cache<G4GlobalMagFieldMessenger*> fFieldMessenger;
0118
0119 private:
0120
0121 void DefineMaterials();
0122 G4VPhysicalVolume* ConstructCalorimeter();
0123 };
0124
0125
0126
0127 #endif
0128