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