CMS 3D CMS Logo

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::PhotonCollectionphotonToken_
 

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::PhotonIDProducer ( const edm::ParameterSet conf)
explicit

Definition at line 5 of file PhotonIDProducer.cc.

References conf_, cutBasedAlgo_, doCutBased_, edm::ParameterSet::getParameter(), ProducerED_cfi::InputTag, photonCutBasedIDLooseEMLabel_, photonCutBasedIDLooseLabel_, photonCutBasedIDTightLabel_, photonToken_, CutBasedPhotonIDAlgo::setup(), 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 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
void setup(const edm::ParameterSet &conf)
CutBasedPhotonIDAlgo * cutBasedAlgo_
std::string photonCutBasedIDLooseLabel_
std::string photonCutBasedIDLooseEMLabel_
std::string photonCutBasedIDTightLabel_
edm::ParameterSet conf_
edm::EDGetTokenT< reco::PhotonCollection > photonToken_

◆ ~PhotonIDProducer()

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

◆ produce()

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(), MillePedeFileConverter_cfg::e, eostools::move(), displacedMuons_cfi::photon, photonCutBasedIDLooseEMLabel_, photonCutBasedIDLooseLabel_, photonCutBasedIDTightLabel_, BPHMonitor_cfi::photons, and photonToken_.

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
54  e.put(std::move(outlooseEM), photonCutBasedIDLooseEMLabel_);
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
61  e.put(std::move(outloose), photonCutBasedIDLooseLabel_);
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
68  e.put(std::move(outtight), photonCutBasedIDTightLabel_);
69 }
void decideEE(const reco::Photon *pho, bool &LooseEM, bool &LoosePhoton, bool &TightPhoton)
void decideEB(const reco::Photon *pho, bool &LooseEM, bool &LoosePhoton, bool &TightPhoton)
CutBasedPhotonIDAlgo * cutBasedAlgo_
std::string photonCutBasedIDLooseLabel_
std::string photonCutBasedIDLooseEMLabel_
std::string photonCutBasedIDTightLabel_
edm::EDGetTokenT< reco::PhotonCollection > photonToken_
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

◆ conf_

edm::ParameterSet PhotonIDProducer::conf_
private

Definition at line 26 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer().

◆ cutBasedAlgo_

CutBasedPhotonIDAlgo* PhotonIDProducer::cutBasedAlgo_
private

Definition at line 24 of file PhotonIDProducer.h.

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

◆ doCutBased_

bool PhotonIDProducer::doCutBased_
private

Definition at line 33 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer().

◆ photonCutBasedIDLooseEMLabel_

std::string PhotonIDProducer::photonCutBasedIDLooseEMLabel_
private

Definition at line 29 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer(), and produce().

◆ photonCutBasedIDLooseLabel_

std::string PhotonIDProducer::photonCutBasedIDLooseLabel_
private

Definition at line 30 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer(), and produce().

◆ photonCutBasedIDTightLabel_

std::string PhotonIDProducer::photonCutBasedIDTightLabel_
private

Definition at line 31 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer(), and produce().

◆ photonToken_

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

Definition at line 27 of file PhotonIDProducer.h.

Referenced by PhotonIDProducer(), and produce().