CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes
heppy::ReclusterJets Class Reference

#include <ReclusterJets.h>

Public Types

typedef math::XYZTLorentzVector LorentzVector
 

Public Member Functions

std::vector< LorentzVectorgetGrouping (double ptMin=0.0)
 get grouping (inclusive jets) More...
 
std::vector< LorentzVectorgetGroupingExclusive (double dcut)
 get grouping (exclusive jets, up to cut dcut) More...
 
std::vector< LorentzVectorgetGroupingExclusive (int njets)
 get grouping (exclusive jets, until n are left) More...
 
LorentzVector getPruned (double zcut, double rcutFactor)
 get pruned 4-vector More...
 
LorentzVector getPrunedSubjetExclusive (unsigned int isubjet, double zcut, double rcutFactor)
 get pruned 4-vector for a given subject (must be called after getGroupingExclusive) More...
 
LorentzVector getPrunedSubjetInclusive (unsigned int isubjet, double zcut, double rcutFactor)
 get pruned 4-vector for a given subject (must be called after getGroupingInclusive) More...
 
 ReclusterJets (const std::vector< LorentzVector > &objects, double ktpower, double rparam)
 

Private Types

typedef std::shared_ptr< fastjet::ClusterSequence > ClusterSequencePtr
 fastjet outputs More...
 

Private Member Functions

LorentzVector getPruned (const fastjet::PseudoJet &jet, double zcut, double rcutFactor)
 
std::vector< LorentzVectormakeP4s (const std::vector< fastjet::PseudoJet > &jets)
 

Private Attributes

std::vector< fastjet::PseudoJet > exclusiveJets_
 
ClusterSequencePtr fjClusterSeq_
 
std::vector< fastjet::PseudoJet > fjInputs_
 
std::vector< fastjet::PseudoJet > inclusiveJets_
 
double ktpower_
 
double rparam_
 

Detailed Description

Definition at line 19 of file ReclusterJets.h.

Member Typedef Documentation

◆ ClusterSequencePtr

typedef std::shared_ptr<fastjet::ClusterSequence> heppy::ReclusterJets::ClusterSequencePtr
private

fastjet outputs

Definition at line 57 of file ReclusterJets.h.

◆ LorentzVector

Definition at line 21 of file ReclusterJets.h.

Constructor & Destructor Documentation

◆ ReclusterJets()

heppy::ReclusterJets::ReclusterJets ( const std::vector< LorentzVector > &  objects,
double  ktpower,
double  rparam 
)

Definition at line 14 of file ReclusterJets.cc.

15  : ktpower_(ktpower), rparam_(rparam) {
16  // define jet inputs
17  fjInputs_.clear();
18  int index = 0;
19  for (const LorentzVector &o : objects) {
20  fastjet::PseudoJet j(o.Px(), o.Py(), o.Pz(), o.E());
21  j.set_user_index(index);
22  index++; // in case we want to know which piece ended where
23  fjInputs_.push_back(j);
24  }
25 
26  // choose a jet definition
27  fastjet::JetDefinition jet_def;
28 
29  // prepare jet def
30  if (ktpower_ == 1.0) {
31  jet_def = JetDefinition(kt_algorithm, rparam_);
32  } else if (ktpower_ == 0.0) {
33  jet_def = JetDefinition(cambridge_algorithm, rparam_);
34  } else if (ktpower_ == -1.0) {
35  jet_def = JetDefinition(antikt_algorithm, rparam_);
36  } else {
37  throw cms::Exception("InvalidArgument", "Unsupported ktpower value");
38  }
39 
40  // print out some infos
41  // cout << "Clustering with " << jet_def.description() << endl;
43  // define jet clustering sequence
44  fjClusterSeq_ = std::make_shared<fastjet::ClusterSequence>(fjInputs_, jet_def);
45  }

References Exception, fjClusterSeq_, fjInputs_, dqmiolumiharvest::j, fwrapper::jet_def, ktpower_, EcalTangentSkim_cfg::o, and rparam_.

Member Function Documentation

◆ getGrouping()

std::vector< math::XYZTLorentzVector > heppy::ReclusterJets::getGrouping ( double  ptMin = 0.0)

get grouping (inclusive jets)

Definition at line 54 of file ReclusterJets.cc.

54  {
55  // recluster jet
56  inclusiveJets_ = fastjet::sorted_by_pt(fjClusterSeq_->inclusive_jets(ptMin));
57  // return
58  return makeP4s(inclusiveJets_);
59  }

