ATLAS Offline Software
Loading...
Searching...
No Matches
LVL1::L1JEPEtSumsTools Class Reference

This is a tool to reconstruct the L1 JEM and CMM-Energy Et sums from Jet Elements. More...

#include <L1JEPEtSumsTools.h>

Inheritance diagram for LVL1::L1JEPEtSumsTools:
Collaboration diagram for LVL1::L1JEPEtSumsTools:

Public Member Functions

 L1JEPEtSumsTools (const std::string &type, const std::string &name, const IInterface *parent)
 Constructor.
virtual ~L1JEPEtSumsTools ()
 default destructor
virtual StatusCode initialize ()
 standard Athena-Algorithm method
virtual void formJEMEtSums (const DataVector< xAOD::JetElement > *jetElementVec, DataVector< JEMEtSums > *jemEtSumsVec) const
 form JEMEtSums from JetElements
virtual void formCMMEtSums (const DataVector< JEMEtSums > *jemEtSumsVec, DataVector< CMMEtSums > *cmmEtSumsVec) const
 form complete CMMEtSums from JEMEtSums
virtual void formCMMEtSumsModule (const DataVector< JEMEtSums > *jemEtSumsVec, DataVector< CMMEtSums > *cmmEtSumsMod) const
 form partial CMMEtSums (module) from JEMEtSums
virtual void formCMMEtSumsCrate (const DataVector< CMMEtSums > *cmmEtSumsMod, DataVector< CMMEtSums > *cmmEtSumsCrate) const
 form partial CMMEtSums (crate) from module CMMEtSums
virtual void formCMMEtSumsSystem (const DataVector< CMMEtSums > *cmmEtSumsCrate, DataVector< CMMEtSums > *cmmEtSumsSys) const
 form partial CMMEtSums (system) from crate CMMEtSums
virtual void formCMMEtSumsEtMaps (const DataVector< CMMEtSums > *cmmEtSumsSys, DataVector< CMMEtSums > *cmmEtSumsMap) const
 form partial CMMEtSums (sumEt/missingEt maps) from system CMMEtSums
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef std::vector< unsigned int > EnergyVector
typedef std::vector< int > ErrorVector
typedef std::vector< DataVector< ModuleEnergy > * > MultiSliceModuleEnergy
typedef std::vector< DataVector< CrateEnergy > * > MultiSliceCrateEnergy
typedef std::vector< SystemEnergy * > MultiSliceSystemEnergy
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

void etSumsToModuleEnergy (const DataVector< CMMEtSums > *etSums, MultiSliceModuleEnergy &modulesVec, int &peak) const
 Convert CMMEtSums container to internal ModuleEnergy containers.
void etSumsToCrateEnergy (const DataVector< CMMEtSums > *etSums, MultiSliceCrateEnergy &crateVec, int &peak) const
 Convert CMMEtSums container to internal CrateEnergy containers.
void etSumsToSystemEnergy (const DataVector< CMMEtSums > *etSums, MultiSliceSystemEnergy &systemVec, int &peak) const
 Convert CMMEtSums container to internal SystemEnergy objects.
void moduleEnergyToEtSums (const MultiSliceModuleEnergy &modulesVec, DataVector< JEMEtSums > *jemEtSumsVec, int peak) const
 Convert internal ModuleEnergy containers to JEMEtSums container.
void crateEnergyToEtSums (const MultiSliceCrateEnergy &cratesVec, DataVector< CMMEtSums > *cmmEtSumsVec, int peak) const
 Convert internal CrateEnergy containers to CMMEtSums container.
void systemEnergyToEtSums (const MultiSliceSystemEnergy &systemVec, DataVector< CMMEtSums > *cmmEtSumsVec, int peak) const
 Convert internal SystemEnergy objects to CMMEtSums object.
void etMapsToEtSums (const MultiSliceSystemEnergy &systemVec, DataVector< CMMEtSums > *cmmEtSumsVec, int peak) const
 Convert maps from internal SystemEnergy objects to CMMEtSums objects.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ToolHandle< LVL1::IL1JetElementToolsm_jeTool
 Tool for JetElement map.
ToolHandle< LVL1::IL1EtToolsm_etTool
 Tool for energy sums.
