Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:18:15

0001 // $Id: $
0002 
0003 /*!
0004  * \file PHG4OHCalFieldSetup.cc
0005  * \brief
0006  * \author Jin Huang <jhuang@bnl.gov>
0007  * \version $Revision:   $
0008  * \date $Date: $
0009  */
0010 
0011 #include "PHG4OHCalFieldSetup.h"
0012 
0013 #include <g4main/PHG4MagneticField.h>
0014 
0015 #include <phfield/PHFieldConfig.h>  // for PHFieldConfig, PHFieldCo...
0016 #include <phfield/PHFieldConfigv1.h>
0017 #include <phfield/PHFieldUtility.h>
0018 
0019 #include <Geant4/G4ChordFinder.hh>
0020 #include <Geant4/G4ClassicalRK4.hh>
0021 #include <Geant4/G4FieldManager.hh>
0022 #include <Geant4/G4MagIntegratorDriver.hh>
0023 #include <Geant4/G4MagIntegratorStepper.hh>
0024 #include <Geant4/G4Mag_UsualEqRhs.hh>
0025 #include <Geant4/G4MagneticField.hh>
0026 #include <Geant4/G4SystemOfUnits.hh>
0027 #include <Geant4/G4Types.hh>  // for G4int
0028 
0029 #include <cassert>
0030 
0031 PHG4OHCalFieldSetup::PHG4OHCalFieldSetup(const std::string &iron_fieldmap_path, const double scale, const double inner_radius, const double outer_radius, const double size_z)
0032   : fMinStep(0.005 * mm)
0033 {
0034   static const G4int nvar = 8;
0035 
0036   // the new HCal expect 3D magnetic field
0037   PHFieldConfigv1 field_config(PHFieldConfig::Field3DCartesian, iron_fieldmap_path, scale);
0038 
0039   fEMfieldIron = new PHG4MagneticField(PHFieldUtility::BuildFieldMap(&field_config, inner_radius, outer_radius, size_z));
0040   assert(fEMfieldIron);
0041 
0042   fEquationIron = new G4Mag_UsualEqRhs(fEMfieldIron);
0043 
0044   fStepperIron = new G4ClassicalRK4(fEquationIron, nvar);
0045 
0046   fChordFinderIron = new G4ChordFinder(
0047       new G4MagInt_Driver(fMinStep, fStepperIron,
0048                           fStepperIron->GetNumberOfVariables()));
0049 
0050   fFieldManagerIron = new G4FieldManager();
0051   fFieldManagerIron->SetDetectorField(fEMfieldIron);
0052   fFieldManagerIron->SetChordFinder(fChordFinderIron);
0053 }
0054 
0055 PHG4OHCalFieldSetup::~PHG4OHCalFieldSetup()
0056 {
0057   delete fEMfieldIron;
0058 }