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 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)
 
virtual ~ProducerBase () noexcept(false)
 
- 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
 
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)
 
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_
 
edm::EDGetTokenT< edm::ValueMap< float > > mapIsoChg_
 
edm::EDGetTokenT< edm::ValueMap< float > > mapIsoNeu_
 
edm::EDGetTokenT< edm::ValueMap< float > > mapIsoPho_
 
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::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 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 45 of file IsoValueMapProducer.cc.

Constructor & Destructor Documentation

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

Definition at line 47 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 >::mapIsoChg_, IsoValueMapProducer< T >::mapIsoNeu_, IsoValueMapProducer< T >::mapIsoPho_, IsoValueMapProducer< T >::rho_miniiso_, and IsoValueMapProducer< T >::rho_pfiso_.

47  :
49  relative_(iConfig.getParameter<bool>("relative"))
50  {
51  if ((typeid(T) == typeid(pat::Muon)) || (typeid(T) == typeid(pat::Electron)) || typeid(T) == typeid(pat::IsolatedTrack)) {
52  produces<edm::ValueMap<float>>("miniIsoChg");
53  produces<edm::ValueMap<float>>("miniIsoAll");
54  ea_miniiso_.reset(new EffectiveAreas((iConfig.getParameter<edm::FileInPath>("EAFile_MiniIso")).fullPath()));
55  rho_miniiso_ = consumes<double>(iConfig.getParameter<edm::InputTag>("rho_MiniIso"));
56  }
57  if ((typeid(T) == typeid(pat::Electron))) {
58  produces<edm::ValueMap<float>>("PFIsoChg");
59  produces<edm::ValueMap<float>>("PFIsoAll");
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  }
63  else if ((typeid(T) == typeid(pat::Photon))) {
64  produces<edm::ValueMap<float>>("PFIsoChg");
65  produces<edm::ValueMap<float>>("PFIsoAll");
66  mapIsoChg_ = consumes<edm::ValueMap<float> >(iConfig.getParameter<edm::InputTag>("mapIsoChg"));
67  mapIsoNeu_ = consumes<edm::ValueMap<float> >(iConfig.getParameter<edm::InputTag>("mapIsoNeu"));
68  mapIsoPho_ = consumes<edm::ValueMap<float> >(iConfig.getParameter<edm::InputTag>("mapIsoPho"));
69  ea_pfiso_chg_.reset(new EffectiveAreas((iConfig.getParameter<edm::FileInPath>("EAFile_PFIso_Chg")).fullPath()));
70  ea_pfiso_neu_.reset(new EffectiveAreas((iConfig.getParameter<edm::FileInPath>("EAFile_PFIso_Neu")).fullPath()));
71  ea_pfiso_pho_.reset(new EffectiveAreas((iConfig.getParameter<edm::FileInPath>("EAFile_PFIso_Pho")).fullPath()));
72  rho_pfiso_ = consumes<double>(iConfig.getParameter<edm::InputTag>("rho_PFIso"));
73  }
74  }
T getParameter(std::string const &) const
Analysis-level Photon class.
Definition: Photon.h:47
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::ValueMap< float > > mapIsoChg_
edm::EDGetTokenT< edm::View< T > > src_
edm::EDGetTokenT< edm::ValueMap< float > > mapIsoNeu_
edm::EDGetTokenT< edm::ValueMap< float > > mapIsoPho_
std::unique_ptr< EffectiveAreas > ea_pfiso_neu_
Analysis-level electron class.
Definition: Electron.h:52
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:50
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 136 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(), GetRecoTauVFromDQM_MC_cff::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().

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

Definition at line 177 of file IsoValueMapProducer.cc.

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

Definition at line 182 of file IsoValueMapProducer.cc.

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

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

Definition at line 186 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(), GetRecoTauVFromDQM_MC_cff::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_.