SG::ReadHandleKey< TrigConf::L1Menum_L1MenuKey { this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu", "L1 Menu" }
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

This is a tool to reconstruct the L1 JEM and CMM-Energy Et sums from Jet Elements.

Used for offline monitoring and trigger reconstruction.

Useage: L1JEPEtSumsTools->formJEMEtSums() // Form JEMEtSums from JetElements L1JEPEtSumsTools->formCMMEtSums() // Form CMMEtSums from JEMEtSums

  @author  Peter Faulkner

Definition at line 52 of file L1JEPEtSumsTools.h.

Member Typedef Documentation

◆ EnergyVector

typedef std::vector<unsigned int> LVL1::L1JEPEtSumsTools::EnergyVector
private

Definition at line 87 of file L1JEPEtSumsTools.h.

◆ ErrorVector

typedef std::vector<int> LVL1::L1JEPEtSumsTools::ErrorVector
private

Definition at line 88 of file L1JEPEtSumsTools.h.

◆ MultiSliceCrateEnergy

Definition at line 90 of file L1JEPEtSumsTools.h.

◆ MultiSliceModuleEnergy

Definition at line 89 of file L1JEPEtSumsTools.h.

◆ MultiSliceSystemEnergy

Definition at line 91 of file L1JEPEtSumsTools.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ L1JEPEtSumsTools()

LVL1::L1JEPEtSumsTools::L1JEPEtSumsTools ( const std::string & type,
const std::string & name,
const IInterface * parent )

Constructor.

Definition at line 24 of file L1JEPEtSumsTools.cxx.

27 :
28 AthAlgTool(type, name, parent),
29 m_jeTool("LVL1::L1JetElementTools/L1JetElementTools"),
30 m_etTool("LVL1::L1EtTools/L1EtTools")
31{
32 declareInterface<IL1JEPEtSumsTools>(this);
33 declareProperty( "JetElementTool", m_jeTool);
34 declareProperty( "EtTool", m_etTool);
35}
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ToolHandle< LVL1::IL1JetElementTools > m_jeTool
Tool for JetElement map.
ToolHandle< LVL1::IL1EtTools > m_etTool
Tool for energy sums.

◆ ~L1JEPEtSumsTools()

LVL1::L1JEPEtSumsTools::~L1JEPEtSumsTools ( )
virtual

default destructor

Destructor.

Definition at line 39 of file L1JEPEtSumsTools.cxx.

40{
41}

Member Function Documentation

◆ crateEnergyToEtSums()

void LVL1::L1JEPEtSumsTools::crateEnergyToEtSums ( const MultiSliceCrateEnergy & cratesVec,
DataVector< CMMEtSums > * cmmEtSumsVec,
int peak ) const
private

Convert internal CrateEnergy containers to CMMEtSums container.

Definition at line 383 of file L1JEPEtSumsTools.cxx.

386{
387 std::map<int, CMMEtSums*> etMap;
388 unsigned int nslices = cratesVec.size();
389 std::vector<unsigned int> dummy(nslices);
390 std::vector<int> error(nslices);
391 for (unsigned int slice = 0; slice < nslices; ++slice) {
392 const DataVector<CrateEnergy>* crates = cratesVec[slice];
395 for (; pos != pose; ++pos) {
396 const CrateEnergy* energy = *pos;
397 unsigned int ex = energy->exTC();
398 unsigned int ey = energy->eyTC();
399 unsigned int et = energy->et();
400 int exOverflow = energy->exOverflow();
401 int eyOverflow = energy->eyOverflow();
402 int etOverflow = energy->etOverflow();
403 if (ex == 0 && ey == 0 && et == 0 &&
404 exOverflow == 0 && eyOverflow == 0 && etOverflow == 0) continue;
405 int crate = energy->crate();
406 CMMEtSums* sums = 0;
407 int dataId = CMMEtSums::LOCAL;
408 for (int i = 0; i < 2; ++i) {
409 int key = crate*100 + dataId;
410 std::map<int, CMMEtSums*>::iterator iter = etMap.find(key);
411 if (iter == etMap.end()) {
412 sums = new CMMEtSums(crate, dataId, dummy, dummy, dummy,
413 error, error, error, peak);
414 etMap.insert(std::make_pair(key, sums));
415 cmmEtSumsVec->push_back(sums);
416 } else sums = iter->second;
417 std::vector<unsigned int> exVec(sums->ExVec());
418 std::vector<unsigned int> eyVec(sums->EyVec());
419 std::vector<unsigned int> etVec(sums->EtVec());
420 std::vector<int> exErr(sums->ExErrorVec());
421 std::vector<int> eyErr(sums->EyErrorVec());
422 std::vector<int> etErr(sums->EtErrorVec());
423 exVec[slice] = ex;
424 eyVec[slice] = ey;
425 etVec[slice] = et;
426 if (exOverflow) {
427 DataError dEx(exErr[slice]);
428 dEx.set(DataError::Overflow);
429 exErr[slice] = dEx.error();
430 }
431 if (eyOverflow) {
432 DataError dEy(eyErr[slice]);
433 dEy.set(DataError::Overflow);
434 eyErr[slice] = dEy.error();
435 }
436 if (etOverflow) {
437 DataError dEt(etErr[slice]);
438 dEt.set(DataError::Overflow);
439 etErr[slice] = dEt.error();
440 }
441 sums->addEx(exVec, exErr);
442 sums->addEy(eyVec, eyErr);
443 sums->addEt(etVec, etErr);
444 if (crate == 1) break;
445 crate = 1;
446 dataId = CMMEtSums::REMOTE;
447 }
448 }
449 }
450}
float et(const xAOD::jFexSRJetRoI *j)
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
Definition DataVector.h:838
value_type push_back(value_type pElem)
Add an element to the end of the collection.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
CMMEtSums_v1 CMMEtSums
Define the latest version of the CMMEtSums class.

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ etMapsToEtSums()

void LVL1::L1JEPEtSumsTools::etMapsToEtSums ( const MultiSliceSystemEnergy & systemVec,
DataVector< CMMEtSums > * cmmEtSumsVec,
int peak ) const
private

Convert maps from internal SystemEnergy objects to CMMEtSums objects.

Definition at line 509 of file L1JEPEtSumsTools.cxx.

512{
513 CMMEtSums* missEt = 0;
514 CMMEtSums* sumEt = 0;
515 CMMEtSums* missEtSig = 0;
516 unsigned int nslices = systemVec.size();
517 std::vector<unsigned int> data(nslices);
518 std::vector<int> error(nslices);
519 for (unsigned int slice = 0; slice < nslices; ++slice) {
520 SystemEnergy* energy = systemVec[slice];
521 unsigned int etMissHits = energy->etMissHits();
522 if (etMissHits) {
523 if ( !missEt ) {
525 error, error, error, peak);
526 cmmEtSumsVec->push_back(missEt);
527 }
528 std::vector<unsigned int> etVec(missEt->EtVec());
529 etVec[slice] = etMissHits;
530 missEt->addEx(etVec, error);
531 missEt->addEy(etVec, error);
532 missEt->addEt(etVec, error);
533 }
534 unsigned int etSumHits = energy->etSumHits();
535 if (etSumHits) {
536 if ( !sumEt ) {
537 sumEt = new CMMEtSums(1, CMMEtSums::SUM_ET_MAP, data, data, data,
538 error, error, error, peak);
539 cmmEtSumsVec->push_back(sumEt);
540 }
541 std::vector<unsigned int> etVec(sumEt->EtVec());
542 etVec[slice] = etSumHits;
543 sumEt->addEx(etVec, error);
544 sumEt->addEy(etVec, error);
545 sumEt->addEt(etVec, error);
546 }
547 //unsigned int etMissSigHits = energy->etMissSigHits();
548 unsigned int etMissSigHits = ((energy->roiWord0())>>16)&0xff;
549 if (etMissSigHits) {
550 if ( !missEtSig ) {
551 missEtSig = new CMMEtSums(1, CMMEtSums::MISSING_ET_SIG_MAP,
552 data, data, data, error, error, error, peak);
553 cmmEtSumsVec->push_back(missEtSig);
554 }
555 std::vector<unsigned int> etVec(missEtSig->EtVec());
556 etVec[slice] = etMissSigHits;
557 missEtSig->addEx(etVec, error);
558 missEtSig->addEy(etVec, error);
559 missEtSig->addEt(etVec, error);
560 }
561 }
562}
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11

