CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
IsoValueMapProducer< T > Class Template Reference

#include <PhysicsTools/NanoAOD/plugins/IsoValueMapProducer.cc>

Inheritance diagram for IsoValueMapProducer< T >:
edm::global::EDProducer<> edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 IsoValueMapProducer (const edm::ParameterSet &iConfig)
 
 ~IsoValueMapProducer () override
 
- Public Member Functions inherited from edm::global::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () 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

void doMiniIso (edm::Event &) const
 
template<>
void doMiniIso (edm::Event &iEvent) const
 
void doPFIsoEle (edm::Event &) const
 
template<>
void doPFIsoEle (edm::Event &iEvent) const
 
void doPFIsoPho (edm::Event &) const
 
template<>
void doPFIsoPho (edm::Event &iEvent) const
 
float getEtaForEA (const T *) const
 
template<>
float getEtaForEA (const pat::Electron *el) const
 
template<>
float getEtaForEA (const pat::Photon *ph) const
 
void produce (edm::StreamID, edm::Event &, const edm::EventSetup &) const override
 

Private Attributes

std::unique_ptr< EffectiveAreasea_miniiso_
 
std::unique_ptr< EffectiveAreasea_pfiso_
 
std::unique_ptr< EffectiveAreasea_pfiso_chg_
 
std::unique_ptr< EffectiveAreasea_pfiso_neu_
 
std::unique_ptr< EffectiveAreasea_pfiso_pho_
 
bool relative_
 
edm::EDGetTokenT< double > rho_miniiso_
 
edm::EDGetTokenT< double > rho_pfiso_
 
edm::EDGetTokenT< edm::View< T > > src_
 

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)
 
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

template<typename T>
class IsoValueMapProducer< T >

Description: [one line class summary]

Implementation: [Notes on implementation]

Definition at line 44 of file IsoValueMapProducer.cc.

Constructor & Destructor Documentation

template<typename T >
IsoValueMapProducer< T >::IsoValueMapProducer ( const edm::ParameterSet iConfig)
inlineexplicit

Definition at line 46 of file IsoValueMapProducer.cc.

References IsoValueMapProducer< T >::ea_miniiso_, IsoValueMapProducer< T >::ea_pfiso_, IsoValueMapProducer< T >::ea_pfiso_chg_, IsoValueMapProducer< T >::ea_pfiso_neu_, IsoValueMapProducer< T >::ea_pfiso_pho_, edm::ParameterSet::getParameter(), IsoValueMapProducer< T >::rho_miniiso_, and IsoValueMapProducer< T >::rho_pfiso_.

