File indexing completed on 2026-03-28 07:50:28
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 "G4VUserDetectorConstruction.hh"
0033 #include "globals.hh"
0034
0035 class G4LogicalVolume;
0036 class G4VPhysicalVolume;
0037 class G4Material;
0038 class G4FieldManager;
0039 class G4UniformMagField;
0040 class DetectorMessenger;
0041
0042
0043
0044 class DetectorConstruction : public G4VUserDetectorConstruction
0045 {
0046 public:
0047 DetectorConstruction();
0048 ~DetectorConstruction();
0049 G4VPhysicalVolume* Construct() override;
0050
0051 void SetTargetMaterial(const G4String name);
0052 inline G4Material* GetTargetMaterial() const;
0053 inline void SetTargetInnerRadius(const G4double value);
0054 inline G4double GetTargetInnerRadius() const;
0055 inline void SetTargetOuterRadius(const G4double value);
0056 inline G4double GetTargetOuterRadius() const;
0057 void SetMagField(const G4double fieldValue);
0058 void UpdateGeometry();
0059
0060 private:
0061
0062 G4VPhysicalVolume* ConstructLayer();
0063
0064 void PrintParameters();
0065 G4Material* fTargetMaterial;
0066 G4LogicalVolume* fLogicExperimentalHall;
0067 G4VPhysicalVolume* fPhysExperimentalHall;
0068 G4LogicalVolume* fLogicTargetLayer;
0069 G4VPhysicalVolume* fPhysTargetLayer;
0070 G4FieldManager* fFieldMgr;
0071 G4UniformMagField* fUniformMagField;
0072 DetectorMessenger* fDetectorMessenger;
0073 G4double fTargetInnerRadius;
0074 G4double fTargetOuterRadius;
0075 };
0076
0077 inline G4Material* DetectorConstruction::GetTargetMaterial() const
0078 {
0079 return fTargetMaterial;
0080 }
0081
0082 inline void DetectorConstruction::SetTargetInnerRadius(const G4double value)
0083 {
0084 fTargetInnerRadius = value;
0085 }
0086
0087 inline G4double DetectorConstruction::GetTargetInnerRadius() const
0088 {
0089 return fTargetInnerRadius;
0090 }
0091
0092 inline void DetectorConstruction::SetTargetOuterRadius(const G4double value)
0093 {
0094 fTargetOuterRadius = value;
0095 }
0096
0097 inline G4double DetectorConstruction::GetTargetOuterRadius() const
0098 {
0099 return fTargetOuterRadius;
0100 }
0101
0102
0103
0104 #endif