CMS 3D CMS Logo

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

Public Member Functions

 LeptonInJetProducer (const edm::ParameterSet &iConfig)
 
 ~LeptonInJetProducer () override
 
- Public Member Functions inherited from edm::global::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
 
EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () 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
 
std::vector< bool > const & recordProvenanceList () 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)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~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 &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (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
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
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

std::tuple< float, float > calculateLSF (std::vector< fastjet::PseudoJet > iCParticles, std::vector< fastjet::PseudoJet > &ljets, float ilPt, float ilEta, float ilPhi, int ilId, double dr, int nsj) const
 
void produce (edm::StreamID, edm::Event &, edm::EventSetup const &) const override
 

Static Private Member Functions

static bool orderPseudoJet (fastjet::PseudoJet j1, fastjet::PseudoJet j2)
 

Private Attributes

edm::EDGetTokenT< edm::View< pat::Electron > > srcEle_
 
edm::EDGetTokenT< edm::View< pat::Jet > > srcJet_
 
edm::EDGetTokenT< edm::View< pat::Muon > > srcMu_
 

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
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

template<typename T>
class LeptonInJetProducer< T >

Definition at line 31 of file LeptonInJetProducer.cc.

Constructor & Destructor Documentation

◆ LeptonInJetProducer()

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

Definition at line 33 of file LeptonInJetProducer.cc.

37  produces<edm::ValueMap<float>>("lsf3");
38  produces<edm::ValueMap<int>>("muIdx3SJ");
39  produces<edm::ValueMap<int>>("eleIdx3SJ");
40  }

◆ ~LeptonInJetProducer()

template<typename T >
LeptonInJetProducer< T >::~LeptonInJetProducer ( )
inlineoverride

Definition at line 41 of file LeptonInJetProducer.cc.

41 {};

Member Function Documentation

◆ calculateLSF()

template<typename T >
std::tuple< float, float > LeptonInJetProducer< T >::calculateLSF ( std::vector< fastjet::PseudoJet >  iCParticles,
std::vector< fastjet::PseudoJet > &  ljets,
float  ilPt,
float  ilEta,
float  ilPhi,
int  ilId,
double  dr,
int  nsj 
) const
private

Definition at line 166 of file LeptonInJetProducer.cc.

173  {
174  float lsf(-1), lmd(-1);
175  if (ilPt > 0 && (ilId == 11 || ilId == 13)) {
176  TLorentzVector ilep;
177  if (ilId == 11)
178  ilep.SetPtEtaPhiM(ilPt, ilEta, ilPhi, 0.000511);
179  if (ilId == 13)
180  ilep.SetPtEtaPhiM(ilPt, ilEta, ilPhi, 0.105658);
181  fastjet::JetDefinition lCJet_def(fastjet::kt_algorithm, dr);
182  fastjet::ClusterSequence lCClust_seq(iCParticles, lCJet_def);
183  if (dr > 0.5) {
184  lsubjets = sorted_by_pt(lCClust_seq.exclusive_jets_up_to(nsj));
185  } else {
186  lsubjets = sorted_by_pt(lCClust_seq.inclusive_jets());
187  }
188  int lId(-1);
189  double dRmin = 999.;
190  for (unsigned int i0 = 0; i0 < lsubjets.size(); i0++) {
191  double dR = reco::deltaR(lsubjets[i0].eta(), lsubjets[i0].phi(), ilep.Eta(), ilep.Phi());
192  if (dR < dRmin) {
193  dRmin = dR;
194  lId = i0;
195  }
196  }
197  if (lId != -1) {
198  TLorentzVector pVec;
199  pVec.SetPtEtaPhiM(lsubjets[lId].pt(), lsubjets[lId].eta(), lsubjets[lId].phi(), lsubjets[lId].m());
200  lsf = ilep.Pt() / pVec.Pt();
201  lmd = (ilep - pVec).M() / pVec.M();
202  }
203  }
204  return std::tuple<float, float>(lsf, lmd);
205 }

References reco::deltaR(), HGC3DClusterGenMatchSelector_cfi::dR, flavorHistoryFilter_cfi::dr, PVValHelper::eta, visualization-live-secondInstance_cfg::m, PVValHelper::phi, and DiDispStaMuonMonitor_cfi::pt.

◆ fillDescriptions()

template<typename T >
void LeptonInJetProducer< T >::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 208 of file LeptonInJetProducer.cc.

208  {
210  desc.add<edm::InputTag>("src")->setComment("jet input collection");
211  desc.add<edm::InputTag>("srcEle")->setComment("electron input collection");
212  desc.add<edm::InputTag>("srcMu")->setComment("muon input collection");
214  modname += "LepIn";
215  if (typeid(T) == typeid(pat::Jet))
216  modname += "Jet";
217  modname += "Producer";
218  descriptions.add(modname, desc);
219 }

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