References fjClusterSeq_, inclusiveJets_, makeP4s(), and ptMin.

◆ getGroupingExclusive() [1/2]

std::vector< math::XYZTLorentzVector > heppy::ReclusterJets::getGroupingExclusive ( double  dcut)

get grouping (exclusive jets, up to cut dcut)

Definition at line 61 of file ReclusterJets.cc.

61  {
62  // recluster jet
63  exclusiveJets_ = fastjet::sorted_by_pt(fjClusterSeq_->exclusive_jets(dcut));
64  // return
65  return makeP4s(exclusiveJets_);
66  }

References exclusiveJets_, fjClusterSeq_, and makeP4s().

◆ getGroupingExclusive() [2/2]

std::vector< math::XYZTLorentzVector > heppy::ReclusterJets::getGroupingExclusive ( int  njets)

get grouping (exclusive jets, until n are left)

Definition at line 68 of file ReclusterJets.cc.

68  {
69  // recluster jet
70  exclusiveJets_ = fastjet::sorted_by_pt(fjClusterSeq_->exclusive_jets(njets));
71  // return
72  return makeP4s(exclusiveJets_);
73  }

References exclusiveJets_, fjClusterSeq_, makeP4s(), and BTaggingMonitoring_cff::njets.

◆ getPruned() [1/2]

math::XYZTLorentzVector heppy::ReclusterJets::getPruned ( const fastjet::PseudoJet &  jet,
double  zcut,
double  rcutFactor 
)
private

Definition at line 99 of file ReclusterJets.cc.

99  {
100  // create pruner
101  fastjet::Pruner pruner(fastjet::cambridge_algorithm, zcut, rcutFactor);
102  // Prune the jet
103  fastjet::PseudoJet pruned_jet = pruner(jet);
104  return LorentzVector(pruned_jet.px(), pruned_jet.py(), pruned_jet.pz(), pruned_jet.e());
105  }

References metsig::jet, and HLT_2018_cff::zcut.

◆ getPruned() [2/2]

math::XYZTLorentzVector heppy::ReclusterJets::getPruned ( double  zcut,
double  rcutFactor 
)

get pruned 4-vector

Definition at line 75 of file ReclusterJets.cc.

75  {
76  // cluster everything first
77  exclusiveJets_ = fastjet::sorted_by_pt(fjClusterSeq_->exclusive_jets(1));
78  // get pruned exclusive
79  return getPrunedSubjetExclusive(0, zcut, rcutFactor);
80  }

References exclusiveJets_, fjClusterSeq_, getPrunedSubjetExclusive(), and HLT_2018_cff::zcut.

Referenced by getPrunedSubjetExclusive(), and getPrunedSubjetInclusive().

◆ getPrunedSubjetExclusive()

math::XYZTLorentzVector heppy::ReclusterJets::getPrunedSubjetExclusive ( unsigned int  isubjet,
double  zcut,
double  rcutFactor 
)

get pruned 4-vector for a given subject (must be called after getGroupingExclusive)

Definition at line 82 of file ReclusterJets.cc.

84  {
85  if (isubjet >= exclusiveJets_.size()) {
86  throw cms::Exception("InvalidArgument", "getPrunedSubjetExclusive called for non-existing exclusive subjet");
87  }
88  return getPruned(exclusiveJets_[isubjet], zcut, rcutFactor);
89  }

References Exception, exclusiveJets_, getPruned(), and HLT_2018_cff::zcut.

Referenced by getPruned().

◆ getPrunedSubjetInclusive()

math::XYZTLorentzVector heppy::ReclusterJets::getPrunedSubjetInclusive ( unsigned int  isubjet,
double  zcut,
double  rcutFactor 
)

get pruned 4-vector for a given subject (must be called after getGroupingInclusive)

Definition at line 90 of file ReclusterJets.cc.

92  {
93  if (isubjet >= inclusiveJets_.size()) {
94  throw cms::Exception("InvalidArgument", "getPrunedSubjetInclusive called for non-existing inclusive subjet");
95  }
96  return getPruned(inclusiveJets_[isubjet], zcut, rcutFactor);
97  }

References Exception, getPruned(), inclusiveJets_, and HLT_2018_cff::zcut.

◆ makeP4s()

std::vector< math::XYZTLorentzVector > heppy::ReclusterJets::makeP4s ( const std::vector< fastjet::PseudoJet > &  jets)
private

