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 | Private Attributes
PhotonIDProducer Class Reference

#include <PhotonIDProducer.h>

Inheritance diagram for PhotonIDProducer:
edm::stream::EDProducer<>

Public Member Functions

 PhotonIDProducer (const edm::ParameterSet &conf)
 
void produce (edm::Event &e, const edm::EventSetup &c) override
 
 ~PhotonIDProducer () override
 
- Public Member Functions inherited from edm::stream::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
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Attributes

edm::ParameterSet conf_
 
CutBasedPhotonIDAlgocutBasedAlgo_
 
bool doCutBased_
 
std::string photonCutBasedIDLooseEMLabel_
 
std::string photonCutBasedIDLooseLabel_
 
std::string photonCutBasedIDTightLabel_
 
edm::EDGetTokenT
< reco::PhotonCollection
photonToken_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Definition at line 16 of file PhotonIDProducer.h.

Constructor & Destructor Documentation

PhotonIDProducer::PhotonIDProducer ( const edm::ParameterSet conf)
explicit

Definition at line 5 of file PhotonIDProducer.cc.

References conf_, cutBasedAlgo_, doCutBased_, edm::ParameterSet::getParameter(), HLT_FULL_cff::InputTag, photonCutBasedIDLooseEMLabel_, photonCutBasedIDLooseLabel_, photonCutBasedIDTightLabel_, photonToken_, and AlCaHLTBitMon_QueryRunRegistry::string.

5  : conf_(conf) {
6  photonToken_ = consumes<reco::PhotonCollection>(
7  edm::InputTag(conf_.getParameter<std::string>("photonProducer"), conf_.getParameter<std::string>("photonLabel")));
8 
9  photonCutBasedIDLooseLabel_ = conf.getParameter<std::string>("photonCutBasedIDLooseLabel");
10  photonCutBasedIDTightLabel_ = conf.getParameter<std::string>("photonCutBasedIDTightLabel");
11  photonCutBasedIDLooseEMLabel_ = conf.getParameter<std::string>("photonCutBasedIDLooseEMLabel");
12 
13  doCutBased_ = conf_.getParameter<bool>("doCutBased");
15  cutBasedAlgo_->setup(conf);
16  produces<edm::ValueMap<bool>>(photonCutBasedIDLooseLabel_);
17  produces<edm::ValueMap<bool>>(photonCutBasedIDTightLabel_);
18  produces<edm::ValueMap<bool>>(photonCutBasedIDLooseEMLabel_);
19 }
CutBasedPhotonIDAlgo * cutBasedAlgo_
std::string photonCutBasedIDLooseLabel_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::string photonCutBasedIDLooseEMLabel_
std::string photonCutBasedIDTightLabel_
edm::ParameterSet conf_
edm::EDGetTokenT< reco::PhotonCollection > photonToken_
PhotonIDProducer::~PhotonIDProducer ( )
override

Definition at line 21 of file PhotonIDProducer.cc.

References cutBasedAlgo_.

21  {
22  //if (doCutBased_)
23  delete cutBasedAlgo_;
24 }
CutBasedPhotonIDAlgo * cutBasedAlgo_

Member Function Documentation

void PhotonIDProducer::produce ( edm::Event e,
const edm::EventSetup c 
)
override

Definition at line 26 of file PhotonIDProducer.cc.

References cutBasedAlgo_, CutBasedPhotonIDAlgo::decideEB(), CutBasedPhotonIDAlgo::decideEE(), edm::Event::getByToken(), eostools::move(), photonCutBasedIDLooseEMLabel_, photonCutBasedIDLooseLabel_, photonCutBasedIDTightLabel_, interactiveExample::photons, photonToken_, and edm::Event::put().

26  {
27  // Read in photons
29  e.getByToken(photonToken_, photons);
30 
31  // Loop over photons and calculate photon ID using specified technique(s)
32  reco::PhotonCollection::const_iterator photon;
33  std::vector<bool> Loose;
34  std::vector<bool> Tight;
35  std::vector<bool> LooseEM;
36  for (photon = (*photons).begin(); photon != (*photons).end(); ++photon) {
37  bool LooseQual;
38  bool TightQual;
39  bool LooseEMQual;
40  if (photon->isEB())
41  cutBasedAlgo_->decideEB(&(*photon), LooseEMQual, LooseQual, TightQual);
42  else
43  cutBasedAlgo_->decideEE(&(*photon), LooseEMQual, LooseQual, TightQual);
44  LooseEM.push_back(LooseEMQual);
45  Loose.push_back(LooseQual);
46  Tight.push_back(TightQual);
47  }
48 
49  auto outlooseEM = std::make_unique<edm::ValueMap<bool>>();
50  edm::ValueMap<bool>::Filler fillerlooseEM(*outlooseEM);
51  fillerlooseEM.insert(photons, LooseEM.begin(), LooseEM.end());
52  fillerlooseEM.fill();
53  // and put it into the event
55 
56  auto outloose = std::make_unique<edm::ValueMap<bool>>();
57  edm::ValueMap<bool>::Filler fillerloose(*outloose);
58  fillerloose.insert(photons, Loose.begin(), Loose.end());
59  fillerloose.fill();
60  // and put it into the event
62 
63  auto outtight = std::make_unique<edm::ValueMap<bool>>();
64  edm::ValueMap<bool>::Filler fillertight(*outtight);
65  fillertight.insert(photons, Tight.begin(), Tight.end());
66  fillertight.fill();
67  // and put it into the event
69 }
void decideEE(const reco::Photon *pho, bool &LooseEM, bool &LoosePhoton, bool &TightPhoton)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
void decideEB(const reco::Photon *pho, bool &LooseEM, bool &LoosePhoton, bool &TightPhoton)
CutBasedPhotonIDAlgo * cutBasedAlgo_
def move
Definition: eostools.py:511
std::string photonCutBasedIDLooseLabel_
std::string photonCutBasedIDLooseEMLabel_
std::string photonCutBasedIDTightLabel_
edm::EDGetTokenT< reco::PhotonCollection > photonToken_

Member Data Documentation

edm::ParameterSet PhotonIDProducer::conf_
private

Definition at line 26 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer().

CutBasedPhotonIDAlgo* PhotonIDProducer::cutBasedAlgo_
private

Definition at line 24 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer(), produce(), and ~PhotonIDProducer().

bool PhotonIDProducer::doCutBased_
private

Definition at line 33 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer().

std::string PhotonIDProducer::photonCutBasedIDLooseEMLabel_
private

Definition at line 29 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer(), and produce().

std::string PhotonIDProducer::photonCutBasedIDLooseLabel_
private

Definition at line 30 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer(), and produce().

std::string PhotonIDProducer::photonCutBasedIDTightLabel_
private

Definition at line 31 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer(), and produce().

edm::EDGetTokenT<reco::PhotonCollection> PhotonIDProducer::photonToken_
private

Definition at line 27 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer(), and produce().