◆ etSumsToCrateEnergy()

void LVL1::L1JEPEtSumsTools::etSumsToCrateEnergy ( const DataVector< CMMEtSums > * etSums,
MultiSliceCrateEnergy & crateVec,
int & peak ) const
private

Convert CMMEtSums container to internal CrateEnergy containers.

Definition at line 260 of file L1JEPEtSumsTools.cxx.

262{
263 peak = 0;
264 unsigned int nslices = 0;
267 for (; pos != pose; ++pos) {
268 const CMMEtSums* sums = *pos;
269 int crate = sums->crate();
270 if (crate != 1) continue;
271 int dataId = sums->dataID();
272 if (dataId != CMMEtSums::LOCAL &&
273 dataId != CMMEtSums::REMOTE) continue;
274 if (dataId == CMMEtSums::REMOTE) crate = 0;
275 if (sums->peak() > peak) peak = sums->peak();
276 const EnergyVector& ex(sums->ExVec());
277 const EnergyVector& ey(sums->EyVec());
278 const EnergyVector& et(sums->EtVec());
279 const ErrorVector& exErrVec(sums->ExErrorVec());
280 const ErrorVector& eyErrVec(sums->EyErrorVec());
281 const ErrorVector& etErrVec(sums->EtErrorVec());
282 unsigned int slices = et.size();
283 if (slices > nslices) {
284 for (unsigned int i = nslices; i < slices; ++i) {
285 crateVec.push_back(new DataVector<CrateEnergy>);
286 }
287 nslices = slices;
288 }
289 for (unsigned int sl = 0; sl < slices; ++sl) {
290 DataVector<CrateEnergy>* crates = crateVec[sl];
291 DataError exErr(exErrVec[sl]);
292 DataError eyErr(eyErrVec[sl]);
293 DataError etErr(etErrVec[sl]);
294 crates->push_back(new CrateEnergy(crate, et[sl], ex[sl], ey[sl],
295 etErr.get(DataError::Overflow),
296 exErr.get(DataError::Overflow),
297 eyErr.get(DataError::Overflow)));
298 }
299 }
300}
std::vector< int > ErrorVector
std::vector< unsigned int > EnergyVector

