CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
PhotonIDValueMapProducer Class Reference
Inheritance diagram for PhotonIDValueMapProducer:
edm::global::EDProducer<> edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 PhotonIDValueMapProducer (const edm::ParameterSet &)
 
 ~PhotonIDValueMapProducer () override
 
- Public Member Functions inherited from edm::global::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::global::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

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
 
void produce (edm::StreamID, edm::Event &, const edm::EventSetup &) const override
 

Private Attributes

const MultiTokenT< EcalRecHitCollectionebRecHits_
 
const MultiTokenT< EcalRecHitCollectioneeRecHits_
 
const MultiTokenT< EcalRecHitCollectionesRecHits_
 
const edm::EDGetToken particleBasedIsolationToken_
 
const MultiTokenT< edm::View< reco::Candidate > > pfCandsToken_
 
const MultiTokenT< edm::View< reco::Photon > > src_
 
const bool usesES_
 
const MultiTokenT< reco::VertexCollectionvtxToken_
 

Additional Inherited Members

- Public Types inherited from edm::global::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 81 of file PhotonIDValueMapProducer.cc.

Constructor & Destructor Documentation

PhotonIDValueMapProducer::PhotonIDValueMapProducer ( const edm::ParameterSet cfg)
explicit

Definition at line 159 of file PhotonIDValueMapProducer.cc.

References mps_fire::i, nVars_, and edm::ProductRegistryHelper::produces().

160  : usesES_(!cfg.getParameter<edm::InputTag>("esReducedRecHitCollection").label().empty()
161  || !cfg.getParameter<edm::InputTag>("esReducedRecHitCollectionMiniAOD").label().empty())
162  , src_( consumesCollector(), cfg, "src", "srcMiniAOD")
163  , ebRecHits_ (src_, consumesCollector(), cfg, "ebReducedRecHitCollection", "ebReducedRecHitCollectionMiniAOD")
164  , eeRecHits_ (src_, consumesCollector(), cfg, "eeReducedRecHitCollection", "eeReducedRecHitCollectionMiniAOD")
165  , esRecHits_ (src_, consumesCollector(), cfg, "esReducedRecHitCollection", "esReducedRecHitCollectionMiniAOD")
166  , vtxToken_ (src_, consumesCollector(), cfg, "vertices", "verticesMiniAOD")
167  , pfCandsToken_(src_, consumesCollector(), cfg, "pfCandidates", "pfCandidatesMiniAOD")
168  , particleBasedIsolationToken_(mayConsume<edm::ValueMap<std::vector<reco::PFCandidateRef>>>(
169  cfg.getParameter<edm::InputTag>("particleBasedIsolation")) /* ...only for AOD... */ )
170 {
171 
172  // Declare producibles
173  for (int i = 0; i < nVars_; ++i)
175 }
BranchAliasSetterT< ProductType > produces()
declare what type of product will make and with which optional label
T getParameter(std::string const &) const
const MultiTokenT< EcalRecHitCollection > esRecHits_
const MultiTokenT< EcalRecHitCollection > ebRecHits_
const MultiTokenT< edm::View< reco::Photon > > src_
const std::string names[nVars_]
const MultiTokenT< EcalRecHitCollection > eeRecHits_
char const * label
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
std::string const & label() const
Definition: InputTag.h:36
const edm::EDGetToken particleBasedIsolationToken_
const MultiTokenT< edm::View< reco::Candidate > > pfCandsToken_
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
const MultiTokenT< reco::VertexCollection > vtxToken_
PhotonIDValueMapProducer::~PhotonIDValueMapProducer ( )
inlineoverride

Member Function Documentation

float PhotonIDValueMapProducer::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
private

Definition at line 365 of file PhotonIDValueMapProducer.cc.

References DEFINE_FWK_MODULE, reco::deltaR2(), dRveto2Endcap, reco::PFCandidate::h, reco::Photon::isEB(), SiStripPI::max, ptMin, edm::View< T >::size(), reco::Photon::superCluster(), and extraflags_cff::vtx.

Referenced by produce().