186  {
187 
189  iEvent.getByToken(src_, src);
191  iEvent.getByToken(rho_pfiso_,rho);
192 
193  unsigned int nInput = src->size();
194 
195  std::vector<float> PFIsoChg, PFIsoAll;
196  PFIsoChg.reserve(nInput);
197  PFIsoAll.reserve(nInput);
198 
199  for (const auto & obj : *src) {
200  auto iso = obj.pfIsolationVariables();
201  auto chg = iso.sumChargedHadronPt;
202  auto neu = iso.sumNeutralHadronEt;
203  auto pho = iso.sumPhotonEt;
204  auto ea = ea_pfiso_->getEffectiveArea(fabs(getEtaForEA(&obj)));
205  float scale = relative_ ? 1.0/obj.pt() : 1;
206  PFIsoChg.push_back(scale*chg);
207  PFIsoAll.push_back(scale*(chg+std::max(0.0,neu+pho-(*rho)*ea)));
208  }
209 
210  std::unique_ptr<edm::ValueMap<float>> PFIsoChgV(new edm::ValueMap<float>());
211  edm::ValueMap<float>::Filler fillerChg(*PFIsoChgV);
212  fillerChg.insert(src,PFIsoChg.begin(),PFIsoChg.end());
213  fillerChg.fill();
214  std::unique_ptr<edm::ValueMap<float>> PFIsoAllV(new edm::ValueMap<float>());
215  edm::ValueMap<float>::Filler fillerAll(*PFIsoAllV);
216  fillerAll.insert(src,PFIsoAll.begin(),PFIsoAll.end());
217  fillerAll.fill();
218 
219  iEvent.put(std::move(PFIsoChgV),"PFIsoChg");
220  iEvent.put(std::move(PFIsoAllV),"PFIsoAll");
221 
222 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:136
const float chg[109]
Definition: CoreSimTrack.cc:5
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
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:510
template<typename T >
void IsoValueMapProducer< T >::doPFIsoPho ( edm::Event iEvent) const
private

Definition at line 226 of file IsoValueMapProducer.cc.

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

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

Definition at line 230 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(), mps_fire::i, edm::helper::Filler< Map >::insert(), photons_cff::mapIsoChg, IsoValueMapProducer< T >::mapIsoChg_, photons_cff::mapIsoNeu, IsoValueMapProducer< T >::mapIsoNeu_, photons_cff::mapIsoPho, IsoValueMapProducer< T >::mapIsoPho_, SiStripPI::max, eostools::move(), GetRecoTauVFromDQM_MC_cff::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_.

230  {
231 
233  iEvent.getByToken(src_, src);
235  iEvent.getByToken(rho_pfiso_,rho);
237  iEvent.getByToken(mapIsoChg_, mapIsoChg);
239  iEvent.getByToken(mapIsoNeu_, mapIsoNeu);
241  iEvent.getByToken(mapIsoPho_, mapIsoPho);
242 
243  unsigned int nInput = src->size();
244 
245  std::vector<float> PFIsoChg, PFIsoAll;
246  PFIsoChg.reserve(nInput);
247  PFIsoAll.reserve(nInput);
248 
249  for (unsigned int i=0; i<nInput; i++){
250  auto obj = src->ptrAt(i);
251  auto chg = (*mapIsoChg)[obj];
252  auto neu = (*mapIsoNeu)[obj];
253  auto pho = (*mapIsoPho)[obj];
254  auto ea_chg = ea_pfiso_chg_->getEffectiveArea(fabs(getEtaForEA(obj.get())));
255  auto ea_neu = ea_pfiso_neu_->getEffectiveArea(fabs(getEtaForEA(obj.get())));
256  auto ea_pho = ea_pfiso_pho_->getEffectiveArea(fabs(getEtaForEA(obj.get())));
257  float scale = relative_ ? 1.0/obj->pt() : 1;
258  PFIsoChg.push_back(scale*std::max(0.0,chg-(*rho)*ea_chg));
259  PFIsoAll.push_back(PFIsoChg.back()+scale*(std::max(0.0,neu-(*rho)*ea_neu)+std::max(0.0,pho-(*rho)*ea_pho)));
260  }
261 
262  std::unique_ptr<edm::ValueMap<float>> PFIsoChgV(new edm::ValueMap<float>());
263  edm::ValueMap<float>::Filler fillerChg(*PFIsoChgV);
264  fillerChg.insert(src,PFIsoChg.begin(),PFIsoChg.end());
265  fillerChg.fill();
266  std::unique_ptr<edm::ValueMap<float>> PFIsoAllV(new edm::ValueMap<float>());
267  edm::ValueMap<float>::Filler fillerAll(*PFIsoAllV);
268  fillerAll.insert(src,PFIsoAll.begin(),PFIsoAll.end());
269  fillerAll.fill();
270 
271  iEvent.put(std::move(PFIsoChgV),"PFIsoChg");
272  iEvent.put(std::move(PFIsoAllV),"PFIsoAll");
273 
274 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:136
const float chg[109]
Definition: CoreSimTrack.cc:5
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
edm::EDGetTokenT< double > rho_pfiso_
std::unique_ptr< EffectiveAreas > ea_pfiso_chg_
std::unique_ptr< EffectiveAreas > ea_pfiso_pho_
edm::EDGetTokenT< edm::ValueMap< float > > mapIsoChg_
edm::EDGetTokenT< edm::View< T > > src_
edm::EDGetTokenT< edm::ValueMap< float > > mapIsoNeu_
edm::EDGetTokenT< edm::ValueMap< float > > mapIsoPho_
std::unique_ptr< EffectiveAreas > ea_pfiso_neu_
float getEtaForEA(const T *) const
def move(src, dest)
Definition: eostools.py:510
template<typename T >
void IsoValueMapProducer< T >::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 281 of file IsoValueMapProducer.cc.

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

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

281  {
283  desc.add<edm::InputTag>("src")->setComment("input physics object collection");
284  desc.add<bool>("relative")->setComment("compute relative isolation instead of absolute one");
285  if ((typeid(T) == typeid(pat::Muon)) || (typeid(T) == typeid(pat::Electron)) || typeid(T) == typeid(pat::IsolatedTrack)) {
286  desc.add<edm::FileInPath>("EAFile_MiniIso")->setComment("txt file containing effective areas to be used for mini-isolation pileup subtraction");
287  desc.add<edm::InputTag>("rho_MiniIso")->setComment("rho to be used for effective-area based mini-isolation pileup subtraction");
288  }
289  if ((typeid(T) == typeid(pat::Electron))) {
290  desc.add<edm::FileInPath>("EAFile_PFIso")->setComment("txt file containing effective areas to be used for PF-isolation pileup subtraction for electrons");
291  desc.add<edm::InputTag>("rho_PFIso")->setComment("rho to be used for effective-area based PF-isolation pileup subtraction for electrons");
292  }
293  if ((typeid(T) == typeid(pat::Photon))) {
294  desc.add<edm::InputTag>("mapIsoChg")->setComment("input charged PF isolation calculated in VID for photons");
295  desc.add<edm::InputTag>("mapIsoNeu")->setComment("input neutral PF isolation calculated in VID for photons");
296  desc.add<edm::InputTag>("mapIsoPho")->setComment("input photon PF isolation calculated in VID for photons");
297  desc.add<edm::FileInPath>("EAFile_PFIso_Chg")->setComment("txt file containing effective areas to be used for charged PF-isolation pileup subtraction for photons");
298  desc.add<edm::FileInPath>("EAFile_PFIso_Neu")->setComment("txt file containing effective areas to be used for neutral PF-isolation pileup subtraction for photons");
299  desc.add<edm::FileInPath>("EAFile_PFIso_Pho")->setComment("txt file containing effective areas to be used for photon PF-isolation pileup subtraction for photons");
300  desc.add<edm::InputTag>("rho_PFIso")->setComment("rho to be used for effective-area based PF-isolation pileup subtraction for photons");
301  }
302  std::string modname;
303  if (typeid(T) == typeid(pat::Muon)) modname+="Muon";
304  else if (typeid(T) == typeid(pat::Electron)) modname+="Ele";
305  else if (typeid(T) == typeid(pat::Photon)) modname+="Pho";
306  else if (typeid(T) == typeid(pat::IsolatedTrack)) modname+="IsoTrack";
307  modname+="IsoValueMapProducer";
308  descriptions.add(modname,desc);
309 }
Analysis-level Photon class.
Definition: Photon.h:47
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Analysis-level electron class.
Definition: Electron.h:52
void add(std::string const &label, ParameterSetDescription const &psetDescription)
long double T
Analysis-level muon class.
Definition: Muon.h:50
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 116 of file IsoValueMapProducer.cc.

References pat::Electron::superCluster().

116  {
117  return el->superCluster()->eta();
118 }
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 119 of file IsoValueMapProducer.cc.

References pat::Photon::superCluster().

119  {
120  return ph->superCluster()->eta();
121 }
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 125 of file IsoValueMapProducer.cc.

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

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

126 {
127 
128  if ((typeid(T) == typeid(pat::Muon)) || (typeid(T) == typeid(pat::Electron)) || typeid(T) == typeid(pat::IsolatedTrack)) { doMiniIso(iEvent); };
129  if ((typeid(T) == typeid(pat::Electron))) { doPFIsoEle(iEvent); }
130  if ((typeid(T) == typeid(pat::Photon))) { doPFIsoPho(iEvent); }
131 
132 }
Analysis-level Photon class.
Definition: Photon.h:47
void doPFIsoEle(edm::Event &) const
void doMiniIso(edm::Event &) const
Analysis-level electron class.
Definition: Electron.h:52
void doPFIsoPho(edm::Event &) const
long double T
Analysis-level muon class.
Definition: Muon.h:50

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 >
edm::EDGetTokenT<edm::ValueMap<float> > IsoValueMapProducer< T >::mapIsoChg_
private
template<typename T >
edm::EDGetTokenT<edm::ValueMap<float> > IsoValueMapProducer< T >::mapIsoNeu_
private
template<typename T >
edm::EDGetTokenT<edm::ValueMap<float> > IsoValueMapProducer< T >::mapIsoPho_
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