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 // $Id: ChainedJetCorrector.cc,v 1.3 2011/04/28 14:05:22 kkousour Exp $
4 //
5 // Correction which chains other corrections
6 //
7 
9 
12 {
13  LorentzVector jet = fJet;
14  double result = 1;
15  for (size_t i = 0; i < mCorrectors.size (); ++i) {
16  double scale = mCorrectors[i]->correction (jet);
17  jet *= scale;
18  result *= scale;
19  }
20  return result;
21 }
22 
24 double ChainedJetCorrector::correction (const reco::Jet& fJet) const
25 {
26  std::auto_ptr<reco::Jet> jet (dynamic_cast<reco::Jet*> (fJet.clone ()));
27  double result = 1;
28  for (size_t i = 0; i < mCorrectors.size (); ++i) {
29  double scale = mCorrectors[i]->correction (*jet);
30  jet->scaleEnergy (scale);
31  result *= scale;
32  }
33  return result;
34 }
35 
38  const edm::Event& fEvent,
39  const edm::EventSetup& fSetup) const
40 {
41  std::auto_ptr<reco::Jet> jet (dynamic_cast<reco::Jet*> (fJet.clone ()));
42  double result = 1;
43  for (size_t i = 0; i < mCorrectors.size (); ++i) {
44  double scale = mCorrectors[i]->correction (*jet, fEvent, fSetup);
45  jet->scaleEnergy (scale);
46  result *= scale;
47  }
48  return result;
49 }
52  const edm::RefToBase<reco::Jet>& fJetRef,
53  const edm::Event& fEvent,
54  const edm::EventSetup& fSetup) const
55 {
56  std::auto_ptr<reco::Jet> jet (dynamic_cast<reco::Jet*> (fJet.clone ()));
57  double result = 1;
58  for (size_t i = 0; i < mCorrectors.size (); ++i) {
59  double scale = mCorrectors[i]->correction (*jet, fJetRef, fEvent, fSetup);
60  jet->scaleEnergy (scale);
61  result *= scale;
62  }
63  return result;
64 }
65 
68 {
69  for (size_t i = 0; i < mCorrectors.size (); ++i) {
70  if (mCorrectors[i]->eventRequired ()) return true;
71  }
72  return false;
73 }
74 
77 {
78  for (size_t i = 0; i < mCorrectors.size (); ++i) {
79  if (mCorrectors[i]->refRequired ()) return true;
80  }
81  return false;
82 }
83 
84 
int i
Definition: DBlmapReader.cc:9
Base class for all types of Jets.
Definition: Jet.h:21
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:24