◆ etSumsToModuleEnergy()

void LVL1::L1JEPEtSumsTools::etSumsToModuleEnergy ( const DataVector< CMMEtSums > * etSums,
MultiSliceModuleEnergy & modulesVec,
int & peak ) const
private

Convert CMMEtSums container to internal ModuleEnergy containers.

Definition at line 226 of file L1JEPEtSumsTools.cxx.

229{
230 peak = 0;
231 unsigned int nslices = 0;
234 for (; pos != pose; ++pos) {
235 const CMMEtSums* sums = *pos;
236 int dataId = sums->dataID();
237 if (dataId > 15) continue;
238 int crate = sums->crate();
239 if (sums->peak() > peak) peak = sums->peak();
240 const EnergyVector& ex(sums->ExVec());
241 const EnergyVector& ey(sums->EyVec());
242 const EnergyVector& et(sums->EtVec());
243 unsigned int slices = et.size();
244 if (slices > nslices) {
245 for (unsigned int i = nslices; i < slices; ++i) {
246 modulesVec.push_back(new DataVector<ModuleEnergy>);
247 }
248 nslices = slices;
249 }
250 for (unsigned int sl = 0; sl < slices; ++sl) {
251 DataVector<ModuleEnergy>* modules = modulesVec[sl];
252 modules->push_back(new ModuleEnergy(crate, dataId,
253 et[sl], ex[sl], ey[sl]));
254 }
255 }
256}

◆ etSumsToSystemEnergy()

void LVL1::L1JEPEtSumsTools::etSumsToSystemEnergy ( const DataVector< CMMEtSums > * etSums,
MultiSliceSystemEnergy & systemVec,
int & peak ) const
private

Convert CMMEtSums container to internal SystemEnergy objects.

Definition at line 304 of file L1JEPEtSumsTools.cxx.

307{
308 peak = 0;
309 int restricted = 0;
312 for (; pos != pose; ++pos) {
313 const CMMEtSums* sums = *pos;
314 int dataId = sums->dataID();
315 if (dataId != CMMEtSums::TOTAL) continue;
316 if (sums->peak() > peak) peak = sums->peak();
317 const EnergyVector& ex(sums->ExVec());
318 const EnergyVector& ey(sums->EyVec());
319 const EnergyVector& et(sums->EtVec());
320 const ErrorVector& exErrVec(sums->ExErrorVec());
321 const ErrorVector& eyErrVec(sums->EyErrorVec());
322 const ErrorVector& etErrVec(sums->EtErrorVec());
323 unsigned int slices = et.size();
324 auto l1Menu = SG::makeHandle( m_L1MenuKey );
325 for (unsigned int sl = 0; sl < slices; ++sl) {
326 DataError exErr(exErrVec[sl]);
327 DataError eyErr(eyErrVec[sl]);
328 DataError etErr(etErrVec[sl]);
329 systemVec.push_back(new SystemEnergy(et[sl], ex[sl], ey[sl],
330 etErr.get(DataError::Overflow),
331 exErr.get(DataError::Overflow),
332 eyErr.get(DataError::Overflow),
333 restricted,
334 &(*l1Menu)));
335 }
336 }
337}
SG::ReadHandleKey< TrigConf::L1Menu > m_L1MenuKey
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ formCMMEtSums()

