ATLAS Offline Software
Loading...
Searching...
No Matches
jet::JetCaloCalculations Class Reference

Holds a list of JetCalculators. More...

#include <JetCaloCalculations.h>

Inheritance diagram for jet::JetCaloCalculations:
Collaboration diagram for jet::JetCaloCalculations:

Public Member Functions

 JetCaloCalculations (bool ownCalc=true)
virtual ~JetCaloCalculations ()
void addCalculator (JetCaloCalculator *c)
bool setupEvent ()
virtual std::vector< double > process (const xAOD::Jet *jet) const
 Perform all tasks correspondings to the associated JetCaloCalculators on Jet jet.
void clear ()
size_t numCalculators () const
const JetCaloCalculatorat (size_t i) const

Protected Attributes

std::vector< JetCaloCalculator * > m_calculators
bool m_owncalculators

Detailed Description

Holds a list of JetCalculators.

For a given jet, performs a single, optimized loop over constituents and calls the processConstituent function of all its calculators.

When processing constituents, it passes JetConstituentVector::iterator at the UncalibratedJetConstituent scale : this is a choice (most quantities are build from cluster moments calculated at EM scale).

See also JetCaloCellCalculations in JetCaloCellQualityUtils.h for a similar object using calculators acting on CaloCell directly

Definition at line 145 of file JetCaloCalculations.h.

Constructor & Destructor Documentation

◆ JetCaloCalculations()

jet::JetCaloCalculations::JetCaloCalculations ( bool ownCalc = true)
inline

Definition at line 148 of file JetCaloCalculations.h.

◆ ~JetCaloCalculations()

virtual jet::JetCaloCalculations::~JetCaloCalculations ( )
inlinevirtual

Definition at line 150 of file JetCaloCalculations.h.

Member Function Documentation

◆ addCalculator()

void jet::JetCaloCalculations::addCalculator ( JetCaloCalculator * c)

Definition at line 257 of file JetCaloCalculations.cxx.

257 {
258 m_calculators.push_back(c);
259 }
std::vector< JetCaloCalculator * > m_calculators

◆ at()

const JetCaloCalculator * jet::JetCaloCalculations::at ( size_t i) const
inline

Definition at line 162 of file JetCaloCalculations.h.

162{return m_calculators[i];}

◆ clear()

void jet::JetCaloCalculations::clear ( )

Definition at line 331 of file JetCaloCalculations.cxx.

331 {
332 if(m_owncalculators) for(size_t i=0;i < m_calculators.size();i++) delete m_calculators[i];
333 m_calculators.clear();
334 }

◆ numCalculators()

size_t jet::JetCaloCalculations::numCalculators ( ) const
inline

Definition at line 161 of file JetCaloCalculations.h.

161{return m_calculators.size();}

◆ process()

std::vector< double > jet::JetCaloCalculations::process ( const xAOD::Jet * jet) const
virtual

Perform all tasks correspondings to the associated JetCaloCalculators on Jet jet.

Reimplemented in jet::JetCaloCellCalculations.

Definition at line 269 of file JetCaloCalculations.cxx.

269 {
270 size_t nConstit = jet->numConstituents();
271 std::vector<double> results;
272 results.reserve(m_calculators.size());
273
274 if( nConstit == 0) {
275 results.resize(m_calculators.size(),0);
276 return results;
277 }
278
279 // Clone calculators : we are in a const method, we can't call the
280 // non const setupJet() and processConstituent() methods of our calculators.
281 std::vector<JetCaloCalculator*> clonedCalc;
282 clonedCalc.reserve(m_calculators.size());
283 for( const JetCaloCalculator *calc : m_calculators) clonedCalc.push_back( calc->clone() );
284
285 // prepare each calculator
286 for(JetCaloCalculator* calc: clonedCalc) {
287 calc->setupJet(jet);
288 }
289
290 // retrieve the cluster moment extractor for this jet.
291 const CaloConstitHelpers::CaloConstitExtractor * extractor = CaloConstitHelpers::extractorForJet(jet);
292 // assign the extractor to the calculators :
293 for( JetCaloCalculator* calc : clonedCalc) calc->setExtractor(extractor);
294
295 xAOD::JetConstituentVector constits = jet->getConstituents();
296 // Use the constituent iterator at UNCALIBRATED scale
297 xAOD::JetConstituentVector::iterator it = constits.begin(xAOD::UncalibratedJetConstituent );
298 xAOD::JetConstituentVector::iterator itE = constits.end(xAOD::UncalibratedJetConstituent);
299
300 // loop over constituents
301 for(; it != itE; ++it)
302 {
303 //std::cout << " processing constit ---- "<< (*it)->pt() << " v= "<< extractor->valid(it) << std::endl;
304
305 if( ! extractor->valid(it) ) continue; // this can happen for charged pflow objects
306 // loop over calculators for this constituent.
307 for(JetCaloCalculator* calc : clonedCalc) {
308 calc->processConstituent(it);
309 }
310 } // constituents loop
311
312 // copy results & clear the cloned calc
313 for(JetCaloCalculator* calc: clonedCalc) {
314 results.push_back( calc->jetCalculation() );
315 delete calc;
316 }
317
318 return results;
319 }
iterator begin() const
iterator on the first constituent
iterator end() const
iterator after the last constituent
size_t numConstituents() const
Number of constituents in this jets (this is valid even when reading a file where the constituents ha...
Definition Jet_v1.cxx:153
JetConstituentVector getConstituents() const
Return a vector of consituents. The object behaves like vector<const IParticle*>. See JetConstituentV...
Definition Jet_v1.cxx:147
const CaloConstitExtractor * extractorForJet(const xAOD::Jet *jet)
returns a pointer to a CaloConstitExtractor for a given jet.
@ UncalibratedJetConstituent
Definition JetTypes.h:21
virtual bool valid(xAOD::JetConstituentVector::iterator &) const

◆ setupEvent()

bool jet::JetCaloCalculations::setupEvent ( )

Definition at line 262 of file JetCaloCalculations.cxx.

262 {
263 for(size_t i=0;i < m_calculators.size();i++) m_calculators[i]->setupEvent();
264 return true;
265 }

Member Data Documentation

◆ m_calculators

std::vector<JetCaloCalculator*> jet::JetCaloCalculations::m_calculators
protected

Definition at line 167 of file JetCaloCalculations.h.

◆ m_owncalculators

bool jet::JetCaloCalculations::m_owncalculators
protected

Definition at line 168 of file JetCaloCalculations.h.


The documentation for this class was generated from the following files: