1 #ifndef CommonTools_ParticleFlow_IsolatedPFCandidateSelectorDefinition 2 #define CommonTools_ParticleFlow_IsolatedPFCandidateSelectorDefinition 29 iC.mayConsume<IsoMap>(
cfg.getParameter<
edm::InputTag>(
"deltaBetaIsolationValueMap"))),
55 for (collection::const_iterator pfc = hc->begin(); pfc != hc->end(); ++pfc, ++
key) {
59 double isoSumCharged = 0.0;
60 double isoSumNeutral = 0.0;
62 for (
unsigned iMap = 0; iMap < isoMapsCharged.size(); ++iMap) {
63 const IsoMap& isoMap = *(isoMapsCharged[iMap]);
64 double val = isoMap[candidate];
68 for (
unsigned iMap = 0; iMap < isoMapsNeutral.size(); ++iMap) {
69 const IsoMap& isoMap = *(isoMapsNeutral[iMap]);
70 double val = isoMap[candidate];
75 const IsoMap& isoMap = *dBetaH;
76 double dBetaVal = isoMap[candidate];
78 isoSumNeutral = dBetaCorIsoSumNeutral > 0 ? dBetaCorIsoSumNeutral : 0;
81 double isoSum = isoSumCharged + isoSumNeutral;
84 isoSum /= candidate->pt();
95 selected_.back().setSourceCandidatePtr(ptrToMother);
IsolatedPFCandidateSelectorDefinition(const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)
edm::ValueMap< double > IsoMap
bool getByToken(EDGetToken token, Handle< PROD > &result) const
edm::EDGetTokenT< IsoMap > deltaBetaIsolationValueMapToken_
std::vector< edm::EDGetTokenT< IsoMap > > isolationValueMapChargedTokens_
void select(const HandleToCollection &hc, const edm::Event &e, const edm::EventSetup &s)
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
std::vector< edm::EDGetTokenT< IsoMap > > isolationValueMapNeutralTokens_
bool doDeltaBetaCorrection_
Particle reconstructed by the particle flow algorithm.
isoSum
===> compute the isolation and find the most isolated track