CMS 3D CMS Logo

JetCorrector.h
Go to the documentation of this file.
1 #ifndef JetMETCorrections_JetCorrector_JetCorrector_h
2 #define JetMETCorrections_JetCorrector_JetCorrector_h
3 // -*- C++ -*-
4 //
5 // Package: JetMETCorrections/JetCorrector
6 // Class : reco::JetCorrector
7 //
16 //
17 // Original Author: Christopher Jones
18 // Created: Fri, 29 Aug 2014 15:42:37 GMT
19 //
20 
21 // system include files
22 #include <memory>
23 
24 // user include files
25 #if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__REFLEX__)
27 #endif
30 
31 // forward declarations
32 
33 namespace reco {
34 
36  {
37 
38  public:
39  JetCorrector();
40 #if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__REFLEX__)
41  JetCorrector(std::unique_ptr<JetCorrectorImpl const> fImpl):impl_(std::move(fImpl)) {}
42  JetCorrector(JetCorrector&&) = default;
43  JetCorrector& operator=(JetCorrector&&) = default;
44 
46 
47  // ---------- const member functions ---------------------
49  double correction (const LorentzVector& fJet) const {
50  return impl_->correction(fJet);
51  }
52 
54  double correction (const reco::Jet& fJet) const {
55  return impl_->correction(fJet);
56  }
57 
59  double correction (const reco::Jet& fJet,
60  const edm::RefToBase<reco::Jet>& fJetRef) const {
61  return impl_->correction(fJet,fJetRef);
62  }
63 
65  double correction ( const reco::Jet& fJet,
66  const edm::RefToBase<reco::Jet>& fJetRef,
67  LorentzVector& corrected ) const {
68  return impl_->correction(fJet,fJetRef,corrected);
69  }
70 
72  bool refRequired () const {
73  return impl_->refRequired();
74  }
75 
77  bool vectorialCorrection () const {
78  return impl_->vectorialCorrection();
79  }
80 
81  // ---------- static member functions --------------------
82 
83  // ---------- member functions ---------------------------
84 
85  private:
86  JetCorrector(const JetCorrector&) = delete;
87 
88  JetCorrector& operator=(const JetCorrector&) = delete;
89 
90  // ---------- member data --------------------------------
91  std::unique_ptr<JetCorrectorImpl const> impl_;
92 #else
93  private:
94  JetCorrector(const JetCorrector&);
95  const JetCorrector& operator=(const JetCorrector&);
96 #endif
97  };
98 }
99 
100 #endif
double correction(const reco::Jet &fJet, const edm::RefToBase< reco::Jet > &fJetRef, LorentzVector &corrected) const
Apply vectorial correction.
Definition: JetCorrector.h:65
Base class for all types of Jets.
Definition: Jet.h:20
bool refRequired() const
if correction needs the jet reference
Definition: JetCorrector.h:72
double correction(const LorentzVector &fJet) const
get correction using Jet information only
Definition: JetCorrector.h:49
double correction(const reco::Jet &fJet, const edm::RefToBase< reco::Jet > &fJetRef) const
apply correction using Ref
Definition: JetCorrector.h:59
double correction(const reco::Jet &fJet) const
apply correction using Jet information only
Definition: JetCorrector.h:54
JetCorrector & operator=(JetCorrector &&)=default
reco::Particle::LorentzVector LorentzVector
Definition: JetCorrector.h:45
fixed size matrix
bool vectorialCorrection() const
if vectorial correction is provided
Definition: JetCorrector.h:77
std::unique_ptr< JetCorrectorImpl const > impl_
Definition: JetCorrector.h:91
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21
JetCorrector(std::unique_ptr< JetCorrectorImpl const > fImpl)
Definition: JetCorrector.h:41
def move(src, dest)
Definition: eostools.py:511