48  relative_(iConfig.getParameter<bool>("relative")) {
49  if ((typeid(T) == typeid(pat::Muon)) || (typeid(T) == typeid(pat::Electron)) ||
50  typeid(T) == typeid(pat::IsolatedTrack)) {
51  produces<edm::ValueMap<float>>("miniIsoChg");
52  produces<edm::ValueMap<float>>("miniIsoAll");
53  ea_miniiso_.reset(new EffectiveAreas((iConfig.getParameter<edm::FileInPath>("EAFile_MiniIso")).fullPath()));
54  rho_miniiso_ = consumes<double>(iConfig.getParameter<edm::InputTag>("rho_MiniIso"));
55  }
56  if ((typeid(T) == typeid(pat::Electron))) {
57  produces<edm::ValueMap<float>>("PFIsoChg");
58  produces<edm::ValueMap<float>>("PFIsoAll");
59  produces<edm::ValueMap<float>>("PFIsoAll04");
60  ea_pfiso_.reset(new EffectiveAreas((iConfig.getParameter<edm::FileInPath>("EAFile_PFIso")).fullPath()));
61  rho_pfiso_ = consumes<double>(iConfig.getParameter<edm::InputTag>("rho_PFIso"));
62  } else if ((typeid(T) == typeid(pat::Photon))) {
63  produces<edm::ValueMap<float>>("PFIsoChg");
64  produces<edm::ValueMap<float>>("PFIsoAll");
65  ea_pfiso_chg_.reset(new EffectiveAreas((iConfig.getParameter<edm::FileInPath>("EAFile_PFIso_Chg")).fullPath()));
66  ea_pfiso_neu_.reset(new EffectiveAreas((iConfig.getParameter<edm::FileInPath>("EAFile_PFIso_Neu")).fullPath()));
67  ea_pfiso_pho_.reset(new EffectiveAreas((iConfig.getParameter<edm::FileInPath>("EAFile_PFIso_Pho")).fullPath()));
68  rho_pfiso_ = consumes<double>(iConfig.getParameter<edm::InputTag>("rho_PFIso"));
69  }
70  }
T getParameter(std::string const &) const
Analysis-level Photon class.
Definition: Photon.h:46
edm::EDGetTokenT< double > rho_pfiso_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
std::unique_ptr< EffectiveAreas > ea_pfiso_chg_
std::unique_ptr< EffectiveAreas > ea_pfiso_pho_
edm::EDGetTokenT< edm::View< T > > src_
std::unique_ptr< EffectiveAreas > ea_pfiso_neu_
Analysis-level electron class.
Definition: Electron.h:51
edm::EDGetTokenT< double > rho_miniiso_
std::unique_ptr< EffectiveAreas > ea_pfiso_
long double T
std::unique_ptr< EffectiveAreas > ea_miniiso_
Analysis-level muon class.
Definition: Muon.h:51
template<typename T >
IsoValueMapProducer< T >::~IsoValueMapProducer ( )
inlineoverride

Member Function Documentation

template<typename T >
void IsoValueMapProducer< T >::doMiniIso ( edm::Event iEvent) const
private

Definition at line 131 of file IsoValueMapProducer.cc.

References chg, IsoValueMapProducer< T >::ea_miniiso_, edm::helper::Filler< Map >::fill(), edm::Event::getByToken(), IsoValueMapProducer< T >::getEtaForEA(), edm::helper::Filler< Map >::insert(), SiStripPI::max, min(), electrons_cff::miniIsoAll, electrons_cff::miniIsoChg, eostools::move(), getGTfromDQMFile::obj, funct::pow(), edm::Event::put(), dttmaxenums::R, IsoValueMapProducer< T >::relative_, rho, IsoValueMapProducer< T >::rho_miniiso_, Scenarios_cff::scale, TrackRefitter_38T_cff::src, and IsoValueMapProducer< T >::src_.

Referenced by IsoValueMapProducer< T >::produce().

