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

Algorithm to build HI-style clusters, which are essentially towers. Cluster energy is sum of cell energies x geometric weights eta/phi are (energy x geometric weight)-averaged positions. eta0/phi0 are original tower coordinates. If cluster energy is below m_E_min_mom ent, eta=eta0, phi=phi0. More...

#include <HIClusterMaker.h>

Inheritance diagram for HIClusterMaker:
Collaboration diagram for HIClusterMaker:

Public Member Functions

 HIClusterMaker (const std::string &name, ISvcLocator *pSvcLocator)
 ~HIClusterMaker ()
virtual StatusCode initialize ()
virtual StatusCode execute (const EventContext &ctx) const
virtual StatusCode finalize ()
StatusCode dumpClusters (xAOD::CaloClusterContainer *clusColl)
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.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

std::unique_ptr< const CaloCellgetMirroredCell (const CaloCell *pCell, const CaloCellContainer *ccc) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::ReadHandleKey< INavigable4MomentumCollectionm_towerContainerKey { this, "InputTowerKey" , "CombinedTower" , "InputTowerKey"}
 Name of input CaloTowerContainer, e.g CmbTower.
SG::ReadHandleKey< CaloCellContainerm_cellContainerKey { this, "CaloCellContainerKey" , "AllCalo" , "InputCellKey" }
 Name of input CaloCellContainer, e.g. AllCalo.
SG::WriteHandleKey< xAOD::CaloClusterContainerm_outputKey { this, "OutputContainerKey" , "PseudoJet" , "Read version of output Container Key"}
 Name of output CaloClusterContainer, e.g. HIClusters.
Gaudi::Property< float > m_EminMoment { this, "MinimumEnergyForMoments", 50., "> E, cluster given tower coordinates" }
 For clusters w/ E less than this, set their eta/phi to tower eta/phi.
const CaloCell_IDm_calo_id {nullptr}
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

Algorithm to build HI-style clusters, which are essentially towers. Cluster energy is sum of cell energies x geometric weights eta/phi are (energy x geometric weight)-averaged positions. eta0/phi0 are original tower coordinates. If cluster energy is below m_E_min_mom ent, eta=eta0, phi=phi0.

Author
Aaron Angerami anger.nosp@m.ami@.nosp@m.cern..nosp@m.ch
Date
Jan, 2015

Definition at line 37 of file HIClusterMaker.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ HIClusterMaker()

HIClusterMaker::HIClusterMaker ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 23 of file HIClusterMaker.cxx.

24 : AthReentrantAlgorithm(name,pSvcLocator)
25{
26}

◆ ~HIClusterMaker()

HIClusterMaker::~HIClusterMaker ( )
inline

Definition at line 43 of file HIClusterMaker.h.

43{};

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 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ 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.

◆ dumpClusters()

StatusCode HIClusterMaker::dumpClusters ( xAOD::CaloClusterContainer * clusColl)

Definition at line 195 of file HIClusterMaker.cxx.

