Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hlttracking parabolic magnetic field in building and fitting #2291

Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,7 @@
#Default is version 85l
from MagneticField.Engine.volumeBasedMagneticField_120812_largeYE4_cfi import *

# Parabolic parametrized magnetic field used for track building
from MagneticField.ParametrizedEngine.ParabolicParametrizedField_cfi import ParametrizedMagneticFieldProducer as ParabolicParametrizedMagneticFieldProducer
ParabolicParametrizedMagneticFieldProducer.label = "ParabolicMf"

Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,8 @@
#Default is version 85l
from MagneticField.Engine.volumeBasedMagneticField_090322_2pi_scaled_cfi import *

# Parabolic parametrized magnetic field used for track building
from MagneticField.ParametrizedEngine.ParabolicParametrizedField_cfi import ParametrizedMagneticFieldProducer as ParabolicParametrizedMagneticFieldProducer
ParabolicParametrizedMagneticFieldProducer.label = "ParabolicMf"


Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,8 @@
# and loading the best map available for that current as specified in the file
from MagneticField.Engine.autoMagneticFieldProducer_cfi import *

# Parabolic parametrized magnetic field used for track building
from MagneticField.ParametrizedEngine.ParabolicParametrizedField_cfi import ParametrizedMagneticFieldProducer as ParabolicParametrizedMagneticFieldProducer
ParabolicParametrizedMagneticFieldProducer.label = "ParabolicMf"


Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ ParabolicParametrizedMagneticField::inTesla(const GlobalPoint& gp) const {
if (isDefined(gp)) {
return inTeslaUnchecked(gp);
} else {
edm::LogWarning("MagneticField|FieldOutsideValidity") << " Point " << gp << " is outside the validity region of ParabolicParametrizedMagneticField";
LogDebug("MagneticField|FieldOutsideValidity") << " Point " << gp << " is outside the validity region of ParabolicParametrizedMagneticField";
return GlobalVector();
}
}
Expand Down
5 changes: 3 additions & 2 deletions RecoTracker/CkfPattern/python/CkfTrackCandidates_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,12 @@
maxSeedsBeforeCleaning = cms.uint32(5000),
# SeedProducer:SeedLabel descoped to src
src = cms.InputTag('globalMixedSeeds'),
SimpleMagneticField = cms.string('ParabolicMf'),
NavigationSchool = cms.string('SimpleNavigationSchool'),
TrajectoryBuilder = cms.string('GroupedCkfTrajectoryBuilder'),
TransientInitialStateEstimatorParameters = cms.PSet(
propagatorAlongTISE = cms.string('PropagatorWithMaterial'),
propagatorOppositeTISE = cms.string('PropagatorWithMaterialOpposite'),
propagatorAlongTISE = cms.string('PropagatorWithMaterialParabolicMf'),
propagatorOppositeTISE = cms.string('PropagatorWithMaterialParabolicMfOpposite'),
numberMeasurementsForFit = cms.int32(4)
),
MeasurementTrackerEvent = cms.InputTag("MeasurementTrackerEvent"),
Expand Down
4 changes: 2 additions & 2 deletions RecoTracker/CkfPattern/python/CkfTrajectories_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
TrajectoryBuilder = cms.string('GroupedCkfTrajectoryBuilder'),
# nested parameter set for TransientInitialStateEstimator
TransientInitialStateEstimatorParameters = cms.PSet(
propagatorAlongTISE = cms.string('PropagatorWithMaterial'),
propagatorOppositeTISE = cms.string('PropagatorWithMaterialOpposite'),
propagatorAlongTISE = cms.string('PropagatorWithMaterialParabolicMf'),
propagatorOppositeTISE = cms.string('PropagatorWithMaterialParabolicMfOpposite'),
numberMeasurementsForFit = cms.int32(4)
),
MeasurementTrackerEvent = cms.InputTag("MeasurementTrackerEvent")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FWCore.ParameterSet.Config as cms