◆ orderPseudoJet()

template<typename T >
bool LeptonInJetProducer< T >::orderPseudoJet ( fastjet::PseudoJet  j1,
fastjet::PseudoJet  j2 
)
staticprivate

Definition at line 161 of file LeptonInJetProducer.cc.

161  {
162  return j1.perp2() > j2.perp2();
163 }

◆ produce()

template<typename T >
void LeptonInJetProducer< T >::produce ( edm::StreamID  streamID,
edm::Event iEvent,
edm::EventSetup const &  iSetup 
) const
overrideprivatevirtual

Implements edm::global::EDProducerBase.

Definition at line 65 of file LeptonInJetProducer.cc.

65  {
66  // needs jet collection (srcJet), leptons collection
68  iEvent.getByToken(srcJet_, srcJet);
70  iEvent.getByToken(srcEle_, srcEle);
72  iEvent.getByToken(srcMu_, srcMu);
73 
74  unsigned int nJet = srcJet->size();
75  unsigned int nEle = srcEle->size();
76  unsigned int nMu = srcMu->size();
77 
78  std::vector<float> vlsf3;
79  std::vector<int> vmuIdx3SJ;
80  std::vector<int> veleIdx3SJ;
81 
82  int ele_pfmatch_index = -1;
83  int mu_pfmatch_index = -1;
84 
85  // Find leptons in jets
86  for (unsigned int ij = 0; ij < nJet; ij++) {
87  const pat::Jet &itJet = (*srcJet)[ij];
88  if (itJet.pt() <= 10)
89  continue;
90  std::vector<fastjet::PseudoJet> lClusterParticles;
91  float lepPt(-1), lepEta(-1), lepPhi(-1);
92  int lepId(-1);
93  for (auto const &d : itJet.daughterPtrVector()) {
94  fastjet::PseudoJet p(d->px(), d->py(), d->pz(), d->energy());
95  lClusterParticles.emplace_back(p);
96  }
97 
98  // match to leading and closest electron or muon
99  double dRmin(0.8), dRele(999), dRmu(999), dRtmp(999);
100  for (unsigned int il(0); il < nEle; il++) {
101  auto itLep = srcEle->ptrAt(il);
102  if (matchByCommonSourceCandidatePtr(*itLep, itJet)) {
103  dRtmp = reco::deltaR(itJet.eta(), itJet.phi(), itLep->eta(), itLep->phi());
104  if (dRtmp < dRmin && dRtmp < dRele && itLep->pt() > lepPt) {
105  lepPt = itLep->pt();
106  lepEta = itLep->eta();
107  lepPhi = itLep->phi();
108  lepId = 11;
109  ele_pfmatch_index = il;
110  dRele = dRtmp;
111  break;
112  }
113  }
114  }
115  for (unsigned int il(0); il < nMu; il++) {
116  auto itLep = srcMu->ptrAt(il);
117  if (matchByCommonSourceCandidatePtr(*itLep, itJet)) {
118  dRtmp = reco::deltaR(itJet.eta(), itJet.phi(), itLep->eta(), itLep->phi());
119  if (dRtmp < dRmin && dRtmp < dRele && dRtmp < dRmu && itLep->pt() > lepPt) {
120  lepPt = itLep->pt();
121  lepEta = itLep->eta();
122  lepPhi = itLep->phi();
123  lepId = 13;
124  ele_pfmatch_index = -1;
125  mu_pfmatch_index = il;
126  dRmu = dRtmp;
127  break;
128  }
129  }
130  }
131 
132  std::vector<fastjet::PseudoJet> psub_3;
133  std::sort(lClusterParticles.begin(), lClusterParticles.end(), orderPseudoJet);
134  auto lsf_3 = calculateLSF(lClusterParticles, psub_3, lepPt, lepEta, lepPhi, lepId, 2.0, 3);
135  vlsf3.push_back(std::get<0>(lsf_3));
136  veleIdx3SJ.push_back(ele_pfmatch_index);
137  vmuIdx3SJ.push_back(mu_pfmatch_index);
138  }
139 
140  // Filling table
141  std::unique_ptr<edm::ValueMap<float>> lsf3V(new edm::ValueMap<float>());
142  edm::ValueMap<float>::Filler fillerlsf3(*lsf3V);
143  fillerlsf3.insert(srcJet, vlsf3.begin(), vlsf3.end());
144  fillerlsf3.fill();
145  iEvent.put(std::move(lsf3V), "lsf3");
146 
147  std::unique_ptr<edm::ValueMap<int>> muIdx3SJV(new edm::ValueMap<int>());
148  edm::ValueMap<int>::Filler fillermuIdx3SJ(*muIdx3SJV);
149  fillermuIdx3SJ.insert(srcJet, vmuIdx3SJ.begin(), vmuIdx3SJ.end());
150  fillermuIdx3SJ.fill();
151  iEvent.put(std::move(muIdx3SJV), "muIdx3SJ");
152 
153  std::unique_ptr<edm::ValueMap<int>> eleIdx3SJV(new edm::ValueMap<int>());
154  edm::ValueMap<int>::Filler fillereleIdx3SJ(*eleIdx3SJV);
155  fillereleIdx3SJ.insert(srcJet, veleIdx3SJ.begin(), veleIdx3SJ.end());
156  fillereleIdx3SJ.fill();
157  iEvent.put(std::move(eleIdx3SJV), "eleIdx3SJ");
158 }

