12 #include <CLHEP/Units/SystemOfUnits.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" 20 #include "G4PropagatorInField.hh" 25 theDelta =
p.getParameter<
double>(
"delta") * CLHEP::mm;
39 edm::LogVerbatim(
"SimG4CoreMagneticField") <<
" FieldBuilder::build: Global magnetic field is used";
45 G4PropagatorInField *fP) {
46 G4LogicalVolumeStore *theStore = G4LogicalVolumeStore::GetInstance();
47 for (
auto vol : *theStore) {
58 double minStep = stpPSet.
getParameter<
double>(
"MinStep") * CLHEP::mm;
60 if (stepper ==
"CMSTDormandPrince45") {
62 }
else if (stepper ==
"G4TDormandPrince45") {
69 G4ChordFinder *cf =
new G4ChordFinder(
theField, minStep, dStepper);
72 G4MagIntegratorStepper *mStepper =
new G4ClassicalRK4(monopoleEquation, 8);
73 G4ChordFinder *cfmon =
new G4ChordFinder(
theField, minStep, mStepper);
Log< level::Info, true > LogVerbatim
T getParameter(std::string const &) const
G4LogicalVolume * theTopVolume
FieldBuilder(const MagneticField *, const edm::ParameterSet &)
void build(CMSFieldManager *fM, G4PropagatorInField *fP)
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)