131  {
133  iEvent.getByToken(src_, src);
135  iEvent.getByToken(rho_miniiso_, rho);
136 
137  unsigned int nInput = src->size();
138 
139  std::vector<float> miniIsoChg, miniIsoAll;
140  miniIsoChg.reserve(nInput);
141  miniIsoAll.reserve(nInput);
142 
143  for (const auto& obj : *src) {
144  auto iso = obj.miniPFIsolation();
145  auto chg = iso.chargedHadronIso();
146  auto neu = iso.neutralHadronIso();
147  auto pho = iso.photonIso();
148  auto ea = ea_miniiso_->getEffectiveArea(fabs(getEtaForEA(&obj)));
149  float R = 10.0 / std::min(std::max(obj.pt(), 50.0), 200.0);
150  ea *= std::pow(R / 0.3, 2);
151  float scale = relative_ ? 1.0 / obj.pt() : 1;
152  miniIsoChg.push_back(scale * chg);
153  miniIsoAll.push_back(scale * (chg + std::max(0.0, neu + pho - (*rho) * ea)));
154  }
155 
156  std::unique_ptr<edm::ValueMap<float>> miniIsoChgV(new edm::ValueMap<float>());
157  edm::ValueMap<float>::Filler fillerChg(*miniIsoChgV);
158  fillerChg.insert(src, miniIsoChg.begin(), miniIsoChg.end());
159  fillerChg.fill();
160  std::unique_ptr<edm::ValueMap<float>> miniIsoAllV(new edm::ValueMap<float>());
161  edm::ValueMap<float>::Filler fillerAll(*miniIsoAllV);
162  fillerAll.insert(src, miniIsoAll.begin(), miniIsoAll.end());
163  fillerAll.fill();
164 
165  iEvent.put(std::move(miniIsoChgV), "miniIsoChg");
166  iEvent.put(std::move(miniIsoAllV), "miniIsoAll");
167 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
const float chg[109]
Definition: CoreSimTrack.cc:5
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
T min(T a, T b)
Definition: MathUtil.h:58
edm::EDGetTokenT< edm::View< T > > src_
float getEtaForEA(const T *) const
edm::EDGetTokenT< double > rho_miniiso_
std::unique_ptr< EffectiveAreas > ea_miniiso_
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:30
def move(src, dest)
Definition: eostools.py:511
template<>
void IsoValueMapProducer< pat::Photon >::doMiniIso ( edm::Event iEvent) const
private

Definition at line 170 of file IsoValueMapProducer.cc.

170 {}
template<typename T >
void IsoValueMapProducer< T >::doPFIsoEle ( edm::Event iEvent) const
private

Definition at line 173 of file IsoValueMapProducer.cc.

Referenced by IsoValueMapProducer< T >::produce().

173 {}
template<>
void IsoValueMapProducer< pat::Electron >::doPFIsoEle ( edm::Event iEvent) const
private

Definition at line 176 of file IsoValueMapProducer.cc.

References chg, IsoValueMapProducer< T >::ea_pfiso_, edm::helper::Filler< Map >::fill(), edm::Event::getByToken(), IsoValueMapProducer< T >::getEtaForEA(), edm::helper::Filler< Map >::insert(), SiStripPI::max, eostools::move(), getGTfromDQMFile::obj, electrons_cff::PFIsoAll, electrons_cff::PFIsoAll04, electrons_cff::PFIsoChg, edm::Event::put(), IsoValueMapProducer< T >::relative_, rho, IsoValueMapProducer< T >::rho_pfiso_, Scenarios_cff::scale, TrackRefitter_38T_cff::src, and IsoValueMapProducer< T >::src_.

176  {
178  iEvent.getByToken(src_, src);
180  iEvent.getByToken(rho_pfiso_, rho);
181 
182  unsigned int nInput = src->size();
183 
184  std::vector<float> PFIsoChg, PFIsoAll, PFIsoAll04;
185  PFIsoChg.reserve(nInput);
186  PFIsoAll.reserve(nInput);
187  PFIsoAll04.reserve(nInput);
188 
189  for (const auto& obj : *src) {
190  auto iso = obj.pfIsolationVariables();
191  auto chg = iso.sumChargedHadronPt;
192  auto neu = iso.sumNeutralHadronEt;
193  auto pho = iso.sumPhotonEt;
194  auto ea = ea_pfiso_->getEffectiveArea(fabs(getEtaForEA(&obj)));
195  float scale = relative_ ? 1.0 / obj.pt() : 1;
196  PFIsoChg.push_back(scale * chg);
197  PFIsoAll.push_back(scale * (chg + std::max(0.0, neu + pho - (*rho) * ea)));
198  PFIsoAll04.push_back(scale * (obj.chargedHadronIso() +
199  std::max(0.0, obj.neutralHadronIso() + obj.photonIso() - (*rho) * ea * 16. / 9.)));
200  }
201 
202  std::unique_ptr<edm::ValueMap<float>> PFIsoChgV(new edm::ValueMap<float>());
203  edm::ValueMap<float>::Filler fillerChg(*PFIsoChgV);
204  fillerChg.insert(src, PFIsoChg.begin(), PFIsoChg.end());
205  fillerChg.fill();
206  std::unique_ptr<edm::ValueMap<float>> PFIsoAllV(new edm::ValueMap<float>());
207  edm::ValueMap<float>::Filler fillerAll(*PFIsoAllV);
208  fillerAll.insert(src, PFIsoAll.begin(), PFIsoAll.end());
209  fillerAll.fill();
210  std::unique_ptr<edm::ValueMap<float>> PFIsoAll04V(new edm::ValueMap<float>());
211  edm::ValueMap<float>::Filler fillerAll04(*PFIsoAll04V);
212  fillerAll04.insert(src, PFIsoAll04.begin(), PFIsoAll04.end());
213  fillerAll04.fill();
214 
215  iEvent.put(std::move(PFIsoChgV), "PFIsoChg");
216  iEvent.put(std::move(PFIsoAllV), "PFIsoAll");
217  iEvent.put(std::move(PFIsoAll04V), "PFIsoAll04");
218 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
const float chg[109]
Definition: CoreSimTrack.cc:5
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
edm::EDGetTokenT< double > rho_pfiso_
edm::EDGetTokenT< edm::View< T > > src_
float getEtaForEA(const T *) const
std::unique_ptr< EffectiveAreas > ea_pfiso_
def move(src, dest)
Definition: eostools.py:511
template<typename T >
void IsoValueMapProducer< T >::doPFIsoPho ( edm::Event iEvent) const
private

Definition at line 221 of file IsoValueMapProducer.cc.

Referenced by IsoValueMapProducer< T >::produce().

221 {}
template<>
void IsoValueMapProducer< pat::Photon >::doPFIsoPho ( edm::Event iEvent) const
private

Definition at line 224 of file IsoValueMapProducer.cc.

References chg, IsoValueMapProducer< T >::ea_pfiso_chg_, IsoValueMapProducer< T >::ea_pfiso_neu_, IsoValueMapProducer< T >::ea_pfiso_pho_, edm::helper::Filler< Map >::fill(), edm::Event::getByToken(), IsoValueMapProducer< T >::getEtaForEA(), edm::helper::Filler< Map >::insert(), SiStripPI::max, eostools::move(), getGTfromDQMFile::obj, electrons_cff::PFIsoAll, electrons_cff::PFIsoChg, edm::Event::put(), IsoValueMapProducer< T >::relative_, rho, IsoValueMapProducer< T >::rho_pfiso_, Scenarios_cff::scale, TrackRefitter_38T_cff::src, and IsoValueMapProducer< T >::src_.

224  {
226  iEvent.getByToken(src_, src);
228  iEvent.getByToken(rho_pfiso_, rho);
229 
230  unsigned int nInput = src->size();
231 
232  std::vector<float> PFIsoChg, PFIsoAll;
233  PFIsoChg.reserve(nInput);
234  PFIsoAll.reserve(nInput);
235 
236  for (const auto& obj : *src) {
237  auto chg = obj.chargedHadronIso();
238  auto neu = obj.neutralHadronIso();
239  auto pho = obj.photonIso();
240  auto ea_chg = ea_pfiso_chg_->getEffectiveArea(fabs(getEtaForEA(&obj)));
241  auto ea_neu = ea_pfiso_neu_->getEffectiveArea(fabs(getEtaForEA(&obj)));
242  auto ea_pho = ea_pfiso_pho_->getEffectiveArea(fabs(getEtaForEA(&obj)));
243  float scale = relative_ ? 1.0 / obj.pt() : 1;
244  PFIsoChg.push_back(scale * std::max(0.0, chg - (*rho) * ea_chg));
245  PFIsoAll.push_back(PFIsoChg.back() +
246  scale * (std::max(0.0, neu - (*rho) * ea_neu) + std::max(0.0, pho - (*rho) * ea_pho)));
247  }
248 
249  std::unique_ptr<edm::ValueMap<float>> PFIsoChgV(new edm::ValueMap<float>());
250  edm::ValueMap<float>::Filler fillerChg(*PFIsoChgV);
251  fillerChg.insert(src, PFIsoChg.begin(), PFIsoChg.end());
252  fillerChg.fill();
253  std::unique_ptr<edm::ValueMap<float>> PFIsoAllV(new edm::ValueMap<float>());
254  edm::ValueMap<float>::Filler fillerAll(*PFIsoAllV);
255  fillerAll.insert(src, PFIsoAll.begin(), PFIsoAll.end());
256  fillerAll.fill();
257 
258  iEvent.put(std::move(PFIsoChgV), "PFIsoChg");
259  iEvent.put(std::move(PFIsoAllV), "PFIsoAll");
260 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
const float chg[109]
Definition: CoreSimTrack.cc:5
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
edm::EDGetTokenT< double > rho_pfiso_
std::unique_ptr< EffectiveAreas > ea_pfiso_chg_
std::unique_ptr< EffectiveAreas > ea_pfiso_pho_
edm::EDGetTokenT< edm::View< T > > src_
std::unique_ptr< EffectiveAreas > ea_pfiso_neu_
float getEtaForEA(const T *) const
def move(src, dest)
Definition: eostools.py:511
template<typename T >
void IsoValueMapProducer< T >::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 264 of file IsoValueMapProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), timingPdfMaker::modname, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by IsoValueMapProducer< T >::~IsoValueMapProducer().

264  {
266  desc.add<edm::InputTag>("src")->setComment("input physics object collection");
267  desc.add<bool>("relative")->setComment("compute relative isolation instead of absolute one");
268  if ((typeid(T) == typeid(pat::Muon)) || (typeid(T) == typeid(pat::Electron)) ||
269  typeid(T) == typeid(pat::IsolatedTrack)) {
270  desc.add<edm::FileInPath>("EAFile_MiniIso")
271  ->setComment("txt file containing effective areas to be used for mini-isolation pileup subtraction");
272  desc.add<edm::InputTag>("rho_MiniIso")
273  ->setComment("rho to be used for effective-area based mini-isolation pileup subtraction");
274  }
275  if ((typeid(T) == typeid(pat::Electron))) {
276  desc.add<edm::FileInPath>("EAFile_PFIso")
277  ->setComment(
278  "txt file containing effective areas to be used for PF-isolation pileup subtraction for electrons");
279  desc.add<edm::InputTag>("rho_PFIso")
280  ->setComment("rho to be used for effective-area based PF-isolation pileup subtraction for electrons");
281  }
282  if ((typeid(T) == typeid(pat::Photon))) {
283  desc.add<edm::InputTag>("mapIsoChg")->setComment("input charged PF isolation calculated in VID for photons");
284  desc.add<edm::InputTag>("mapIsoNeu")->setComment("input neutral PF isolation calculated in VID for photons");
285  desc.add<edm::InputTag>("mapIsoPho")->setComment("input photon PF isolation calculated in VID for photons");
286  desc.add<edm::FileInPath>("EAFile_PFIso_Chg")
287  ->setComment(
288  "txt file containing effective areas to be used for charged PF-isolation pileup subtraction for photons");
289  desc.add<edm::FileInPath>("EAFile_PFIso_Neu")
290  ->setComment(
291  "txt file containing effective areas to be used for neutral PF-isolation pileup subtraction for photons");
292  desc.add<edm::FileInPath>("EAFile_PFIso_Pho")
293  ->setComment(
294  "txt file containing effective areas to be used for photon PF-isolation pileup subtraction for photons");
295  desc.add<edm::InputTag>("rho_PFIso")
296  ->setComment("rho to be used for effective-area based PF-isolation pileup subtraction for photons");
297  }
299  if (typeid(T) == typeid(pat::Muon))
300  modname += "Muon";
301  else if (typeid(T) == typeid(pat::Electron))
302  modname += "Ele";
303  else if (typeid(T) == typeid(pat::Photon))
304  modname += "Pho";
305  else if (typeid(T) == typeid(pat::IsolatedTrack))
306  modname += "IsoTrack";
307  modname += "IsoValueMapProducer";
308  descriptions.add(modname, desc);
309 }
Analysis-level Photon class.
Definition: Photon.h:46
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Analysis-level electron class.
Definition: Electron.h:51
void add(std::string const &label, ParameterSetDescription const &psetDescription)
long double T
Analysis-level muon class.
Definition: Muon.h:51
template<typename T >
float IsoValueMapProducer< T >::getEtaForEA ( const T obj) const
private
template<>
float IsoValueMapProducer< pat::Electron >::getEtaForEA ( const pat::Electron el) const
private

Definition at line 108 of file IsoValueMapProducer.cc.

References pat::Electron::superCluster().

108  {
109  return el->superCluster()->eta();
110 }
reco::SuperClusterRef superCluster() const override
override the reco::GsfElectron::superCluster method, to access the internal storage of the superclust...
template<>
float IsoValueMapProducer< pat::Photon >::getEtaForEA ( const pat::Photon ph) const
private

Definition at line 112 of file IsoValueMapProducer.cc.

References pat::Photon::superCluster().

112  {
113  return ph->superCluster()->eta();
114 }
reco::SuperClusterRef superCluster() const override
override the superCluster method from CaloJet, to access the internal storage of the supercluster ...
template<typename T >
void IsoValueMapProducer< T >::produce ( edm::StreamID  streamID,
edm::Event iEvent,
const edm::EventSetup iSetup 
) const
overrideprivate

Definition at line 117 of file IsoValueMapProducer.cc.

References IsoValueMapProducer< T >::doMiniIso(), IsoValueMapProducer< T >::doPFIsoEle(), and IsoValueMapProducer< T >::doPFIsoPho().

Referenced by IsoValueMapProducer< T >::~IsoValueMapProducer().

117  {
118  if ((typeid(T) == typeid(pat::Muon)) || (typeid(T) == typeid(pat::Electron)) ||
119  typeid(T) == typeid(pat::IsolatedTrack)) {
120  doMiniIso(iEvent);
121  };
122  if ((typeid(T) == typeid(pat::Electron))) {
123  doPFIsoEle(iEvent);
124  }
125  if ((typeid(T) == typeid(pat::Photon))) {
126  doPFIsoPho(iEvent);
127  }
128 }
Analysis-level Photon class.
Definition: Photon.h:46
void doPFIsoEle(edm::Event &) const
void doMiniIso(edm::Event &) const
Analysis-level electron class.
Definition: Electron.h:51
void doPFIsoPho(edm::Event &) const
long double T
Analysis-level muon class.
Definition: Muon.h:51

Member Data Documentation

template<typename T >
std::unique_ptr<EffectiveAreas> IsoValueMapProducer< T >::ea_miniiso_
private
template<typename T >
std::unique_ptr<EffectiveAreas> IsoValueMapProducer< T >::ea_pfiso_
private
template<typename T >
std::unique_ptr<EffectiveAreas> IsoValueMapProducer< T >::ea_pfiso_chg_
private
template<typename T >
std::unique_ptr<EffectiveAreas> IsoValueMapProducer< T >::ea_pfiso_neu_
private
template<typename T >
std::unique_ptr<EffectiveAreas> IsoValueMapProducer< T >::ea_pfiso_pho_
private
template<typename T >
bool IsoValueMapProducer< T >::relative_
private
template<typename T >
edm::EDGetTokenT<double> IsoValueMapProducer< T >::rho_miniiso_
private
template<typename T >
edm::EDGetTokenT<double> IsoValueMapProducer< T >::rho_pfiso_
private
template<typename T >
edm::EDGetTokenT<edm::View<T> > IsoValueMapProducer< T >::src_
private