184 }
else if (!
src->empty()) {
186 if (
test.isNull() || !
test.isAvailable()) {
188 <<
"DataFormat is detected as miniAOD but cannot cast to pat::Photon!";
204 for (
auto const& iPho :
src->ptrs()) {
208 const auto&
seed = *(iPho->superCluster()->seed());
214 std::vector<float> vCov = lazyToolnoZS.localCovariances(
seed);
216 vars[1].push_back(vCov[1]);
217 vars[2].push_back(lazyToolnoZS.e1x3(
seed));
218 vars[3].push_back(lazyToolnoZS.e2x2(
seed));
219 vars[4].push_back(lazyToolnoZS.e2x5Max(
seed));
220 vars[5].push_back(lazyToolnoZS.e5x5(
seed));
221 vars[6].push_back(lazyToolnoZS.eseffsirir(*(iPho->superCluster())));
222 vars[7].push_back(vars[2].back() / vars[5].back());
223 vars[8].push_back(vars[3].back() / vars[5].back());
224 vars[9].push_back(vars[4].back() / vars[5].back());
232 iPho->superCluster()->x() - pv.
x(), iPho->superCluster()->y() - pv.
y(), iPho->superCluster()->z() - pv.
z());
235 float chargedIsoSum = 0.;
236 float neutralHadronIsoSum = 0.;
237 float photonIsoSum = 0.;
240 for (
auto const& iCand : pfCandsHandle->ptrs()) {
261 float dR2 =
deltaR2(phoWrtVtx.Eta(), phoWrtVtx.Phi(), iCand->eta(), iCand->phi());
267 if (isInFootprint((*particleBasedIsolationMap)[iPho], iCand))
271 if (isInFootprint(
patPhotonPtr->associatedPackedPFCandidates(), iCand))
285 getImpactParameters(CachingPtrCandidate(&*iCand,
isAOD_), pv, dxy, dz);
291 chargedIsoSum += iCand->pt();
295 neutralHadronIsoSum += iCand->pt();
298 photonIsoSum += iCand->pt();
301 vars[10].push_back(chargedIsoSum);
302 vars[11].push_back(neutralHadronIsoSum);
303 vars[12].push_back(photonIsoSum);
318 vars[16].push_back(iPho->trkSumPtSolidConeDR04());
320 vars[17].push_back(0.
f);
321 vars[18].push_back(0.
f);
331 auto valMap = std::make_unique<edm::ValueMap<float>>();
const unsigned char DR_VETO
float computeWorstPFChargedIsolation(const reco::Photon &photon, const edm::View< reco::Candidate > &pfCands, const reco::VertexCollection &vertices, const reco::Vertex &pv, unsigned char options, bool isAOD) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
ParticleType
particle types
const unsigned char PV_CONSTRAINT
bool getByToken(EDGetToken token, Handle< PROD > &result) const
constexpr bool isNotFinite(T x)
double y() const
y coordinate
EcalClusterLazyToolsT< noZS::EcalClusterTools > EcalClusterLazyTools
const std::string names[nVars_]
const unsigned char PT_MIN_THRESH
const edm::EDGetTokenT< EcalRecHitCollection > eeRecHits_
Handle< PROD > getHandle(EDGetTokenT< PROD > token) const
const edm::EDGetTokenT< EcalRecHitCollection > ebRecHits_
double z() const
z coordinate
double x() const
x coordinate
const edm::EDGetTokenT< reco::VertexCollection > vtxToken_
const edm::EDGetTokenT< edm::View< reco::Candidate > > pfCandsToken_
XYZVectorD XYZVector
spatial vector with cartesian internal representation
const edm::EDGetTokenT< EcalRecHitCollection > esRecHits_
edm::Ptr< pat::Photon > patPhotonPtr
const edm::EDGetToken particleBasedIsolationToken_
const edm::EDGetTokenT< edm::View< reco::Photon > > src_