File indexing completed on 2025-04-10 08:06:17
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
0034 #ifndef DetectorConstruction_H
0035 #define DetectorConstruction_H 1
0036
0037 #include "G4VUserDetectorConstruction.hh"
0038 #include "globals.hh"
0039
0040 class G4LogicalVolume;
0041 class G4VPhysicalVolume;
0042 class G4Material;
0043 class DetectorMessenger;
0044
0045
0046
0047 class DetectorConstruction : public G4VUserDetectorConstruction
0048 {
0049 public:
0050 DetectorConstruction();
0051 ~DetectorConstruction();
0052
0053 G4VPhysicalVolume* Construct();
0054
0055 void SetMaterialTracker(const G4String name);
0056 inline G4Material* GetMaterialTracker() const;
0057 void SetMaterialEmCalo(const G4String name);
0058 inline G4Material* GetMaterialEmCalo() const;
0059 void SetMaterialHadCalo(const G4String name);
0060 inline G4Material* GetMaterialHadCalo() const;
0061
0062 inline void SetInnerRadiusTracker(const G4double value);
0063 inline G4double GetInnerRadiusTracker() const;
0064 inline void SetOuterRadiusTracker(const G4double value);
0065 inline G4double GetOuterRadiusTracker() const;
0066 inline void SetInnerRadiusEmCalo(const G4double value);
0067 inline G4double GetInnerRadiusEmCalo() const;
0068 inline void SetOuterRadiusEmCalo(const G4double value);
0069 inline G4double GetOuterRadiusEmCalo() const;
0070 inline void SetInnerRadiusHadCalo(const G4double value);
0071 inline G4double GetInnerRadiusHadCalo() const;
0072 inline void SetOuterRadiusHadCalo(const G4double value);
0073 inline G4double GetOuterRadiusHadCalo() const;
0074 inline G4double GetScoringThickness() const;
0075
0076 void UpdateGeometry();
0077
0078 private:
0079 G4VPhysicalVolume* ConstructDetector();
0080
0081 void PrintParameters();
0082 G4Material* fMaterialTracker;
0083 G4Material* fMaterialEmCalo;
0084 G4Material* fMaterialHadCalo;
0085 G4LogicalVolume* fExperimentalHall_log;
0086 G4VPhysicalVolume* fExperimentalHall_phys;
0087 G4LogicalVolume* fLogicTrackerShell;
0088 G4VPhysicalVolume* fPhysiTrackerShell;
0089 G4LogicalVolume* fLogicEmCaloShell;
0090 G4VPhysicalVolume* fPhysiEmCaloShell;
0091 G4LogicalVolume* fLogicHadCaloShell;
0092 G4VPhysicalVolume* fPhysiHadCaloShell;
0093 G4LogicalVolume* fLogicScoringTrackerShell;
0094 G4VPhysicalVolume* fPhysiScoringTrackerShell;
0095 G4LogicalVolume* fLogicScoringEmCaloShell;
0096 G4VPhysicalVolume* fPhysiScoringEmCaloShell;
0097 G4LogicalVolume* fLogicScoringHadCaloShell;
0098 G4VPhysicalVolume* fPhysiScoringHadCaloShell;
0099 DetectorMessenger* fDetectorMessenger;
0100 G4double fInnerRadiusTracker;
0101 G4double fOuterRadiusTracker;
0102 G4double fInnerRadiusEmCalo;
0103 G4double fOuterRadiusEmCalo;
0104 G4double fInnerRadiusHadCalo;
0105 G4double fOuterRadiusHadCalo;
0106 const G4double fScoringThickness = 10.0;
0107 };
0108
0109 inline G4Material* DetectorConstruction::GetMaterialTracker() const
0110 {
0111 return fMaterialTracker;
0112 }
0113
0114 inline G4Material* DetectorConstruction::GetMaterialEmCalo() const
0115 {
0116 return fMaterialEmCalo;
0117 }
0118
0119 inline G4Material* DetectorConstruction::GetMaterialHadCalo() const
0120 {
0121 return fMaterialHadCalo;
0122 }
0123
0124 inline G4double DetectorConstruction::GetInnerRadiusTracker() const
0125 {
0126 return fInnerRadiusTracker;
0127 }
0128
0129 inline void DetectorConstruction::SetInnerRadiusTracker(const G4double value)
0130 {
0131 fInnerRadiusTracker = value;
0132 }
0133
0134 inline G4double DetectorConstruction::GetOuterRadiusTracker() const
0135 {
0136 return fOuterRadiusTracker;
0137 }
0138
0139 inline void DetectorConstruction::SetOuterRadiusTracker(const G4double value)
0140 {
0141 fOuterRadiusTracker = value;
0142 }
0143
0144 inline G4double DetectorConstruction::GetInnerRadiusEmCalo() const
0145 {
0146 return fInnerRadiusEmCalo;
0147 }
0148
0149 inline void DetectorConstruction::SetInnerRadiusEmCalo(const G4double value)
0150 {
0151 fInnerRadiusEmCalo = value;
0152 }
0153
0154 inline G4double DetectorConstruction::GetOuterRadiusEmCalo() const
0155 {
0156 return fOuterRadiusEmCalo;
0157 }
0158
0159 inline void DetectorConstruction::SetOuterRadiusEmCalo(const G4double value)
0160 {
0161 fOuterRadiusEmCalo = value;
0162 }
0163
0164 inline G4double DetectorConstruction::GetInnerRadiusHadCalo() const
0165 {
0166 return fInnerRadiusHadCalo;
0167 }
0168
0169 inline void DetectorConstruction::SetInnerRadiusHadCalo(const G4double value)
0170 {
0171 fInnerRadiusHadCalo = value;
0172 }
0173
0174 inline G4double DetectorConstruction::GetOuterRadiusHadCalo() const
0175 {
0176 return fOuterRadiusHadCalo;
0177 }
0178
0179 inline void DetectorConstruction::SetOuterRadiusHadCalo(const G4double value)
0180 {
0181 fOuterRadiusHadCalo = value;
0182 }
0183
0184 inline G4double DetectorConstruction::GetScoringThickness() const
0185 {
0186 return fScoringThickness;
0187 }
0188
0189
0190
0191 #endif