196{
197 ATH_MSG_INFO("Dumping PseudoJets");
198 for(xAOD::CaloClusterContainer::iterator clusCollIter= clusColl->begin();
199 clusCollIter!= clusColl->end(); ++clusCollIter)
200 {
201 xAOD::CaloCluster* cl = (*clusCollIter);
202
203 float E_cl=0;
204 float eta_cl=0;
205 float phi_cl=0;
206
207 CaloClusterCellLink* cellLinks=cl->getOwnCellLinks();
208
209 if (!cellLinks)
210 {
211 ATH_MSG_ERROR("Can't get valid links to CaloCells (CaloClusterCellLink)!");
212 return StatusCode::FAILURE;
213 }
214
215 unsigned int ncells=0;
216 float sumw=0;
217 // CaloClusterCellLink::iterator cellIterEnd=cellLinks->end();
218 // for(CaloClusterCellLink::iterator cellIter=cellLinks->end();
219 // cellIter != cellIterEnd; cellIter++, ncells++ )
220 // {
221 xAOD::CaloCluster::cell_iterator cellIterEnd = cl->cell_end();
222 for(xAOD::CaloCluster::cell_iterator cellIter= cl->cell_begin(); cellIter != cellIterEnd; ++cellIter )
223 {
224 CxxUtils::prefetchNext (cellIter, cellIterEnd);
225 const CaloCell* pCell=(*cellIter);
226 //double geoWeight =cellIter.weight(); //weird synatx, "." on iterator
227 double cell_E_w=pCell->energy();//*geoWeight;
228
229 E_cl+=cell_E_w;
230 eta_cl+=cell_E_w*pCell->eta();
231 phi_cl+=cell_E_w*pCell->phi();
232 //sumw+=geoWeight;
233 }
234 if(E_cl!=0.)
235 {
236 eta_cl/=E_cl;
237 phi_cl/=E_cl;
238 }
239
240 ATH_MSG_INFO( std::setw(10) << "DUMPING CLUSTER"
241 << std::setw(15) << cl->e()
242 << std::setw(15) << cl->eta()
243 << std::setw(15) << cl->phi()
244 << std::setw(15) << E_cl
245 << std::setw(15) << eta_cl
246 << std::setw(15) << phi_cl
247 << std::setw(15) << ncells
248 << std::setw(15) << sumw );
249 }
250 return StatusCode::SUCCESS;
251}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
virtual double phi() const override final
get phi (through CaloDetDescrElement)
Definition CaloCell.h:375
double energy() const
get energy (data member)
Definition CaloCell.h:327
virtual double eta() const override final
get eta (through CaloDetDescrElement)
Definition CaloCell.h:382
DataModel_detail::iterator< DataVector > iterator
Definition DataVector.h:842
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.
CaloClusterCellLink::iterator cell_iterator
Iterator of the underlying CaloClusterCellLink (non-const version)
void prefetchNext(Iter iter, Iter endIter)
Prefetch next object in sequence.
Definition prefetch.h:130
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.

◆ 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 HIClusterMaker::execute ( const EventContext & ctx) const
virtual

Definition at line 40 of file HIClusterMaker.cxx.

