CMS 3D CMS Logo

FFTJetPatRecoProducer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: FFTJetProducers
4 // Class: FFTJetPatRecoProducer
5 //
13 //
14 // Original Author: Igor Volobouev
15 // Created: Tue Jun 15 12:45:45 CDT 2010
16 //
17 //
18 
19 #include <fstream>
20 #include <memory>
21 
22 // FFTJet headers
23 #include "fftjet/ProximityClusteringTree.hh"
24 #include "fftjet/ClusteringSequencer.hh"
25 #include "fftjet/ClusteringTreeSparsifier.hh"
26 #include "fftjet/FrequencyKernelConvolver.hh"
27 #include "fftjet/FrequencySequentialConvolver.hh"
28 #include "fftjet/DiscreteGauss1d.hh"
29 #include "fftjet/DiscreteGauss2d.hh"
30 
31 // framework include files
35 
43 
44 // Energy flow object
46 
47 // parameter parser header
49 
50 // functions which manipulate storable trees
52 
53 // functions which manipulate energy discretization grids
55 
56 // useful utilities collected in the second base
58 
59 using namespace fftjetcms;
60 
61 //
62 // class declaration
63 //
65 public:
67  ~FFTJetPatRecoProducer() override;
68 
69 protected:
70  // Useful local typedefs
71  typedef fftjet::ProximityClusteringTree<fftjet::Peak, long> ClusteringTree;
72  typedef fftjet::SparseClusteringTree<fftjet::Peak, long> SparseTree;
73  typedef fftjet::ClusteringSequencer<Real> Sequencer;
74  typedef fftjet::ClusteringTreeSparsifier<fftjet::Peak, long> Sparsifier;
75 
76  // methods
77  void beginJob() override;
78  void produce(edm::Event&, const edm::EventSetup&) override;
79  void endJob() override;
80 
81  void buildKernelConvolver(const edm::ParameterSet&);
82  fftjet::PeakFinder buildPeakFinder(const edm::ParameterSet&);
83 
84  template <class Real>
85  void buildSparseProduct(edm::Event&) const;
86 
87  template <class Real>
88  void buildDenseProduct(edm::Event&) const;
89 
90  // The complete clustering tree
92 
93  // Basically, we need to create FFTJet objects
94  // ClusteringSequencer and ClusteringTreeSparsifier
95  // which will subsequently perform most of the work
96  std::unique_ptr<Sequencer> sequencer;
97  std::unique_ptr<Sparsifier> sparsifier;
98 
99  // The FFT engine(s)
100  std::unique_ptr<MyFFTEngine> engine;
101  std::unique_ptr<MyFFTEngine> anotherEngine;
102 
103  // The pattern recognition kernel(s)
104  std::unique_ptr<fftjet::AbsFrequencyKernel> kernel2d;
105  std::unique_ptr<fftjet::AbsFrequencyKernel1d> etaKernel;
106  std::unique_ptr<fftjet::AbsFrequencyKernel1d> phiKernel;
107 
108  // The kernel convolver
109  std::unique_ptr<fftjet::AbsConvolverBase<Real> > convolver;
110 
111  // The peak selector for the clustering tree
112  std::unique_ptr<fftjet::Functor1<bool, fftjet::Peak> > peakSelector;
113 
114  // Distance calculator for the clustering tree
115  std::unique_ptr<fftjet::AbsDistanceCalculator<fftjet::Peak> > distanceCalc;
116 
117  // The sparse clustering tree
119 
120  // The following parameters will define the behavior
121  // of the algorithm wrt insertion of the complete event
122  // into the clustering tree
124 
125  // Are we going to make clustering trees?
126  const bool makeClusteringTree;
127 
128  // Are we going to verify the data conversion for double precision
129  // storage?
131 
132  // Are we going to store the discretization grid?
134 
135  // Sparsify the clustering tree?
136  const bool sparsify;
137 
138 private:
139  FFTJetPatRecoProducer() = delete;
141  FFTJetPatRecoProducer& operator=(const FFTJetPatRecoProducer&) = delete;
142 
143  // Members needed for storing grids externally
144  std::ofstream externalGridStream;
146  fftjet::Grid2d<float>* extGrid;
147 };
148 
149 //
150 // constructors and destructor
151 //
153  : FFTJetInterface(ps),
154  clusteringTree(nullptr),
155  completeEventDataCutoff(ps.getParameter<double>("completeEventDataCutoff")),
156  makeClusteringTree(ps.getParameter<bool>("makeClusteringTree")),
157  verifyDataConversion(ps.getUntrackedParameter<bool>("verifyDataConversion", false)),
158  storeDiscretizationGrid(ps.getParameter<bool>("storeDiscretizationGrid")),
159  sparsify(ps.getParameter<bool>("sparsify")),
160  extGrid(nullptr) {
161  // register your products
162  if (makeClusteringTree) {
164  produces<reco::PattRecoTree<float, reco::PattRecoPeak<float> > >(outputLabel);
165  else
166  produces<reco::PattRecoTree<double, reco::PattRecoPeak<double> > >(outputLabel);
167  }
169  produces<reco::DiscretizedEnergyFlow>(outputLabel);
170 
171  // Check if we want to write the grids into an external file
172  const std::string externalGridFile(ps.getParameter<std::string>("externalGridFile"));
174  if (storeGridsExternally) {
175  externalGridStream.open(externalGridFile.c_str(), std::ios_base::out | std::ios_base::binary);
176  if (!externalGridStream.is_open())
177  throw cms::Exception("FFTJetBadConfig")
178  << "FFTJetPatRecoProducer failed to open file " << externalGridFile << std::endl;
179  }
180 
182  throw cms::Exception("FFTJetBadConfig")
183  << "FFTJetPatRecoProducer is not configured to produce anything" << std::endl;
184  }
185 
186  // now do whatever other initialization is needed
187 
188  // Build the discretization grid
190  checkConfig(energyFlow, "invalid discretization grid");
191 
192  // Build the FFT engine(s), pattern recognition kernel(s),
193  // and the kernel convolver
195 
196  // Build the peak selector
197  peakSelector = fftjet_PeakSelector_parser(ps.getParameter<edm::ParameterSet>("PeakSelectorConfiguration"));
198  checkConfig(peakSelector, "invalid peak selector");
199 
200  // Build the initial set of pattern recognition scales
201  std::unique_ptr<std::vector<double> > iniScales =
203  checkConfig(iniScales, "invalid set of scales");
204 
205  // Do we want to use the adaptive clustering tree algorithm?
206  const unsigned maxAdaptiveScales = ps.getParameter<unsigned>("maxAdaptiveScales");
207  const double minAdaptiveRatioLog = ps.getParameter<double>("minAdaptiveRatioLog");
208  if (minAdaptiveRatioLog <= 0.0)
209  throw cms::Exception("FFTJetBadConfig") << "bad adaptive ratio logarithm limit" << std::endl;
210 
211  // Make sure that all standard scales are larger than the
212  // complete event scale
213  if (getEventScale() > 0.0) {
214  const double cs = getEventScale();
215  const unsigned nscales = iniScales->size();
216  for (unsigned i = 0; i < nscales; ++i)
217  if (cs >= (*iniScales)[i])
218  throw cms::Exception("FFTJetBadConfig") << "incompatible scale for complete event" << std::endl;
219  }
220 
221  // At this point we are ready to build the clustering sequencer
222  sequencer = std::make_unique<Sequencer>(
224 
225  // Build the clustering tree sparsifier
226  const edm::ParameterSet& SparsifierConfiguration(ps.getParameter<edm::ParameterSet>("SparsifierConfiguration"));
228  checkConfig(sparsifier, "invalid sparsifier parameters");
229 
230  // Build the distance calculator for the clustering tree
231  const edm::ParameterSet& TreeDistanceCalculator(ps.getParameter<edm::ParameterSet>("TreeDistanceCalculator"));
233  checkConfig(distanceCalc, "invalid tree distance calculator");
234 
235  // Build the clustering tree itself
237 }
238 
240  // Check the parameter named "etaDependentScaleFactors". If the vector
241  // of scales is empty we will use 2d kernel, otherwise use 1d kernels
242  const std::vector<double> etaDependentScaleFactors(ps.getParameter<std::vector<double> >("etaDependentScaleFactors"));
243 
244  // Make sure that the number of scale factors provided is correct
245  const bool use2dKernel = etaDependentScaleFactors.empty();
246  if (!use2dKernel)
247  if (etaDependentScaleFactors.size() != energyFlow->nEta())
248  throw cms::Exception("FFTJetBadConfig") << "invalid number of eta-dependent scale factors" << std::endl;
249 
250  // Get the eta and phi scales for the kernel(s)
251  double kernelEtaScale = ps.getParameter<double>("kernelEtaScale");
252  const double kernelPhiScale = ps.getParameter<double>("kernelPhiScale");
253  if (kernelEtaScale <= 0.0 || kernelPhiScale <= 0.0)
254  throw cms::Exception("FFTJetBadConfig") << "invalid kernel scale" << std::endl;
255 
256  // FFT assumes that the grid extent in eta is 2*Pi. Adjust the
257  // kernel scale in eta to compensate.
258  kernelEtaScale *= (2.0 * M_PI / (energyFlow->etaMax() - energyFlow->etaMin()));
259 
260  // Are we going to try to fix the efficiency near detector edges?
261  const bool fixEfficiency = ps.getParameter<bool>("fixEfficiency");
262 
263  // Minimum and maximum eta bin for the convolver
264  unsigned convolverMinBin = 0, convolverMaxBin = 0;
265  if (fixEfficiency || !use2dKernel) {
266  convolverMinBin = ps.getParameter<unsigned>("convolverMinBin");
267  convolverMaxBin = ps.getParameter<unsigned>("convolverMaxBin");
268  }
269 
270  if (use2dKernel) {
271  // Build the FFT engine
272  engine = std::make_unique<MyFFTEngine>(energyFlow->nEta(), energyFlow->nPhi());
273 
274  // 2d kernel
275  kernel2d = std::unique_ptr<fftjet::AbsFrequencyKernel>(
276  new fftjet::DiscreteGauss2d(kernelEtaScale, kernelPhiScale, energyFlow->nEta(), energyFlow->nPhi()));
277 
278  // 2d convolver
279  convolver = std::unique_ptr<fftjet::AbsConvolverBase<Real> >(new fftjet::FrequencyKernelConvolver<Real, Complex>(
281  } else {
282  // Need separate FFT engines for eta and phi
283  engine = std::make_unique<MyFFTEngine>(1, energyFlow->nEta());
284  anotherEngine = std::make_unique<MyFFTEngine>(1, energyFlow->nPhi());
285 
286  // 1d kernels
287  etaKernel =
288  std::unique_ptr<fftjet::AbsFrequencyKernel1d>(new fftjet::DiscreteGauss1d(kernelEtaScale, energyFlow->nEta()));
289 
290  phiKernel =
291  std::unique_ptr<fftjet::AbsFrequencyKernel1d>(new fftjet::DiscreteGauss1d(kernelPhiScale, energyFlow->nPhi()));
292 
293  // Sequential convolver
294  convolver = std::unique_ptr<fftjet::AbsConvolverBase<Real> >(
295  new fftjet::FrequencySequentialConvolver<Real, Complex>(engine.get(),
296  anotherEngine.get(),
297  etaKernel.get(),
298  phiKernel.get(),
302  fixEfficiency));
303  }
304 }
305 
307  const double peakFinderMaxEta = ps.getParameter<double>("peakFinderMaxEta");
308  if (peakFinderMaxEta <= 0.0)
309  throw cms::Exception("FFTJetBadConfig") << "invalid peak finder eta cut" << std::endl;
310  const double maxMagnitude = ps.getParameter<double>("peakFinderMaxMagnitude");
311  int minBin = energyFlow->getEtaBin(-peakFinderMaxEta);
312  if (minBin < 0)
313  minBin = 0;
314  int maxBin = energyFlow->getEtaBin(peakFinderMaxEta) + 1;
315  if (maxBin < 0)
316  maxBin = 0;
317  return fftjet::PeakFinder(maxMagnitude, true, minBin, maxBin);
318 }
319 
321  // do anything here that needs to be done at desctruction time
322  // (e.g. close files, deallocate resources etc.)
323  delete clusteringTree;
324  delete extGrid;
325 }
326 
327 //
328 // member functions
329 //
330 template <class Real>
333 
334  auto tree = std::make_unique<StoredTree>();
335 
336  sparsePeakTreeToStorable(sparseTree, sequencer->maxAdaptiveScales(), tree.get());
337 
338  // Check that we can restore the tree
341  const std::vector<double>& scalesUsed(sequencer->getInitialScales());
343  if (sparseTree != check)
344  throw cms::Exception("FFTJetInterface") << "Data conversion failed for sparse clustering tree" << std::endl;
345  }
346 
347  ev.put(std::move(tree), outputLabel);
348 }
349 
350 template <class Real>
353 
354  auto tree = std::make_unique<StoredTree>();
355 
356  densePeakTreeToStorable(*clusteringTree, sequencer->maxAdaptiveScales(), tree.get());
357 
358  // Check that we can restore the tree
361  const std::vector<double>& scalesUsed(sequencer->getInitialScales());
363  if (*clusteringTree != check)
364  throw cms::Exception("FFTJetInterface") << "Data conversion failed for dense clustering tree" << std::endl;
365  }
366 
367  ev.put(std::move(tree), outputLabel);
368 }
369 
370 // ------------ method called to produce the data ------------
374 
375  if (makeClusteringTree) {
377  if (getEventScale() > 0.0)
379 
380  if (sparsify) {
381  sparsifier->sparsify(*clusteringTree, &sparseTree);
382 
383  // Do not call the "sortNodes" method of the sparse tree here.
384  // Currently, the nodes are sorted by daughter number.
385  // This is the way we want it in storage because the stored
386  // tree does not include daughter ordering info explicitly.
387 
389  buildSparseProduct<float>(iEvent);
390  else
391  buildSparseProduct<double>(iEvent);
392  } else {
394  buildDenseProduct<float>(iEvent);
395  else
396  buildDenseProduct<double>(iEvent);
397  }
398  }
399 
401  const fftjet::Grid2d<Real>& g(*energyFlow);
402 
403  auto flow = std::make_unique<reco::DiscretizedEnergyFlow>(
404  g.data(), g.title(), g.etaMin(), g.etaMax(), g.phiBin0Edge(), g.nEta(), g.nPhi());
405 
406  if (verifyDataConversion) {
407  fftjet::Grid2d<Real> check(
408  flow->nEtaBins(), flow->etaMin(), flow->etaMax(), flow->nPhiBins(), flow->phiBin0Edge(), flow->title());
409  check.blockSet(flow->data(), flow->nEtaBins(), flow->nPhiBins());
410  assert(g == check);
411  }
412 
414  }
415 
416  if (storeGridsExternally) {
417  if (extGrid)
419  else
421  if (!extGrid->write(externalGridStream)) {
422  throw cms::Exception("FFTJetPatRecoProducer::produce")
423  << "Failed to write grid data into an external file" << std::endl;
424  }
425  }
426 }
427 
428 // ------------ method called once each job just before starting event loop
430 
431 // ------------ method called once each job just after ending the event loop
434  externalGridStream.close();
435 }
436 
437 //define this as a plug-in
fftjetcms::densePeakTreeToStorable
void densePeakTreeToStorable(const fftjet::AbsClusteringTree< fftjet::Peak, long > &in, bool writeOutScaleInfo, reco::PattRecoTree< Real, reco::PattRecoPeak< Real > > *out)
Definition: clusteringTreeConverters.h:210
cms::cuda::allocator::minBin
constexpr unsigned int minBin
Definition: getCachingDeviceAllocator.h:18
CaloJetCollection.h
GenJetCollection.h
bk::beginJob
void beginJob()
Definition: Breakpoints.cc:14
electrons_cff.bool
bool
Definition: electrons_cff.py:393
mps_fire.i
i
Definition: mps_fire.py:428
FFTJetPatRecoProducer::buildDenseProduct
void buildDenseProduct(edm::Event &) const
Definition: FFTJetPatRecoProducer.cc:351
FFTJetPatRecoProducer::phiKernel
std::unique_ptr< fftjet::AbsFrequencyKernel1d > phiKernel
Definition: FFTJetPatRecoProducer.cc:106
funct::false
false
Definition: Factorize.h:29
fftjetcms
Definition: AbsPileupCalculator.h:15
fftjetpatrecoproducer_cfi.sparsify
sparsify
Definition: fftjetpatrecoproducer_cfi.py:25
FFTJetPatRecoProducer
Definition: FFTJetPatRecoProducer.cc:64
fftjetcms::FFTJetInterface::checkConfig
void checkConfig(const Ptr &ptr, const char *message)
Definition: FFTJetInterface.h:60
fftjetcms::FFTJetInterface::loadInputCollection
void loadInputCollection(const edm::Event &)
Definition: FFTJetInterface.cc:40
FFTJetPatRecoProducer::engine
std::unique_ptr< MyFFTEngine > engine
Definition: FFTJetPatRecoProducer.cc:100
fftjetcms::FFTJetInterface::outputLabel
const std::string outputLabel
Definition: FFTJetInterface.h:76
fwrapper::cs
unique_ptr< ClusterSequence > cs
Definition: fastjetfortran_madfks.cc:47
FFTJetPatRecoProducer::completeEventDataCutoff
const double completeEventDataCutoff
Definition: FFTJetPatRecoProducer.cc:123
FFTJetPatRecoProducer::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: FFTJetPatRecoProducer.cc:371
fftjetcms::fftjet_ScaleSet_parser
std::unique_ptr< std::vector< double > > fftjet_ScaleSet_parser(const edm::ParameterSet &ps)
Definition: FFTJetParameterParser.cc:350
FFTJetPatRecoProducer::sparseTree
SparseTree sparseTree
Definition: FFTJetPatRecoProducer.cc:118
tree
Definition: tree.py:1
FFTJetPatRecoProducer::verifyDataConversion
const bool verifyDataConversion
Definition: FFTJetPatRecoProducer.cc:130
fftjetpatrecoproducer_cfi.completeEventDataCutoff
completeEventDataCutoff
Definition: fftjetpatrecoproducer_cfi.py:57
FFTJetPatRecoProducer::distanceCalc
std::unique_ptr< fftjet::AbsDistanceCalculator< fftjet::Peak > > distanceCalc
Definition: FFTJetPatRecoProducer.cc:115
PFJetCollection.h
fftjeteflowsmoother_cfi.convolverMaxBin
convolverMaxBin
Definition: fftjeteflowsmoother_cfi.py:21
cms::cuda::assert
assert(be >=bs)
BasicJetCollection.h
clusteringTreeConverters.h
fftjetcms::FFTJetInterface::getEventScale
double getEventScale() const
Definition: FFTJetInterface.cc:38
fftjetpatrecoproducer_cfi.minAdaptiveRatioLog
minAdaptiveRatioLog
Definition: fftjetpatrecoproducer_cfi.py:84
FFTJetPatRecoProducer::FFTJetPatRecoProducer
FFTJetPatRecoProducer()=delete
FFTJetPatRecoProducer::buildPeakFinder
fftjet::PeakFinder buildPeakFinder(const edm::ParameterSet &)
Definition: FFTJetPatRecoProducer.cc:306
FFTJetPatRecoProducer::buildSparseProduct
void buildSparseProduct(edm::Event &) const
Definition: FFTJetPatRecoProducer.cc:331
FFTJetInterface.h
fftjetpatrecoproducer_cfi.verifyDataConversion
verifyDataConversion
Definition: fftjetpatrecoproducer_cfi.py:22
fftjetcms::densePeakTreeFromStorable
void densePeakTreeFromStorable(const reco::PattRecoTree< Real, reco::PattRecoPeak< Real > > &in, const std::vector< double > *scaleSetIfNotAdaptive, double completeEventScale, fftjet::AbsClusteringTree< fftjet::Peak, long > *out)
Definition: clusteringTreeConverters.h:271
FFTJetPatRecoProducer::~FFTJetPatRecoProducer
~FFTJetPatRecoProducer() override
Definition: FFTJetPatRecoProducer.cc:320
MakerMacros.h
RPCNoise_example.check
check
Definition: RPCNoise_example.py:71
FFTJetPatRecoProducer::kernel2d
std::unique_ptr< fftjet::AbsFrequencyKernel > kernel2d
Definition: FFTJetPatRecoProducer.cc:104
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
FFTJetPatRecoProducer::Sequencer
fftjet::ClusteringSequencer< Real > Sequencer
Definition: FFTJetPatRecoProducer.cc:73
fftjetpatrecoproducer_cfi.SparsifierConfiguration
SparsifierConfiguration
Definition: fftjetpatrecoproducer_cfi.py:115
fftjeteflowsmoother_cfi.kernelEtaScale
kernelEtaScale
Definition: fftjeteflowsmoother_cfi.py:11
FFTJetPatRecoProducer::etaKernel
std::unique_ptr< fftjet::AbsFrequencyKernel1d > etaKernel
Definition: FFTJetPatRecoProducer.cc:105
FFTJetPatRecoProducer::SparseTree
fftjet::SparseClusteringTree< fftjet::Peak, long > SparseTree
Definition: FFTJetPatRecoProducer.cc:72
FFTJetPatRecoProducer::convolver
std::unique_ptr< fftjet::AbsConvolverBase< Real > > convolver
Definition: FFTJetPatRecoProducer.cc:109
fftjetcms::FFTJetInterface
Definition: FFTJetInterface.h:52
FFTJetPatRecoProducer::ClusteringTree
fftjet::ProximityClusteringTree< fftjet::Peak, long > ClusteringTree
Definition: FFTJetPatRecoProducer.cc:71
fftjetcms::sparsePeakTreeToStorable
void sparsePeakTreeToStorable(const fftjet::SparseClusteringTree< fftjet::Peak, long > &in, bool writeOutScaleInfo, reco::PattRecoTree< Real, reco::PattRecoPeak< Real > > *out)
Definition: clusteringTreeConverters.h:75
fftjetpatrecoproducer_cfi.peakFinderMaxEta
peakFinderMaxEta
Definition: fftjetpatrecoproducer_cfi.py:36
fftjetcms::sparsePeakTreeFromStorable
void sparsePeakTreeFromStorable(const reco::PattRecoTree< Real, reco::PattRecoPeak< Real > > &in, const std::vector< double > *scaleSetIfNotAdaptive, double completeEventScale, fftjet::SparseClusteringTree< fftjet::Peak, long > *out)
Definition: clusteringTreeConverters.h:133
TrackJetCollection.h
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
FFTJetPatRecoProducer::clusteringTree
ClusteringTree * clusteringTree
Definition: FFTJetPatRecoProducer.cc:91
fftjetcms::fftjet_ClusteringTreeSparsifier_parser
std::unique_ptr< fftjet::ClusteringTreeSparsifier< fftjet::Peak, long > > fftjet_ClusteringTreeSparsifier_parser(const edm::ParameterSet &ps)
Definition: FFTJetParameterParser.cc:392
FFTJetPatRecoProducer::buildKernelConvolver
void buildKernelConvolver(const edm::ParameterSet &)
Definition: FFTJetPatRecoProducer.cc:239
reco::PattRecoTree
Class for storing FFTJet sparse clustering trees.
Definition: PattRecoTree.h:20
edm::ParameterSet
Definition: ParameterSet.h:47
FFTJetPatRecoProducer::peakSelector
std::unique_ptr< fftjet::Functor1< bool, fftjet::Peak > > peakSelector
Definition: FFTJetPatRecoProducer.cc:112
FFTJetPatRecoProducer::extGrid
fftjet::Grid2d< float > * extGrid
Definition: FFTJetPatRecoProducer.cc:146
FFTJetPatRecoProducer::storeGridsExternally
bool storeGridsExternally
Definition: FFTJetPatRecoProducer.cc:145
FFTJetPatRecoProducer::anotherEngine
std::unique_ptr< MyFFTEngine > anotherEngine
Definition: FFTJetPatRecoProducer.cc:101
cms::cuda::allocator::maxBin
constexpr unsigned int maxBin
Definition: getCachingDeviceAllocator.h:20
iEvent
int iEvent
Definition: GenABIO.cc:224
fftjetcms::FFTJetInterface::energyFlow
std::unique_ptr< fftjet::Grid2d< fftjetcms::Real > > energyFlow
Definition: FFTJetInterface.h:100
FFTJetPatRecoProducer::beginJob
void beginJob() override
Definition: FFTJetPatRecoProducer.cc:429
FFTJetPatRecoProducer::makeClusteringTree
const bool makeClusteringTree
Definition: FFTJetPatRecoProducer.cc:126
FFTJetPatRecoProducer::sequencer
std::unique_ptr< Sequencer > sequencer
Definition: FFTJetPatRecoProducer.cc:96
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
fftjetcms::FFTJetInterface::storeInSinglePrecision
bool storeInSinglePrecision() const
Definition: FFTJetInterface.cc:15
FFTJetPatRecoProducer::storeDiscretizationGrid
const bool storeDiscretizationGrid
Definition: FFTJetPatRecoProducer.cc:133
fftjetcms::fftjet_Grid2d_parser
std::unique_ptr< fftjet::Grid2d< Real > > fftjet_Grid2d_parser(const edm::ParameterSet &ps)
Definition: FFTJetParameterParser.cc:125
edm::EventSetup
Definition: EventSetup.h:57
fftjeteflowsmoother_cfi.convolverMinBin
convolverMinBin
Definition: fftjeteflowsmoother_cfi.py:20
fftjeteflowsmoother_cfi.fixEfficiency
fixEfficiency
Definition: fftjeteflowsmoother_cfi.py:15
fftjeteflowsmoother_cfi.kernelPhiScale
kernelPhiScale
Definition: fftjeteflowsmoother_cfi.py:12
fftjetpatrecoproducer_cfi.storeDiscretizationGrid
storeDiscretizationGrid
Definition: fftjetpatrecoproducer_cfi.py:28
FFTJetPatRecoProducer::endJob
void endJob() override
Definition: FFTJetPatRecoProducer.cc:432
fftjetcommon_cfi.flow
flow
Definition: fftjetcommon_cfi.py:191
eostools.move
def move(src, dest)
Definition: eostools.py:511
fftjetcms::copy_Grid2d_data
void copy_Grid2d_data(fftjet::Grid2d< F2 > *to, const fftjet::Grid2d< F1 > &from)
Definition: gridConverters.h:39
Frameworkfwd.h
fftjetpatrecoproducer_cfi.maxAdaptiveScales
maxAdaptiveScales
Definition: fftjetpatrecoproducer_cfi.py:79
FFTJetPatRecoProducer::sparsifier
std::unique_ptr< Sparsifier > sparsifier
Definition: FFTJetPatRecoProducer.cc:97
FFTJetPatRecoProducer::Sparsifier
fftjet::ClusteringTreeSparsifier< fftjet::Peak, long > Sparsifier
Definition: FFTJetPatRecoProducer.cc:74
fftjetdijetfilter_cfi.TreeDistanceCalculator
TreeDistanceCalculator
Definition: fftjetdijetfilter_cfi.py:25
ev
bool ev
Definition: Hydjet2Hadronizer.cc:95
Exception
Definition: hltDiff.cc:246
FFTJetParameterParser.h
FFTJetPatRecoProducer::externalGridStream
std::ofstream externalGridStream
Definition: FFTJetPatRecoProducer.cc:144
fftjetcms::convert_Grid2d_to_float
fftjet::Grid2d< float > * convert_Grid2d_to_float(const fftjet::Grid2d< Numeric > &grid)
Definition: gridConverters.h:63
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
fftjetpatrecoproducer_cfi.externalGridFile
externalGridFile
Definition: fftjetpatrecoproducer_cfi.py:32
fftjetcms::FFTJetInterface::discretizeEnergyFlow
void discretizeEnergyFlow()
Definition: FFTJetInterface.cc:79
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
DiscretizedEnergyFlow.h
cms::Exception
Definition: Exception.h:70
Candidate.h
fftjeteflowsmoother_cfi.etaDependentScaleFactors
etaDependentScaleFactors
Definition: fftjeteflowsmoother_cfi.py:42
View.h
ParameterSet.h
fftjetpatrecoproducer_cfi.makeClusteringTree
makeClusteringTree
Definition: fftjetpatrecoproducer_cfi.py:17
edm::Event
Definition: Event.h:73
fftjetcms::fftjet_DistanceCalculator_parser
std::unique_ptr< fftjet::AbsDistanceCalculator< fftjet::Peak > > fftjet_DistanceCalculator_parser(const edm::ParameterSet &ps)
Definition: FFTJetParameterParser.cc:404
gridConverters.h
fftjetcms::fftjet_PeakSelector_parser
std::unique_ptr< fftjet::Functor1< bool, fftjet::Peak > > fftjet_PeakSelector_parser(const edm::ParameterSet &ps)
Definition: FFTJetParameterParser.cc:166
g
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
FFTJetPatRecoProducer::sparsify
const bool sparsify
Definition: FFTJetPatRecoProducer.cc:136