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 const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
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::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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 selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
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<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
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)
 
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 ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 

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  }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< edm::View< pat::Electron > > srcEle_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< edm::View< pat::Jet > > srcJet_
edm::EDGetTokenT< edm::View< pat::Muon > > srcMu_

◆ ~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.

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

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 }
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30

◆ fillDescriptions()

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

Definition at line 208 of file LeptonInJetProducer.cc.

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

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 }
Analysis-level calorimeter jet class.
Definition: Jet.h:77
void add(std::string const &label, ParameterSetDescription const &psetDescription)
long double T

◆ 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.

References ztail::d, pat::Jet::daughterPtrVector(), reco::deltaR(), HLT_2022v12_cff::dRmin, 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(), jetUpdater_cfi::sort, jetsAK8_cff::srcEle, electrons_cff::srcJet, and jetsAK8_cff::srcMu.

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 }
double pt() const final
transverse momentum
edm::EDGetTokenT< edm::View< pat::Electron > > srcEle_
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< edm::View< pat::Jet > > srcJet_
bool matchByCommonSourceCandidatePtr(const C1 &c1, const C2 &c2)
Definition: MatchingUtils.h:9
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
d
Definition: ztail.py:151
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
Analysis-level calorimeter jet class.
Definition: Jet.h:77
const reco::CompositePtrCandidate::daughters & daughterPtrVector() const override
references to daughtes
static bool orderPseudoJet(fastjet::PseudoJet j1, fastjet::PseudoJet j2)
edm::EDGetTokenT< edm::View< pat::Muon > > srcMu_
double phi() const final
momentum azimuthal angle
def move(src, dest)
Definition: eostools.py:511
double eta() const final
momentum pseudorapidity

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.