Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:17:50

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 // $Id: $
0004 
0005 /*!
0006  * \file PHG4OuterHcalFieldSetup.h
0007  * \brief
0008  * \author Jin Huang <jhuang@bnl.gov>
0009  * \version $Revision:   $
0010  * \date $Date: $
0011  */
0012 
0013 #ifndef G4DETECTORS_PHG4OUTERHCALFIELDSETUP_H
0014 #define G4DETECTORS_PHG4OUTERHCALFIELDSETUP_H
0015 
0016 #include <Geant4/G4Types.hh>  // for G4double, G4int
0017 
0018 #include <cmath>
0019 
0020 class G4ChordFinder;
0021 class G4FieldManager;
0022 class G4Mag_UsualEqRhs;
0023 class G4MagIntegratorStepper;
0024 class G4MagneticField;
0025 
0026 /*!
0027  * \brief PHG4OuterHcalFieldSetup following Geant4 example F03FieldSetup
0028  */
0029 class PHG4OuterHcalFieldSetup
0030 {
0031  public:
0032   PHG4OuterHcalFieldSetup(G4int steelPlates, G4double scintiGap,
0033                           G4double tiltAngle);
0034   //! delete copy ctor and assignment opertor (cppcheck)
0035   explicit PHG4OuterHcalFieldSetup(const PHG4OuterHcalFieldSetup&) = delete;
0036   PHG4OuterHcalFieldSetup& operator=(const PHG4OuterHcalFieldSetup&) = delete;
0037 
0038   virtual ~PHG4OuterHcalFieldSetup() {}
0039 
0040   G4FieldManager*
0041   get_Field_Manager_Gap() const
0042   {
0043     return fFieldManagerGap;
0044   }
0045 
0046   void
0047   set_Field_Manager_Gap(G4FieldManager* fieldManagerGap)
0048   {
0049     fFieldManagerGap = fieldManagerGap;
0050   }
0051 
0052   G4FieldManager*
0053   get_Field_Manager_Iron() const
0054   {
0055     return fFieldManagerIron;
0056   }
0057 
0058   void
0059   set_Field_Manager_Iron(G4FieldManager* fieldManagerIron)
0060   {
0061     fFieldManagerIron = fieldManagerIron;
0062   }
0063 
0064   G4double
0065   get_Min_Step() const
0066   {
0067     return fMinStep;
0068   }
0069 
0070   void
0071   set_Min_Step(G4double minStep)
0072   {
0073     fMinStep = minStep;
0074   }
0075 
0076   G4int
0077   get_steel_plates() const
0078   {
0079     return n_steel_plates;
0080   }
0081 
0082   void
0083   set_steel_plates(G4int steelPlates)
0084   {
0085     n_steel_plates = steelPlates;
0086   }
0087 
0088   G4double
0089   get_scinti_gap() const
0090   {
0091     return scinti_gap;
0092   }
0093 
0094   void
0095   set_scinti_gap(G4double scintiGap)
0096   {
0097     scinti_gap = scintiGap;
0098   }
0099 
0100   G4double
0101   get_tilt_angle() const
0102   {
0103     return tilt_angle;
0104   }
0105 
0106   void
0107   set_tilt_angle(G4double tiltAngle)
0108   {
0109     tilt_angle = tiltAngle;
0110   }
0111 
0112  private:
0113   G4FieldManager* fFieldManagerIron = nullptr;
0114   G4FieldManager* fFieldManagerGap = nullptr;
0115   G4Mag_UsualEqRhs* fEquationIron = nullptr;
0116   G4Mag_UsualEqRhs* fEquationGap = nullptr;
0117   G4ChordFinder* fChordFinderIron = nullptr;
0118   G4ChordFinder* fChordFinderGap = nullptr;
0119   G4MagneticField* fEMfieldIron = nullptr;
0120   G4MagneticField* fEMfieldGap = nullptr;
0121   G4MagIntegratorStepper* fStepperIron = nullptr;
0122   G4MagIntegratorStepper* fStepperGap = nullptr;
0123 
0124   G4double fMinStep = NAN;
0125 
0126   G4int n_steel_plates = -1;
0127   G4double scinti_gap = NAN;
0128   G4double tilt_angle = NAN;
0129 };
0130 
0131 #endif /* PHG4OUTERHCALFIELDSETUP_H_ */