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

Emulator of DSP code in accumulation pedestal mode. More...

#include <LArDigitsAccumulator.h>

Inheritance diagram for LArDigitsAccumulator:
Collaboration diagram for LArDigitsAccumulator:

Classes

class  LArAccumulated
 Class of intermediate accumulations. More...

Public Member Functions

 LArDigitsAccumulator (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
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 std::vector< LArAccumulatedDigit * > ACCUMDIGIT_VEC
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

const LArOnlineID_Basem_onlineHelper
ACCUMDIGIT_VEC m_my_vec
std::string m_AccuDigitContainerName
 LArAccumulatedDigitContainer name.
std::vector< std::string > m_keylist
 list of key for input digit container (=gain)
unsigned int m_NtriggersPerStep
 Number of triggers per step.
unsigned int m_nStepTrigger
 Number of steps.
double m_DropPercentTrig
 Percentage of the used triggers that we will skip over at the end, in order ot ensure that the accumulation is done, even if there are lots of missing events from SC.
std::vector< LArAccumulatedm_Accumulated
 Vector (index=hash ID) of accumulation quantities.
unsigned int m_event_counter
 Event counter.
bool m_isSC
 Tells you wether you run on SuperCells or Cells.
DataObjIDColl m_extendedExtraObjects
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

Emulator of DSP code in accumulation pedestal mode.

Author
Sandrine Laplace lapla.nosp@m.ce@l.nosp@m.app.i.nosp@m.n2p3.nosp@m..fr
Date
18-06-2008

Definition at line 25 of file LArDigitsAccumulator.h.

Member Typedef Documentation

◆ ACCUMDIGIT_VEC

Definition at line 54 of file LArDigitsAccumulator.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ LArDigitsAccumulator()

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

Definition at line 13 of file LArDigitsAccumulator.cxx.

13 :
14 AthAlgorithm(name, pSvcLocator),
15 m_onlineHelper(nullptr),
16 m_AccuDigitContainerName("LArAccumulatedDigits"),
19{
20 declareProperty("LArAccuDigitContainerName",m_AccuDigitContainerName);
21 declareProperty("KeyList",m_keylist);
22 declareProperty("NTriggersPerStep",m_NtriggersPerStep);
23 declareProperty("StepOfTriggers",m_nStepTrigger);
24 declareProperty("DropPercentTrig",m_DropPercentTrig=10);
25 declareProperty("isSC",m_isSC=false);
26
28}
AthAlgorithm()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::vector< std::string > m_keylist
list of key for input digit container (=gain)
bool m_isSC
Tells you wether you run on SuperCells or Cells.
std::string m_AccuDigitContainerName
LArAccumulatedDigitContainer name.
unsigned int m_event_counter
Event counter.
unsigned int m_NtriggersPerStep
Number of triggers per step.
const LArOnlineID_Base * m_onlineHelper
unsigned int m_nStepTrigger
Number of steps.
double m_DropPercentTrig
Percentage of the used triggers that we will skip over at the end, in order ot ensure that the accumu...

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< 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< 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< 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< 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 LArDigitsAccumulator::execute ( )

first check if there is a -1 and continue

Definition at line 62 of file LArDigitsAccumulator.cxx.

63{
64 if ( m_event_counter < 100 || m_event_counter%100==0 )
65 ATH_MSG_INFO( "Processing event " << m_event_counter );
67
68
69 // pointer to input container
70 const LArDigitContainer* DigitContainer=nullptr;
71
72
73 // retrieve input Digits
74
75 //Loop over all containers that are to be processed (e.g. different gains)
76 for (const std::string& key : m_keylist) {
77
78 ATH_CHECK( evtStore()->retrieve(DigitContainer,key) );
79
80 // store LArAccumulatedDigits
81 ACCUMDIGIT_VEC& vAccum = m_my_vec;
82 if(vAccum.empty()) vAccum.resize(m_onlineHelper->channelHashMax());
83
84 // Loop over DigitContainer
85
86 if(DigitContainer->empty()) {
87 ATH_MSG_DEBUG( "LArDigitContainer with key=" << key << " is empty " );
88 }else{
89 ATH_MSG_DEBUG( "LArDigitContainer with key=" << key << " has size = " << DigitContainer->size() );
90 }
91
92 //unsigned int iStepTrigger=0;
93
94 // output container
95 auto larAccuDigitContainer = std::make_unique<LArAccumulatedDigitContainer>(SG::VIEW_ELEMENTS);
96 //Loop over all cells
97 for (const LArDigit* digit : *DigitContainer) {
98
99 // identificators
100 HWIdentifier chid=digit->hardwareID();
101 const IdentifierHash hashid = m_onlineHelper->channel_Hash(chid);
102
103 if( m_isSC ){
105 bool hasInvalid=false;
106 for(auto s : digit->samples()){
107 if(s<0){
108 hasInvalid=true;
109 break;
110 }
111 }
112 if(hasInvalid) continue;
113 }
114
115
117 if (gain<0 || gain>CaloGain::LARNGAIN)
118 {
119 ATH_MSG_ERROR( "Found not-matching gain number ("<< (int)gain <<")" );
120 return StatusCode::FAILURE;
121 }
122
123 // object to be filled for each cell
124 LArAccumulated& cellAccumulated = m_Accumulated[hashid];
125 cellAccumulated.m_onlineId=chid.get_identifier32().get_compact();
126
127 // trigger counter for each cell
128 cellAccumulated.m_ntrigger++;
129
130 //ATH_MSG_DEBUG( "chid = " << chid << ", trigger = " << cellAccumulated.m_ntrigger << ", sample 0 = "<< digit->samples()[0] );
131
132 // at first trigger, initialize vectors
133 unsigned int sizeSamples = digit->samples().size();
134 //ATH_MSG_DEBUG( "# of samples = " << sizeSamples );
135
136 LArAccumulatedDigit* accuDigit;
137
138 if(m_event_counter==1){
139 accuDigit = new LArAccumulatedDigit(chid);
140 vAccum[hashid]=accuDigit;
141 }
142
143 if(cellAccumulated.m_ntrigger==1){
144 // std::cout << "resizing to 0 "<< std::endl;
145 cellAccumulated.m_samplesum.clear();
146 cellAccumulated.m_samplesum.resize(sizeSamples,0);
147 cellAccumulated.m_matrix.clear();
148 cellAccumulated.m_matrix.resize(sizeSamples,0);
149 }
150 accuDigit = m_my_vec[hashid];
151
152 unsigned int l= 0;
153 for(unsigned int j=0;j<sizeSamples;j++){
154 cellAccumulated.m_samplesum[j] += digit->samples()[j];
155 for(unsigned int k=j;k<sizeSamples;k++)
156 {
157 l=k-j;
158 cellAccumulated.m_matrix[l] += digit->samples()[j]*digit->samples()[k];
159 // std::cout << "accumulation, l = "<< l << ", j = "<< j << ", k = "<< k << ", matrix = "<< cellAccumulated.m_matrix[l] <<", sum = "<< cellAccumulated.m_samplesum << std::endl;
160 l++;
161 }
162 }
163
164 //ATH_MSG_DEBUG( "Sum = " << cellAccumulated.m_samplesum );
165 //ATH_MSG_DEBUG( "Matrix = " << cellAccumulated.m_matrix[0] );
166
167 // when reached total number of triggers for this step, fill LArAccumulatedDigit and reset number of triggers
168
169 unsigned int ntrigUsed = m_NtriggersPerStep;
170 if ( m_isSC && m_DropPercentTrig != 0 ){
171 ntrigUsed -= ntrigUsed*(m_DropPercentTrig/100);
172 }
173
174 if(cellAccumulated.m_ntrigger==ntrigUsed){
175
176 ATH_MSG_DEBUG( "filling LArAccumulatedDigit " );
177 ATH_MSG_DEBUG( "chid = " << chid << ", gain = " << gain << ", trigPerStep = " << m_NtriggersPerStep );
178
179 accuDigit->setAddSubStep(gain,chid,cellAccumulated.m_samplesum,cellAccumulated.m_matrix,ntrigUsed);
180
181 larAccuDigitContainer->push_back(accuDigit);
182
183 cellAccumulated.m_nused = cellAccumulated.m_ntrigger;
184 cellAccumulated.m_ntrigger = 0;
185
186 }
187
188 }// loop over cells in container
189
190 ATH_MSG_DEBUG( "Finished loop over channels " );
191
192 const std::string SGkey=key+m_AccuDigitContainerName;
193 ATH_CHECK( evtStore()->record(std::move(larAccuDigitContainer),SGkey,false) );
194 ATH_MSG_INFO( "Recorded succesfully LArAccumulatedDigitContainer with key " << SGkey );
195
196
197 } // loop over key container
198 return StatusCode::SUCCESS;
199}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
size_type size() const noexcept
Returns the number of elements in the collection.
bool empty() const noexcept
Returns true if the collection is empty.
value_type get_compact() const
Get the compact id.
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
bool setAddSubStep(const CaloGain::CaloGain gain_value, const HWIdentifier chid, const std::vector< uint64_t > &sampleSum, const std::vector< uint64_t > &sampleSquare, const unsigned nTrigger)
Accumulate new values.
Class of intermediate accumulations.
std::vector< LArAccumulated > m_Accumulated
Vector (index=hash ID) of accumulation quantities.
std::vector< LArAccumulatedDigit * > ACCUMDIGIT_VEC
@ LARNGAIN
Definition CaloGain.h:19
l
Printing final latex table to .tex output file.
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< 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 & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 50 of file AthAlgorithm.cxx.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ finalize()

StatusCode LArDigitsAccumulator::finalize ( )

Definition at line 202 of file LArDigitsAccumulator.cxx.

202 {
203
204 if ( !m_isSC ) return StatusCode::SUCCESS;
206 for(auto &sc : m_Accumulated){
207 if(sc.m_onlineId && sc.m_nused != ntrigUsed){
208 ATH_MSG_WARNING("Not enough triggers for channel OnlineID " << sc.m_onlineId << " ntriggers " << sc.m_ntrigger );
209 }
210 }
211
212 return StatusCode::SUCCESS;
213
214}
#define ATH_MSG_WARNING(x)
static Double_t sc

◆ initialize()

StatusCode LArDigitsAccumulator::initialize ( )

Definition at line 31 of file LArDigitsAccumulator.cxx.

32{
34 if(m_isSC){
35 const LArOnline_SuperCellID *scid;
36 sc = detStore()->retrieve(scid, "LArOnline_SuperCellID");
37 if (sc.isFailure()) {
38 ATH_MSG_ERROR( "Could not get LArOnline_SuperCellID helper !" );
39 return sc;
40 } else {
41 m_onlineHelper = static_cast<const LArOnlineID_Base*>(scid);
42 ATH_MSG_DEBUG("Found the LArOnlineID helper");
43 }
44 } else {
45 const LArOnlineID* ll;
46 sc = detStore()->retrieve(ll, "LArOnlineID");
47 if (sc.isFailure()) {
48 ATH_MSG_ERROR( "Could not get LArOnlineID helper !" );
49 return sc;
50 } else {
51 m_onlineHelper = static_cast<const LArOnlineID_Base*>(ll);
52 ATH_MSG_DEBUG(" Found the LArOnlineID helper. ");
53 }
54 } //m_isSC
55
56 m_Accumulated.resize(m_onlineHelper->channelHashMax());
57 return StatusCode::SUCCESS;
58}
const ServiceHandle< StoreGateSvc > & detStore() const
::StatusCode StatusCode
StatusCode definition for legacy code.
long long ll

◆ inputHandles()

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

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

StatusCode AthAlgorithm::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< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< 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< 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 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_AccuDigitContainerName

std::string LArDigitsAccumulator::m_AccuDigitContainerName
private

LArAccumulatedDigitContainer name.

Definition at line 60 of file LArDigitsAccumulator.h.

◆ m_Accumulated

std::vector<LArAccumulated> LArDigitsAccumulator::m_Accumulated
private

Vector (index=hash ID) of accumulation quantities.

Definition at line 88 of file LArDigitsAccumulator.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_DropPercentTrig

double LArDigitsAccumulator::m_DropPercentTrig
private

Percentage of the used triggers that we will skip over at the end, in order ot ensure that the accumulation is done, even if there are lots of missing events from SC.

Definition at line 82 of file LArDigitsAccumulator.h.

◆ m_event_counter

unsigned int LArDigitsAccumulator::m_event_counter
private

Event counter.

Definition at line 93 of file LArDigitsAccumulator.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_isSC

bool LArDigitsAccumulator::m_isSC
private

Tells you wether you run on SuperCells or Cells.

Definition at line 98 of file LArDigitsAccumulator.h.

◆ m_keylist

std::vector<std::string> LArDigitsAccumulator::m_keylist
private

list of key for input digit container (=gain)

Definition at line 65 of file LArDigitsAccumulator.h.

◆ m_my_vec

ACCUMDIGIT_VEC LArDigitsAccumulator::m_my_vec
private

Definition at line 55 of file LArDigitsAccumulator.h.

◆ m_nStepTrigger

unsigned int LArDigitsAccumulator::m_nStepTrigger
private

Number of steps.

Definition at line 75 of file LArDigitsAccumulator.h.

◆ m_NtriggersPerStep

unsigned int LArDigitsAccumulator::m_NtriggersPerStep
private

Number of triggers per step.

Definition at line 70 of file LArDigitsAccumulator.h.

◆ m_onlineHelper

const LArOnlineID_Base* LArDigitsAccumulator::m_onlineHelper
private

Definition at line 52 of file LArDigitsAccumulator.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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