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

hlt-tracking parabolic mf build fit #2244

Closed
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 @@ -133,13 +133,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;
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;
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

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