File indexing completed on 2026-04-01 07:50:27
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 "G4ThreeVector.hh"
0033 #include "G4VUserDetectorConstruction.hh"
0034 #include "globals.hh"
0035
0036 class G4LogicalVolume;
0037 class G4Material;
0038 class G4UniformMagField;
0039 class DetectorMessenger;
0040
0041 const G4int kMaxTally = 20;
0042
0043
0044
0045 class DetectorConstruction : public G4VUserDetectorConstruction
0046 {
0047 public:
0048 DetectorConstruction();
0049 virtual ~DetectorConstruction();
0050
0051 void SetSizeX(G4double);
0052 void SetSizeYZ(G4double);
0053 void SetMaterial(const G4String&);
0054 void SetWorldMaterial(const G4String&);
0055 void SetMagField(G4double);
0056
0057 void SetTallyNumber(G4int);
0058 void SetTallySize(G4int, const G4ThreeVector&);
0059 void SetTallyPosition(G4int, const G4ThreeVector&);
0060
0061 virtual G4VPhysicalVolume* Construct();
0062
0063 inline G4double GetWorldSizeX() const { return fWorldSizeX; };
0064 inline G4double GetWorldSizeYZ() const { return fWorldSizeYZ; };
0065 inline G4double GetAbsorSizeX() const { return fAbsorSizeX; };
0066 inline G4double GetAbsorSizeYZ() const { return fAbsorSizeYZ; };
0067 inline G4int GetTallyNumber() const { return fTallyNumber; };
0068
0069 inline const G4Material* GetWorldMaterial() const { return fWorldMaterial; };
0070 inline const G4Material* GetAbsorMaterial() const { return fAbsorMaterial; };
0071
0072 G4double GetTallyMass(G4int n) const;
0073 const G4LogicalVolume* GetLogicalTally(G4int n) const;
0074
0075 void PrintParameters() const;
0076
0077 private:
0078 void DefineMaterials();
0079
0080 G4double fWorldSizeX;
0081 G4double fWorldSizeYZ;
0082 G4double fAbsorSizeX;
0083 G4double fAbsorSizeYZ;
0084
0085 G4Material* fAbsorMaterial;
0086 G4Material* fWorldMaterial;
0087
0088 G4UniformMagField* fMagField;
0089 G4LogicalVolume* fLAbsor;
0090 G4LogicalVolume* fLWorld;
0091
0092 G4int fTallyNumber;
0093 G4ThreeVector fTallySize[kMaxTally];
0094 G4double fTallyMass[kMaxTally];
0095 G4ThreeVector fTallyPosition[kMaxTally];
0096 G4LogicalVolume* fLTally[kMaxTally];
0097
0098 DetectorMessenger* fDetectorMessenger;
0099 };
0100
0101
0102
0103 #endif