CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
pat::LeptonUpdater< T > Class Template Reference
Inheritance diagram for pat::LeptonUpdater< T >:
edm::global::EDProducer<> edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 LeptonUpdater (const edm::ParameterSet &iConfig)
 
const std::vector< double > & miniIsoParams (const T &lep) const
 
template<>
const std::vector< double > & miniIsoParams (const pat::Electron &lep) const
 
void produce (edm::StreamID, edm::Event &, edm::EventSetup const &) const override
 
void readMiniIsoParams (const edm::ParameterSet &iConfig)
 
template<>
void readMiniIsoParams (const edm::ParameterSet &iConfig)
 
void recomputeMuonBasicSelectors (T &, const reco::Vertex &, const bool) const
 
template<>
void recomputeMuonBasicSelectors (pat::Muon &lep, const reco::Vertex &pv, const bool do_hip_mitigation_2016) const
 
void setDZ (T &lep, const reco::Vertex &pv) const
 
template<>
void setDZ (pat::Electron &anElectron, const reco::Vertex &pv) const
 
template<>
void setDZ (pat::Muon &aMuon, const reco::Vertex &pv) const
 
 ~LeptonUpdater () override
 
- Public Member Functions inherited from edm::global::EDProducer<>
 EDProducer ()=default
 
- 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
 
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 Attributes

bool computeMiniIso_
 
std::vector< double > miniIsoParams_ [2]
 
edm::EDGetTokenT< pat::PackedCandidateCollectionpcToken_
 
bool recomputeMuonBasicSelectors_
 
edm::EDGetTokenT< std::vector< T > > src_
 
edm::EDGetTokenT< std::vector< reco::Vertex > > vertices_
 

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 pat::LeptonUpdater< T >

Definition at line 19 of file LeptonUpdater.cc.

Constructor & Destructor Documentation

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

Definition at line 23 of file LeptonUpdater.cc.

References pat::LeptonUpdater< T >::computeMiniIso_, edm::ParameterSet::getParameter(), pat::LeptonUpdater< T >::pcToken_, pat::LeptonUpdater< T >::readMiniIsoParams(), and pat::LeptonUpdater< T >::recomputeMuonBasicSelectors_.

23  :
24  src_(consumes<std::vector<T>>(iConfig.getParameter<edm::InputTag>("src"))),
25  vertices_(consumes<std::vector<reco::Vertex>>(iConfig.getParameter<edm::InputTag>("vertices"))),
26  computeMiniIso_(iConfig.getParameter<bool>("computeMiniIso"))
27  {
28  //for mini-isolation calculation
29  if (computeMiniIso_) {
30  readMiniIsoParams(iConfig);
31  pcToken_ = consumes<pat::PackedCandidateCollection >(iConfig.getParameter<edm::InputTag>("pfCandsForMiniIso"));
32  }
34  if (typeid(T) == typeid(pat::Muon)) recomputeMuonBasicSelectors_ = iConfig.getParameter<bool>("recomputeMuonBasicSelectors");
35  produces<std::vector<T>>();
36  }
T getParameter(std::string const &) const
edm::EDGetTokenT< std::vector< T > > src_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
bool recomputeMuonBasicSelectors_
edm::EDGetTokenT< pat::PackedCandidateCollection > pcToken_
void readMiniIsoParams(const edm::ParameterSet &iConfig)
long double T
Analysis-level muon class.
Definition: Muon.h:50
edm::EDGetTokenT< std::vector< reco::Vertex > > vertices_
template<typename T >
pat::LeptonUpdater< T >::~LeptonUpdater ( )
inlineoverride

Definition at line 38 of file LeptonUpdater.cc.

References pat::LeptonUpdater< T >::produce().

38 {}

Member Function Documentation

template<typename T >
static void pat::LeptonUpdater< T >::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
inlinestatic

Definition at line 42 of file LeptonUpdater.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and edm::ParameterSetDescription::addOptional().

42  {
44  desc.add<edm::InputTag>("src")->setComment("Lepton collection");
45  desc.add<edm::InputTag>("vertices")->setComment("Vertex collection");
46  desc.add<bool>("computeMiniIso", false)->setComment("Recompute miniIsolation");
47  desc.addOptional<edm::InputTag>("pfCandsForMiniIso", edm::InputTag("packedPFCandidates"))->setComment("PackedCandidate collection used for miniIso");
48  if (typeid(T) == typeid(pat::Muon)) {
49  desc.add<bool>("recomputeMuonBasicSelectors",false)->setComment("Recompute basic cut-based muon selector flags");
50  desc.addOptional<std::vector<double>>("miniIsoParams")->setComment("Parameters used for miniIso (as in PATMuonProducer)");
51  descriptions.add("muonsUpdated", desc);
52  } else if (typeid(T) == typeid(pat::Electron)) {
53  desc.addOptional<std::vector<double>>("miniIsoParamsB")->setComment("Parameters used for miniIso in the barrel (as in PATElectronProducer)");
54  desc.addOptional<std::vector<double>>("miniIsoParamsE")->setComment("Parameters used for miniIso in the endcap (as in PATElectronProducer)");
55  descriptions.add("electronsUpdated", desc);
56  }
57  }
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
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 >
const std::vector<double>& pat::LeptonUpdater< T >::miniIsoParams ( const T lep) const
inline
template<>
const std::vector< double > & pat::LeptonUpdater< pat::Electron >::miniIsoParams ( const pat::Electron lep) const