void LVL1::L1JEPEtSumsTools::formCMMEtSums ( const DataVector< JEMEtSums > * jemEtSumsVec,
DataVector< CMMEtSums > * cmmEtSumsVec ) const
virtual

form complete CMMEtSums from JEMEtSums

Implements LVL1::IL1JEPEtSumsTools.

Definition at line 102 of file L1JEPEtSumsTools.cxx.

104{
105 formCMMEtSumsModule(jemEtSumsVec, cmmEtSumsVec);
106 // Convert to internal containers
107 int peak = 0;
108 MultiSliceModuleEnergy modulesVec;
109 MultiSliceCrateEnergy cratesVec;
110 MultiSliceSystemEnergy systemVec;
111 etSumsToModuleEnergy(cmmEtSumsVec, modulesVec, peak);
112 // Process each slice
113 MultiSliceModuleEnergy::iterator iter = modulesVec.begin();
114 MultiSliceModuleEnergy::iterator iterE = modulesVec.end();
115 for (; iter != iterE; ++iter) {
116 DataVector<ModuleEnergy>* modules = *iter;
117 DataVector<CrateEnergy>* crates = new DataVector<CrateEnergy>;
118 cratesVec.push_back(crates);
119 m_etTool->crateSums(modules, crates);
120 systemVec.push_back(new SystemEnergy(m_etTool->systemSums(crates)));
121 delete modules;
122 }
123 // Convert back to CMMEtSums
124 crateEnergyToEtSums(cratesVec, cmmEtSumsVec, peak);
125 MultiSliceCrateEnergy::iterator citer = cratesVec.begin();
126 MultiSliceCrateEnergy::iterator citerE = cratesVec.end();
127 for (; citer != citerE; ++citer) delete *citer;
128 systemEnergyToEtSums(systemVec, cmmEtSumsVec, peak);
129 etMapsToEtSums(systemVec, cmmEtSumsVec, peak);
130 MultiSliceSystemEnergy::iterator siter = systemVec.begin();
131 MultiSliceSystemEnergy::iterator siterE = systemVec.end();
132 for (; siter != siterE; ++siter) delete *siter;
133}
std::vector< SystemEnergy * > MultiSliceSystemEnergy
void etSumsToModuleEnergy(const DataVector< CMMEtSums > *etSums, MultiSliceModuleEnergy &modulesVec, int &peak) const
Convert CMMEtSums container to internal ModuleEnergy containers.
void etMapsToEtSums(const MultiSliceSystemEnergy &systemVec, DataVector< CMMEtSums > *cmmEtSumsVec, int peak) const
Convert maps from internal SystemEnergy objects to CMMEtSums objects.
std::vector< DataVector< CrateEnergy > * > MultiSliceCrateEnergy
void crateEnergyToEtSums(const MultiSliceCrateEnergy &cratesVec, DataVector< CMMEtSums > *cmmEtSumsVec, int peak) const
Convert internal CrateEnergy containers to CMMEtSums container.
std::vector< DataVector< ModuleEnergy > * > MultiSliceModuleEnergy
virtual void formCMMEtSumsModule(const DataVector< JEMEtSums > *jemEtSumsVec, DataVector< CMMEtSums > *cmmEtSumsMod) const
form partial CMMEtSums (module) from JEMEtSums
void systemEnergyToEtSums(const MultiSliceSystemEnergy &systemVec, DataVector< CMMEtSums > *cmmEtSumsVec, int peak) const
Convert internal SystemEnergy objects to CMMEtSums object.

◆ formCMMEtSumsCrate()

void LVL1::L1JEPEtSumsTools::formCMMEtSumsCrate ( const DataVector< CMMEtSums > * cmmEtSumsMod,
DataVector< CMMEtSums > * cmmEtSumsCrate ) const
virtual

form partial CMMEtSums (crate) from module CMMEtSums

Implements LVL1::IL1JEPEtSumsTools.

Definition at line 154 of file L1JEPEtSumsTools.cxx.

