CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () 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
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex >
const & 
esGetTokenRecordIndicesVector (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::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
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 edm::EDGetTokenT
< EcalRecHitCollection
ebRecHits_
 
const
EcalClusterLazyTools::ESGetTokens 
ecalClusterToolsESGetTokens_
 
const edm::EDGetTokenT
< EcalRecHitCollection
eeRecHits_
 
const edm::EDGetTokenT
< EcalRecHitCollection
esRecHits_
 
const bool isAOD_
 
const edm::EDGetToken particleBasedIsolationToken_
 
const edm::EDGetTokenT
< edm::View< reco::Candidate > > 
pfCandsToken_
 
const edm::EDGetTokenT
< edm::View< reco::Photon > > 
src_
 
const bool usesES_
 
const edm::EDGetTokenT
< reco::VertexCollection
vtxToken_
 

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::ProducerBase
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Definition at line 82 of file PhotonIDValueMapProducer.cc.

Constructor & Destructor Documentation

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

Definition at line 161 of file PhotonIDValueMapProducer.cc.

References edm::EDConsumerBase::consumesCollector().

162  : usesES_(!cfg.getParameter<edm::InputTag>("esReducedRecHitCollection").label().empty()),
163  src_(consumes(cfg.getParameter<edm::InputTag>("src"))),
164  ebRecHits_(consumes(cfg.getParameter<edm::InputTag>("ebReducedRecHitCollection"))),
165  eeRecHits_(consumes(cfg.getParameter<edm::InputTag>("eeReducedRecHitCollection"))),
166  esRecHits_(consumes(cfg.getParameter<edm::InputTag>("esReducedRecHitCollection"))),
167  vtxToken_(consumes(cfg.getParameter<edm::InputTag>("vertices"))),
168  pfCandsToken_(consumes(cfg.getParameter<edm::InputTag>("pfCandidates"))),
169  particleBasedIsolationToken_(mayConsume<edm::ValueMap<std::vector<reco::PFCandidateRef>>>(
170  cfg.getParameter<edm::InputTag>("particleBasedIsolation")) /* ...only for AOD... */),
172  isAOD_(cfg.getParameter<bool>("isAOD")) {
173  // Declare producibles
174  for (int i = 0; i < nVars_; ++i)
176 }
const std::string names[nVars_]
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
const edm::EDGetTokenT< EcalRecHitCollection > eeRecHits_
const EcalClusterLazyTools::ESGetTokens ecalClusterToolsESGetTokens_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
const edm::EDGetTokenT< EcalRecHitCollection > ebRecHits_
const edm::EDGetTokenT< reco::VertexCollection > vtxToken_
const edm::EDGetTokenT< edm::View< reco::Candidate > > pfCandsToken_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::EDGetTokenT< EcalRecHitCollection > esRecHits_
std::string const & label() const
Definition: InputTag.h:36
constexpr int nVars_
const edm::EDGetToken particleBasedIsolationToken_
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
const edm::EDGetTokenT< edm::View< reco::Photon > > src_
PhotonIDValueMapProducer::~PhotonIDValueMapProducer ( )
inlineoverride

Definition at line 85 of file PhotonIDValueMapProducer.cc.

85 {}

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 360 of file PhotonIDValueMapProducer.cc.

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

Referenced by produce().

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

Definition at line 344 of file PhotonIDValueMapProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), submitPVResolutionJobs::desc, and HLT_FULL_cff::InputTag.

344  {
345  // photonIDValueMapProducer
347  desc.add<edm::InputTag>("particleBasedIsolation", edm::InputTag("particleBasedIsolation", "gedPhotons"));
348  desc.add<edm::InputTag>("src", edm::InputTag("slimmedPhotons", "", "@skipCurrentProcess"));
349  desc.add<edm::InputTag>("esReducedRecHitCollection", edm::InputTag("reducedEgamma", "reducedESRecHits"));
350  desc.add<edm::InputTag>("ebReducedRecHitCollection", edm::InputTag("reducedEgamma", "reducedEBRecHits"));
351  desc.add<edm::InputTag>("eeReducedRecHitCollection", edm::InputTag("reducedEgamma", "reducedEERecHits"));
352  desc.add<edm::InputTag>("pfCandidates", edm::InputTag("packedPFCandidates"));
353  desc.add<edm::InputTag>("vertices", edm::InputTag("offlineSlimmedPrimaryVertices"));
354  desc.add<bool>("isAOD", false);
355  descriptions.add("photonIDValueMapProducer", desc);
356 }
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
overrideprivatevirtual

Implements edm::global::EDProducerBase.

Definition at line 178 of file PhotonIDValueMapProducer.cc.

References SplitLinear::begin, computeWorstPFChargedIsolation(), reco::deltaR2(), DR_VETO, ebRecHits_, ecalClusterToolsESGetTokens_, eeRecHits_, dataset::end, esRecHits_, Exception, validate-o2o-wbm::f, reco::PFCandidate::gamma, EcalClusterLazyToolsBase::ESGetTokens::get(), edm::Event::getByToken(), edm::Event::getHandle(), reco::PFCandidate::h, reco::PFCandidate::h0, mps_fire::i, isAOD_, edm::isNotFinite(), eostools::move(), nVars_, AlCaHLTBitMon_ParallelJobs::options, particleBasedIsolationToken_, pfCandsToken_, edm::Event::put(), PV_CONSTRAINT, fileCollector::seed, mathSSE::sqrt(), alcazmumu_cfi::src, src_, ctpps_dqm_sourceclient-live_cfg::test, usesES_, beam_dqm_sourceclient-live_cfg::vertices, vtxToken_, reco::Vertex::x(), reco::Vertex::y(), and reco::Vertex::z().

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

Member Data Documentation

const edm::EDGetTokenT<EcalRecHitCollection> PhotonIDValueMapProducer::ebRecHits_
private

Definition at line 110 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const EcalClusterLazyTools::ESGetTokens PhotonIDValueMapProducer::ecalClusterToolsESGetTokens_
private

Definition at line 117 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<EcalRecHitCollection> PhotonIDValueMapProducer::eeRecHits_
private

Definition at line 111 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<EcalRecHitCollection> PhotonIDValueMapProducer::esRecHits_
private

Definition at line 112 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const bool PhotonIDValueMapProducer::isAOD_
private

Definition at line 119 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 edm::EDGetTokenT<edm::View<reco::Candidate> > PhotonIDValueMapProducer::pfCandsToken_
private

Definition at line 114 of file PhotonIDValueMapProducer.cc.

Referenced by produce().

const edm::EDGetTokenT<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 edm::EDGetTokenT<reco::VertexCollection> PhotonIDValueMapProducer::vtxToken_
private

Definition at line 113 of file PhotonIDValueMapProducer.cc.

Referenced by produce().