Skip to content

Commit b605a4d

Browse files
authored
Merge pull request #45243 from namapane/MBS_fix_141X
Add protection for pathologic cases in MuonBeamspotConstraintValueMapProducer
2 parents 68816ef + 988554b commit b605a4d

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

RecoMuon/GlobalTrackingTools/plugins/MuonBeamspotConstraintValueMapProducer.cc

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "TrackingTools/TransientTrack/interface/TransientTrack.h"
1515
#include "RecoVertex/KalmanVertexFit/interface/SingleTrackVertexConstraint.h"
1616
#include "DataFormats/VertexReco/interface/Vertex.h"
17+
#include "RecoVertex/VertexPrimitives/interface/VertexException.h"
1718

1819
class MuonBeamspotConstraintValueMapProducer : public edm::global::EDProducer<> {
1920
public:
@@ -86,13 +87,17 @@ class MuonBeamspotConstraintValueMapProducer : public edm::global::EDProducer<>
8687
auto pv = pvHandle->at(0);
8788
VertexState pvs = VertexState(GlobalPoint(Basic3DVector<float>(pv.position())), GlobalError(pv.covariance()));
8889

89-
SingleTrackVertexConstraint::BTFtuple btft = stvc.constrain(ttkb->build(muon.muonBestTrack()), pvs);
90-
if (std::get<0>(btft)) {
91-
const reco::Track& trkBS = std::get<1>(btft).track();
92-
pts.push_back(trkBS.pt());
93-
ptErrs.push_back(trkBS.ptError());
94-
chi2s.push_back(std::get<2>(btft));
95-
tbd = false;
90+
try {
91+
SingleTrackVertexConstraint::BTFtuple btft = stvc.constrain(ttkb->build(muon.muonBestTrack()), pvs);
92+
if (std::get<0>(btft)) {
93+
const reco::Track& trkBS = std::get<1>(btft).track();
94+
pts.push_back(trkBS.pt());
95+
ptErrs.push_back(trkBS.ptError());
96+
chi2s.push_back(std::get<2>(btft));
97+
tbd = false;
98+
}
99+
} catch (const VertexException& exc) {
100+
// Update failed; give up.
96101
}
97102
}
98103
}

0 commit comments

Comments
 (0)