CMS 3D CMS Logo

FastjetJetProducer.cc
Go to the documentation of this file.
1 //
3 // FastjetJetProducer
4 // ------------------
5 //
6 // 04/21/2009 Philipp Schieferdecker <philipp.schieferdecker@cern.ch>
8 
12 
21 
27 
30 
31 #include "fastjet/SISConePlugin.hh"
32 #include "fastjet/CMSIterativeConePlugin.hh"
33 #include "fastjet/ATLASConePlugin.hh"
34 #include "fastjet/CDFMidPointPlugin.hh"
35 #include "fastjet/tools/Filter.hh"
36 #include "fastjet/tools/Pruner.hh"
37 #include "fastjet/tools/MassDropTagger.hh"
38 #include "fastjet/contrib/SoftDrop.hh"
39 #include "fastjet/tools/JetMedianBackgroundEstimator.hh"
40 #include "fastjet/tools/GridMedianBackgroundEstimator.hh"
41 #include "fastjet/tools/Subtractor.hh"
42 #include "fastjet/contrib/ConstituentSubtractor.hh"
44 
45 #include <iostream>
46 #include <memory>
47 #include <algorithm>
48 #include <limits>
49 #include <cmath>
50 //#include <fstream>
51 
52 using namespace std;
53 using namespace edm;
54 
56 // construction / destruction
58 
59 //______________________________________________________________________________
61  useOnlyVertexTracks_ = iConfig.getParameter<bool>("UseOnlyVertexTracks");
62  useOnlyOnePV_ = iConfig.getParameter<bool>("UseOnlyOnePV");
63  dzTrVtxMax_ = iConfig.getParameter<double>("DzTrVtxMax");
64  dxyTrVtxMax_ = iConfig.getParameter<double>("DxyTrVtxMax");
65  minVtxNdof_ = iConfig.getParameter<int>("MinVtxNdof");
66  maxVtxZ_ = iConfig.getParameter<double>("MaxVtxZ");
67 
68  useMassDropTagger_ = iConfig.getParameter<bool>("useMassDropTagger");
69  muCut_ = iConfig.getParameter<double>("muCut");
70  yCut_ = iConfig.getParameter<double>("yCut");
71 
72  useFiltering_ = iConfig.getParameter<bool>("useFiltering");
73  rFilt_ = iConfig.getParameter<double>("rFilt");
74  nFilt_ = iConfig.getParameter<int>("nFilt");
75  useDynamicFiltering_ = iConfig.getParameter<bool>("useDynamicFiltering");
77  rFiltDynamic_ = std::make_shared<DynamicRfilt>(rFilt_, rFiltFactor_);
78  rFiltFactor_ = iConfig.getParameter<double>("rFiltFactor");
79 
80  useTrimming_ = iConfig.getParameter<bool>("useTrimming");
81  trimPtFracMin_ = iConfig.getParameter<double>("trimPtFracMin");
82 
83  usePruning_ = iConfig.getParameter<bool>("usePruning");
84  zCut_ = iConfig.getParameter<double>("zcut");
85  RcutFactor_ = iConfig.getParameter<double>("rcut_factor");
86  useKtPruning_ = iConfig.getParameter<bool>("useKtPruning");
87 
88  useCMSBoostedTauSeedingAlgorithm_ = iConfig.getParameter<bool>("useCMSBoostedTauSeedingAlgorithm");
89  subjetPtMin_ = iConfig.getParameter<double>("subjetPtMin");
90  muMin_ = iConfig.getParameter<double>("muMin");
91  muMax_ = iConfig.getParameter<double>("muMax");
92  yMin_ = iConfig.getParameter<double>("yMin");
93  yMax_ = iConfig.getParameter<double>("yMax");
94  dRMin_ = iConfig.getParameter<double>("dRMin");
95  dRMax_ = iConfig.getParameter<double>("dRMax");
96  maxDepth_ = iConfig.getParameter<int>("maxDepth");
97 
98  useConstituentSubtraction_ = iConfig.getParameter<bool>("useConstituentSubtraction");
99  csRho_EtaMax_ = iConfig.getParameter<double>("csRho_EtaMax");
100  csRParam_ = iConfig.getParameter<double>("csRParam");
101 
102  useSoftDrop_ = iConfig.getParameter<bool>("useSoftDrop");
103  zCut_ = iConfig.getParameter<double>("zcut");
104  beta_ = iConfig.getParameter<double>("beta");
105  R0_ = iConfig.getParameter<double>("R0");
106 
107  correctShape_ = iConfig.getParameter<bool>("correctShape");
108  gridMaxRapidity_ = iConfig.getParameter<double>("gridMaxRapidity");
109  gridSpacing_ = iConfig.getParameter<double>("gridSpacing");
110 
112  consumes<edm::View<reco::RecoChargedRefCandidate>>(iConfig.getParameter<edm::InputTag>("src"));
113 
116  useExplicitGhosts_ = true;
117 
119 
120  if ((useMassDropTagger_) && ((muCut_ == -1) || (yCut_ == -1)))
121  throw cms::Exception("useMassDropTagger")
122  << "Parameters muCut and/or yCut for Mass Drop are not defined." << std::endl;
123 
124  if ((useFiltering_) && ((rFilt_ == -1) || (nFilt_ == -1))) {
125  throw cms::Exception("useFiltering") << "Parameters rFilt and/or nFilt for Filtering are not defined." << std::endl;
126  if ((useDynamicFiltering_) && (rFiltFactor_ == -1))
127  throw cms::Exception("useDynamicFiltering")
128  << "Parameters rFiltFactor for DynamicFiltering is not defined." << std::endl;
129  }
130 
131  if ((useTrimming_) && ((rFilt_ == -1) || (trimPtFracMin_ == -1)))
132  throw cms::Exception("useTrimming") << "Parameters rFilt and/or trimPtFracMin for Trimming are not defined."
133  << std::endl;
134 
135  if ((usePruning_) && ((zCut_ == -1) || (RcutFactor_ == -1) || (nFilt_ == -1)))
136  throw cms::Exception("usePruning") << "Parameters zCut and/or RcutFactor and/or nFilt for Pruning are not defined."
137  << std::endl;
138 
140  ((subjetPtMin_ == -1) || (maxDepth_ == -1) || (muMin_ == -1) || (muMax_ == -1) || (yMin_ == -1) ||
141  (yMax_ == -1) || (dRMin_ == -1) || (dRMax_ == -1)))
142  throw cms::Exception("useCMSBoostedTauSeedingAlgorithm")
143  << "Parameters subjetPtMin, muMin, muMax, yMin, yMax, dRmin, dRmax, maxDepth for CMSBoostedTauSeedingAlgorithm "
144  "are not defined."
145  << std::endl;
146 
147  if (useConstituentSubtraction_ && (fjAreaDefinition_.get() == nullptr))
148  throw cms::Exception("AreaMustBeSet")
149  << "Logic error. The area definition must be set if you use constituent subtraction." << std::endl;
150 
151  if ((useConstituentSubtraction_) && ((csRho_EtaMax_ == -1) || (csRParam_ == -1)))
152  throw cms::Exception("useConstituentSubtraction")
153  << "Parameters csRho_EtaMax and/or csRParam for ConstituentSubtraction are not defined." << std::endl;
154 
155  if (useSoftDrop_ && usePruning_)
156  throw cms::Exception("PruningAndSoftDrop")
157  << "Logic error. Soft drop is a generalized pruning, do not run them together." << std::endl;
158 
159  if ((useSoftDrop_) && ((zCut_ == -1) || (beta_ == -1) || (R0_ == -1)))
160  throw cms::Exception("useSoftDrop") << "Parameters zCut and/or beta and/or R0 for SoftDrop are not defined."
161  << std::endl;
162 
163  if ((correctShape_) && ((gridMaxRapidity_ == -1) || (gridSpacing_ == -1)))
164  throw cms::Exception("correctShape")
165  << "Parameters gridMaxRapidity and/or gridSpacing for SoftDrop are not defined." << std::endl;
166 }
167 
168 //______________________________________________________________________________
170 
172 // implementation of member functions
174 
176  // for everything but track jets
177  if (!makeTrackJet(jetTypeE)) {
178  // use the default production from one collection
180 
181  } else { // produce trackjets from tracks grouped per primary vertex
182 
183  produceTrackJets(iEvent, iSetup);
184  }
185 
186  // fjClusterSeq_ retains quite a lot of memory - about 1 to 7Mb at 200 pileup
187  // depending on the exact configuration; and there are 24 FastjetJetProducers in the
188  // sequence so this adds up to about 60 Mb. It's allocated every time runAlgorithm
189  // is called, so safe to delete here.
190  fjClusterSeq_.reset();
191 }
192 
194  // read in the track candidates
196  iEvent.getByToken(input_chrefcand_token_, inputsHandle);
197 
198  // make collection with pointers so we can play around with it
199  std::vector<edm::Ptr<reco::RecoChargedRefCandidate>> allInputs;
200  std::vector<edm::Ptr<reco::Candidate>> origInputs;
201  for (size_t i = 0; i < inputsHandle->size(); ++i) {
202  allInputs.push_back(inputsHandle->ptrAt(i));
203  origInputs.push_back(inputsHandle->ptrAt(i));
204  }
205 
206  // read in the PV collection
209  // define the overall output jet container
210  auto jets = std::make_unique<std::vector<reco::TrackJet>>();
211 
212  // loop over the good vertices, clustering for each vertex separately
213  for (reco::VertexCollection::const_iterator itVtx = pvCollection->begin(); itVtx != pvCollection->end(); ++itVtx) {
214  if (itVtx->isFake() || itVtx->ndof() < minVtxNdof_ || fabs(itVtx->z()) > maxVtxZ_)
215  continue;
216 
217  // clear the intermediate containers
218  inputs_.clear();
219  fjInputs_.clear();
220  fjJets_.clear();
221 
222  // if only vertex-associated tracks should be used
223  if (useOnlyVertexTracks_) {
224  // loop over the tracks associated to the vertex
225  for (reco::Vertex::trackRef_iterator itTr = itVtx->tracks_begin(); itTr != itVtx->tracks_end(); ++itTr) {
226  // whether a match was found in the track candidate input
227  bool found = false;
228  // loop over input track candidates
229  for (std::vector<edm::Ptr<reco::RecoChargedRefCandidate>>::iterator itIn = allInputs.begin();
230  itIn != allInputs.end();
231  ++itIn) {
232  // match the input track candidate to the track from the vertex
233  reco::TrackRef trref(itTr->castTo<reco::TrackRef>());
234  // check if the tracks match
235  if ((*itIn)->track() == trref) {
236  found = true;
237  // add this track candidate to the input for clustering
238  inputs_.push_back(*itIn);
239  // erase the track candidate from the total list of input, so we don't reuse it later
240  allInputs.erase(itIn);
241  // found the candidate track corresponding to the vertex track, so stop the loop
242  break;
243  } // end if match found
244  } // end loop over input tracks
245  // give an info message in case no match is found (can happen if candidates are subset of tracks used for clustering)
246  if (!found)
247  edm::LogInfo("FastjetTrackJetProducer")
248  << "Ignoring a track at vertex which is not in input track collection!";
249  } // end loop over tracks associated to vertex
250  // if all inpt track candidates should be used
251  } else {
252  // loop over input track candidates
253  for (std::vector<edm::Ptr<reco::RecoChargedRefCandidate>>::iterator itIn = allInputs.begin();
254  itIn != allInputs.end();
255  ++itIn) {
256  // check if the track is close enough to the vertex
257  float dz = (*itIn)->track()->dz(itVtx->position());
258  float dxy = (*itIn)->track()->dxy(itVtx->position());
259  if (fabs(dz) > dzTrVtxMax_)
260  continue;
261  if (fabs(dxy) > dxyTrVtxMax_)
262  continue;
263  bool closervtx = false;
264  // now loop over the good vertices a second time
265  for (reco::VertexCollection::const_iterator itVtx2 = pvCollection->begin(); itVtx2 != pvCollection->end();
266  ++itVtx2) {
267  if (itVtx->isFake() || itVtx->ndof() < minVtxNdof_ || fabs(itVtx->z()) > maxVtxZ_)
268  continue;
269  // and check this track is closer to any other vertex (if more than 1 vertex considered)
270  if (!useOnlyOnePV_ && itVtx != itVtx2 && fabs((*itIn)->track()->dz(itVtx2->position())) < fabs(dz)) {
271  closervtx = true;
272  break; // 1 closer vertex makes the track already not matched, so break
273  }
274  }
275  // don't add this track if another vertex is found closer
276  if (closervtx)
277  continue;
278  // add this track candidate to the input for clustering
279  inputs_.push_back(*itIn);
280  // erase the track candidate from the total list of input, so we don't reuse it later
281  allInputs.erase(itIn);
282  // take a step back in the loop since we just erased
283  --itIn;
284  }
285  }
286 
287  // convert candidates in inputs_ to fastjet::PseudoJets in fjInputs_
288  fjInputs_.reserve(inputs_.size());
289  inputTowers();
290  LogDebug("FastjetTrackJetProducer") << "Inputted towers\n";
291 
292  // run algorithm, using fjInputs_, modifying fjJets_ and allocating fjClusterSeq_
293  runAlgorithm(iEvent, iSetup);
294  LogDebug("FastjetTrackJetProducer") << "Ran algorithm\n";
295 
296  // convert our jets and add to the overall jet vector
297  for (unsigned int ijet = 0; ijet < fjJets_.size(); ++ijet) {
298  // get the constituents from fastjet
299  std::vector<fastjet::PseudoJet> fjConstituents = sorted_by_pt(fjClusterSeq_->constituents(fjJets_[ijet]));
300  // convert them to CandidatePtr vector
301  std::vector<reco::CandidatePtr> constituents = getConstituents(fjConstituents);
302  // fill the trackjet
304  // write the specifics to the jet (simultaneously sets 4-vector, vertex).
306  jet,
307  reco::Particle::LorentzVector(fjJets_[ijet].px(), fjJets_[ijet].py(), fjJets_[ijet].pz(), fjJets_[ijet].E()),
308  vertex_,
309  constituents,
310  iSetup);
311  jet.setJetArea(0);
312  jet.setPileup(0);
313  jet.setPrimaryVertex(edm::Ref<reco::VertexCollection>(pvCollection, (int)(itVtx - pvCollection->begin())));
314  jet.setVertex(itVtx->position());
315  jets->push_back(jet);
316  }
317 
318  if (useOnlyOnePV_)
319  break; // stop vertex loop if only one vertex asked for
320  } // end loop over vertices
321 
322  // put the jets in the collection
323  LogDebug("FastjetTrackJetProducer") << "Put " << jets->size() << " jets in the event.\n";
324  iEvent.put(std::move(jets));
325 
326  // Clear the work vectors so that memory is free for other modules.
327  // Use the trick of swapping with an empty vector so that the memory
328  // is actually given back rather than silently kept.
329  decltype(fjInputs_)().swap(fjInputs_);
330  decltype(fjJets_)().swap(fjJets_);
331  decltype(inputs_)().swap(inputs_);
332 }
333 
334 //______________________________________________________________________________
336  // run algorithm
337  /*
338  fjInputs_.clear();
339  double px, py , pz, E;
340  string line;
341  std::ifstream fin("dump3.txt");
342  while (getline(fin, line)){
343  if (line == "#END") break;
344  if (line.substr(0,1) == "#") {continue;}
345  istringstream istr(line);
346  istr >> px >> py >> pz >> E;
347  // create a fastjet::PseudoJet with these components and put it onto
348  // back of the input_particles vector
349  fastjet::PseudoJet j(px,py,pz,E);
350  //if ( fabs(j.rap()) < inputEtaMax )
351  fjInputs_.push_back(fastjet::PseudoJet(px,py,pz,E));
352  }
353  fin.close();
354  */
355 
356  if (!doAreaFastjet_ && !doRhoFastjet_) {
357  fjClusterSeq_ = std::make_shared<fastjet::ClusterSequence>(fjInputs_, *fjJetDefinition_);
358  } else if (voronoiRfact_ <= 0) {
359  fjClusterSeq_ =
360  ClusterSequencePtr(new fastjet::ClusterSequenceArea(fjInputs_, *fjJetDefinition_, *fjAreaDefinition_));
361  } else {
363  new fastjet::ClusterSequenceVoronoiArea(fjInputs_, *fjJetDefinition_, fastjet::VoronoiAreaSpec(voronoiRfact_)));
364  }
365 
368  fjJets_ = fastjet::sorted_by_pt(fjClusterSeq_->inclusive_jets(jetPtMin_));
369  } else {
370  fjJets_.clear();
371 
372  transformer_coll transformers;
373 
374  std::vector<fastjet::PseudoJet> tempJets = fastjet::sorted_by_pt(fjClusterSeq_->inclusive_jets(jetPtMin_));
375 
376  unique_ptr<fastjet::JetMedianBackgroundEstimator> bge_rho;
378  fastjet::Selector rho_range = fastjet::SelectorAbsRapMax(csRho_EtaMax_);
379  bge_rho = std::make_unique<fastjet::JetMedianBackgroundEstimator>(
380  rho_range, fastjet::JetDefinition(fastjet::kt_algorithm, csRParam_), *fjAreaDefinition_);
381  bge_rho->set_particles(fjInputs_);
382  fastjet::contrib::ConstituentSubtractor* constituentSubtractor =
383  new fastjet::contrib::ConstituentSubtractor(bge_rho.get());
384 
385  transformers.push_back(transformer_ptr(constituentSubtractor));
386  };
387  if (useMassDropTagger_) {
388  fastjet::MassDropTagger* md_tagger = new fastjet::MassDropTagger(muCut_, yCut_);
389  transformers.push_back(transformer_ptr(md_tagger));
390  }
392  fastjet::contrib::CMSBoostedTauSeedingAlgorithm* tau_tagger = new fastjet::contrib::CMSBoostedTauSeedingAlgorithm(
394  transformers.push_back(transformer_ptr(tau_tagger));
395  }
396  if (useTrimming_) {
397  fastjet::Filter* trimmer = new fastjet::Filter(fastjet::JetDefinition(fastjet::kt_algorithm, rFilt_),
398  fastjet::SelectorPtFractionMin(trimPtFracMin_));
399  transformers.push_back(transformer_ptr(trimmer));
400  }
401  if ((useFiltering_) && (!useDynamicFiltering_)) {
402  fastjet::Filter* filter = new fastjet::Filter(fastjet::JetDefinition(fastjet::cambridge_algorithm, rFilt_),
403  fastjet::SelectorNHardest(nFilt_));
404  transformers.push_back(transformer_ptr(filter));
405  }
406 
407  if ((usePruning_) && (!useKtPruning_)) {
408  fastjet::Pruner* pruner = new fastjet::Pruner(fastjet::cambridge_algorithm, zCut_, RcutFactor_);
409  transformers.push_back(transformer_ptr(pruner));
410  }
411 
412  if (useDynamicFiltering_) {
414  new fastjet::Filter(fastjet::Filter(&*rFiltDynamic_, fastjet::SelectorNHardest(nFilt_)));
415  transformers.push_back(transformer_ptr(filter));
416  }
417 
418  if (useKtPruning_) {
419  fastjet::Pruner* pruner = new fastjet::Pruner(fastjet::kt_algorithm, zCut_, RcutFactor_);
420  transformers.push_back(transformer_ptr(pruner));
421  }
422 
423  if (useSoftDrop_) {
424  fastjet::contrib::SoftDrop* sd = new fastjet::contrib::SoftDrop(beta_, zCut_, R0_);
425  transformers.push_back(transformer_ptr(sd));
426  }
427 
428  unique_ptr<fastjet::Subtractor> subtractor;
429  unique_ptr<fastjet::GridMedianBackgroundEstimator> bge_rho_grid;
430  if (correctShape_) {
431  bge_rho_grid = std::make_unique<fastjet::GridMedianBackgroundEstimator>(gridMaxRapidity_, gridSpacing_);
432  bge_rho_grid->set_particles(fjInputs_);
433  subtractor = std::make_unique<fastjet::Subtractor>(bge_rho_grid.get());
434  subtractor->set_use_rho_m();
435  //subtractor->use_common_bge_for_rho_and_rhom(true);
436  }
437 
438  for (std::vector<fastjet::PseudoJet>::const_iterator ijet = tempJets.begin(), ijetEnd = tempJets.end();
439  ijet != ijetEnd;
440  ++ijet) {
441  fastjet::PseudoJet transformedJet = *ijet;
442  bool passed = true;
443  for (transformer_coll::const_iterator itransf = transformers.begin(), itransfEnd = transformers.end();
444  itransf != itransfEnd;
445  ++itransf) {
446  if (transformedJet != 0) {
447  transformedJet = (**itransf)(transformedJet);
448  } else {
449  passed = false;
450  }
451  }
452 
453  if (correctShape_) {
454  transformedJet = (*subtractor)(transformedJet);
455  }
456 
457  if (passed) {
458  fjJets_.push_back(transformedJet);
459  }
460  }
461  }
462 }
463 
464 //______________________________________________________________________________
466  edm::ParameterSetDescription descFastjetJetProducer;
468  fillDescriptionsFromFastJetProducer(descFastjetJetProducer);
472  descFastjetJetProducer.add<string>("jetCollInstanceName", "");
473  descFastjetJetProducer.add<bool>("sumRecHits", false);
474 
476  descriptions.add("FastjetJetProducer", descFastjetJetProducer);
477 }
478 
480  desc.add<bool>("useMassDropTagger", false);
481  desc.add<bool>("useFiltering", false);
482  desc.add<bool>("useDynamicFiltering", false);
483  desc.add<bool>("useTrimming", false);
484  desc.add<bool>("usePruning", false);
485  desc.add<bool>("useCMSBoostedTauSeedingAlgorithm", false);
486  desc.add<bool>("useKtPruning", false);
487  desc.add<bool>("useConstituentSubtraction", false);
488  desc.add<bool>("useSoftDrop", false);
489  desc.add<bool>("correctShape", false);
490  desc.add<bool>("UseOnlyVertexTracks", false);
491  desc.add<bool>("UseOnlyOnePV", false);
492  desc.add<double>("muCut", -1.0);
493  desc.add<double>("yCut", -1.0);
494  desc.add<double>("rFilt", -1.0);
495  desc.add<double>("rFiltFactor", -1.0);
496  desc.add<double>("trimPtFracMin", -1.0);
497  desc.add<double>("zcut", -1.0);
498  desc.add<double>("rcut_factor", -1.0);
499  desc.add<double>("csRho_EtaMax", -1.0);
500  desc.add<double>("csRParam", -1.0);
501  desc.add<double>("beta", -1.0);
502  desc.add<double>("R0", -1.0);
503  desc.add<double>("gridMaxRapidity", -1.0); // For fixed-grid rho
504  desc.add<double>("gridSpacing", -1.0); // For fixed-grid rho
505  desc.add<double>("DzTrVtxMax", 999999.);
506  desc.add<double>("DxyTrVtxMax", 999999.);
507  desc.add<double>("MaxVtxZ", 15.0);
508  desc.add<double>("subjetPtMin", -1.0);
509  desc.add<double>("muMin", -1.0);
510  desc.add<double>("muMax", -1.0);
511  desc.add<double>("yMin", -1.0);
512  desc.add<double>("yMax", -1.0);
513  desc.add<double>("dRMin", -1.0);
514  desc.add<double>("dRMax", -1.0);
515  desc.add<int>("maxDepth", -1);
516  desc.add<int>("nFilt", -1);
517  desc.add<int>("MinVtxNdof", 5);
518 }
519 
521 // define as cmssw plugin
523 
ConfigurationDescriptions.h
reco::Vertex::trackRef_iterator
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
Definition: Vertex.h:38
FastjetJetProducer::maxDepth_
int maxDepth_
for CMSBoostedTauSeedingAlgorithm : max dR
Definition: FastjetJetProducer.h:111
VirtualJetProducer::produce
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: VirtualJetProducer.cc:264
CaloJetCollection.h
GenJetCollection.h
FastjetJetProducer::correctShape_
bool correctShape_
Soft drop.
Definition: FastjetJetProducer.h:87
FastjetJetProducer::useKtPruning_
bool useKtPruning_
algorithm for seeding reconstruction of boosted Taus (similar to mass-drop tagging)
Definition: FastjetJetProducer.h:84
Handle.h
reco::writeSpecific
void writeSpecific(reco::CaloJet &jet, reco::Particle::LorentzVector const &p4, reco::Particle::Point const &point, std::vector< reco::CandidatePtr > const &constituents, edm::EventSetup const &c)
Definition: JetSpecific.cc:34
mps_fire.i
i
Definition: mps_fire.py:428
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
FastjetJetProducer::transformer_ptr
std::unique_ptr< transformer > transformer_ptr
Definition: FastjetJetProducer.h:45
MessageLogger.h
ESHandle.h
FastjetJetProducer::transformer_coll
std::vector< transformer_ptr > transformer_coll
Definition: FastjetJetProducer.h:46
FastjetJetProducer::produceTrackJets
virtual void produceTrackJets(edm::Event &iEvent, const edm::EventSetup &iSetup)
Definition: FastjetJetProducer.cc:193
FastjetJetProducer::useSoftDrop_
bool useSoftDrop_
constituent subtraction technique
Definition: FastjetJetProducer.h:86
FastjetJetProducer::muMax_
double muMax_
for CMSBoostedTauSeedingAlgorithm : min mass-drop
Definition: FastjetJetProducer.h:106
multPhiCorr_741_25nsDY_cfi.py
py
Definition: multPhiCorr_741_25nsDY_cfi.py:12
VirtualJetProducer::ClusterSequencePtr
std::shared_ptr< fastjet::ClusterSequence > ClusterSequencePtr
Definition: VirtualJetProducer.h:73
edm
HLT enums.
Definition: AlignableModifier.h:19
FastjetJetProducer::csRho_EtaMax_
double csRho_EtaMax_
for pruning: constituent dR * pt/2m < rcut_factor
Definition: FastjetJetProducer.h:97
edm::swap
void swap(Association< C > &lhs, Association< C > &rhs)
Definition: Association.h:117
FastjetJetProducer::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: FastjetJetProducer.cc:465
PFJetCollection.h
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
VirtualJetProducer::jetTypeE
JetType::Type jetTypeE
Definition: VirtualJetProducer.h:54
FastjetJetProducer::nFilt_
int nFilt_
for dynamic filtering radius (as in arXiv:0802.2470)
Definition: FastjetJetProducer.h:93
BasicJetCollection.h
singleTopDQM_cfi.jets
jets
Definition: singleTopDQM_cfi.py:42
FastjetJetProducer::dRMin_
double dRMin_
for CMSBoostedTauSeedingAlgorithm : max asymmetry
Definition: FastjetJetProducer.h:109
FastjetJetProducer::~FastjetJetProducer
~FastjetJetProducer() override
Definition: FastjetJetProducer.cc:169
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
FastjetJetProducer::rFilt_
double rFilt_
for mass-drop tagging, symmetry cut: min(pt1^2,pt2^2) * dR(1,2) / mjet > ycut
Definition: FastjetJetProducer.h:90
FastjetJetProducer::dzTrVtxMax_
float dzTrVtxMax_
Definition: FastjetJetProducer.h:72
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
edm::Handle
Definition: AssociativeIterator.h:50
FastjetJetProducer::useDynamicFiltering_
bool useDynamicFiltering_
Jet filtering technique.
Definition: FastjetJetProducer.h:80
VirtualJetProducer::voronoiRfact_
double voronoiRfact_
Definition: VirtualJetProducer.h:170
VirtualJetProducer::verbosity_
int verbosity_
Definition: VirtualJetProducer.h:207
VirtualJetProducer::vertex_
reco::Particle::Point vertex_
Definition: VirtualJetProducer.h:184
VirtualJetProducer::fjClusterSeq_
ClusterSequencePtr fjClusterSeq_
Definition: VirtualJetProducer.h:185
reco::Particle::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21
FastjetJetProducer::yMin_
double yMin_
for CMSBoostedTauSeedingAlgorithm : max mass-drop
Definition: FastjetJetProducer.h:107
reco::TrackJet
Jets made out of tracks.
Definition: TrackJet.h:24
edm::Ref< TrackCollection >
CandidateFwd.h
MakerMacros.h
FastjetJetProducer::dxyTrVtxMax_
float dxyTrVtxMax_
Definition: FastjetJetProducer.h:73
FastjetJetProducer::R0_
double R0_
for soft drop : beta (angular exponent)
Definition: FastjetJetProducer.h:100
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
FastjetJetProducer::rFiltFactor_
double rFiltFactor_
for dynamic filtering radius (as in arXiv:0802.2470)
Definition: FastjetJetProducer.h:92
FastjetJetProducer::trimPtFracMin_
double trimPtFracMin_
for filtering, pruning: number of subjets expected
Definition: FastjetJetProducer.h:94
LeafCandidate.h
VirtualJetProducer
Definition: VirtualJetProducer.h:35
anotherprimaryvertexanalyzer_cfi.pvCollection
pvCollection
Definition: anotherprimaryvertexanalyzer_cfi.py:4
ParameterSetDescription.h
ALCARECOTkAlBeamHalo_cff.filter
filter
Definition: ALCARECOTkAlBeamHalo_cff.py:27
FastjetJetProducer::fillDescriptionsFromFastJetProducer
static void fillDescriptionsFromFastJetProducer(edm::ParameterSetDescription &desc)
Definition: FastjetJetProducer.cc:479
FastjetJetProducer::useFiltering_
bool useFiltering_
Mass-drop tagging for boosted Higgs.
Definition: FastjetJetProducer.h:79
VirtualJetProducer::doRhoFastjet_
bool doRhoFastjet_
Definition: VirtualJetProducer.h:167
CaloGeometryRecord.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
VirtualJetProducer::inputs_
std::vector< edm::Ptr< reco::Candidate > > inputs_
Definition: VirtualJetProducer.h:183
FastjetJetProducer::useConstituentSubtraction_
bool useConstituentSubtraction_
Use Kt clustering algorithm for pruning (default is Cambridge/Aachen)
Definition: FastjetJetProducer.h:85
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:223
edm::ParameterSet
Definition: ParameterSet.h:47
FastjetJetProducer::yMax_
double yMax_
for CMSBoostedTauSeedingAlgorithm : min asymmetry
Definition: FastjetJetProducer.h:108
Event.h
VirtualJetProducer::input_vertex_token_
edm::EDGetTokenT< reco::VertexCollection > input_vertex_token_
Definition: VirtualJetProducer.h:223
FastjetJetProducer::muMin_
double muMin_
for CMSBoostedTauSeedingAlgorithm : subjet pt min
Definition: FastjetJetProducer.h:105
FastjetJetProducer::useOnlyVertexTracks_
bool useOnlyVertexTracks_
Definition: FastjetJetProducer.h:70
FastjetJetProducer::zCut_
double zCut_
for trimming: constituent minimum pt fraction of full jet
Definition: FastjetJetProducer.h:95
VirtualJetProducer::makeTrackJet
bool makeTrackJet(const JetType::Type &fTag)
Definition: VirtualJetProducer.h:59
FastjetJetProducer::subjetPtMin_
double subjetPtMin_
for shape subtraction, get the grid spacing
Definition: FastjetJetProducer.h:104
VirtualJetProducer::jetPtMin_
double jetPtMin_
Definition: VirtualJetProducer.h:155
FastjetJetProducer::produce
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: FastjetJetProducer.cc:175
iEvent
int iEvent
Definition: GenABIO.cc:224
FastjetJetProducer::dRMax_
double dRMax_
for CMSBoostedTauSeedingAlgorithm : min dR
Definition: FastjetJetProducer.h:110
VirtualJetProducer::inputTowers
virtual void inputTowers()
Definition: VirtualJetProducer.cc:442
FastjetJetProducer::minVtxNdof_
int minVtxNdof_
Definition: FastjetJetProducer.h:74
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
FastjetJetProducer::FastjetJetProducer
FastjetJetProducer(const edm::ParameterSet &iConfig)
Definition: FastjetJetProducer.cc:60
edm::EventSetup
Definition: EventSetup.h:57
VirtualJetProducer::fjAreaDefinition_
AreaDefinitionPtr fjAreaDefinition_
Definition: VirtualJetProducer.h:189
FastjetJetProducer::useTrimming_
bool useTrimming_
Use dynamic filtering radius (as in arXiv:0802.2470)
Definition: FastjetJetProducer.h:81
FastjetJetProducer::RcutFactor_
double RcutFactor_
for pruning OR soft drop: constituent minimum pt fraction of parent cluster
Definition: FastjetJetProducer.h:96
edm::Ptr
Definition: AssociationVector.h:31
VertexFwd.h
FastjetJetProducer::muCut_
double muCut_
Correct the shape of the jets.
Definition: FastjetJetProducer.h:88
multPhiCorr_741_25nsDY_cfi.px
px
Definition: multPhiCorr_741_25nsDY_cfi.py:10
FastjetJetProducer::csRParam_
double csRParam_
for constituent subtraction : maximum rapidity for ghosts
Definition: FastjetJetProducer.h:98
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
FastjetJetProducer.h
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
ALCARECOPromptCalibProdSiPixelAli0T_cff.Selector
Selector
Definition: ALCARECOPromptCalibProdSiPixelAli0T_cff.py:81
VirtualJetProducer::getConstituents
virtual std::vector< reco::CandidatePtr > getConstituents(const std::vector< fastjet::PseudoJet > &fjConstituents)
Definition: VirtualJetProducer.cc:522
PVValHelper::dxy
Definition: PVValidationHelpers.h:47
FastjetJetProducer::useCMSBoostedTauSeedingAlgorithm_
bool useCMSBoostedTauSeedingAlgorithm_
Jet pruning technique.
Definition: FastjetJetProducer.h:83
PVValHelper::dz
Definition: PVValidationHelpers.h:50
VirtualJetProducer::doAreaFastjet_
bool doAreaFastjet_
Definition: VirtualJetProducer.h:163
metsig::jet
Definition: SignAlgoResolutions.h:47
FastjetJetProducer::runAlgorithm
void runAlgorithm(edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: FastjetJetProducer.cc:335
FastjetJetProducer::useMassDropTagger_
bool useMassDropTagger_
Definition: FastjetJetProducer.h:78
FastjetJetProducer::rFiltDynamic_
DynamicRfiltPtr rFiltDynamic_
for filtering, trimming: dR scale of sub-clustering
Definition: FastjetJetProducer.h:91
FastjetJetProducer::useOnlyOnePV_
bool useOnlyOnePV_
Definition: FastjetJetProducer.h:71
Exception
Definition: hltDiff.cc:246
CaloGeometry.h
VirtualJetProducer::fjJets_
std::vector< fastjet::PseudoJet > fjJets_
Definition: VirtualJetProducer.h:192
cms::Filter
dd4hep::Filter Filter
Definition: DDFilteredView.h:50
VirtualJetProducer::fjJetDefinition_
JetDefPtr fjJetDefinition_
Definition: VirtualJetProducer.h:186
TriggerAnalyzer.passed
passed
Definition: TriggerAnalyzer.py:62
EventSetup.h
FastjetJetProducer::beta_
double beta_
for constituent subtraction : R parameter for KT alg in jet median background estimator
Definition: FastjetJetProducer.h:99
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
FastjetJetProducer::input_chrefcand_token_
edm::EDGetTokenT< edm::View< reco::RecoChargedRefCandidate > > input_chrefcand_token_
for CMSBoostedTauSeedingAlgorithm : max depth for descending into clustering sequence
Definition: FastjetJetProducer.h:114
FastjetJetProducer::yCut_
double yCut_
for mass-drop tagging, m0/mjet (m0 = mass of highest mass subjet)
Definition: FastjetJetProducer.h:89
VirtualJetProducer::useExplicitGhosts_
bool useExplicitGhosts_
Definition: VirtualJetProducer.h:164
FastjetJetProducer::maxVtxZ_
float maxVtxZ_
Definition: FastjetJetProducer.h:75
sd
double sd
Definition: CascadeWrapper.h:113
VirtualJetProducer::fjInputs_
std::vector< fastjet::PseudoJet > fjInputs_
Definition: VirtualJetProducer.h:191
edm::Event
Definition: Event.h:73
FastjetJetProducer
Definition: FastjetJetProducer.h:41
FastjetJetProducer::gridSpacing_
double gridSpacing_
for shape subtraction, get the fixed-grid rho
Definition: FastjetJetProducer.h:102
edm::InputTag
Definition: InputTag.h:15
FastjetJetProducer::usePruning_
bool usePruning_
Jet trimming technique.
Definition: FastjetJetProducer.h:82
VirtualJetProducer::fillDescriptionsFromVirtualJetProducer
static void fillDescriptionsFromVirtualJetProducer(edm::ParameterSetDescription &desc)
Definition: VirtualJetProducer.cc:1016
CMSBoostedTauSeedingAlgorithm.h
FastjetJetProducer::gridMaxRapidity_
double gridMaxRapidity_
for soft drop : R0 (angular distance normalization - should be set to jet radius in most cases)
Definition: FastjetJetProducer.h:101