CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ChainedJetCorrector.cc
Go to the documentation of this file.
1 //
2 // Original Author: Fedor Ratnikov Feb. 16, 2007
3 //
4 // Correction which chains other corrections
5 //
6 
8 
11 {
12  LorentzVector jet = fJet;
13  double result = 1;
14  for (size_t i = 0; i < mCorrectors.size (); ++i) {
15  double scale = mCorrectors[i]->correction (jet);
16  jet *= scale;
17  result *= scale;
18  }
19  return result;
20 }
21 
23 double ChainedJetCorrector::correction (const reco::Jet& fJet) const
24 {
25  std::auto_ptr<reco::Jet> jet (dynamic_cast<reco::Jet*> (fJet.clone ()));
26  double result = 1;
27  for (size_t i = 0; i < mCorrectors.size (); ++i) {
28  double scale = mCorrectors[i]->correction (*jet);
29  jet->scaleEnergy (scale);
30  result *= scale;
31  }
32  return result;
33 }
34 
37  const edm::Event& fEvent,
38  const edm::EventSetup& fSetup) const
39 {
40  std::auto_ptr<reco::Jet> jet (dynamic_cast<reco::Jet*> (fJet.clone ()));
41  double result = 1;
42  for (size_t i = 0; i < mCorrectors.size (); ++i) {
43  double scale = mCorrectors[i]->correction (*jet, fEvent, fSetup);
44  jet->scaleEnergy (scale);
45  result *= scale;
46  }
47  return result;
48 }
51  const edm::RefToBase<reco::Jet>& fJetRef,
52  const edm::Event& fEvent,
53  const edm::EventSetup& fSetup) const
54 {
55  std::auto_ptr<reco::Jet> jet (dynamic_cast<reco::Jet*> (fJet.clone ()));
56  double result = 1;
57  for (size_t i = 0; i < mCorrectors.size (); ++i) {
58  double scale = mCorrectors[i]->correction (*jet, fJetRef, fEvent, fSetup);
59  jet->scaleEnergy (scale);
60  result *= scale;
61  }
62  return result;
63 }
64 
67 {
68  for (size_t i = 0; i < mCorrectors.size (); ++i) {
69  if (mCorrectors[i]->eventRequired ()) return true;
70  }
71  return false;
72 }
73 
76 {
77  for (size_t i = 0; i < mCorrectors.size (); ++i) {
78  if (mCorrectors[i]->refRequired ()) return true;
79  }
80  return false;
81 }
82 
83 
int i
Definition: DBlmapReader.cc:9
Base class for all types of Jets.
Definition: Jet.h:20
virtual bool eventRequired() const
if correction needs event information
virtual CompositePtrCandidate * clone() const
returns a clone of the candidate
virtual bool refRequired() const
if correction needs jet reference
tuple result
Definition: query.py:137
virtual double correction(const JetCorrector::LorentzVector &fJet) const
get correction using Jet information only
std::vector< const JetCorrector * > mCorrectors
reco::Particle::LorentzVector LorentzVector
Definition: JetCorrector.h:23