File indexing completed on 2025-08-05 08:18:15
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef G4OHCAL_PHG4OHCALFIELDSETUP_H
0014 #define G4OHCAL_PHG4OHCALFIELDSETUP_H
0015
0016 #include <Geant4/G4Types.hh> // for G4double, G4int
0017
0018 #include <limits> // for numeric_limits
0019 #include <string>
0020
0021 class G4ChordFinder;
0022 class G4FieldManager;
0023 class G4Mag_UsualEqRhs;
0024 class G4MagIntegratorStepper;
0025 class G4MagneticField;
0026
0027
0028
0029
0030 class PHG4OHCalFieldSetup
0031 {
0032 public:
0033 PHG4OHCalFieldSetup(const std::string& iron_fieldmap_path, const double scale = 1., const double inner_radius = 0., const double outer_radius = 1.e10, const double size_z = 1.e10);
0034
0035
0036 explicit PHG4OHCalFieldSetup(const PHG4OHCalFieldSetup&) = delete;
0037 PHG4OHCalFieldSetup& operator=(const PHG4OHCalFieldSetup&) = delete;
0038
0039 virtual ~PHG4OHCalFieldSetup();
0040
0041 G4FieldManager*
0042 get_Field_Manager_Iron() const
0043 {
0044 return fFieldManagerIron;
0045 }
0046
0047 void
0048 set_Field_Manager_Iron(G4FieldManager* fieldManagerIron)
0049 {
0050 fFieldManagerIron = fieldManagerIron;
0051 }
0052
0053 G4double
0054 get_Min_Step() const
0055 {
0056 return fMinStep;
0057 }
0058
0059 void
0060 set_Min_Step(G4double minStep)
0061 {
0062 fMinStep = minStep;
0063 }
0064
0065 private:
0066 G4FieldManager* fFieldManagerIron = nullptr;
0067 G4Mag_UsualEqRhs* fEquationIron = nullptr;
0068 G4ChordFinder* fChordFinderIron = nullptr;
0069 G4MagneticField* fEMfieldIron = nullptr;
0070 G4MagIntegratorStepper* fStepperIron = nullptr;
0071 G4double fMinStep = std::numeric_limits<float>::quiet_NaN();
0072 };
0073
0074 #endif