157{
158 // Convert to internal containers
159 int peak = 0;
160 MultiSliceModuleEnergy modulesVec;
161 MultiSliceCrateEnergy cratesVec;
162 etSumsToModuleEnergy(cmmEtSumsMod, modulesVec, peak);
163 // Process each slice
164 MultiSliceModuleEnergy::iterator iter = modulesVec.begin();
165 MultiSliceModuleEnergy::iterator iterE = modulesVec.end();
166 for (; iter != iterE; ++iter) {
167 DataVector<ModuleEnergy>* modules = *iter;
168 DataVector<CrateEnergy>* crates = new DataVector<CrateEnergy>;
169 cratesVec.push_back(crates);
170 m_etTool->crateSums(modules, crates);
171 delete modules;
172 }
173 // Convert back to CMMEtSums
174 crateEnergyToEtSums(cratesVec, cmmEtSumsCrate, peak);
175 MultiSliceCrateEnergy::iterator miter = cratesVec.begin();
176 MultiSliceCrateEnergy::iterator miterE = cratesVec.end();
177 for (; miter != miterE; ++miter) delete *miter;
178}

◆ formCMMEtSumsEtMaps()

void LVL1::L1JEPEtSumsTools::formCMMEtSumsEtMaps ( const DataVector< CMMEtSums > * cmmEtSumsSys,
DataVector< CMMEtSums > * cmmEtSumsMap ) const
virtual

form partial CMMEtSums (sumEt/missingEt maps) from system CMMEtSums

form partial CMMEtSums (sumEt/missingEt/missingEtSig maps) from system CMMEtSums

Implements LVL1::IL1JEPEtSumsTools.

Definition at line 209 of file L1JEPEtSumsTools.cxx.

212{
213 // Convert to internal objects
214 int peak = 0;
215 MultiSliceSystemEnergy systemVec;
216 etSumsToSystemEnergy(cmmEtSumsSys, systemVec, peak);
217 // Convert back to CMMEtSums
218 etMapsToEtSums(systemVec, cmmEtSumsMap, peak);
219 MultiSliceSystemEnergy::iterator iter = systemVec.begin();
220 MultiSliceSystemEnergy::iterator iterE = systemVec.end();
221 for (; iter != iterE; ++iter) delete *iter;
222}
void etSumsToSystemEnergy(const DataVector< CMMEtSums > *etSums, MultiSliceSystemEnergy &systemVec, int &peak) const
Convert CMMEtSums container to internal SystemEnergy objects.

◆ formCMMEtSumsModule()

void LVL1::L1JEPEtSumsTools::formCMMEtSumsModule ( const DataVector< JEMEtSums > * jemEtSumsVec,
DataVector< CMMEtSums > * cmmEtSumsMod ) const
virtual

form partial CMMEtSums (module) from JEMEtSums

Implements LVL1::IL1JEPEtSumsTools.

Definition at line 137 of file L1JEPEtSumsTools.cxx.

140{
142 DataVector<JEMEtSums>::const_iterator pose = jemEtSumsVec->end();
143 for (; pos != pose; ++pos) {
144 const JEMEtSums* sums = *pos;
145 ErrorVector err(sums->EtVec().size());
146 cmmEtSumsMod->push_back(new CMMEtSums(sums->crate(), sums->module(),
147 sums->EtVec(), sums->ExVec(), sums->EyVec(),
148 err, err, err, sums->peak()));
149 }
150}
JEMEtSums_v2 JEMEtSums
Define the latest version of the JEMEtSums class.

◆ formCMMEtSumsSystem()

void LVL1::L1JEPEtSumsTools::formCMMEtSumsSystem ( const DataVector< CMMEtSums > * cmmEtSumsCrate,
DataVector< CMMEtSums > * cmmEtSumsSys ) const
virtual

form partial CMMEtSums (system) from crate CMMEtSums

Implements LVL1::IL1JEPEtSumsTools.

Definition at line 182 of file L1JEPEtSumsTools.cxx.