Definition at line 101 of file LeptonUpdater.cc.

References reco::GsfElectron::isEE(), and pat::LeptonUpdater< T >::miniIsoParams_.

101  {
102  return miniIsoParams_[lep.isEE()];
103  }
bool isEE() const
Definition: GsfElectron.h:353
std::vector< double > miniIsoParams_[2]
template<typename T >
void pat::LeptonUpdater< T >::produce ( edm::StreamID  ,
edm::Event iEvent,
edm::EventSetup const &   
) const
overridevirtual

Implements edm::global::EDProducerBase.

Definition at line 116 of file LeptonUpdater.cc.

References pat::LeptonUpdater< T >::computeMiniIso_, edm::Event::getByToken(), pat::getMiniPFIsolation(), mps_fire::i, pat::LeptonUpdater< T >::miniIsoParams(), eostools::move(), gen::n, MillePedeFileConverter_cfg::out, pat::LeptonUpdater< T >::pcToken_, edm::Handle< T >::product(), edm::Event::put(), MetAnalyzer::pv(), pat::LeptonUpdater< T >::recomputeMuonBasicSelectors(), pat::LeptonUpdater< T >::recomputeMuonBasicSelectors_, edm::Event::run(), pat::LeptonUpdater< T >::setDZ(), TrackRefitter_38T_cff::src, pat::LeptonUpdater< T >::src_, electrons_cff::vertices, and pat::LeptonUpdater< T >::vertices_.

Referenced by pat::LeptonUpdater< T >::~LeptonUpdater().

