12 #include "CLHEP/Units/GlobalSystemOfUnits.h"
13 #include "G4ChordFinder.hh"
14 #include "G4ClassicalRK4.hh"
15 #include "G4FieldManager.hh"
16 #include "G4LogicalVolumeStore.hh"
17 #include "G4Mag_UsualEqRhs.hh"
18 #include "G4TMagFieldEquation.hh"
19 #include "G4PropagatorInField.hh"
38 edm::LogVerbatim(
"SimG4CoreMagneticField") <<
" FieldBuilder::build: Global magnetic field is used";
44 G4PropagatorInField *fP) {
45 G4LogicalVolumeStore *theStore = G4LogicalVolumeStore::GetInstance();
46 for (
auto vol : *theStore) {
57 double minStep = stpPSet.
getParameter<
double>(
"MinStep") * CLHEP::mm;
59 if (stepper ==
"G4TDormandPrince45") {
66 G4ChordFinder *cf =
new G4ChordFinder(
theField, minStep, dStepper);
69 G4MagIntegratorStepper *mStepper =
new G4ClassicalRK4(monopoleEquation, 8);
70 G4ChordFinder *cfmon =
new G4ChordFinder(
theField, minStep, mStepper);
Log< level::Info, true > LogVerbatim
G4LogicalVolume * theTopVolume
FieldBuilder(const MagneticField *, const edm::ParameterSet &)
void build(CMSFieldManager *fM, G4PropagatorInField *fP)
T getParameter(std::string const &) const
G4Mag_UsualEqRhs * theFieldEquation
void InitialiseForVolume(const edm::ParameterSet &, sim::Field *, G4ChordFinder *cfDefault, G4ChordFinder *cfMonopole, const std::string &vol, const std::string &fieldType, const std::string &stepperName, double delta, G4PropagatorInField *)
edm::ParameterSet thePSet
void configureForVolume(const std::string &volName, edm::ParameterSet &volPSet, CMSFieldManager *fM, G4PropagatorInField *fP)