185{
186 // Convert to internal containers
187 int peak = 0;
188 MultiSliceCrateEnergy cratesVec;
189 MultiSliceSystemEnergy systemVec;
190 etSumsToCrateEnergy(cmmEtSumsCrate, cratesVec, peak);
191 // Process each slice
192 MultiSliceCrateEnergy::iterator iter = cratesVec.begin();
193 MultiSliceCrateEnergy::iterator iterE = cratesVec.end();
194 for (; iter != iterE; ++iter) {
195 DataVector<CrateEnergy>* crates = *iter;
196 systemVec.push_back(new SystemEnergy(m_etTool->systemSums(crates)));
197 delete crates;
198 }
199 // Convert back to CMMEtSums
200 systemEnergyToEtSums(systemVec, cmmEtSumsSys, peak);
201 MultiSliceSystemEnergy::iterator siter = systemVec.begin();
202 MultiSliceSystemEnergy::iterator siterE = systemVec.end();
203 for (; siter != siterE; ++siter) delete *siter;
204}
void etSumsToCrateEnergy(const DataVector< CMMEtSums > *etSums, MultiSliceCrateEnergy &crateVec, int &peak) const
Convert CMMEtSums container to internal CrateEnergy containers.

◆ formJEMEtSums()

void LVL1::L1JEPEtSumsTools::formJEMEtSums ( const DataVector< xAOD::JetElement > * jetElementVec,
DataVector< JEMEtSums > * jemEtSumsVec ) const
virtual

form JEMEtSums from JetElements

Implements LVL1::IL1JEPEtSumsTools.

Definition at line 63 of file L1JEPEtSumsTools.cxx.

66{
67 // Find number of slices
68 int peak = 0;
69 unsigned int nslices = 1;
72 for (; iter != iterE; ++iter) {
73 if ((*iter)->emJetElementETVec().size() > nslices) {
74 nslices = (*iter)->emJetElementETVec().size();
75 peak = (*iter)->peak();
76 break;
77 }
78 if ((*iter)->hadJetElementETVec().size() > nslices) {
79 nslices = (*iter)->emJetElementETVec().size();
80 peak = (*iter)->peak();
81 break;
82 }
83 }
84 // Process each slice
86 m_jeTool->mapJetElements(jetElementVec, &jeMap);
87 MultiSliceModuleEnergy modulesVec;
88 for (unsigned int slice = 0; slice < nslices; ++slice) {
89 DataVector<ModuleEnergy>* modules = new DataVector<ModuleEnergy>;
90 modulesVec.push_back(modules);
91 m_etTool->moduleSums(&jeMap, modules, slice);
92 }
93 // Convert to JEMEtSums
94 moduleEnergyToEtSums(modulesVec, jemEtSumsVec, peak);
95 MultiSliceModuleEnergy::iterator miter = modulesVec.begin();
96 MultiSliceModuleEnergy::iterator miterE = modulesVec.end();
97 for (; miter != miterE; ++miter) delete *miter;
98}
void moduleEnergyToEtSums(const MultiSliceModuleEnergy &modulesVec, DataVector< JEMEtSums > *jemEtSumsVec, int peak) const
Convert internal ModuleEnergy containers to JEMEtSums container.
std::map< int, const JetElement * > JetElementMap_t

◆ initialize()

StatusCode LVL1::L1JEPEtSumsTools::initialize ( )
virtual

standard Athena-Algorithm method

Initialisation.

Definition at line 46 of file L1JEPEtSumsTools.cxx.

47{
48
49 ATH_CHECK( m_L1MenuKey.initialize() );
50 // Retrieve jet element tool
51
52 ATH_CHECK(m_jeTool.retrieve());
53
54 // Retrieve energy sums tool
55
56 ATH_CHECK(m_etTool.retrieve());
57
58 return StatusCode::SUCCESS;
59}
#define ATH_CHECK
Evaluate an expression and check for errors.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & LVL1::IL1JEPEtSumsTools::interfaceID ( )
inlinestaticinherited

Definition at line 48 of file IL1JEPEtSumsTools.h.

49 {
51 }
static const InterfaceID IID_IL1JEPEtSumsTools("LVL1::IL1JEPEtSumsTools", 1, 0)
Interface definition for L1JEPEtSumsTools.

◆ moduleEnergyToEtSums()

void LVL1::L1JEPEtSumsTools::moduleEnergyToEtSums ( const MultiSliceModuleEnergy & modulesVec,
DataVector< JEMEtSums > * jemEtSumsVec,
int peak ) const
private

Convert internal ModuleEnergy containers to JEMEtSums container.

Definition at line 341 of file L1JEPEtSumsTools.cxx.