116  {
118  iEvent.getByToken(src_, src);
119 
121  iEvent.getByToken(vertices_, vertices);
122  const reco::Vertex & pv = vertices->front();
123 
125  if(computeMiniIso_) iEvent.getByToken(pcToken_, pc);
126 
127  std::unique_ptr<std::vector<T>> out(new std::vector<T>(*src));
128 
129  const bool do_hip_mitigation_2016 = recomputeMuonBasicSelectors_ && (272728 <= iEvent.run() && iEvent.run() <= 278808);
130 
131  for (unsigned int i = 0, n = src->size(); i < n; ++i) {
132  T & lep = (*out)[i];
133  setDZ(lep, pv);
134  if (computeMiniIso_) {
135  const auto & params = miniIsoParams(lep);
136  pat::PFIsolation miniiso = pat::getMiniPFIsolation(pc.product(), lep.p4(),
137  params[0], params[1], params[2],
138  params[3], params[4], params[5],
139  params[6], params[7], params[8]);
140  lep.setMiniPFIsolation(miniiso);
141  }
142  if (recomputeMuonBasicSelectors_) recomputeMuonBasicSelectors(lep,pv,do_hip_mitigation_2016);
143  }
144 
145  iEvent.put(std::move(out));
146 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:127
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:508
edm::EDGetTokenT< std::vector< T > > src_
bool recomputeMuonBasicSelectors_
RunNumber_t run() const
Definition: Event.h:99
def pv(vc)
Definition: MetAnalyzer.py:6
void setDZ(T &lep, const reco::Vertex &pv) const
void recomputeMuonBasicSelectors(T &, const reco::Vertex &, const bool) const
edm::EDGetTokenT< pat::PackedCandidateCollection > pcToken_
T const * product() const
Definition: Handle.h:81
const std::vector< double > & miniIsoParams(const T &lep) const
PFIsolation getMiniPFIsolation(const pat::PackedCandidateCollection *pfcands, const math::XYZTLorentzVector &p4, float mindr=0.05, float maxdr=0.2, float kt_scale=10.0, float ptthresh=0.5, float deadcone_ch=0.0001, float deadcone_pu=0.01, float deadcone_ph=0.01, float deadcone_nh=0.01, float dZ_cut=0.0)
long double T
edm::EDGetTokenT< std::vector< reco::Vertex > > vertices_
def move(src, dest)
Definition: eostools.py:510
template<typename T >
void pat::LeptonUpdater< T >::readMiniIsoParams ( const edm::ParameterSet iConfig)
inline

Definition at line 61 of file LeptonUpdater.cc.

References edm::ParameterSet::getParameter(), pat::LeptonUpdater< T >::miniIsoParams_, and findQualityFiles::size.

Referenced by pat::LeptonUpdater< T >::LeptonUpdater().

61  {
62  miniIsoParams_[0] = iConfig.getParameter<std::vector<double> >("miniIsoParams");
63  if(miniIsoParams_[0].size() != 9) throw cms::Exception("ParameterError", "miniIsoParams must have exactly 9 elements.\n");
64  }
size
Write out results.
T getParameter(std::string const &) const
std::vector< double > miniIsoParams_[2]
template<>
void pat::LeptonUpdater< pat::Electron >::readMiniIsoParams ( const edm::ParameterSet iConfig)

Definition at line 94 of file LeptonUpdater.cc.

References edm::ParameterSet::getParameter(), pat::LeptonUpdater< T >::miniIsoParams_, and findQualityFiles::size.

94  {
95  miniIsoParams_[0] = iConfig.getParameter<std::vector<double> >("miniIsoParamsB");
96  miniIsoParams_[1] = iConfig.getParameter<std::vector<double> >("miniIsoParamsE");
97  if(miniIsoParams_[0].size() != 9) throw cms::Exception("ParameterError", "miniIsoParamsB must have exactly 9 elements.\n");
98  if(miniIsoParams_[1].size() != 9) throw cms::Exception("ParameterError", "miniIsoParamsE must have exactly 9 elements.\n");
99  }
size
Write out results.
T getParameter(std::string const &) const
std::vector< double > miniIsoParams_[2]
template<typename T >
void pat::LeptonUpdater< T >::recomputeMuonBasicSelectors ( T lep,
const reco::Vertex pv,
const bool  do_hip_mitigation_2016 
) const
template<>
void pat::LeptonUpdater< pat::Muon >::recomputeMuonBasicSelectors ( pat::Muon lep,
const reco::Vertex pv,
const bool  do_hip_mitigation_2016 
) const

Definition at line 109 of file LeptonUpdater.cc.

References muon::setCutBasedSelectorFlags().

109  {
110  muon::setCutBasedSelectorFlags(lep, &pv, do_hip_mitigation_2016);
111  }
void setCutBasedSelectorFlags(reco::Muon &muon, const reco::Vertex *vertex=0, bool run2016_hip_mitigation=false)
template<typename T >
void pat::LeptonUpdater< T >::setDZ ( T lep,
const reco::Vertex pv 
) const
inline

Definition at line 59 of file LeptonUpdater.cc.

Referenced by pat::LeptonUpdater< T >::produce().

59 {}
template<>
void pat::LeptonUpdater< pat::Electron >::setDZ ( pat::Electron anElectron,
const reco::Vertex pv 
) const

Definition at line 82 of file LeptonUpdater.cc.

References pat::Electron::gsfTrack(), reco::Vertex::position(), pat::Electron::PVDZ, pat::Electron::setDB(), HiIsolationCommonParameters_cff::track, and reco::Vertex::zError().

82  {
83  auto track = anElectron.gsfTrack();
84  anElectron.setDB( track->dz(pv.position()), std::hypot(track->dzError(), pv.zError()), pat::Electron::PVDZ );
85  }
double zError() const
error on z
Definition: Vertex.h:123
const Point & position() const
position
Definition: Vertex.h:109
void setDB(double dB, double edB, IPTYPE type)
Set impact parameter of a certain type and its uncertainty.
reco::GsfTrackRef gsfTrack() const override
override the reco::GsfElectron::gsfTrack method, to access the internal storage of the supercluster ...
template<>
void pat::LeptonUpdater< pat::Muon >::setDZ ( pat::Muon aMuon,
const reco::Vertex pv 
) const

Definition at line 88 of file LeptonUpdater.cc.

References pat::Muon::muonBestTrack(), reco::Vertex::position(), pat::Muon::PVDZ, pat::Muon::setDB(), HiIsolationCommonParameters_cff::track, and reco::Vertex::zError().

88  {
89  auto track = aMuon.muonBestTrack();
90  aMuon.setDB( track->dz(pv.position()), std::hypot(track->dzError(), pv.zError()), pat::Muon::PVDZ );
91  }
double zError() const
error on z
Definition: Vertex.h:123
const Point & position() const
position
Definition: Vertex.h:109
void setDB(double dB, double edB, IPTYPE type=PV2D)
Definition: Muon.h:244
reco::TrackRef muonBestTrack() const override
Track selected to be the best measurement of the muon parameters (including PFlow global information)...

Member Data Documentation

template<typename T >
bool pat::LeptonUpdater< T >::computeMiniIso_
private
template<typename T >
std::vector<double> pat::LeptonUpdater< T >::miniIsoParams_[2]
private
template<typename T >
edm::EDGetTokenT<pat::PackedCandidateCollection> pat::LeptonUpdater< T >::pcToken_
private
template<typename T >
bool pat::LeptonUpdater< T >::recomputeMuonBasicSelectors_
private
template<typename T >
edm::EDGetTokenT<std::vector<T> > pat::LeptonUpdater< T >::src_
private

Definition at line 71 of file LeptonUpdater.cc.

Referenced by pat::LeptonUpdater< T >::produce().

template<typename T >
edm::EDGetTokenT<std::vector<reco::Vertex> > pat::LeptonUpdater< T >::vertices_
private

Definition at line 72 of file LeptonUpdater.cc.

Referenced by pat::LeptonUpdater< T >::produce().