367 {
368  float worstIsolation = 0.0;
369 
370  const float dRveto2 = photon.isEB() ? dRveto2Barrel : dRveto2Endcap;
371 
372  std::vector<CachingPtrCandidate> chargedCands;
373  chargedCands.reserve(pfCands.size());
374  for (auto const& aCand : pfCands){
375 
376  // require that PFCandidate is a charged hadron
377  reco::PFCandidate::ParticleType thisCandidateType = getCandidatePdgId(&aCand, isAOD);
378  if (thisCandidateType != reco::PFCandidate::h)
379  continue;
380 
381  if ((options & PT_MIN_THRESH) && aCand.pt() < ptMin)
382  continue;
383 
384  chargedCands.emplace_back(&aCand, isAOD);
385  }
386 
387  // Calculate isolation sum separately for each vertex
388  for (unsigned int ivtx = 0; ivtx < vertices.size(); ++ivtx) {
389 
390  // Shift the photon according to the vertex
391  const reco::VertexRef vtx(&vertices, ivtx);
392  math::XYZVector phoWrtVtx(photon.superCluster()->x() - vtx->x(),
393  photon.superCluster()->y() - vtx->y(), photon.superCluster()->z() - vtx->z());
394 
395  const float phoWrtVtxPhi = phoWrtVtx.phi();
396  const float phoWrtVtxEta = phoWrtVtx.eta();
397 
398  float sum = 0;
399  // Loop over the PFCandidates
400  for (auto const& aCCand : chargedCands) {
401 
402  auto iCand = aCCand.candidate;
403  float dR2 = deltaR2(phoWrtVtxEta, phoWrtVtxPhi, iCand->eta(), iCand->phi());
404  if (dR2 > coneSizeDR2 ||
405  (options & DR_VETO && dR2 < dRveto2))
406  continue;
407 
408  float dxy = -999;
409  float dz = -999;
410  if (options & PV_CONSTRAINT)
411  getImpactParameters(aCCand, pv, dxy, dz);
412  else
413  getImpactParameters(aCCand, *vtx, dxy, dz);
414 
415  if (fabs(dxy) > dxyMax || fabs(dz) > dzMax)
416  continue;
417 
418 
419  sum += iCand->pt();
420  }
421 
422  worstIsolation = std::max(sum, worstIsolation);
423  }
424 
425  return worstIsolation;
426 }
const unsigned char DR_VETO
ParticleType
particle types
Definition: PFCandidate.h:45
const unsigned char PV_CONSTRAINT
float dRveto2Endcap
size_type size() const
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
float dRveto2Barrel
const unsigned char PT_MIN_THRESH
float coneSizeDR2
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:16
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
bool isEB() const
Definition: Photon.h:121
void PhotonIDValueMapProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 343 of file PhotonIDValueMapProducer.cc.

References edm::ConfigurationDescriptions::add(), and edm::ParameterSetDescription::add().

