CMS 3D CMS Logo

FFTJetInterface.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: FFTJetProducers
4 // Class: FFTJetInterface
5 //
11 //
12 // Original Author: Igor Volobouev
13 // Created: June 29 2010
14 //
15 //
16 
17 #ifndef RecoJets_FFTJetProducers_FFTJetInterface_h
18 #define RecoJets_FFTJetProducers_FFTJetInterface_h
19 
20 #include <memory>
21 #include <vector>
22 #include <cassert>
23 
24 // FFTJet headers
25 #include "fftjet/Grid2d.hh"
26 
27 // framework include files
32 
34 
36 
40 
43 
44 // local FFTJet-related definitions
47 
48 //
49 // class declaration
50 //
51 namespace fftjetcms {
53  {
54  public:
55  ~FFTJetInterface() override {}
56 
57  protected:
58  explicit FFTJetInterface(const edm::ParameterSet&);
59 
60  template<class Ptr>
61  void checkConfig(const Ptr& ptr, const char* message)
62  {
63  if (ptr.get() == nullptr)
64  throw cms::Exception("FFTJetBadConfig") << message << std::endl;
65  }
66 
67  void loadInputCollection(const edm::Event&);
68  void discretizeEnergyFlow();
69  double getEventScale() const;
70  bool storeInSinglePrecision() const;
71 
72  const reco::Particle::Point& vertexUsed() const {return vertex_;}
73 
74  // Label for the input collection
76 
77  // Label for the output objects
79 
80  // Jet type to produce
82 
83  // Vertex correction-related stuff
84  const bool doPVCorrection;
85 
86  // Label for the vertices
88 
89  // Try to equalize magnitudes in the energy flow grid?
90  const std::vector<double> etaDependentMagnutideFactors;
91 
92  // Functor for finding anomalous towers
94 
95  // Event data 4-vectors
96  std::vector<fftjetcms::VectorLike> eventData;
97 
98  // Candidate number which corresponds to the item in the "eventData"
99  std::vector<unsigned> candidateIndex;
100 
101  // The energy discretization grid
102  std::unique_ptr<fftjet::Grid2d<fftjetcms::Real> > energyFlow;
103 
104  // The input handle for the collection of candidates
106 
107  private:
108  // Explicitly disable other ways to construct this object
109  FFTJetInterface() = delete;
110  FFTJetInterface(const FFTJetInterface&) = delete;
111  FFTJetInterface& operator=(const FFTJetInterface&) = delete;
112 
114  const double completeEventScale;
116 
119  };
120 }
121 
122 #endif // RecoJets_FFTJetProducers_FFTJetInterface_h
edm::EDGetTokenT< reco::CandidateView > inputToken
const edm::InputTag inputLabel
edm::Handle< reco::CandidateView > inputCollection
FFTJetInterface & operator=(const FFTJetInterface &)=delete
const reco::Particle::Point & vertexUsed() const
void loadInputCollection(const edm::Event &)
const edm::InputTag srcPVs
void checkConfig(const Ptr &ptr, const char *message)
std::vector< unsigned > candidateIndex
reco::Particle::Point vertex_
std::unique_ptr< fftjet::Grid2d< fftjetcms::Real > > energyFlow
const std::vector< double > etaDependentMagnutideFactors
edm::EDGetTokenT< reco::VertexCollection > srcPVsToken
math::XYZPoint Point
point in the space
Definition: Particle.h:25
const AnomalousTower anomalous
bool storeInSinglePrecision() const
std::vector< fftjetcms::VectorLike > eventData
const std::string outputLabel