CkfTrajectoryBuilder = cms.ESProducer("CkfTrajectoryBuilderESProducer",
propagatorAlong = cms.string('PropagatorWithMaterial'),
propagatorAlong = cms.string('PropagatorWithMaterialParabolicMf'),
trajectoryFilterName = cms.string('ckfBaseTrajectoryFilter'),
maxCand = cms.int32(5),
ComponentName = cms.string('CkfTrajectoryBuilder'),
Expand All @@ -11,7 +11,7 @@
TTRHBuilder = cms.string('WithTrackAngle'),
updator = cms.string('KFUpdator'),
alwaysUseInvalidHits = cms.bool(True),
propagatorOpposite = cms.string('PropagatorWithMaterialOpposite'),
propagatorOpposite = cms.string('PropagatorWithMaterialParabolicMfOpposite'),
lostHitPenalty = cms.double(30.0),
#SharedSeedCheck = cms.bool(False)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

GroupedCkfTrajectoryBuilder = cms.ESProducer("GroupedCkfTrajectoryBuilderESProducer",
bestHitOnly = cms.bool(True),
propagatorAlong = cms.string('PropagatorWithMaterial'),
propagatorAlong = cms.string('PropagatorWithMaterialParabolicMf'),
# Filter used on tracks at end of all tracking (in-out + out-in)
trajectoryFilterName = cms.string('ckfBaseTrajectoryFilter'),
# Filter used on tracks at end of in-out tracking phase
Expand All @@ -29,7 +29,7 @@
requireSeedHitsInRebuild = cms.bool(True),
keepOriginalIfRebuildFails = cms.bool(False),
estimator = cms.string('Chi2'),
propagatorOpposite = cms.string('PropagatorWithMaterialOpposite'),
propagatorOpposite = cms.string('PropagatorWithMaterialParabolicMfOpposite'),
# Out-in tracking will not be attempted unless this many hits
# are on track after in-out tracking phase.
minNrOfHitsForRebuild = cms.int32(5)
Expand Down
5 changes: 4 additions & 1 deletion RecoTracker/CkfPattern/src/CkfTrackCandidateMakerBase.cc
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,10 @@ namespace cms{

//services
es.get<TrackerRecoGeometryRecord>().get( theGeomSearchTracker );
es.get<IdealMagneticFieldRecord>().get( theMagField );
if (conf_.exists("SimpleMagneticField"))
es.get<IdealMagneticFieldRecord>().get(conf_.getParameter<std::string>("SimpleMagneticField"), theMagField );
else
es.get<IdealMagneticFieldRecord>().get(theMagField );

if (!theInitialState){
// constructor uses the EventSetup, it must be in the setEventSetup were it has a proper value.
Expand Down
7 changes: 3 additions & 4 deletions RecoTracker/IterativeTracking/python/MixedTripletStep_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,13 +131,12 @@
)

# Propagator taking into account momentum uncertainty in multiple scattering calculation.
import TrackingTools.MaterialEffects.MaterialPropagator_cfi
mixedTripletStepPropagator = TrackingTools.MaterialEffects.MaterialPropagator_cfi.MaterialPropagator.clone(
import TrackingTools.MaterialEffects.MaterialPropagatorParabolicMf_cff
mixedTripletStepPropagator = TrackingTools.MaterialEffects.MaterialPropagatorParabolicMf_cff.MaterialPropagatorParabolicMF.clone(
ComponentName = 'mixedTripletStepPropagator',
ptMin = 0.1
)
import TrackingTools.MaterialEffects.OppositeMaterialPropagator_cfi
mixedTripletStepPropagatorOpposite = TrackingTools.MaterialEffects.OppositeMaterialPropagator_cfi.OppositeMaterialPropagator.clone(
mixedTripletStepPropagatorOpposite = TrackingTools.MaterialEffects.MaterialPropagatorParabolicMf_cff.OppositeMaterialPropagatorParabolicMF.clone(
ComponentName = 'mixedTripletStepPropagatorOpposite',
ptMin = 0.1
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
chi2_cuts = cms.vdouble(),
maxChi2 = cms.double(4.0),
extraPhiKDBox = cms.double(0.0),
SimpleMagneticField = cms.string('ParabolicMf'),
refitHits = cms.bool(True),
ClusterShapeHitFilterName = cms.string('ClusterShapeHitFilter'),
debug = cms.bool(False),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
maxChi2 = cms.double(4.0),#3.0 in v3
refitHits = cms.bool(True),
extraPhiKDBox = cms.double(0.),
SimpleMagneticField = cms.string('ParabolicMf'),
ClusterShapeHitFilterName = cms.string('ClusterShapeHitFilter'),
debug = cms.bool(False),
detIdsToDebug = cms.vint32(0,0,0)
Expand Down Expand Up @@ -125,6 +126,7 @@
chi2_cuts = cms.vdouble(),
maxChi2 = cms.double(6.0),#5.0 in v3 #4.0 in v2
extraPhiKDBox = cms.double(0.),
SimpleMagneticField = cms.string('ParabolicMf'),
refitHits = cms.bool(True),
ClusterShapeHitFilterName = cms.string('ClusterShapeHitFilter'),
debug = cms.bool(False),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
chi2_cuts = cms.vdouble(),
refitHits = cms.bool(True),
extraPhiKDBox = cms.double(0.),
SimpleMagneticField = cms.string('ParabolicMf'),
ClusterShapeHitFilterName = cms.string('ClusterShapeHitFilter'),
debug = cms.bool(False),
detIdsToDebug = cms.vint32(0,0,0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
chi2_cuts = cms.vdouble(),#2.5,3.5,3.5,3.5,3.5
refitHits = cms.bool(True),
extraPhiKDBox = cms.double(0.),
SimpleMagneticField = cms.string('ParabolicMf'),
ClusterShapeHitFilterName = cms.string('ClusterShapeHitFilter'),
debug = cms.bool(False),
detIdsToDebug = cms.vint32(0,0,0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ NavigationSchoolESProducer::ReturnType CfgNavigationSchoolESProducer::produce(co

// get the field
edm::ESHandle<MagneticField> field;
iRecord.getRecord<IdealMagneticFieldRecord>().get(field);
if (theNavigationPSet.exists("SimpleMagneticField"))
iRecord.getRecord<IdealMagneticFieldRecord>().get(theNavigationPSet.getParameter<std::string>("SimpleMagneticField"), field);
else
iRecord.getRecord<IdealMagneticFieldRecord>().get(field);

//get the geometricsearch tracker geometry
edm::ESHandle<GeometricSearchTracker> geometricSearchTracker;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,10 @@ NavigationSchoolESProducer::produce(const NavigationSchoolRecord& iRecord)

// get the field
edm::ESHandle<MagneticField> field;
iRecord.getRecord<IdealMagneticFieldRecord>().get(field);
if (theNavigationPSet.exists("SimpleMagneticField"))
iRecord.getRecord<IdealMagneticFieldRecord>().get(theNavigationPSet.getParameter<std::string>("SimpleMagneticField"), field);
else
iRecord.getRecord<IdealMagneticFieldRecord>().get(field);

//get the geometricsearch tracker geometry
edm::ESHandle<GeometricSearchTracker> geometricSearchTracker;
Expand Down
4 changes: 3 additions & 1 deletion RecoTracker/TkNavigation/python/CfgNavigationSchool_cfi.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import FWCore.ParameterSet.Config as cms

CfgNavigationSchoolESProducer = cms.ESProducer("CfgNavigationSchoolESProducer",
ComponentName = cms.string('CfgNavigationSchool'))
ComponentName = cms.string('CfgNavigationSchool'),
SimpleMagneticField = cms.string('ParabolicMf'),
)

_defaultPSetWithIn=cms.PSet(IN = cms.vstring(''),OUT = cms.vstring(''))
_defaultPSetInverseRelation=cms.PSet(OUT = cms.vstring(''))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import FWCore.ParameterSet.Config as cms

navigationSchoolESProducer = cms.ESProducer("NavigationSchoolESProducer",
ComponentName = cms.string('SimpleNavigationSchool')
ComponentName = cms.string('SimpleNavigationSchool'),
SimpleMagneticField = cms.string('ParabolicMf')
)


Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ MultiHitGeneratorFromChi2::MultiHitGeneratorFromChi2(const edm::ParameterSet& cf
detIdsToDebug.push_back(0);
detIdsToDebug.push_back(0);
}
if (cfg.exists("SimpleMagneticField")) {
useSimpleMF = true;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bool useSimpleMF is never initialized (to false): please do it

mfName_ = cfg.getParameter<std::string>("SimpleMagneticField");
}
bfield = 0;
nomField = -1.;
}
Expand Down Expand Up @@ -114,7 +118,10 @@ void MultiHitGeneratorFromChi2::hitSets(const TrackingRegion& region,
es.get<TrackerDigiGeometryRecord>().get(tracker);
if (nomField<0 && bfield == 0) {
edm::ESHandle<MagneticField> bfield_h;
es.get<IdealMagneticFieldRecord>().get(bfield_h);
if (useSimpleMF)
es.get<IdealMagneticFieldRecord>().get(mfName_, bfield_h);
else
es.get<IdealMagneticFieldRecord>().get(bfield_h);
bfield = bfield_h.product();
nomField = bfield->nominalValue();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ typedef CombinedMultiHitGenerator::LayerCacheType LayerCacheType;
bool debug;
std::string filterName_;
std::vector<int> detIdsToDebug;

bool useSimpleMF;
std::string mfName_;
};
#endif

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,10 @@ void SeedFromConsecutiveHitsCreator::init(const TrackingRegion & iregion,
// get propagator
es.get<TrackingComponentsRecord>().get(thePropagatorLabel, propagatorHandle);
// mag field
es.get<IdealMagneticFieldRecord>().get(bfield);
if (useSimpleMF)
es.get<IdealMagneticFieldRecord>().get(mfName_, bfield);
else
es.get<IdealMagneticFieldRecord>().get(bfield);
nomField = bfield->nominalValue();
isBOFF = (0==nomField);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,18 @@ class SeedFromConsecutiveHitsCreator : public SeedCreator {
theBOFFMomentum(cfg.existsAs<double>("SeedMomentumForBOFF") ? cfg.getParameter<double>("SeedMomentumForBOFF") : 5.0),
theOriginTransverseErrorMultiplier(cfg.existsAs<double>("OriginTransverseErrorMultiplier") ? cfg.getParameter<double>("OriginTransverseErrorMultiplier") : 1.0),
theMinOneOverPtError(cfg.existsAs<double>("MinOneOverPtError") ? cfg.getParameter<double>("MinOneOverPtError") : 1.0)
{}
{
if (cfg.exists("SimpleMagneticField")) {
useSimpleMF = true;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bool useSimpleMF is never initialized (to false): please do it

mfName_ = cfg.getParameter<std::string>("SimpleMagneticField");
}
}

SeedFromConsecutiveHitsCreator(
const std::string & propagator = "PropagatorWithMaterial", double seedMomentumForBOFF = -5.0,
double aOriginTransverseErrorMultiplier = 1.0, double aMinOneOverPtError = 1.0)
: thePropagatorLabel(propagator), theBOFFMomentum(seedMomentumForBOFF),
theOriginTransverseErrorMultiplier(aOriginTransverseErrorMultiplier), theMinOneOverPtError(aMinOneOverPtError) { }
theOriginTransverseErrorMultiplier(aOriginTransverseErrorMultiplier), theMinOneOverPtError(aMinOneOverPtError), useSimpleMF(false) { }

//dtor
virtual ~SeedFromConsecutiveHitsCreator();
Expand Down Expand Up @@ -76,6 +81,7 @@ class SeedFromConsecutiveHitsCreator : public SeedCreator {
edm::ESHandle<MagneticField> bfield;
float nomField;
bool isBOFF = false;

bool useSimpleMF;
std::string mfName_;
};
#endif
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

SeedFromConsecutiveHitsCreator = cms.PSet(
ComponentName = cms.string('SeedFromConsecutiveHitsCreator'),
propagator = cms.string('PropagatorWithMaterial'),
propagator = cms.string('PropagatorWithMaterialParabolicMf'),
SeedMomentumForBOFF = cms.double(5.0),
OriginTransverseErrorMultiplier = cms.double(1.0),
MinOneOverPtError = cms.double(1.0)
MinOneOverPtError = cms.double(1.0),
SimpleMagneticField = cms.string('ParabolicMf')
)
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FWCore.ParameterSet.Config as cms
SeedFromConsecutiveHitsStraightLineCreator = cms.PSet(
ComponentName = cms.string('SeedFromConsecutiveHitsStraightLineCreator'),
propagator = cms.string('PropagatorWithMaterial'),
propagator = cms.string('PropagatorWithMaterialParabolicMf'),
OriginTransverseErrorMultiplier = cms.double(1.0),
MinOneOverPtError = cms.double(1.0)
)
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import FWCore.ParameterSet.Config as cms
SeedFromConsecutiveHitsTripletOnlyCreator = cms.PSet(
ComponentName = cms.string('SeedFromConsecutiveHitsTripletOnlyCreator'),
propagator = cms.string('PropagatorWithMaterial')
propagator = cms.string('PropagatorWithMaterialParabolicMf')
)
2 changes: 1 addition & 1 deletion RecoTracker/TkSeedGenerator/src/SeedFromProtoTrack.cc
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ void SeedFromProtoTrack::init(const reco::Track & proto, const edm::EventSetup&
const Propagator* propagator = &(*propagatorHandle);

edm::ESHandle<MagneticField> field;
es.get<IdealMagneticFieldRecord>().get(field);
es.get<IdealMagneticFieldRecord>().get(field);//fixme
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this "fixme" about?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it means that the (optional) simple magnetic field should also be added here but I could not find a simple way to propagate the pset to here (another possibility is to hardcode the name as done for the propagator but I don't like it)


reco::TrackBase::Point vtx = proto.referencePoint();
reco::TrackBase::Vector mom = proto.momentum();
Expand Down
10 changes: 9 additions & 1 deletion RecoTracker/TrackProducer/interface/TrackProducerBase.icc
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,15 @@ TrackProducerBase<T>::getFromES(const edm::EventSetup& setup,
//get magnetic field
//
LogDebug("TrackProducer") << "get magnetic field" << "\n";
setup.get<IdealMagneticFieldRecord>().get(theMF);
bool simpleMF = false;
if (conf_.exists("useSimpleMF")) simpleMF = conf_.getParameter<bool>("useSimpleMF");
if (simpleMF){
std::string mfName_ = conf_.getParameter<std::string>("SimpleMagneticField");
setup.get<IdealMagneticFieldRecord>().get(mfName_, theMF);
}
else
setup.get<IdealMagneticFieldRecord>().get(theMF);

//
// get the fitter from the ES
//
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import FWCore.ParameterSet.Config as cms

from TrackingTools.GeomPropagators.AnalyticalPropagator_cfi import AnalyticalPropagator
AnalyticalPropagatorParabolicMF = AnalyticalPropagator.clone(
SimpleMagneticField = cms.string('ParabolicMf'),
ComponentName = cms.string('AnalyticalPropagatorParabolicMf')
)

from TrackingTools.GeomPropagators.OppositeAnalyticalPropagator_cfi import OppositeAnalyticalPropagator
OppositeAnalyticalPropagatorParabolicMF = OppositeAnalyticalPropagator.clone(
SimpleMagneticField = cms.string('ParabolicMf'),
ComponentName = cms.string('AnalyticalPropagatorParabolicMfOpposite')
)
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ TrackingRecHitPropagatorESProducer::~TrackingRecHitPropagatorESProducer() {}
boost::shared_ptr<TrackingRecHitPropagator>
TrackingRecHitPropagatorESProducer::produce(const TrackingComponentsRecord& iRecord){
ESHandle<MagneticField> magfield;
iRecord.getRecord<IdealMagneticFieldRecord>().get(magfield );
if (pset_.exists("SimpleMagneticField"))
iRecord.getRecord<IdealMagneticFieldRecord>().get(pset_.getParameter<std::string>("SimpleMagneticField"), magfield);
else
iRecord.getRecord<IdealMagneticFieldRecord>().get(magfield);
theHitPropagator= boost::shared_ptr<TrackingRecHitPropagator>(new TrackingRecHitPropagator(magfield.product()));
return theHitPropagator;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import FWCore.ParameterSet.Config as cms

trackingRecHitPropagator = cms.ESProducer("TrackingRecHitPropagatorESProducer",
ComponentName = cms.string('trackingRecHitPropagator')
ComponentName = cms.string('trackingRecHitPropagator'),
SimpleMagneticField = cms.string('ParabolicMf')
)


Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,6 @@ PropagatorWithMaterialESProducer::produce(const TrackingComponentsRecord & iReco
// delete _propagator;
// _propagator = 0;
// }
ESHandle<MagneticField> magfield;
iRecord.getRecord<IdealMagneticFieldRecord>().get(magfield );


std::string pdir = pset_.getParameter<std::string>("PropagationDirection");
double mass = pset_.getParameter<double>("Mass");
Expand All @@ -40,6 +37,13 @@ PropagatorWithMaterialESProducer::produce(const TrackingComponentsRecord & iReco
pset_.getParameter<bool>("useOldAnalPropLogic") : true;
double ptMin = pset_.existsAs<double>("ptMin") ? pset_.getParameter<double>("ptMin") : -1.0;

ESHandle<MagneticField> magfield;
if (pset_.exists("SimpleMagneticField"))
iRecord.getRecord<IdealMagneticFieldRecord>().get(pset_.getParameter<std::string>("SimpleMagneticField"), magfield);
else
iRecord.getRecord<IdealMagneticFieldRecord>().get(magfield);
//fixme check that useRK is false when using SimpleMagneticField

PropagationDirection dir = alongMomentum;

if (pdir == "oppositeToMomentum") dir = oppositeToMomentum;
Expand Down
Loading