179 if (
test.isNull() || !
test.isAvailable()) {
181 <<
"DataFormat is detected as miniAOD but cannot cast to pat::Photon!";
186 std::unique_ptr<noZS::EcalClusterLazyTools> lazyToolnoZS;
189 lazyToolnoZS = std::make_unique<noZS::EcalClusterLazyTools>(
192 lazyToolnoZS = std::make_unique<noZS::EcalClusterLazyTools>(
201 std::vector<float> vars[
nVars_];
204 for (
unsigned i = 0;
i <
src->size(); ++
i) {
205 const auto& iPho =
src->ptrAt(
i);
210 const auto& theseed = *(iPho->superCluster()->seed());
216 std::vector<float> vCov = lazyToolnoZS->localCovariances(theseed);
218 vars[1].push_back(vCov[1]);
219 vars[2].push_back(lazyToolnoZS->e1x3(theseed));
220 vars[3].push_back(lazyToolnoZS->e2x2(theseed));
221 vars[4].push_back(lazyToolnoZS->e2x5Max(theseed));
222 vars[5].push_back(lazyToolnoZS->e5x5(theseed));
223 vars[6].push_back(lazyToolnoZS->eseffsirir(*(iPho->superCluster())));
224 vars[7].push_back(vars[2][
i] / vars[5][
i]);
225 vars[8].push_back(vars[3][i] / vars[5][i]);
226 vars[9].push_back(vars[4][i] / vars[5][i]);
234 iPho->superCluster()->x() - pv.
x(), iPho->superCluster()->y() - pv.
y(), iPho->superCluster()->z() - pv.
z());
237 float chargedIsoSum = 0.;
238 float neutralHadronIsoSum = 0.;
239 float photonIsoSum = 0.;
242 for (
unsigned int idxcand = 0; idxcand < pfCandsHandle->size(); ++idxcand) {
246 const auto& iCand = pfCandsHandle->ptrAt(idxcand);
265 float dR2 =
deltaR2(phoWrtVtx.Eta(), phoWrtVtx.Phi(), iCand->eta(), iCand->phi());
271 if(isInFootprint((*particleBasedIsolationMap)[iPho], iCand))
275 if(isInFootprint(
patPhotonPtr->associatedPackedPFCandidates(), iCand))
288 getImpactParameters(CachingPtrCandidate(&*iCand,
isAOD_), pv, dxy, dz);
294 chargedIsoSum += iCand->pt();
298 neutralHadronIsoSum += iCand->pt();
301 photonIsoSum += iCand->pt();
304 vars[10].push_back(chargedIsoSum);
305 vars[11].push_back(neutralHadronIsoSum);
306 vars[12].push_back(photonIsoSum);
321 vars[16].push_back(iPho->trkSumPtSolidConeDR04());
323 vars[17].push_back(0.
f);
324 vars[18].push_back(0.
f);
333 for (
int i = 0; i <
nVars_; ++
i) {
const unsigned char DR_VETO
ParticleType
particle types
const unsigned char PV_CONSTRAINT
float computeWorstPFChargedIsolation(const T &photon, const U &pfCands, const edm::Handle< reco::VertexCollection > vertices, const reco::Vertex &pv, unsigned char options)
MultiTokenT< edm::View< reco::Candidate > > pfCandsToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
double y() const
y coordinate
MultiTokenT< EcalRecHitCollection > esRecHits_
const std::string names[nVars_]
edm::EDGetToken particleBasedIsolationToken_
const unsigned char PT_MIN_THRESH
MultiTokenT< edm::View< reco::Photon > > src_
double z() const
z coordinate
MultiTokenT< EcalRecHitCollection > eeRecHits_
MultiTokenT< reco::VertexCollection > vtxToken_
edm::Handle< T > getValidHandle(const edm::Event &iEvent)
double x() const
x coordinate
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
XYZVectorD XYZVector
spatial vector with cartesian internal representation
MultiTokenT< EcalRecHitCollection > ebRecHits_
edm::Ptr< pat::Photon > patPhotonPtr
int getGoodTokenIndex() const
reco::PFCandidate::ParticleType candidatePdgId(const reco::Candidate *candidate)