ATLAS Offline Software
Loading...
Searching...
No Matches
CaloTowerAlgorithm Class Reference

#include <CaloTowerAlgorithm.h>

Inheritance diagram for CaloTowerAlgorithm:
Collaboration diagram for CaloTowerAlgorithm:

Public Types

typedef CaloTowerBuilderToolBase tool_type
typedef std::vector< tool_type * > tool_store
typedef tool_store::const_iterator tool_iterator

Public Member Functions

 CaloTowerAlgorithm (const std::string &name, ISvcLocator *pService)
 Algorithm constructor.
virtual ~CaloTowerAlgorithm ()
virtual StatusCode initialize () override
 inherited from Algorithm
virtual StatusCode execute (const EventContext &ctx) const override
virtual StatusCode finalize () override
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
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 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

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.

Protected Attributes

ServiceHandle< IChronoStatSvc > m_chrono
bool m_doChronoStat
unsigned int m_nEtaTowers
unsigned int m_nPhiTowers
double m_minEta
double m_maxEta
bool m_genericLink
std::vector< std::string > m_toolNames
ToolHandleArray< ICaloTowerBuilderToolBasem_ptools
SG::WriteHandleKey< CaloTowerContainerm_towerContainerKey
tool_store m_tools

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
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

Definition at line 35 of file CaloTowerAlgorithm.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

◆ tool_iterator

typedef tool_store::const_iterator CaloTowerAlgorithm::tool_iterator

Definition at line 40 of file CaloTowerAlgorithm.h.

◆ tool_store

Definition at line 39 of file CaloTowerAlgorithm.h.

◆ tool_type

Constructor & Destructor Documentation

◆ CaloTowerAlgorithm()

CaloTowerAlgorithm::CaloTowerAlgorithm ( const std::string & name,
ISvcLocator * pService )

Algorithm constructor.

Definition at line 19 of file CaloTowerAlgorithm.cxx.

21 : AthReentrantAlgorithm(name,pSvcLocator)
22 , m_chrono("ChronoStatSvc", name)
23 , m_doChronoStat(true)
24 , m_nEtaTowers(50)
25 , m_nPhiTowers(64)
26 , m_minEta(-2.5)
27 , m_maxEta(2.5)
28 , m_genericLink(true)
29 , m_ptools( this )
31{
32 // chrono
33 declareProperty("EnableChronoStat", m_doChronoStat);
34 // tool names
35 //declareProperty("TowerBuilderTools",m_toolNames);
36 declareProperty("TowerBuilderTools",m_ptools);
37 // output data
38 declareProperty("TowerContainerName",m_towerContainerKey);
39 // tower grid
40 declareProperty("NumberOfEtaTowers",m_nEtaTowers);
41 declareProperty("NumberOfPhiTowers",m_nPhiTowers);
42 declareProperty("EtaMin",m_minEta);
43 declareProperty("EtaMax",m_maxEta);
44 // linkable
45 declareProperty("GenericLinked",m_genericLink);
46}
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
SG::WriteHandleKey< CaloTowerContainer > m_towerContainerKey
ServiceHandle< IChronoStatSvc > m_chrono
ToolHandleArray< ICaloTowerBuilderToolBase > m_ptools

◆ ~CaloTowerAlgorithm()

CaloTowerAlgorithm::~CaloTowerAlgorithm ( )
virtualdefault

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

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

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode CaloTowerAlgorithm::execute ( const EventContext & ctx) const
overridevirtual

Definition at line 112 of file CaloTowerAlgorithm.cxx.

113{
114
116 // Tool Processing //
118
119 CaloTowerSeg theTowerSeg(m_nEtaTowers,m_nPhiTowers,m_minEta,m_maxEta);
120
121 SG::WriteHandle<CaloTowerContainer> theTowers(m_towerContainerKey, ctx);
122 ATH_CHECK( theTowers.record(std::make_unique<CaloTowerContainer>(theTowerSeg)) );
123
124
125 ToolHandleArray<ICaloTowerBuilderToolBase>::const_iterator firstITool = m_ptools.begin();
126 ToolHandleArray<ICaloTowerBuilderToolBase>::const_iterator lastITool = m_ptools.end();
127 StatusCode processStatus = StatusCode::SUCCESS;
128 //
129 // loop stops only when Failure indicated by one of the tools
130 //
131
132 ATH_MSG_DEBUG("In execute() ");
133
134 while (!processStatus.isFailure() && firstITool != lastITool) {
135
136 if (m_doChronoStat) {
137 m_chrono->chronoStart((*firstITool)->name());
138 }
139
140 processStatus = (*firstITool)->execute(ctx, theTowers.ptr());
141
142 if (m_doChronoStat) {
143 m_chrono->chronoStop((*firstITool)->name());
144 }
145 if (!processStatus.isFailure()) {
146 ATH_MSG_DEBUG((*firstITool)->name()
147 << ": CaloTowerContainer::size() = " << theTowers->size());
148
149 ++firstITool;
150 } else {
151 // some problem - but do not skip event loop!
152 ATH_MSG_ERROR("problems while or after processing tool \042"
153 << (*firstITool)->name()
154 << "\042 - cross-check CaloTowerContainer::size() = "
155 << theTowers->size());
156
157 ++firstITool;
158 }
159 }
160
161 return StatusCode::SUCCESS;
162}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ finalize()

StatusCode CaloTowerAlgorithm::finalize ( )
overridevirtual

Definition at line 168 of file CaloTowerAlgorithm.cxx.

169{
170 return StatusCode::SUCCESS;
171}

◆ initialize()

StatusCode CaloTowerAlgorithm::initialize ( )
overridevirtual

inherited from Algorithm

Definition at line 55 of file CaloTowerAlgorithm.cxx.

56{
57 // Retrieve ChronoStatSvc
58 if (m_doChronoStat) {
59 ATH_CHECK( m_chrono.retrieve() );
60 }
61
62 ATH_CHECK(m_towerContainerKey.initialize());
64 // Allocate Tools //
66
67 // check tool names
68 if (m_ptools.empty()) {
69 ATH_MSG_ERROR(" no tools given for this algorithm.");
70 return StatusCode::FAILURE;
71 }
72
73 // find tools
74
75
76 CaloTowerSeg theTowerSeg(m_nEtaTowers,m_nPhiTowers,m_minEta,m_maxEta);
77
78
79 unsigned int toolCtr = 0;
80 ATH_MSG_INFO(" ");
81 ATH_MSG_INFO("List of tools in execution sequence:");
82 ATH_MSG_INFO("------------------------------------");
83
84 ATH_CHECK(m_ptools.retrieve());
85
86 for (ToolHandle<ICaloTowerBuilderToolBase>& tool : m_ptools) {
87 toolCtr++;
88
89 ATH_MSG_INFO(std::setw(2) << toolCtr << ".) " << tool->type()
90 << "::name() = \042" << tool->name() << "\042");
91
92 ATH_MSG_INFO("------------------------------------");
93 ATH_MSG_INFO(" ");
94
95 ATH_MSG_DEBUG(" set correct tower seg for this tool "
96 << tool->name());
97
98 tool->setTowerSeg(theTowerSeg);
99
100// if (tool->initializeTool().isFailure()) {
101// ATH_MSG_WARNING(" Tool failed to initialize");
102// }
103
104 } //close iteration over tools
105 return StatusCode::SUCCESS;
106}
#define ATH_MSG_INFO(x)

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ isClonable()

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
#define ATH_MSG_WARNING(x)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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 }

Member Data Documentation

◆ m_chrono

ServiceHandle<IChronoStatSvc> CaloTowerAlgorithm::m_chrono
protected

Definition at line 59 of file CaloTowerAlgorithm.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doChronoStat

bool CaloTowerAlgorithm::m_doChronoStat
protected

Definition at line 60 of file CaloTowerAlgorithm.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_genericLink

bool CaloTowerAlgorithm::m_genericLink
protected

Definition at line 68 of file CaloTowerAlgorithm.h.

◆ m_maxEta

double CaloTowerAlgorithm::m_maxEta
protected

Definition at line 65 of file CaloTowerAlgorithm.h.

◆ m_minEta

double CaloTowerAlgorithm::m_minEta
protected

Definition at line 65 of file CaloTowerAlgorithm.h.

◆ m_nEtaTowers

unsigned int CaloTowerAlgorithm::m_nEtaTowers
protected

Definition at line 63 of file CaloTowerAlgorithm.h.

◆ m_nPhiTowers

unsigned int CaloTowerAlgorithm::m_nPhiTowers
protected

Definition at line 64 of file CaloTowerAlgorithm.h.

◆ m_ptools

ToolHandleArray<ICaloTowerBuilderToolBase> CaloTowerAlgorithm::m_ptools
protected

Definition at line 72 of file CaloTowerAlgorithm.h.

◆ m_toolNames

std::vector<std::string> CaloTowerAlgorithm::m_toolNames
protected

Definition at line 71 of file CaloTowerAlgorithm.h.

◆ m_tools

tool_store CaloTowerAlgorithm::m_tools
protected

Definition at line 81 of file CaloTowerAlgorithm.h.

◆ m_towerContainerKey

SG::WriteHandleKey<CaloTowerContainer> CaloTowerAlgorithm::m_towerContainerKey
protected

Definition at line 74 of file CaloTowerAlgorithm.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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