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
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () 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

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::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 LeptonInJetProducer< T >

Definition at line 31 of file LeptonInJetProducer.cc.

Constructor & Destructor Documentation

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
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_
template<typename T >
LeptonInJetProducer< T >::~LeptonInJetProducer ( )
inlineoverride

Member Function Documentation

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(), PVValHelper::eta, funct::m, phi, and EnergyCorrector::pt.

Referenced by LeptonInJetProducer< T >::produce(), and LeptonInJetProducer< T >::~LeptonInJetProducer().

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:28
template<typename T >
void LeptonInJetProducer< T >::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 208 of file LeptonInJetProducer.cc.

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

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

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");
213  std::string modname;
214  modname += "LepIn";
215  if (typeid(T) == typeid(pat::Jet))
216  modname += "Jet";
217  modname += "Producer";
218  descriptions.add(modname, desc);
219 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Analysis-level calorimeter jet class.
Definition: Jet.h:80
void add(std::string const &label, ParameterSetDescription const &psetDescription)
long double T
template<typename T >
bool LeptonInJetProducer< T >::orderPseudoJet ( fastjet::PseudoJet  j1,
fastjet::PseudoJet  j2 
)
staticprivate

Definition at line 161 of file LeptonInJetProducer.cc.

Referenced by LeptonInJetProducer< T >::produce(), and LeptonInJetProducer< T >::~LeptonInJetProducer().

161  {
162  return j1.perp2() > j2.perp2();
163 }
template<typename T >
void LeptonInJetProducer< T >::produce ( edm::StreamID  ,
edm::Event ,
edm::EventSetup const &   
) const
overrideprivatevirtual

Implements edm::global::EDProducerBase.

Definition at line 65 of file LeptonInJetProducer.cc.

References LeptonInJetProducer< T >::calculateLSF(), edmIntegrityCheck::d, pat::Jet::daughterPtrVector(), reco::deltaR(), reco::LeafCandidate::eta(), edm::helper::Filler< Map >::fill(), edm::Event::getByToken(), edm::helper::Filler< Map >::insert(), matchByCommonSourceCandidatePtr(), eostools::move(), LeptonInJetProducer< T >::orderPseudoJet(), AlCaHLTBitMon_ParallelJobs::p, reco::LeafCandidate::phi(), EnergyCorrector::pt, reco::LeafCandidate::pt(), edm::Event::put(), jetUpdater_cfi::sort, jets_cff::srcEle, LeptonInJetProducer< T >::srcEle_, electrons_cff::srcJet, LeptonInJetProducer< T >::srcJet_, jets_cff::srcMu, and LeptonInJetProducer< T >::srcMu_.

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

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 eta() const final
momentum pseudorapidity
edm::EDGetTokenT< edm::View< pat::Electron > > srcEle_
double pt() const final
transverse momentum
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
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:28
Analysis-level calorimeter jet class.
Definition: Jet.h:80
static bool orderPseudoJet(fastjet::PseudoJet j1, fastjet::PseudoJet j2)
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
edm::EDGetTokenT< edm::View< pat::Muon > > srcMu_
const reco::CompositePtrCandidate::daughters & daughterPtrVector() const override
references to daughtes
double phi() const final
momentum azimuthal angle
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

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

Definition at line 59 of file LeptonInJetProducer.cc.

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

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

Definition at line 58 of file LeptonInJetProducer.cc.

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

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

Definition at line 60 of file LeptonInJetProducer.cc.

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