References ztail::d, pat::Jet::daughterPtrVector(), reco::deltaR(), reco::LeafCandidate::eta(), edm::helper::Filler< Map >::fill(), iEvent, edm::helper::Filler< Map >::insert(), matchByCommonSourceCandidatePtr(), eostools::move(), AlCaHLTBitMon_ParallelJobs::p, reco::LeafCandidate::phi(), DiDispStaMuonMonitor_cfi::pt, reco::LeafCandidate::pt(), jets_cff::srcEle, electrons_cff::srcJet, and jets_cff::srcMu.

Member Data Documentation

◆ srcEle_

template<typename T >
edm::EDGetTokenT<edm::View<pat::Electron> > LeptonInJetProducer< T >::srcEle_
private

Definition at line 59 of file LeptonInJetProducer.cc.

◆ srcJet_

template<typename T >
edm::EDGetTokenT<edm::View<pat::Jet> > LeptonInJetProducer< T >::srcJet_
private

Definition at line 58 of file LeptonInJetProducer.cc.

◆ srcMu_

template<typename T >
edm::EDGetTokenT<edm::View<pat::Muon> > LeptonInJetProducer< T >::srcMu_
private

Definition at line 60 of file LeptonInJetProducer.cc.

DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
matchByCommonSourceCandidatePtr
bool matchByCommonSourceCandidatePtr(const C1 &c1, const C2 &c2)
Definition: MatchingUtils.h:9
jets_cff.srcMu
srcMu
Definition: jets_cff.py:195
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
reco::LeafCandidate::pt
double pt() const final
transverse momentum
Definition: LeafCandidate.h:146
LeptonInJetProducer::orderPseudoJet
static bool orderPseudoJet(fastjet::PseudoJet j1, fastjet::PseudoJet j2)
Definition: LeptonInJetProducer.cc:161
edm::Handle
Definition: AssociativeIterator.h:50
pat::Jet
Analysis-level calorimeter jet class.
Definition: Jet.h:77
LeptonInJetProducer::srcEle_
edm::EDGetTokenT< edm::View< pat::Electron > > srcEle_
Definition: LeptonInJetProducer.cc:59
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
PVValHelper::eta
Definition: PVValidationHelpers.h:69
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::View
Definition: CaloClusterFwd.h:14
reco::LeafCandidate::eta
double eta() const final
momentum pseudorapidity
Definition: LeafCandidate.h:152
LeptonInJetProducer::srcMu_
edm::EDGetTokenT< edm::View< pat::Muon > > srcMu_
Definition: LeptonInJetProducer.cc:60
iEvent
int iEvent
Definition: GenABIO.cc:224
LeptonInJetProducer::calculateLSF
std::tuple< float, float > calculateLSF(std::vector< fastjet::PseudoJet > iCParticles, std::vector< fastjet::PseudoJet > &ljets, float ilPt, float ilEta, float ilPhi, int ilId, double dr, int nsj) const
Definition: LeptonInJetProducer.cc:166
jets_cff.srcEle
srcEle
Definition: jets_cff.py:194
DDAxes::phi
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
reco::LeafCandidate::phi
double phi() const final
momentum azimuthal angle
Definition: LeafCandidate.h:148
T
long double T
Definition: Basic3DVectorLD.h:48
pat::Jet::daughterPtrVector
const reco::CompositePtrCandidate::daughters & daughterPtrVector() const override
references to daughtes
edm::ValueMap< float >
flavorHistoryFilter_cfi.dr
dr
Definition: flavorHistoryFilter_cfi.py:37
electrons_cff.srcJet
srcJet
Definition: electrons_cff.py:158
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
ztail.d
d
Definition: ztail.py:151
edm::helper::Filler
Definition: ValueMap.h:22
HGC3DClusterGenMatchSelector_cfi.dR
dR
Definition: HGC3DClusterGenMatchSelector_cfi.py:7
edm::EDConsumerBase::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: EDConsumerBase.h:153
LeptonInJetProducer::srcJet_
edm::EDGetTokenT< edm::View< pat::Jet > > srcJet_
Definition: LeptonInJetProducer.cc:58
timingPdfMaker.modname
modname
Definition: timingPdfMaker.py:218
edm::InputTag
Definition: InputTag.h:15