File indexing completed on 2026-09-17 08:32:03
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 DetectorConstruction_h
0030 #define DetectorConstruction_h 1
0031
0032 #include "G4VPhysicalVolume.hh"
0033 #include "G4VUserDetectorConstruction.hh"
0034 #include "globals.hh"
0035
0036 class G4Material;
0037 class DetectorMessenger;
0038
0039
0040
0041 class DetectorConstruction : public G4VUserDetectorConstruction
0042 {
0043 public:
0044 DetectorConstruction();
0045 ~DetectorConstruction();
0046
0047 public:
0048 void SetMaterialScatter(G4String);
0049 void SetThicknessScatter(G4double);
0050
0051 virtual G4VPhysicalVolume* Construct();
0052
0053 void UpdateGeometry();
0054
0055 public:
0056 void PrintGeometry();
0057
0058 G4double GetThicknessWorld() { return fThickness_World; };
0059 G4double GetRadiusWorld() { return fRadius_World; };
0060 G4double GetThicknessFrame() { return fThickness_Frame; };
0061
0062 G4Material* GetMaterialScatter() { return fMaterial_ScatterFoil; };
0063 G4double GetThicknessScatter() { return fThickness_ScatterFoil; };
0064
0065 G4double GetZdist_foil_detector()
0066 {
0067 return fThickness_Frame - fZfront_ScatterFoil - 0.5 * fThickness_ScatterFoil;
0068 };
0069
0070 const G4VPhysicalVolume* GetpvolWorld() { return fPvol_World; };
0071 const G4VPhysicalVolume* GetpvolFrame() { return fPvol_Frame; };
0072
0073 private:
0074 G4Material* fMaterial_World;
0075 G4double fRadius_World;
0076 G4double fThickness_World;
0077
0078 G4Material* fMaterial_Frame;
0079 G4double fThickness_Frame;
0080 G4double fZfront_Frame;
0081
0082 G4Material* fMaterial_ExitWindow;
0083 G4double fThickness_ExitWindow;
0084 G4double fZfront_ExitWindow;
0085
0086 G4Material* fMaterial_ScatterFoil;
0087 G4double fThickness_ScatterFoil;
0088 G4double fZfront_ScatterFoil;
0089
0090 G4Material* fMaterial_MonitorChbr;
0091 G4double fThickness_MonitorChbr;
0092 G4double fZfront_MonitorChbr;
0093
0094 G4Material* fMaterial_Bag;
0095 G4double fThickness_Bag;
0096 G4double fZfront_Bag;
0097
0098 G4Material* fMaterial_Gas;
0099 G4double fThickness_Gas;
0100
0101 G4Material* fMaterial_Ring;
0102 G4double fThickness_Ring;
0103 G4double fInnerRadius_Ring;
0104
0105 G4VPhysicalVolume* fPvol_World;
0106 G4VPhysicalVolume* fPvol_Frame;
0107
0108 DetectorMessenger* fDetectorMessenger;
0109
0110 private:
0111 void DefineMaterials();
0112 void GeometryParameters();
0113 G4VPhysicalVolume* ConstructVolumes();
0114 };
0115
0116
0117
0118 #endif