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 258 of file JetCaloCalculations.cxx.

258 {
259 m_calculators.push_back(c);
260 }
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 332 of file JetCaloCalculations.cxx.

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

◆ 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 270 of file JetCaloCalculations.cxx.

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

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

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: