CMS 3D CMS Logo

NjettinessAdder.cc
Go to the documentation of this file.
2 
4 
6  : src_(iConfig.getParameter<edm::InputTag>("src")),
7  src_token_(consumes<edm::View<reco::Jet>>(src_)),
8  Njets_(iConfig.getParameter<std::vector<unsigned>>("Njets")),
9  measureDefinition_(iConfig.getParameter<unsigned>("measureDefinition")),
10  beta_(iConfig.getParameter<double>("beta")),
11  R0_(iConfig.getParameter<double>("R0")),
12  Rcutoff_(iConfig.getParameter<double>("Rcutoff")),
13  axesDefinition_(iConfig.getParameter<unsigned>("axesDefinition")),
14  nPass_(iConfig.getParameter<int>("nPass")),
15  akAxesR0_(iConfig.getParameter<double>("akAxesR0")) {
16  edm::InputTag srcWeights = iConfig.getParameter<edm::InputTag>("srcWeights");
17  if (!srcWeights.label().empty())
19 
20  for (std::vector<unsigned>::const_iterator n = Njets_.begin(); n != Njets_.end(); ++n) {
21  std::ostringstream tauN_str;
22  tauN_str << "tau" << *n;
23 
24  produces<edm::ValueMap<float>>(tauN_str.str());
25  }
26 
27  // Get the measure definition
28  fastjet::contrib::NormalizedMeasure normalizedMeasure(beta_, R0_);
29  fastjet::contrib::UnnormalizedMeasure unnormalizedMeasure(beta_);
30  fastjet::contrib::OriginalGeometricMeasure geometricMeasure(beta_); // changed in 1.020
31  fastjet::contrib::NormalizedCutoffMeasure normalizedCutoffMeasure(beta_, R0_, Rcutoff_);
32  fastjet::contrib::UnnormalizedCutoffMeasure unnormalizedCutoffMeasure(beta_, Rcutoff_);
33  //fastjet::contrib::GeometricCutoffMeasure geometricCutoffMeasure (beta_,Rcutoff_); // removed in 1.020
34 
35  fastjet::contrib::MeasureDefinition const* measureDef = nullptr;
36  switch (measureDefinition_) {
38  measureDef = &unnormalizedMeasure;
39  break;
41  measureDef = &geometricMeasure;
42  break; // changed in 1.020
44  measureDef = &normalizedCutoffMeasure;
45  break;
47  measureDef = &unnormalizedCutoffMeasure;
48  break;
49  //case GeometricCutoffMeasure : measureDef = &geometricCutoffMeasure; break; // removed in 1.020
50  case NormalizedMeasure:
51  default:
52  measureDef = &normalizedMeasure;
53  break;
54  }
55 
56  // Get the axes definition
57  fastjet::contrib::KT_Axes kt_axes;
58  fastjet::contrib::CA_Axes ca_axes;
59  fastjet::contrib::AntiKT_Axes antikt_axes(akAxesR0_);
60  fastjet::contrib::WTA_KT_Axes wta_kt_axes;
61  fastjet::contrib::WTA_CA_Axes wta_ca_axes;
62  fastjet::contrib::OnePass_KT_Axes onepass_kt_axes;
63  fastjet::contrib::OnePass_CA_Axes onepass_ca_axes;
64  fastjet::contrib::OnePass_AntiKT_Axes onepass_antikt_axes(akAxesR0_);
65  fastjet::contrib::OnePass_WTA_KT_Axes onepass_wta_kt_axes;
66  fastjet::contrib::OnePass_WTA_CA_Axes onepass_wta_ca_axes;
67  fastjet::contrib::MultiPass_Axes multipass_axes(nPass_);
68 
69  fastjet::contrib::AxesDefinition const* axesDef = nullptr;
70  switch (axesDefinition_) {
71  case KT_Axes:
72  default:
73  axesDef = &kt_axes;
74  break;
75  case CA_Axes:
76  axesDef = &ca_axes;
77  break;
78  case AntiKT_Axes:
79  axesDef = &antikt_axes;
80  break;
81  case WTA_KT_Axes:
82  axesDef = &wta_kt_axes;
83  break;
84  case WTA_CA_Axes:
85  axesDef = &wta_ca_axes;
86  break;
87  case OnePass_KT_Axes:
88  axesDef = &onepass_kt_axes;
89  break;
90  case OnePass_CA_Axes:
91  axesDef = &onepass_ca_axes;
92  break;
94  axesDef = &onepass_antikt_axes;
95  break;
97  axesDef = &onepass_wta_kt_axes;
98  break;
100  axesDef = &onepass_wta_ca_axes;
101  break;
102  case MultiPass_Axes:
103  axesDef = &multipass_axes;
104  break;
105  };
106 
107  routine_ = std::unique_ptr<fastjet::contrib::Njettiness>(new fastjet::contrib::Njettiness(*axesDef, *measureDef));
108 }
109 
111  // read input collection
113  iEvent.getByToken(src_token_, jets);
114 
115  // Get Weights Collection
118 
119  for (std::vector<unsigned>::const_iterator n = Njets_.begin(); n != Njets_.end(); ++n) {
120  std::ostringstream tauN_str;
121  tauN_str << "tau" << *n;
122 
123  // prepare room for output
124  std::vector<float> tauN;
125  tauN.reserve(jets->size());
126 
127  for (typename edm::View<reco::Jet>::const_iterator jetIt = jets->begin(); jetIt != jets->end(); ++jetIt) {
128  edm::Ptr<reco::Jet> jetPtr = jets->ptrAt(jetIt - jets->begin());
129 
130  float t = getTau(*n, jetPtr);
131 
132  tauN.push_back(t);
133  }
134 
135  auto outT = std::make_unique<edm::ValueMap<float>>();
136  edm::ValueMap<float>::Filler fillerT(*outT);
137  fillerT.insert(jets, tauN.begin(), tauN.end());
138  fillerT.fill();
139 
140  iEvent.put(std::move(outT), tauN_str.str());
141  }
142 }
143 
144 float NjettinessAdder::getTau(unsigned num, const edm::Ptr<reco::Jet>& object) const {
145  std::vector<fastjet::PseudoJet> fjParticles;
146  for (unsigned k = 0; k < object->numberOfDaughters(); ++k) {
147  const reco::CandidatePtr& dp = object->daughterPtr(k);
148  if (dp.isNonnull() && dp.isAvailable()) {
149  // Here, the daughters are the "end" node, so this is a PFJet
150  if (dp->numberOfDaughters() == 0) {
151  if (object->isWeighted()) {
153  throw cms::Exception("MissingConstituentWeight")
154  << "ECFAdder: No weights (e.g. PUPPI) given for weighted jet collection" << std::endl;
155  float w = (*weightsHandle_)[dp];
156  fjParticles.push_back(fastjet::PseudoJet(dp->px() * w, dp->py() * w, dp->pz() * w, dp->energy() * w));
157  } else
158  fjParticles.push_back(fastjet::PseudoJet(dp->px(), dp->py(), dp->pz(), dp->energy()));
159  } else { // Otherwise, this is a BasicJet, so you need to descend further.
160  auto subjet = dynamic_cast<reco::Jet const*>(dp.get());
161  for (unsigned l = 0; l < subjet->numberOfDaughters(); ++l) {
162  if (subjet != nullptr) {
163  const reco::CandidatePtr& ddp = subjet->daughterPtr(l);
164  if (subjet->isWeighted()) {
166  throw cms::Exception("MissingConstituentWeight")
167  << "ECFAdder: No weights (e.g. PUPPI) given for weighted jet collection" << std::endl;
168  float w = (*weightsHandle_)[ddp];
169  fjParticles.push_back(fastjet::PseudoJet(ddp->px() * w, ddp->py() * w, ddp->pz() * w, ddp->energy() * w));
170  } else
171  fjParticles.push_back(fastjet::PseudoJet(ddp->px(), ddp->py(), ddp->pz(), ddp->energy()));
172  } else {
173  edm::LogWarning("MissingJetConstituent")
174  << "BasicJet constituent required for N-jettiness computation is missing!";
175  }
176  }
177  } // end if basic jet
178  } // end if daughter pointer is nonnull and available
179  else
180  edm::LogWarning("MissingJetConstituent") << "Jet constituent required for N-jettiness computation is missing!";
181  }
182 
183  return routine_->getTau(num, fjParticles);
184 }
185 
NjettinessAdder::KT_Axes
Definition: NjettinessAdder.h:26
NjettinessAdder::OnePass_WTA_KT_Axes
Definition: NjettinessAdder.h:35
resolutioncreator_cfi.object
object
Definition: resolutioncreator_cfi.py:4
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
NjettinessAdder::routine_
std::unique_ptr< fastjet::contrib::Njettiness > routine_
Definition: NjettinessAdder.h:68
sistrip::View
View
Definition: ConstantsForView.h:26
NjettinessAdder::OnePass_WTA_CA_Axes
Definition: NjettinessAdder.h:36
edm
HLT enums.
Definition: AlignableModifier.h:19
NjettinessAdder::OriginalGeometricMeasure
Definition: NjettinessAdder.h:19
NjettinessAdder::CA_Axes
Definition: NjettinessAdder.h:27
NjettinessAdder::OnePass_CA_Axes
Definition: NjettinessAdder.h:33
nJettinessAdder_cfi.Njettiness
Njettiness
Definition: nJettinessAdder_cfi.py:4
singleTopDQM_cfi.jets
jets
Definition: singleTopDQM_cfi.py:42
NjettinessAdder::nPass_
int nPass_
Definition: NjettinessAdder.h:62
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
NjettinessAdder::OnePass_AntiKT_Axes
Definition: NjettinessAdder.h:34
edm::Handle
Definition: AssociativeIterator.h:50
NjettinessAdder::produce
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: NjettinessAdder.cc:110
NjettinessAdder::NormalizedCutoffMeasure
Definition: NjettinessAdder.h:20
NjettinessAdder::AntiKT_Axes
Definition: NjettinessAdder.h:28
MakerMacros.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
Jet
Definition: Jet.py:1
NjettinessAdder::NormalizedMeasure
Definition: NjettinessAdder.h:17
Calorimetry_cff.dp
dp
Definition: Calorimetry_cff.py:157
NjettinessAdder::measureDefinition_
unsigned measureDefinition_
Definition: NjettinessAdder.h:55
w
const double w
Definition: UKUtility.cc:23
edm::EDGetTokenT::isUninitialized
bool isUninitialized() const
Definition: EDGetToken.h:70
dqmdumpme.k
k
Definition: dqmdumpme.py:60
OrderedSet.t
t
Definition: OrderedSet.py:90
HLT_2018_cff.srcWeights
srcWeights
Definition: HLT_2018_cff.py:7335
edm::LogWarning
Definition: MessageLogger.h:141
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSet
Definition: ParameterSet.h:36
NjettinessAdder::Rcutoff_
double Rcutoff_
Definition: NjettinessAdder.h:58
NjettinessAdder::beta_
double beta_
Definition: NjettinessAdder.h:56
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
NjettinessAdder::akAxesR0_
double akAxesR0_
Definition: NjettinessAdder.h:63
edm::EventSetup
Definition: EventSetup.h:57
NjettinessAdder::Njets_
std::vector< unsigned > Njets_
Definition: NjettinessAdder.h:52
NjettinessAdder::UnnormalizedMeasure
Definition: NjettinessAdder.h:18
EgammaValidation_cff.num
num
Definition: EgammaValidation_cff.py:34
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:193
NjettinessAdder::weightsHandle_
edm::ValueMap< float > const * weightsHandle_
Definition: NjettinessAdder.h:66
NjettinessAdder::axesDefinition_
unsigned axesDefinition_
Definition: NjettinessAdder.h:61
edm::Ptr< reco::Jet >
NjettinessAdder::NjettinessAdder
NjettinessAdder(const edm::ParameterSet &iConfig)
Definition: NjettinessAdder.cc:5
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
NjettinessAdder::WTA_CA_Axes
Definition: NjettinessAdder.h:30
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
edm::ValueMap< float >
NjettinessAdder.h
NjettinessAdder::input_weights_token_
edm::EDGetTokenT< edm::ValueMap< float > > input_weights_token_
Definition: NjettinessAdder.h:65
NjettinessAdder::UnnormalizedCutoffMeasure
Definition: NjettinessAdder.h:21
NjettinessAdder
Definition: NjettinessAdder.h:14
NjettinessAdder::R0_
double R0_
Definition: NjettinessAdder.h:57
NjettinessAdder::src_token_
edm::EDGetTokenT< edm::View< reco::Jet > > src_token_
Definition: NjettinessAdder.h:51
edm::View::const_iterator
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
cms::Exception
Definition: Exception.h:70
edm::helper::Filler
Definition: ValueMap.h:22
NjettinessAdder::WTA_KT_Axes
Definition: NjettinessAdder.h:29
edm::Event
Definition: Event.h:73
NjettinessAdder::MultiPass_Axes
Definition: NjettinessAdder.h:38
edm::InputTag
Definition: InputTag.h:15
NjettinessAdder::OnePass_KT_Axes
Definition: NjettinessAdder.h:32
NjettinessAdder::getTau
float getTau(unsigned num, const edm::Ptr< reco::Jet > &object) const
Definition: NjettinessAdder.cc:144