Skip to content

Commit 6747b69

Browse files
committed
fix logic for adding single leg conversions and mva value to proto object
1 parent 838eeb8 commit 6747b69

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

RecoParticleFlow/PFProducer/interface/PFEGammaAlgo.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ class PFEGammaAlgo {
6969
std::vector<PFKFFlaggedElement> > GSFToTrackMap;
7070
typedef std::unordered_map<const PFClusterElement*,
7171
std::vector<PFClusterFlaggedElement> > ClusterMap;
72-
72+
typedef std::unordered_map<const PFKFElement*,
73+
float > KFValMap;
74+
7375
struct ProtoEGObject {
7476
ProtoEGObject() : parentSC(NULL) {}
7577
reco::PFBlockRef parentBlock;
@@ -88,7 +90,7 @@ class PFEGammaAlgo {
8890
// for manual brem recovery
8991
std::vector<PFGSFFlaggedElement> secondaryGSFs;
9092
std::vector<PFKFFlaggedElement> secondaryKFs;
91-
std::vector<std::pair<reco::TrackRef, float> > singleLegConversions;
93+
KFValMap singleLegConversionMvaMap;
9294
// for track-HCAL cluster linking
9395
std::vector<PFClusterFlaggedElement> hcalClusters;
9496
ElementMap localMap;

RecoParticleFlow/PFProducer/src/PFEGammaAlgo.cc

+13-6
Original file line numberDiff line numberDiff line change
@@ -1776,7 +1776,7 @@ linkRefinableObjectECALToSingleLegConv(ProtoEGObject& RO) {
17761776
RO.localMap.push_back( ElementMap::value_type(elemaskf,ecal.first) );
17771777
kf->second = false;
17781778

1779-
RO.singleLegConversions.push_back(std::make_pair(elemaskf->trackRef(),mvaval));
1779+
RO.singleLegConversionMvaMap.insert(std::make_pair(elemaskf, mvaval));
17801780
}
17811781
}
17821782
}
@@ -1868,13 +1868,20 @@ fillPFCandidates(const std::list<PFEGammaAlgo::ProtoEGObject>& ROs,
18681868
if( convref.isNonnull() && convref.isAvailable() ) {
18691869
xtra.addConversionRef(convref);
18701870
}
1871+
else {
1872+
//single leg conversions
1873+
1874+
//look for stored mva value in map or else recompute
1875+
const auto &mvavalmapped = RO.singleLegConversionMvaMap.find(kf);
1876+
//FIXME: Abuse single mva value to store both provenance and single leg mva score
1877+
//by storing 3.0 + mvaval
1878+
float mvaval = mvavalmapped!=RO.singleLegConversionMvaMap.end() ? mvavalmapped->second : 3.0 + EvaluateSingleLegMVA(_currentblock, *cfg_.primaryVtx,
1879+
kf->index());
1880+
1881+
xtra.addSingleLegConvTrackRefMva(std::make_pair(kf->trackRef(),mvaval));
1882+
}
18711883
}
18721884

1873-
//add single leg conversions
1874-
for (const auto &conv : RO.singleLegConversions) {
1875-
xtra.addSingleLegConvTrackRefMva(conv);
1876-
}
1877-
18781885
// build the refined supercluster from those clusters left in the cand
18791886
refinedscs_.push_back(buildRefinedSuperCluster(RO));
18801887

0 commit comments

Comments
 (0)