Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 14:21:26

0001 #ifndef JetMETCorrections_FFTJetObjects_AbsFFTSpecificScaleCalculator_h
0002 #define JetMETCorrections_FFTJetObjects_AbsFFTSpecificScaleCalculator_h
0003 
0004 #include "DataFormats/JetReco/interface/Jet.h"
0005 #include "DataFormats/JetReco/interface/FFTJet.h"
0006 #include "DataFormats/Math/interface/LorentzVector.h"
0007 #include "JetMETCorrections/FFTJetObjects/interface/FFTJetObjectFactory.h"
0008 
0009 //
0010 // A non-templated base class which can often be used to provide
0011 // the mapping from jet quantities into lookup table variables
0012 //
0013 struct AbsFFTSpecificScaleCalculator {
0014   inline virtual ~AbsFFTSpecificScaleCalculator() {}
0015 
0016   virtual void mapFFTJet(const reco::Jet& jet,
0017                          const reco::FFTJet<float>& fftJet,
0018                          const math::XYZTLorentzVector& current,
0019                          double* buf,
0020                          unsigned dim) const = 0;
0021 };
0022 
0023 //
0024 // The factory for classes derived from AbsFFTSpecificScaleCalculator.
0025 // Note that there are no public constructors of this factory. All API
0026 // is via the static wrapper.
0027 //
0028 class FFTSpecificScaleCalculatorFactory : public DefaultFFTJetObjectFactory<AbsFFTSpecificScaleCalculator> {
0029   typedef DefaultFFTJetObjectFactory<AbsFFTSpecificScaleCalculator> Base;
0030   friend class StaticFFTJetObjectFactory<FFTSpecificScaleCalculatorFactory>;
0031   FFTSpecificScaleCalculatorFactory();  //NOLINT
0032 };
0033 
0034 typedef StaticFFTJetObjectFactory<FFTSpecificScaleCalculatorFactory> StaticFFTSpecificScaleCalculatorFactory;
0035 
0036 AbsFFTSpecificScaleCalculator* parseFFTSpecificScaleCalculator(const edm::ParameterSet& ps,
0037                                                                const std::string& tableDescription);
0038 
0039 #endif  // JetMETCorrections_FFTJetObjects_AbsFFTSpecificScaleCalculator_h