ATLAS Offline Software
Loading...
Searching...
No Matches
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
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
40namespace 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
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;
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
This file defines helper classes to deal with jet constituents.
JetCaloCalculations(bool ownCalc=true)
const JetCaloCalculator * at(size_t i) const
std::vector< JetCaloCalculator * > m_calculators
void addCalculator(JetCaloCalculator *c)
Base class to support cpu-efficient calculation on calorimeter jets either at CaloCell or constituent...
virtual double jetCalculation() const
return the result of the calculation
virtual bool setupJet(const xAOD::Jet *)=0
virtual JetCaloCalculator * clone() const =0
Clone. Base class should not be cloned.
virtual bool processConstituent(xAOD::JetConstituentVector::iterator &)
Perform 1 calculation step using 1 constituent.
virtual std::string name() const
virtual double operator()(const xAOD::Jet *jet, xAOD::JetConstitScale s=xAOD::UncalibratedJetConstituent)
convenience function to perform the full calculation on a given jet
void setExtractor(const CaloConstitHelpers::CaloConstitExtractor *ex)
const CaloConstitHelpers::CaloConstitExtractor * m_constitExtractor
void setName(const std::string &n)
xAOD::JetAttribute::AttributeID m_id
MomentType
Enums to identify different moments.
const std::string process
Jet_v1 Jet
Definition of the current "jet version".
JetConstitScale
Definition JetTypes.h:20
@ UncalibratedJetConstituent
Definition JetTypes.h:21
Interface to retrieve calo informations from a jet constituent.
virtual double energyHEC(xAOD::JetConstituentVector::iterator &) const
virtual double time(xAOD::JetConstituentVector::iterator &) const
virtual double moment(xAOD::JetConstituentVector::iterator &, xAOD::CaloCluster::MomentType) const
virtual bool valid(xAOD::JetConstituentVector::iterator &) const