ATLAS Offline Software
JetCaloCalculations.h
Go to the documentation of this file.
1 // emacs, this file is -*- c++ -*-
2 
3 /*
4  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 #ifndef JETUTILS_JETCALOHELPER_H
8 #define JETUTILS_JETCALOHELPER_H
9 
11 
12 #include <vector>
13 
14 #include "xAODJet/Jet.h"
15 
17 
18 namespace CaloConstitHelpers {
19 
33  virtual bool valid(xAOD::JetConstituentVector::iterator &) const {return false;}
35  virtual double time(xAOD::JetConstituentVector::iterator & ) const {return 0.;}
36  virtual double energyHEC(xAOD::JetConstituentVector::iterator & ) const {return 0.;}
37  };
38 }
39 
40 namespace jet {
77  public:
78  //typedef typename Jet::navigable_type::paramter_type cellweight_t;
79  typedef double weight_t;
80 
81  JetCaloCalculator() : m_name("JetCaloCalculator"){}
83 
84  virtual ~JetCaloCalculator(){}
85 
86  virtual bool setupEvent() {return true; };
87  virtual bool setupJet(const xAOD::Jet* /*jet*/) = 0;
88 
89 
93  virtual bool processConstituent(xAOD::JetConstituentVector::iterator& /*it*/) {return true;};
94 
95 
97  virtual double jetCalculation() const {return 0;};
98 
101 
102  virtual std::string name() const {return m_name;}
103 
104  void setName(const std::string& n){m_name = n;}
105 
106 
108 
110  virtual JetCaloCalculator* clone() const =0;
111 
112  protected:
113  std::string m_name;
114  xAOD::JetAttribute::AttributeID m_id{}; // unused for now.
115  const CaloConstitHelpers::CaloConstitExtractor *m_constitExtractor{}; // used to retrieve the cluster moment from the constituent (which can be a PFO object or a cluster)
116  };
117 
118 
123 #define JETCALCFUNCDECL( cname, id, others) \
124  public: \
125  virtual bool setupJet(const xAOD::Jet* jet); \
126  virtual bool processConstituent(xAOD::JetConstituentVector::iterator& iter); \
127  double jetCalculation() const ; \
128  cname(xAOD::JetAttribute::AttributeID i=id) : JetCaloCalculator( i ) { others } \
129  virtual JetCaloCalculator* clone() const {return new cname(*this); }
130 
131 
146  public:
147 
148  JetCaloCalculations(bool ownCalc=true) : m_owncalculators(ownCalc) {}
149 
152 
153  bool setupEvent();
154 
156  virtual std::vector<double> process(const xAOD::Jet* jet) const ;
157 
158  void clear();
159 
160 
161  size_t numCalculators() const {return m_calculators.size();}
162  const JetCaloCalculator* at(size_t i) const {return m_calculators[i];}
163 
164 
165 
166  protected:
167  std::vector<JetCaloCalculator*> m_calculators;
169  };
170 
171 }
172 #endif
jet::JetCaloCalculator::processConstituent
virtual bool processConstituent(xAOD::JetConstituentVector::iterator &)
Perform 1 calculation step using 1 constituent.
Definition: JetCaloCalculations.h:93
Jet.h
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
jet::JetCaloCalculations::JetCaloCalculations
JetCaloCalculations(bool ownCalc=true)
Definition: JetCaloCalculations.h:148
CaloConstitHelpers::CaloConstitExtractor
Interface to retrieve calo informations from a jet constituent.
Definition: JetCaloCalculations.h:31
jet::JetCaloCalculator::~JetCaloCalculator
virtual ~JetCaloCalculator()
Definition: JetCaloCalculations.h:84
jet::JetCaloCalculations::~JetCaloCalculations
virtual ~JetCaloCalculations()
Definition: JetCaloCalculations.h:150
CaloConstitHelpers::CaloConstitExtractor::energyHEC
virtual double energyHEC(xAOD::JetConstituentVector::iterator &) const
Definition: JetCaloCalculations.h:36
jet::JetCaloCalculations::process
virtual std::vector< double > process(const xAOD::Jet *jet) const
Perform all tasks correspondings to the associated JetCaloCalculators on Jet jet.
Definition: JetCaloCalculations.cxx:269
jet::JetCaloCalculations::numCalculators
size_t numCalculators() const
Definition: JetCaloCalculations.h:161
CaloConstitHelpers::CaloConstitExtractor::moment
virtual double moment(xAOD::JetConstituentVector::iterator &, xAOD::CaloCluster::MomentType) const
Definition: JetCaloCalculations.h:34
JetConstituentVector.h
This file defines helper classes to deal with jet constituents.
jet::JetCaloCalculator::setupJet
virtual bool setupJet(const xAOD::Jet *)=0
xAOD::JetAttribute::AttributeID
AttributeID
Definition: JetAttributes.h:24
jet::JetCaloCalculator::JetCaloCalculator
JetCaloCalculator()
Definition: JetCaloCalculations.h:81
xAOD::CaloCluster_v1::MomentType
MomentType
Enums to identify different moments.
Definition: CaloCluster_v1.h:120
jet::JetCaloCalculations::at
const JetCaloCalculator * at(size_t i) const
Definition: JetCaloCalculations.h:162
CaloConstitHelpers::CaloConstitExtractor::time
virtual double time(xAOD::JetConstituentVector::iterator &) const
Definition: JetCaloCalculations.h:35
jet::JetCaloCalculator::m_id
xAOD::JetAttribute::AttributeID m_id
Definition: JetCaloCalculations.h:114
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
jet::JetCaloCalculator::operator()
virtual double operator()(const xAOD::Jet *jet, xAOD::JetConstitScale s=xAOD::UncalibratedJetConstituent)
convenience function to perform the full calculation on a given jet
Definition: JetCaloCalculations.cxx:222
jet::JetCaloCalculator::setExtractor
void setExtractor(const CaloConstitHelpers::CaloConstitExtractor *ex)
Definition: JetCaloCalculations.h:107
lumiFormat.i
int i
Definition: lumiFormat.py:92
CaloCluster.h
beamspotman.n
n
Definition: beamspotman.py:731
jet::JetCaloCalculator::setupEvent
virtual bool setupEvent()
Definition: JetCaloCalculations.h:86
jet::JetCaloCalculations
Holds a list of JetCalculators.
Definition: JetCaloCalculations.h:145
jet::JetCaloCalculations::clear
void clear()
Definition: JetCaloCalculations.cxx:331
jet::JetCaloCalculator::m_constitExtractor
const CaloConstitHelpers::CaloConstitExtractor * m_constitExtractor
Definition: JetCaloCalculations.h:115
jet::JetCaloCalculations::m_owncalculators
bool m_owncalculators
Definition: JetCaloCalculations.h:168
CaloConstitHelpers::CaloConstitExtractor::~CaloConstitExtractor
virtual ~CaloConstitExtractor()
Definition: JetCaloCalculations.h:32
jet::JetCaloCalculator::weight_t
double weight_t
Definition: JetCaloCalculations.h:79
jet::JetCaloCalculator::m_name
std::string m_name
Definition: JetCaloCalculations.h:113
xAOD::JetConstitScale
JetConstitScale
Definition: JetTypes.h:20
CaloConstitHelpers
Definition: JetCaloCalculations.h:18
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
jet::JetCaloCalculations::addCalculator
void addCalculator(JetCaloCalculator *c)
Definition: JetCaloCalculations.cxx:257
xAOD::UncalibratedJetConstituent
@ UncalibratedJetConstituent
Definition: JetTypes.h:21
jet::JetCaloCalculator::clone
virtual JetCaloCalculator * clone() const =0
Clone. Base class should not be cloned.
jet::JetCaloCalculator::jetCalculation
virtual double jetCalculation() const
return the result of the calculation
Definition: JetCaloCalculations.h:97
CaloConstitHelpers::CaloConstitExtractor::valid
virtual bool valid(xAOD::JetConstituentVector::iterator &) const
Definition: JetCaloCalculations.h:33
xAOD::JetConstituentVector::iterator
Definition: JetConstituentVector.h:121
jet::JetCaloCalculator
Definition: JetCaloCalculations.h:76
jet::JetCaloCalculator::name
virtual std::string name() const
Definition: JetCaloCalculations.h:102
jet::JetCaloCalculations::m_calculators
std::vector< JetCaloCalculator * > m_calculators
Definition: JetCaloCalculations.h:167
python.compressB64.c
def c
Definition: compressB64.py:93
jet::JetCaloCalculations::setupEvent
bool setupEvent()
Definition: JetCaloCalculations.cxx:262
jet::JetCaloCalculator::setName
void setName(const std::string &n)
Definition: JetCaloCalculations.h:104