343  {
344  // photonIDValueMapProducer
346  desc.add<edm::InputTag>("particleBasedIsolation", edm::InputTag("particleBasedIsolation","gedPhotons"));
347  desc.add<edm::InputTag>("src", edm::InputTag("gedPhotons"));
348  desc.add<edm::InputTag>("srcMiniAOD", edm::InputTag("slimmedPhotons","","@skipCurrentProcess"));
349  desc.add<edm::InputTag>("esReducedRecHitCollectionMiniAOD", edm::InputTag("reducedEgamma","reducedESRecHits"));
350  desc.add<edm::InputTag>("eeReducedRecHitCollection", edm::InputTag("reducedEcalRecHitsEE"));
351  desc.add<edm::InputTag>("pfCandidates", edm::InputTag("particleFlow"));
352  desc.add<edm::InputTag>("vertices", edm::InputTag("offlinePrimaryVertices"));
353  desc.add<edm::InputTag>("ebReducedRecHitCollectionMiniAOD", edm::InputTag("reducedEgamma","reducedEBRecHits"));
354  desc.add<edm::InputTag>("eeReducedRecHitCollectionMiniAOD", edm::InputTag("reducedEgamma","reducedEERecHits"));
355  desc.add<edm::InputTag>("esReducedRecHitCollection", edm::InputTag("reducedEcalRecHitsES"));
356  desc.add<edm::InputTag>("pfCandidatesMiniAOD", edm::InputTag("packedPFCandidates"));
357  desc.add<edm::InputTag>("verticesMiniAOD", edm::InputTag("offlineSlimmedPrimaryVertices"));
358  desc.add<edm::InputTag>("ebReducedRecHitCollection", edm::InputTag("reducedEcalRecHitsEB"));
359  descriptions.add("photonIDValueMapProducer", desc);
360 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void PhotonIDValueMapProducer::produce ( edm::StreamID  ,
edm::Event iEvent,
const edm::EventSetup iSetup 
) const
overrideprivate

Definition at line 177 of file PhotonIDValueMapProducer.cc.

References pat::Photon::associatedPackedPFCandidates(), computeWorstPFChargedIsolation(), reco::deltaR2(), DR_VETO, ebRecHits_, eeRecHits_, esRecHits_, Exception, f, reco::PFCandidate::gamma, edm::Event::getByToken(), MultiTokenT< T >::getGoodTokenIndex(), MultiTokenT< T >::getValidHandle(), reco::PFCandidate::h, reco::PFCandidate::h0, mps_fire::i, edm::isNotFinite(), nVars_, particleBasedIsolationToken_, pfCandsToken_, PV_CONSTRAINT, SurveyInfoScenario_cff::seed, mathSSE::sqrt(), TrackRefitter_38T_cff::src, src_, PFTauMVAInputDiscriminatorTranslator_cfi::test, usesES_, electrons_cff::vertices, vtxToken_, writeValueMap(), reco::Vertex::x(), reco::Vertex::y(), and reco::Vertex::z().

178 {
179  // Get the handles
180  auto src = src_.getValidHandle(iEvent);
181  auto vertices = vtxToken_.getValidHandle(iEvent);
182  auto pfCandsHandle = pfCandsToken_.getValidHandle(iEvent);
183 
184  bool isAOD = src_.getGoodTokenIndex() == 0;
186  if (isAOD) { // this exists only in AOD
187  iEvent.getByToken(particleBasedIsolationToken_, particleBasedIsolationMap);
188  } else if (!src->empty()) {
189  edm::Ptr<pat::Photon> test(src->ptrAt(0));
190  if (test.isNull() || !test.isAvailable()) {
191  throw cms::Exception("InvalidConfiguration")
192  << "DataFormat is detected as miniAOD but cannot cast to pat::Photon!";
193  }
194  }
195 
196  // Configure Lazy Tools, which will compute 5x5 quantities
197  auto lazyToolnoZS = usesES_ ? noZS::EcalClusterLazyTools(iEvent, iSetup,
198  ebRecHits_.get(iEvent), eeRecHits_.get(iEvent), esRecHits_.get(iEvent))
199  : noZS::EcalClusterLazyTools(iEvent, iSetup,
200  ebRecHits_.get(iEvent), eeRecHits_.get(iEvent));
201 
202  // Get PV
203  if (vertices->empty())
204  return; // skip the event if no PV found
205  const reco::Vertex& pv = vertices->front();
206 
207  std::vector<float> vars[nVars_];
208 
209  // reco::Photon::superCluster() is virtual so we can exploit polymorphism
210  for(auto const& iPho : src->ptrs())
211  {
212  //
213  // Compute full 5x5 quantities
214  //
215  const auto& seed = *(iPho->superCluster()->seed());
216 
217  // For full5x5_sigmaIetaIeta, for 720 we use: lazy tools for AOD,
218  // and userFloats or lazy tools for miniAOD. From some point in 72X and on, one can
219  // retrieve the full5x5 directly from the object with ->full5x5_sigmaIetaIeta()
220  // for both formats.
221  std::vector<float> vCov = lazyToolnoZS.localCovariances(seed);
222  vars[0].push_back(edm::isNotFinite(vCov[0]) ? 0. : sqrt(vCov[0]));
223  vars[1].push_back(vCov[1]);
224  vars[2].push_back(lazyToolnoZS.e1x3(seed));
225  vars[3].push_back(lazyToolnoZS.e2x2(seed));
226  vars[4].push_back(lazyToolnoZS.e2x5Max(seed));
227  vars[5].push_back(lazyToolnoZS.e5x5(seed));
228  vars[6].push_back(lazyToolnoZS.eseffsirir(*(iPho->superCluster())));
229  vars[7].push_back(vars[2].back() / vars[5].back());
230  vars[8].push_back(vars[3].back() / vars[5].back());
231  vars[9].push_back(vars[4].back() / vars[5].back());
232 
233  //
234  // Compute absolute uncorrected isolations with footprint removal
235  //
236 
237  // First, find photon direction with respect to the good PV
238  math::XYZVector phoWrtVtx(
239  iPho->superCluster()->x() - pv.x(), iPho->superCluster()->y() - pv.y(), iPho->superCluster()->z() - pv.z());
240 
241  // isolation sums
242  float chargedIsoSum = 0.;
243  float neutralHadronIsoSum = 0.;
244  float photonIsoSum = 0.;
245 
246  // Loop over all PF candidates
247  for(auto const& iCand : pfCandsHandle->ptrs())
248  {
249  // Here, the type will be a simple reco::Candidate. We cast it
250  // for full PFCandidate or PackedCandidate below as necessary
251 
252  // One would think that we should check that this iCand from the
253  // generic PF collection is not identical to the iPho photon for
254  // which we are computing the isolations. However, it turns out to
255  // be unnecessary. Below, in the function isInFootprint(), we drop
256  // this iCand if it is in the footprint, and this always removes
257  // the iCand if it matches the iPho. The explicit check at this
258  // point is not totally trivial because of non-triviality of
259  // implementation of this check for miniAOD (PackedCandidates of
260  // the PF collection do not contain the supercluser link, so can't
261  // use that).
262  //
263  // if( isAOD ) {
264  // if( ((const edm::Ptr<reco::PFCandidate>)iCand)->superClusterRef() == iPho->superCluster() )
265  // continue;
266  // }
267 
268  // Check if this candidate is within the isolation cone
269  float dR2 = deltaR2(phoWrtVtx.Eta(), phoWrtVtx.Phi(), iCand->eta(), iCand->phi());
270  if (dR2 > coneSizeDR2)
271  continue;
272 
273  // Check if this candidate is not in the footprint
274  if (isAOD) {
275  if(isInFootprint((*particleBasedIsolationMap)[iPho], iCand))
276  continue;
277  } else {
279  if(isInFootprint(patPhotonPtr->associatedPackedPFCandidates(), iCand))
280  continue;
281  }
282 
283  // Find candidate type
284  reco::PFCandidate::ParticleType thisCandidateType = getCandidatePdgId(&*iCand, isAOD);
285 
286  // Increment the appropriate isolation sum
287  if (thisCandidateType == reco::PFCandidate::h) {
288  // for charged hadrons, additionally check consistency
289  // with the PV
290  float dxy = -999;
291  float dz = -999;
292 
293  getImpactParameters(CachingPtrCandidate(&*iCand, isAOD), pv, dxy, dz);
294 
295  if (fabs(dxy) > dxyMax || fabs(dz) > dzMax)
296  continue;
297 
298  // The candidate is eligible, increment the isolaiton
299  chargedIsoSum += iCand->pt();
300  }
301 
302  if (thisCandidateType == reco::PFCandidate::h0)
303  neutralHadronIsoSum += iCand->pt();
304 
305  if (thisCandidateType == reco::PFCandidate::gamma)
306  photonIsoSum += iCand->pt();
307  }
308 
309  vars[10].push_back(chargedIsoSum);
310  vars[11].push_back(neutralHadronIsoSum);
311  vars[12].push_back(photonIsoSum);
312 
313  // Worst isolation computed with no vetos or ptMin cut, as in Run 1 Hgg code.
314  unsigned char options = 0;
315  vars[13].push_back(computeWorstPFChargedIsolation(*iPho, *pfCandsHandle, *vertices, pv, options, isAOD));
316 
317  // Worst isolation computed with cone vetos and a ptMin cut, as in Run 2 Hgg code.
318  options |= PT_MIN_THRESH | DR_VETO;
319  vars[14].push_back(computeWorstPFChargedIsolation(*iPho, *pfCandsHandle, *vertices, pv, options, isAOD));
320 
321  // Like before, but adding primary vertex constraint
322  options |= PV_CONSTRAINT;
323  vars[15].push_back(computeWorstPFChargedIsolation(*iPho, *pfCandsHandle, *vertices, pv, options, isAOD));
324 
325  // PFCluster Isolations
326  vars[16].push_back(iPho->trkSumPtSolidConeDR04());
327  if (isAOD) {
328  vars[17].push_back(0.f);
329  vars[18].push_back(0.f);
330  } else {
332  vars[17].push_back(patPhotonPtr->hcalPFClusterIso());
333  vars[18].push_back(patPhotonPtr->ecalPFClusterIso());
334  }
335  }
336 
337  // write the value maps
338  for (int i = 0; i < nVars_; ++i) {
339  writeValueMap(iEvent, src, vars[i], names[i]);
340  }
341 }
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
ParticleType
particle types
Definition: PFCandidate.h:45
const unsigned char PV_CONSTRAINT
const MultiTokenT< EcalRecHitCollection > esRecHits_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
constexpr bool isNotFinite(T x)
Definition: isFinite.h:9
double y() const
y coordinate
Definition: Vertex.h:113
const MultiTokenT< EcalRecHitCollection > ebRecHits_
const MultiTokenT< edm::View< reco::Photon > > src_
EcalClusterLazyToolsT< noZS::EcalClusterTools > EcalClusterLazyTools
const std::string names[nVars_]
void writeValueMap(edm::Event &iEvent, const edm::Handle< HandleType > &handle, const std::vector< ValueType > &values, const std::string &label)
Definition: Utils.h:13
const MultiTokenT< EcalRecHitCollection > eeRecHits_
const unsigned char PT_MIN_THRESH
float coneSizeDR2
T sqrt(T t)
Definition: SSEVec.h:18
def pv(vc)
Definition: MetAnalyzer.py:7
double z() const
z coordinate
Definition: Vertex.h:115
double f[11][100]
edm::Handle< T > getValidHandle(const edm::Event &iEvent) const
Definition: MultiToken.h:95
double x() const
x coordinate
Definition: Vertex.h:111
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:16
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
edm::Ptr< pat::Photon > patPhotonPtr
int getGoodTokenIndex() const
Definition: MultiToken.h:147
const edm::EDGetToken particleBasedIsolationToken_
vars
Definition: DeepTauId.cc:77
const MultiTokenT< edm::View< reco::Candidate > > pfCandsToken_
const MultiTokenT< reco::VertexCollection > vtxToken_

Member Data Documentation

const MultiTokenT<EcalRecHitCollection> PhotonIDValueMapProducer::ebRecHits_
private

Definition at line 110 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const MultiTokenT<EcalRecHitCollection> PhotonIDValueMapProducer::eeRecHits_
private

Definition at line 111 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const MultiTokenT<EcalRecHitCollection> PhotonIDValueMapProducer::esRecHits_
private

Definition at line 112 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const edm::EDGetToken PhotonIDValueMapProducer::particleBasedIsolationToken_
private

Definition at line 115 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const MultiTokenT<edm::View<reco::Candidate> > PhotonIDValueMapProducer::pfCandsToken_
private

Definition at line 114 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const MultiTokenT<edm::View<reco::Photon> > PhotonIDValueMapProducer::src_
private

Definition at line 109 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const bool PhotonIDValueMapProducer::usesES_
private

Definition at line 106 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const MultiTokenT<reco::VertexCollection> PhotonIDValueMapProducer::vtxToken_
private

Definition at line 113 of file PhotonIDValueMapProducer.cc.

Referenced by produce().