344{
345 std::map<int, JEMEtSums*> etMap;
346 unsigned int nslices = modulesVec.size();
347 std::vector<unsigned int> dummy(nslices);
348 for (unsigned int slice = 0; slice < nslices; ++slice) {
349 const DataVector<ModuleEnergy>* modules = modulesVec[slice];
352 for (; pos != pose; ++pos) {
353 const ModuleEnergy* energy = *pos;
354 unsigned int ex = energy->ex();
355 unsigned int ey = energy->ey();
356 unsigned int et = energy->et();
357 if (ex == 0 && ey == 0 && et == 0) continue;
358 int crate = energy->crate();
359 int module = energy->module();
360 JEMEtSums* sums = 0;
361 int key = crate*100 + module;
362 std::map<int, JEMEtSums*>::iterator iter = etMap.find(key);
363 if (iter == etMap.end()) {
364 sums = new JEMEtSums(crate, module, dummy, dummy, dummy, peak);
365 etMap.insert(std::make_pair(key, sums));
366 jemEtSumsVec->push_back(sums);
367 } else sums = iter->second;
368 std::vector<unsigned int> exVec(sums->ExVec());
369 std::vector<unsigned int> eyVec(sums->EyVec());
370 std::vector<unsigned int> etVec(sums->EtVec());
371 exVec[slice] = ex;
372 eyVec[slice] = ey;
373 etVec[slice] = et;
374 sums->addEx(exVec);
375 sums->addEy(eyVec);
376 sums->addEt(etVec);
377 }
378 }
379}

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ systemEnergyToEtSums()

void LVL1::L1JEPEtSumsTools::systemEnergyToEtSums ( const MultiSliceSystemEnergy & systemVec,
DataVector< CMMEtSums > * cmmEtSumsVec,
int peak ) const
private

Convert internal SystemEnergy objects to CMMEtSums object.

Definition at line 454 of file L1JEPEtSumsTools.cxx.

457{
458 CMMEtSums* sums = 0;
459 unsigned int nslices = systemVec.size();
460 std::vector<unsigned int> data(nslices);
461 std::vector<int> error(nslices);
462 for (unsigned int slice = 0; slice < nslices; ++slice) {
463 SystemEnergy* energy = systemVec[slice];
464 unsigned int ex = energy->exTC();
465 unsigned int ey = energy->eyTC();
466 unsigned int et = energy->et();
467 int exOverflow = energy->exOverflow();
468 int eyOverflow = energy->eyOverflow();
469 int etOverflow = energy->etOverflow();
470 if (ex == 0 && ey == 0 && et == 0 &&
471 exOverflow == 0 && eyOverflow == 0 && etOverflow == 0) continue;
472 if ( !sums ) {
473 sums = new CMMEtSums(1, CMMEtSums::TOTAL, data, data, data,
474 error, error, error, peak);
475 cmmEtSumsVec->push_back(sums);
476 }
477 std::vector<unsigned int> exVec(sums->ExVec());
478 std::vector<unsigned int> eyVec(sums->EyVec());
479 std::vector<unsigned int> etVec(sums->EtVec());
480 std::vector<int> exErr(sums->ExErrorVec());
481 std::vector<int> eyErr(sums->EyErrorVec());
482 std::vector<int> etErr(sums->EtErrorVec());
483 exVec[slice] = ex;
484 eyVec[slice] = ey;
485 etVec[slice] = et;
486 if (exOverflow) {
487 DataError dEx(exErr[slice]);
488 dEx.set(DataError::Overflow);
489 exErr[slice] = dEx.error();
490 }
491 if (eyOverflow) {
492 DataError dEy(eyErr[slice]);
493 dEy.set(DataError::Overflow);
494 eyErr[slice] = dEy.error();
495 }
496 if (etOverflow) {
497 DataError dEt(etErr[slice]);
498 dEt.set(DataError::Overflow);
499 etErr[slice] = dEt.error();
500 }
501 sums->addEx(exVec, exErr);
502 sums->addEy(eyVec, eyErr);
503 sums->addEt(etVec, etErr);
504 }
505}

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_etTool

ToolHandle<LVL1::IL1EtTools> LVL1::L1JEPEtSumsTools::m_etTool
private

Tool for energy sums.

Definition at line 118 of file L1JEPEtSumsTools.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_jeTool

ToolHandle<LVL1::IL1JetElementTools> LVL1::L1JEPEtSumsTools::m_jeTool
private

Tool for JetElement map.

Definition at line 116 of file L1JEPEtSumsTools.h.

◆ m_L1MenuKey

SG::ReadHandleKey<TrigConf::L1Menu> LVL1::L1JEPEtSumsTools::m_L1MenuKey { this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu", "L1 Menu" }
private

Definition at line 119 of file L1JEPEtSumsTools.h.

119{ this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu", "L1 Menu" };

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


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