41{
42
43 //retrieve the tower container from store
44 const INavigable4MomentumCollection* navInColl = 0;
45 SG::ReadHandle<INavigable4MomentumCollection> readHandleTower ( m_towerContainerKey, ctx );
46 ATH_CHECK( readHandleTower.isValid() );
47 navInColl = readHandleTower.cptr();
48
49 const CaloCellContainer * cellColl ;
50 SG::ReadHandle<CaloCellContainer> readHandleCell ( m_cellContainerKey, ctx );
51 ATH_CHECK( readHandleCell.isValid() );
52 cellColl = readHandleCell.cptr();
53
54 //make the container
55 //Tricky migration: here we don't have to migrate our methods but what we use from CaloClusterStoreHelper
56 SG::WriteHandle<xAOD::CaloClusterContainer> writeHandleContainer ( m_outputKey, ctx );
58
59 //loop on towers
60 for(const auto *towerItr : *navInColl)
61 {
62 //initialize variables
63 float E_cl=0;
64 float eta_cl=0;
65 float phi_cl=0;
66 float time_cl=0;
67 float E2_cl=0;
68 uint32_t samplingPattern=0;
69
70 //navigate back to cells
71 //Default is to sort the cells by either pointer values leading to irreproducible output
72 //CaloCellIDFcn ensures cells are ordered by their IDs
73 NavigationToken<CaloCell,double,CaloCellIDFcn> cellToken;
74 towerItr->fillToken(cellToken,double(1.));
75
76 // Make the cluster:
77 std::unique_ptr<xAOD::CaloCluster> cl(CaloClusterStoreHelper::makeCluster(cellColl));
78
79 float mirror_cell_sumE = 0;
80
81 if ( cellToken.size() == 0 ) continue;
82 for(NavigationToken<CaloCell,double,CaloCellIDFcn>::const_iterator cellItr = cellToken.begin(); cellItr != cellToken.end(); ++cellItr )
83 {
84 //Bad cell policy - to be kept
85 //if(m_bad_cell_tool->SkipCell(*cellItr))
86 //{
87 //if(m_skipBadCells && (*cellItr)->badcell()) continue;
88 //}
89
90 double geoWeight = cellToken.getParameter(*cellItr);
91
92 const CaloCell* cell=*cellItr;
93 std::unique_ptr<const CaloCell> mirroredCell{};
94
95 bool isDeadFEB = (!cell->caloDDE()->is_tile() && LArProv::test(cell->provenance(),LArProv::DEADFEB));
96
97 if (isDeadFEB) {
98 mirroredCell=getMirroredCell(cell,readHandleCell.cptr());
99 if (mirroredCell) {
100 cell=mirroredCell.get();
101 mirror_cell_sumE+= cell->energy()*geoWeight;
102 }
103 else {
104 ATH_MSG_WARNING("Failed to obtain mirrored cell for deadFEB cell with id" << std::hex << cell->ID().get_compact());
105 }
106
107 }//end if dead FEB
108
109 double cell_E_w=(*cellItr)->energy()*geoWeight;
110
111 IdentifierHash hashid =(*cellItr)->caloDDE()->calo_hash();
112 size_t iCell=cellColl->findIndex(hashid);
113 cl->addCell(iCell,geoWeight);
114
115 E_cl+=cell_E_w;
116 eta_cl+=cell_E_w*(*cellItr)->eta();
117 phi_cl+=cell_E_w*(*cellItr)->phi();
118 E2_cl+=cell_E_w*cell_E_w;
119 time_cl+=cell_E_w*cell_E_w*(*cellItr)->time();
120
121 unsigned int sample = (CaloSampling::CaloSample) (*cellItr)->caloDDE()->getSampling();
122 samplingPattern |= (0x1U<<sample);
123 }//end cell loop
124
125 ATH_MSG_VERBOSE("Energy Sum of mirror deadFEB: " << mirror_cell_sumE);
126 //decorating cluster with sum of mirror cell energy
127 static const SG::AuxElement::Decorator<float> Mcell_sumE("mcell_sumE");
128 Mcell_sumE(*cl) = mirror_cell_sumE;
129
130 float eta0=towerItr->eta();
131 float phi0=towerItr->phi();
132
133 if(E_cl < m_EminMoment || E_cl==0)
134 {
135 eta_cl=eta0;
136 phi_cl=phi0;
137 }
138 else
139 {
140 eta_cl/=E_cl;
141 phi_cl/=E_cl;
142 }
143 //phi moment does not respect wrap-around
144 phi_cl=TVector2::Phi_mpi_pi(phi_cl);
145 if(!HIJetRec::inTowerBoundary(eta0,phi0,eta_cl,phi_cl))
146 {
147 eta_cl=eta0;
148 phi_cl=phi0;
149 }
150
151 if(E2_cl < 1e-8) time_cl=0.;
152 else time_cl/=E2_cl;
153
154 //set initial tower position
155 cl->setEta0(eta0);
156 cl->setPhi0(phi0);
157
158 //set initial kinematics to be the same for all signal states
159 //update upstream
160 cl->setRawE(E_cl);
161 cl->setRawEta(eta_cl);
162 cl->setRawPhi(phi_cl);
163 cl->setRawM(0);
164
165 cl->setAltE(E_cl);
166 cl->setAltEta(eta_cl);
167 cl->setAltPhi(phi_cl);
168 cl->setAltM(0);
169
170 cl->setCalE(E_cl);
171 cl->setCalEta(eta_cl);
172 cl->setCalPhi(phi_cl);
173 cl->setCalM(0);
174
175 //extra info
176 cl->setTime(time_cl);
177 cl->setSamplingPattern(samplingPattern);
178
179 ATH_MSG_VERBOSE( std::setw(20) << "PUSHING CLUSTER"
180 << std::setw(15) << cl->e()
181 << std::setw(15) << cl->eta()
182 << std::setw(15) << cl->phi() );
183
184 writeHandleContainer->push_back(std::move(cl));
185 }//end tower loop
186 return StatusCode::SUCCESS;
187}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
DataVector< INavigable4Momentum > INavigable4MomentumCollection
int findIndex(const IdentifierHash theHash) const
Return index of the cell with a given hash.
static std::unique_ptr< xAOD::CaloCluster > makeCluster(const CaloCellContainer *cellCont)
Creates a valid CaloCluster with a private Aux-Store and CellLink container.
static StatusCode AddContainerWriteHandle(SG::WriteHandle< xAOD::CaloClusterContainer > &clusColl)
Creates a new xAOD::CaloClusterContainer in the given WriteHandle + CaloClusterAuxContainer and recor...
std::unique_ptr< const CaloCell > getMirroredCell(const CaloCell *pCell, const CaloCellContainer *ccc) const
SG::ReadHandleKey< INavigable4MomentumCollection > m_towerContainerKey
Name of input CaloTowerContainer, e.g CmbTower.
SG::ReadHandleKey< CaloCellContainer > m_cellContainerKey
Name of input CaloCellContainer, e.g. AllCalo.
SG::WriteHandleKey< xAOD::CaloClusterContainer > m_outputKey
Name of output CaloClusterContainer, e.g. HIClusters.
Gaudi::Property< float > m_EminMoment
For clusters w/ E less than this, set their eta/phi to tower eta/phi.
const_iterator begin() const
CHILDPAR getParameter(const_child_ptr data) const
NavigationTokenIterator const_iterator
const_iterator end() const
unsigned int size()
bool inTowerBoundary(float eta0, float phi0, float eta, float phi)
bool test(const uint16_t prov, const LArProvenance check)
setEventNumber uint32_t

◆ 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 HIClusterMaker::finalize ( )
virtual

Definition at line 189 of file HIClusterMaker.cxx.

190{
191 return StatusCode::SUCCESS;
192}

◆ getMirroredCell()

std::unique_ptr< const CaloCell > HIClusterMaker::getMirroredCell ( const CaloCell * pCell,
const CaloCellContainer * ccc ) const
private

Definition at line 253 of file HIClusterMaker.cxx.

253 {
254
255 const Identifier id = pCell->ID();
256 const int subCalo = m_calo_id->sub_calo(id);
257 const int pos_neg = m_calo_id->pos_neg(id);
258 const int sampling = m_calo_id->sampling(id);
259 const int region = m_calo_id->region(id);
260 const int eta = m_calo_id->eta(id);
261 const int phi = m_calo_id->phi(id);
262
263 ATH_MSG_VERBOSE("DeadFEB cell parameter: (" << subCalo << "," << pos_neg << "," << sampling << "," << region << "," << eta << "," << phi << ")");
264
265 const Identifier mirroredID = m_calo_id->cell_id(subCalo,
266 -pos_neg, // flip to get cell in oposite eta
267 sampling, region, eta, phi);
268
269 const CaloCell* mirroredCell = ccc->findCell(m_calo_id->calo_cell_hash(mirroredID));
270 if (!mirroredCell) {
271 return nullptr;
272 }
273 ATH_MSG_VERBOSE("DeadFEB cell (et,layer,deta,dphi): (" << pCell->et() << "," << pCell->caloDDE()->getSampling() << "," << pCell->caloDDE()->eta() << ","
274 << pCell->caloDDE()->phi() << ")");
275
276 ATH_MSG_VERBOSE("Mirror cell (et,layer,deta,dphi): " << mirroredCell->et() << "," << mirroredCell->caloDDE()->getSampling() << ","
277 << mirroredCell->caloDDE()->eta() << "," << mirroredCell->caloDDE()->phi() << ")");
278
279 // Build a fake-cell with the DDE of the cell we are replacing and
280 // energy,time,etc from the eta-mirrored cell
281 return std::make_unique<const CaloCell>(pCell->caloDDE(), mirroredCell->energy(), mirroredCell->time(), mirroredCell->quality(), mirroredCell->provenance(),
282 mirroredCell->gain());
283}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
const CaloCell * findCell(const IdentifierHash theHash) const
fast find method given identifier hash.
float time() const
get time (data member)
Definition CaloCell.h:368
const CaloDetDescrElement * caloDDE() const
get pointer to CaloDetDescrElement (data member)
Definition CaloCell.h:321
uint16_t provenance() const
get provenance (data member)
Definition CaloCell.h:354
uint16_t quality() const
get quality (data member)
Definition CaloCell.h:348
CaloGain::CaloGain gain() const
get gain (data member )
Definition CaloCell.h:361
virtual double et() const override final
get et
Definition CaloCell.h:423
Identifier ID() const
get ID (from cached data member) non-virtual and inline for fast access
Definition CaloCell.h:295
CaloCell_ID::CaloSample getSampling() const
cell sampling
const CaloCell_ID * m_calo_id