Definition at line 47 of file ReclusterJets.cc.

47  {
48  std::vector<math::XYZTLorentzVector> JetObjectsAll;
49  for (const fastjet::PseudoJet &pj : jets) {
50  JetObjectsAll.push_back(LorentzVector(pj.px(), pj.py(), pj.pz(), pj.e()));
51  }
52  return JetObjectsAll;
53  }

References singleTopDQM_cfi::jets.

Referenced by getGrouping(), and getGroupingExclusive().

Member Data Documentation

◆ exclusiveJets_

std::vector<fastjet::PseudoJet> heppy::ReclusterJets::exclusiveJets_
private

Definition at line 60 of file ReclusterJets.h.

Referenced by getGroupingExclusive(), getPruned(), and getPrunedSubjetExclusive().

◆ fjClusterSeq_

ClusterSequencePtr heppy::ReclusterJets::fjClusterSeq_
private

Definition at line 58 of file ReclusterJets.h.

Referenced by getGrouping(), getGroupingExclusive(), getPruned(), and ReclusterJets().

◆ fjInputs_

std::vector<fastjet::PseudoJet> heppy::ReclusterJets::fjInputs_
private

Definition at line 51 of file ReclusterJets.h.

Referenced by ReclusterJets().

◆ inclusiveJets_

std::vector<fastjet::PseudoJet> heppy::ReclusterJets::inclusiveJets_
private

Definition at line 59 of file ReclusterJets.h.

Referenced by getGrouping(), and getPrunedSubjetInclusive().

◆ ktpower_

double heppy::ReclusterJets::ktpower_
private

Definition at line 53 of file ReclusterJets.h.

Referenced by ReclusterJets().

◆ rparam_

double heppy::ReclusterJets::rparam_
private

Definition at line 54 of file ReclusterJets.h.

Referenced by ReclusterJets().

heppy::ReclusterJets::LorentzVector
math::XYZTLorentzVector LorentzVector
Definition: ReclusterJets.h:21
objects
Definition: __init__.py:1
ptMin
constexpr float ptMin
Definition: PhotonIDValueMapProducer.cc:153
singleTopDQM_cfi.jets
jets
Definition: singleTopDQM_cfi.py:42
HLT_2018_cff.zcut
zcut
Definition: HLT_2018_cff.py:7345
EcalTangentSkim_cfg.o
o
Definition: EcalTangentSkim_cfg.py:36
heppy::ReclusterJets::fjInputs_
std::vector< fastjet::PseudoJet > fjInputs_
Definition: ReclusterJets.h:51
heppy::ReclusterJets::exclusiveJets_
std::vector< fastjet::PseudoJet > exclusiveJets_
Definition: ReclusterJets.h:60
heppy::ReclusterJets::fjClusterSeq_
ClusterSequencePtr fjClusterSeq_
Definition: ReclusterJets.h:58
fwrapper::jet_def
JetDefinition jet_def
Definition: fastjetfortran_madfks.cc:44
heppy::ReclusterJets::inclusiveJets_
std::vector< fastjet::PseudoJet > inclusiveJets_
Definition: ReclusterJets.h:59
heppy::ReclusterJets::rparam_
double rparam_
Definition: ReclusterJets.h:54
heppy::ReclusterJets::getPruned
LorentzVector getPruned(double zcut, double rcutFactor)
get pruned 4-vector
Definition: ReclusterJets.cc:75
BTaggingMonitoring_cff.njets
njets
Definition: BTaggingMonitoring_cff.py:10
metsig::jet
Definition: SignAlgoResolutions.h:47
LorentzVector
math::XYZTLorentzVector LorentzVector
Definition: HLTMuonMatchAndPlot.h:49
Exception
Definition: hltDiff.cc:246
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
heppy::ReclusterJets::makeP4s
std::vector< LorentzVector > makeP4s(const std::vector< fastjet::PseudoJet > &jets)
Definition: ReclusterJets.cc:47
heppy::ReclusterJets::getPrunedSubjetExclusive
LorentzVector getPrunedSubjetExclusive(unsigned int isubjet, double zcut, double rcutFactor)
get pruned 4-vector for a given subject (must be called after getGroupingExclusive)
Definition: ReclusterJets.cc:82
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
heppy::ReclusterJets::ktpower_
double ktpower_
Definition: ReclusterJets.h:53