◆ initialize()

StatusCode HIClusterMaker::initialize ( )
virtual

Definition at line 28 of file HIClusterMaker.cxx.

29{
30 //First we initialize keys - after initialization they are frozen
31 ATH_CHECK( m_towerContainerKey.initialize() );
32 ATH_CHECK( m_cellContainerKey.initialize() );
33 ATH_CHECK( m_outputKey.initialize() );
34
35 ATH_CHECK( detStore()->retrieve(m_calo_id, "CaloCell_ID") );
36
37 return StatusCode::SUCCESS;
38}
const ServiceHandle< StoreGateSvc > & detStore() const
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ 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}
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_calo_id

const CaloCell_ID* HIClusterMaker::m_calo_id {nullptr}
private

Definition at line 61 of file HIClusterMaker.h.

61{nullptr};

◆ m_cellContainerKey

SG::ReadHandleKey<CaloCellContainer> HIClusterMaker::m_cellContainerKey { this, "CaloCellContainerKey" , "AllCalo" , "InputCellKey" }
private

Name of input CaloCellContainer, e.g. AllCalo.

Definition at line 55 of file HIClusterMaker.h.

55{ this, "CaloCellContainerKey" , "AllCalo" , "InputCellKey" };

◆ 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_EminMoment

Gaudi::Property< float > HIClusterMaker::m_EminMoment { this, "MinimumEnergyForMoments", 50., "> E, cluster given tower coordinates" }
private

For clusters w/ E less than this, set their eta/phi to tower eta/phi.

Definition at line 59 of file HIClusterMaker.h.

59{ this, "MinimumEnergyForMoments", 50., "> E, cluster given tower coordinates" };

◆ 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_outputKey

SG::WriteHandleKey<xAOD::CaloClusterContainer> HIClusterMaker::m_outputKey { this, "OutputContainerKey" , "PseudoJet" , "Read version of output Container Key"}
private

Name of output CaloClusterContainer, e.g. HIClusters.

Definition at line 57 of file HIClusterMaker.h.

57{ this, "OutputContainerKey" , "PseudoJet" , "Read version of output Container Key"};

◆ m_towerContainerKey

SG::ReadHandleKey<INavigable4MomentumCollection> HIClusterMaker::m_towerContainerKey { this, "InputTowerKey" , "CombinedTower" , "InputTowerKey"}
private

Name of input CaloTowerContainer, e.g CmbTower.

Definition at line 53 of file HIClusterMaker.h.

53{ this, "InputTowerKey" , "CombinedTower" , "InputTowerKey"};

◆ 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: