ATLAS Offline Software
Loading...
Searching...
No Matches
LVL1BS::JepRoiByteStreamTool Class Reference

Tool to perform ROB fragments to JEM RoI and CMM RoI, and JEP RoI container to raw data conversions. More...

#include <JepRoiByteStreamTool.h>

Inheritance diagram for LVL1BS::JepRoiByteStreamTool:
Collaboration diagram for LVL1BS::JepRoiByteStreamTool:

Public Member Functions

 JepRoiByteStreamTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual ~JepRoiByteStreamTool ()
virtual StatusCode initialize () override
virtual StatusCode finalize () override
StatusCode convert (const IROBDataProviderSvc::VROBFRAG &robFrags, DataVector< LVL1::JEMRoI > *jeCollection) const
 Convert ROB fragments to JEM RoIs.
StatusCode convert (const IROBDataProviderSvc::VROBFRAG &robFrags, LVL1::CMMRoI *cmCollection) const
 Convert ROB fragments to CMM RoIs.
StatusCode convert (const LVL1::JEPRoIBSCollection *jep) const
 Convert JEP RoI Container to bytestream.
const std::vector< uint32_t > & sourceIDs (const std::string &sgKey) const
 Return reference to vector with all possible Source Identifiers.
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 ()
 AlgTool 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 DataVector< LVL1::JEMRoIJemRoiCollection
typedef DataVector< LVL1::CMMJetHitsCmmHitsCollection
typedef DataVector< LVL1::CMMEtSumsCmmSumsCollection
typedef std::map< uint32_t, const LVL1::JEMRoI * > JemRoiMap
typedef std::map< int, const LVL1::CMMJetHits * > CmmHitsMap
typedef std::map< int, const LVL1::CMMEtSums * > CmmSumsMap
typedef IROBDataProviderSvc::VROBFRAG::const_iterator ROBIterator
typedef OFFLINE_FRAGMENTS_NAMESPACE::PointerType ROBPointer
typedef OFFLINE_FRAGMENTS_NAMESPACE::PointerType RODPointer
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode convertBs (const IROBDataProviderSvc::VROBFRAG &robFrags, DataVector< LVL1::JEMRoI > *jeCollection, LVL1::CMMRoI *cmCollection) const
 Convert bytestream to given container type.
const LVL1::CMMJetHitsfindCmmHits (int crate, int dataID, const CmmHitsMap &cmmHitsMap) const
 Find CMM hits for given crate, data ID.
const LVL1::CMMEtSumsfindCmmSums (int crate, int dataID, const CmmSumsMap &cmmEtMap) const
 Find CMM energy sums for given crate, data ID.
std::vector< uint32_t > makeSourceIDs (bool roiDaq) const
void setupJemRoiMap (const JemRoiCollection *jeCollection, JemRoiMap &roiMap) const
 Set up JEM RoIs map.
void setupCmmHitsMap (const CmmHitsCollection *hitCollection, CmmHitsMap &cmmHitsMap) const
 Set up CMM hits map.
void setupCmmEtMap (const CmmSumsCollection *enCollection, CmmSumsMap &cmmEtMap) const
 Set up CMM energy sums map.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ServiceHandle< IByteStreamCnvSvcm_byteStreamCnvSvc { this, "ByteStreamCnvSvc", "ByteStreamCnvSvc" }
ToolHandle< LVL1BS::L1CaloErrorByteStreamToolm_errorTool
 Error collection tool.
int m_crateOffsetHw
 Property: Hardware crate number offset.
int m_crateOffsetSw
 Property: Software crate number offset.
int m_version
 Property: Sub_block header version.
int m_dataFormat
 Property: Data compression format.
const int m_crates
 Number of crates.
const int m_modules
 Number of JEM modules per crate.
int m_slinks
 Property: Number of slinks per crate when writing out bytestream.
std::vector< uint32_t > m_sourceIDsProp
 Property: ROB source IDs.
std::vector< uint32_t > m_sourceIDsRoIBProp
 Property: ROB source IDs for RoIB.
const eformat::SubDetector m_subDetector
 Sub-detector type.
const L1CaloSrcIdMap m_srcIdMap
 Source ID converter.
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

Tool to perform ROB fragments to JEM RoI and CMM RoI, and JEP RoI container to raw data conversions.

Based on ROD document version 1_09h.

Author
Peter Faulkner

Definition at line 53 of file JepRoiByteStreamTool.h.

Member Typedef Documentation

◆ CmmHitsCollection

◆ CmmHitsMap

typedef std::map<int, const LVL1::CMMJetHits*> LVL1BS::JepRoiByteStreamTool::CmmHitsMap
private

Definition at line 87 of file JepRoiByteStreamTool.h.

◆ CmmSumsCollection

◆ CmmSumsMap

typedef std::map<int, const LVL1::CMMEtSums*> LVL1BS::JepRoiByteStreamTool::CmmSumsMap
private

Definition at line 88 of file JepRoiByteStreamTool.h.

◆ JemRoiCollection

◆ JemRoiMap

typedef std::map<uint32_t, const LVL1::JEMRoI*> LVL1BS::JepRoiByteStreamTool::JemRoiMap
private

Definition at line 86 of file JepRoiByteStreamTool.h.

◆ ROBIterator

typedef IROBDataProviderSvc::VROBFRAG::const_iterator LVL1BS::JepRoiByteStreamTool::ROBIterator
private

Definition at line 89 of file JepRoiByteStreamTool.h.

◆ ROBPointer

◆ RODPointer

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ JepRoiByteStreamTool()

LVL1BS::JepRoiByteStreamTool::JepRoiByteStreamTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 47 of file JepRoiByteStreamTool.cxx.

50 : AthAlgTool(type, name, parent),
51 m_errorTool("LVL1BS::L1CaloErrorByteStreamTool/L1CaloErrorByteStreamTool"),
52 m_crates(2), m_modules(16),
53 m_subDetector (eformat::TDAQ_CALO_JET_PROC_ROI)
54{
55 declareInterface<JepRoiByteStreamTool>(this);
56
57 declareProperty("CrateOffsetHw", m_crateOffsetHw = 12,
58 "Offset of JEP crate numbers in bytestream");
59 declareProperty("CrateOffsetSw", m_crateOffsetSw = 0,
60 "Offset of JEP crate numbers in RDOs");
61
62 // Properties for reading bytestream only
63 declareProperty("ROBSourceIDs", m_sourceIDsProp,
64 "ROB fragment source identifiers");
65 declareProperty("ROBSourceIDsRoIB", m_sourceIDsRoIBProp,
66 "ROB fragment source identifiers");
67
68 // Properties for writing bytestream only
69 declareProperty("DataVersion", m_version = 1,
70 "Format version number in sub-block header");
71 declareProperty("DataFormat", m_dataFormat = 1,
72 "Format identifier (0-1) in sub-block header");
73 declareProperty("SlinksPerCrate", m_slinks = 1,
74 "The number of S-Links per crate");
75
76}
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::vector< uint32_t > m_sourceIDsRoIBProp
Property: ROB source IDs for RoIB.
std::vector< uint32_t > m_sourceIDsProp
Property: ROB source IDs.
int m_slinks
Property: Number of slinks per crate when writing out bytestream.
int m_crateOffsetHw
Property: Hardware crate number offset.
int m_crateOffsetSw
Property: Software crate number offset.
int m_version
Property: Sub_block header version.
const eformat::SubDetector m_subDetector
Sub-detector type.
const int m_modules
Number of JEM modules per crate.
const int m_crates
Number of crates.
int m_dataFormat
Property: Data compression format.
ToolHandle< LVL1BS::L1CaloErrorByteStreamTool > m_errorTool
Error collection tool.

◆ ~JepRoiByteStreamTool()

LVL1BS::JepRoiByteStreamTool::~JepRoiByteStreamTool ( )
virtual

Definition at line 80 of file JepRoiByteStreamTool.cxx.

81{
82}

Member Function Documentation

◆ convert() [1/3]

StatusCode LVL1BS::JepRoiByteStreamTool::convert ( const IROBDataProviderSvc::VROBFRAG & robFrags,
DataVector< LVL1::JEMRoI > * jeCollection ) const

Convert ROB fragments to JEM RoIs.

Definition at line 106 of file JepRoiByteStreamTool.cxx.

109{
110 return convertBs(robFrags, jeCollection, nullptr);
111}
StatusCode convertBs(const IROBDataProviderSvc::VROBFRAG &robFrags, DataVector< LVL1::JEMRoI > *jeCollection, LVL1::CMMRoI *cmCollection) const
Convert bytestream to given container type.

◆ convert() [2/3]

StatusCode LVL1BS::JepRoiByteStreamTool::convert ( const IROBDataProviderSvc::VROBFRAG & robFrags,
LVL1::CMMRoI * cmCollection ) const

Convert ROB fragments to CMM RoIs.

Definition at line 115 of file JepRoiByteStreamTool.cxx.

118{
119 return convertBs(robFrags, nullptr, cmCollection);
120}

◆ convert() [3/3]

StatusCode LVL1BS::JepRoiByteStreamTool::convert ( const LVL1::JEPRoIBSCollection * jep) const

Convert JEP RoI Container to bytestream.

Sub-block for neutral format

Definition at line 124 of file JepRoiByteStreamTool.cxx.

126{
127 const bool debug = msgLvl(MSG::DEBUG);
128 if (debug) msg(MSG::DEBUG);
129
130 // Get the event assembler
131 FullEventAssembler<L1CaloSrcIdMap>* fea = nullptr;
132 ATH_CHECK( m_byteStreamCnvSvc->getFullEventAssembler (fea,
133 "JepRoiByteStream") );
134 const uint16_t minorVersion = m_srcIdMap.minorVersion();
135 fea->setRodMinorVersion(minorVersion);
136
137 // Pointer to ROD data vector
138
140
142 JemRoiSubBlock subBlock;
143
144 // Set up the container maps
145
146 const bool neutralFormat = m_dataFormat == L1CaloSubBlock::NEUTRAL;
147
148 // JEM RoI map
149 JemRoiMap roiMap;
150 setupJemRoiMap(jep->JemRoi(), roiMap);
151 JemRoiMap::const_iterator mapIter = roiMap.begin();
152 JemRoiMap::const_iterator mapIterEnd = roiMap.end();
153
154 // CMM hits map
155 CmmHitsMap cmmHitsMap;
156 // CMM energy sums map
157 CmmSumsMap cmmEtMap;
158 if (neutralFormat) {
159 setupCmmHitsMap(jep->CmmHits(), cmmHitsMap);
160 setupCmmEtMap(jep->CmmSums(), cmmEtMap);
161 }
162
163 // Loop over JEM RoI data
164
165 const int modulesPerSlink = m_modules / m_slinks;
166 for (int crate = 0; crate < m_crates; ++crate) {
167 const int hwCrate = crate + m_crateOffsetHw;
168
169 for (int module = 0; module < m_modules; ++module) {
170
171 // Pack required number of modules per slink
172
173 if (module % modulesPerSlink == 0) {
174 const int daqOrRoi = 1;
175 const int slink = module / modulesPerSlink;
176 if (debug) {
177 msg() << "Treating crate " << hwCrate
178 << " slink " << slink << endmsg
179 << "Data Version/Format: " << m_version
180 << " " << m_dataFormat << endmsg;
181 }
182 const uint32_t rodIdJem = m_srcIdMap.getRodID(hwCrate, slink, daqOrRoi,
184 theROD = fea->getRodData(rodIdJem);
185 if (neutralFormat) {
186 const L1CaloUserHeader userHeader;
187 theROD->push_back(userHeader.header());
188 }
189 }
190 if (debug) msg() << "JEM Module " << module << endmsg;
191 if (!theROD) break; // for coverity, shouldn't happen
192
193 // Create a sub-block (Neutral format only)
194
195 if (neutralFormat) {
196 subBlock.clear();
197 subBlock.setRoiHeader(m_version, hwCrate, module);
198 }
199
200 // Find JEM RoIs for this module
201
202 for (; mapIter != mapIterEnd; ++mapIter) {
203 const LVL1::JEMRoI* const roi = mapIter->second;
204 if (roi->crate() < crate) continue;
205 if (roi->crate() > crate) break;
206 if (roi->jem() < module) continue;
207 if (roi->jem() > module) break;
208 if (roi->hits() || roi->error()) {
209 if (neutralFormat) subBlock.fillRoi(*roi);
210 else theROD->push_back(roi->roiWord());
211 }
212 }
213
214 // Pack and write the sub-block
215
216 if (neutralFormat) {
217 if ( !subBlock.pack()) {
218 msg(MSG::ERROR) << "JEM RoI sub-block packing failed" << endmsg;
219 return StatusCode::FAILURE;
220 }
221 if (debug) {
222 msg() << "JEM RoI sub-block data words: "
223 << subBlock.dataWords() << endmsg;
224 }
225 subBlock.write(theROD);
226 }
227 }
228 if (!theROD) break; // for coverity, shouldn't happen
229
230 // Append CMM RoIs to last S-Link of the system crate
231
232 if (crate != m_crates - 1) continue;
233
234 // Create sub-blocks for Neutral format
235
236 if (neutralFormat) {
237 const int timeslices = 1;
238 const int slice = 0;
239
240 // CMM-Energy
241
242 CmmEnergySubBlock enBlock;
243 const int cmmEnergyVersion = 2; // with Missing-ET-Sig
244 enBlock.setCmmHeader(cmmEnergyVersion, m_dataFormat, slice, hwCrate,
246 CmmSubBlock::LEFT, timeslices);
247 int maxDataID = static_cast<int>(LVL1::CMMEtSums::MAXID);
248 for (int dataID = 0; dataID < maxDataID; ++dataID) {
249 int source = dataID;
250 if (dataID >= m_modules) {
251 // coverity[mixed_enums : FALSE]
252 // coverity[switch_on_enum : FALSE]
253 // coverity[first_enum_type : FALSE]
254 switch (dataID) {
257 break;
260 break;
263 break;
267 break;
268 default:
269 continue;
270 }
271 }
272 const LVL1::CMMEtSums* const sums = findCmmSums(crate, dataID, cmmEtMap);
273 if ( sums ) {
274 const unsigned int ex = sums->Ex();
275 const unsigned int ey = sums->Ey();
276 const unsigned int et = sums->Et();
277 const int exErr = sums->ExError();
278 const int eyErr = sums->EyError();
279 const int etErr = sums->EtError();
280 if (dataID == LVL1::CMMEtSums::MISSING_ET_MAP) {
281 enBlock.setMissingEtHits(slice, et);
282 } else if (dataID == LVL1::CMMEtSums::SUM_ET_MAP) {
283 enBlock.setSumEtHits(slice, et);
284 } else if (dataID == LVL1::CMMEtSums::MISSING_ET_SIG_MAP) {
285 enBlock.setMissingEtSigHits(slice, et);
286 } else {
287 enBlock.setSubsums(slice, source, ex, ey, et, exErr, eyErr, etErr);
288 }
289 }
290 }
291 if ( !enBlock.pack()) {
292 msg(MSG::ERROR) << "CMM-Energy sub-block packing failed" << endmsg;
293 return StatusCode::FAILURE;
294 }
295 if (debug) {
296 msg() << "CMM-Energy sub-block data words: "
297 << enBlock.dataWords() << endmsg;
298 }
299 enBlock.write(theROD);
300
301 // CMM-Jet
302
303 CmmJetSubBlock jetBlock;
304 jetBlock.setCmmHeader(m_version, m_dataFormat, slice, hwCrate,
306 CmmSubBlock::RIGHT, timeslices);
307 maxDataID = static_cast<int>(LVL1::CMMJetHits::MAXID);
308 for (int dataID = 0; dataID < maxDataID; ++dataID) {
309 int source = dataID;
310 if (dataID >= m_modules) {
311 // coverity[mixed_enums : FALSE]
312 // coverity[switch_on_enum : FALSE]
313 // coverity[first_enum_type : FALSE]
314 switch (dataID) {
317 break;
320 break;
323 break;
326 break;
329 break;
332 break;
334 break;
335 default:
336 continue;
337 }
338 }
339 const LVL1::CMMJetHits* const ch = findCmmHits(crate, dataID, cmmHitsMap);
340 if ( ch ) {
341 const unsigned int hits = ch->Hits();
342 const int errs = ch->Error();
343 if (dataID == LVL1::CMMJetHits::ET_MAP) {
344 jetBlock.setJetEtMap(slice, hits);
345 } else {
346 jetBlock.setJetHits(slice, source, hits, errs);
347 }
348 }
349 }
350 if ( !jetBlock.pack()) {
351 msg(MSG::ERROR) << "CMM-Jet sub-block packing failed" << endmsg;
352 return StatusCode::FAILURE;
353 }
354 if (debug) {
355 msg() << "CMM-Jet sub-block data words: "
356 << jetBlock.dataWords() << endmsg;
357 }
358 jetBlock.write(theROD);
359
360 } else {
361
362 // Standard format
363
364 const LVL1::CMMRoI* const roi = jep->CmmRoi();
365 if ( roi ) {
366 // Make sure word IDs are correct
367 const LVL1::CMMRoI roid(roi->jetEtHits(), roi->sumEtHits(),
368 roi->missingEtHits(), roi->missingEtSigHits(),
369 roi->ex(), roi->ey(), roi->et(),
370 roi->jetEtError(), roi->sumEtError(),
371 roi->missingEtError(), roi->missingEtSigError(),
372 roi->exError(), roi->eyError(), roi->etError());
373 if (roid.jetEtHits() || roid.jetEtError()) {
374 theROD->push_back(roid.jetEtRoiWord());
375 }
376 // CMM-Energy RoIs are not zero-supressed unless all are zero
377 if (roid.sumEtHits() || roid.missingEtHits() ||
378 roid.missingEtSigHits() || roid.ex() || roid.ey() || roid.et() ||
379 roid.sumEtError() || roid.missingEtError() ||
380 roid.missingEtSigError() || roid.exError() || roid.eyError() ||
381 roid.etError()) {
382 theROD->push_back(roid.energyRoiWord0());
383 theROD->push_back(roid.energyRoiWord1());
384 theROD->push_back(roid.energyRoiWord2());
385 }
386 }
387 }
388 }
389
390 return StatusCode::SUCCESS;
391}
#define endmsg
#define ATH_CHECK
Evaluate an expression and check for errors.
float et(const xAOD::jFexSRJetRoI *j)
const bool debug
bool msgLvl(const MSG::Level lvl) const
MsgStream & msg() const
void setRodMinorVersion(uint16_t m)
change the ROD minor version
std::vector< uint32_t > RODDATA
ROD data as a vector of unsigned int.
RODDATA * getRodData(uint32_t id)
get a block of ROD data
std::map< int, const LVL1::CMMJetHits * > CmmHitsMap
void setupCmmHitsMap(const CmmHitsCollection *hitCollection, CmmHitsMap &cmmHitsMap) const
Set up CMM hits map.
ServiceHandle< IByteStreamCnvSvc > m_byteStreamCnvSvc
void setupJemRoiMap(const JemRoiCollection *jeCollection, JemRoiMap &roiMap) const
Set up JEM RoIs map.
const LVL1::CMMEtSums * findCmmSums(int crate, int dataID, const CmmSumsMap &cmmEtMap) const
Find CMM energy sums for given crate, data ID.
std::map< uint32_t, const LVL1::JEMRoI * > JemRoiMap
std::map< int, const LVL1::CMMEtSums * > CmmSumsMap
const LVL1::CMMJetHits * findCmmHits(int crate, int dataID, const CmmHitsMap &cmmHitsMap) const
Find CMM hits for given crate, data ID.
void setupCmmEtMap(const CmmSumsCollection *enCollection, CmmSumsMap &cmmEtMap) const
Set up CMM energy sums map.
const L1CaloSrcIdMap m_srcIdMap
Source ID converter.
unsigned int Ex() const
returns module Ex sum for peak sample
Definition CMMEtSums.cxx:69
int EyError() const
returns module Ey sum error for peak sample
Definition CMMEtSums.cxx:89
unsigned int Et() const
For triggered time slice.
Definition CMMEtSums.cxx:64
unsigned int Ey() const
returns module Ey sum for peak sample
Definition CMMEtSums.cxx:74
int ExError() const
returns module Ex sum error for peak sample
Definition CMMEtSums.cxx:84
int EtError() const
returns module ET sum error for peak sample
Definition CMMEtSums.cxx:79
int missingEtSigHits() const
Return Missing-ET-Sig hits.
int jetEtError() const
Return Jet-ET error flag (bit 1 Parity)
int missingEtError() const
Return Missing-ET error flag (bit 1 Parity)
int missingEtHits() const
Return Missing-ET hits.
int sumEtError() const
Return Sum-ET error flag (bit 1 Parity)
int missingEtSigError() const
Return Missing-ET-Sig error flag (bit 1 Parity)
int etError() const
Return Et error flags (bit 0 Overflow, bit 1 Parity)
int exError() const
Return Ex error flags (bit 0 Overflow, bit 1 Parity)
int eyError() const
Return Ey error flags (bit 0 Overflow, bit 1 Parity)
uint32_t roiWord() const
Return packed RoI word.
int error() const
Return error flags (bit 0 Saturation, bit 1 Parity)
int hits() const
Return Jet hit map (8 bits Main or 4 bits Forward)
Definition JEMRoI.cxx:64
int jem() const
Return JEM number (0-15)
int crate() const
Return crate number (0-1)
const CMMRoI * CmmRoi() const
Return pointer to CMM RoIs.
const DataVector< CMMEtSums > * CmmSums() const
Return pointer to CMM energy sums collection.
const DataVector< JEMRoI > * JemRoi() const
Return pointer to JEM RoI collection.
const DataVector< CMMJetHits > * CmmHits() const
Return pointer to CMM hit sums collection.
setWord1 uint16_t
setEventNumber uint32_t

◆ convertBs()

StatusCode LVL1BS::JepRoiByteStreamTool::convertBs ( const IROBDataProviderSvc::VROBFRAG & robFrags,
DataVector< LVL1::JEMRoI > * jeCollection,
LVL1::CMMRoI * cmCollection ) const
private

Convert bytestream to given container type.

Definition at line 449 of file JepRoiByteStreamTool.cxx.

453{
454 const bool debug = msgLvl(MSG::DEBUG);
455 if (debug) msg(MSG::DEBUG);
456
457 // Loop over ROB fragments
458
459 int robCount = 0;
460 std::set<uint32_t> dupCheck;
461 std::set<uint32_t> dupRoiCheck;
462 ROBIterator rob = robFrags.begin();
463 ROBIterator robEnd = robFrags.end();
464 for (; rob != robEnd; ++rob) {
465
466 if (debug) {
467 ++robCount;
468 msg() << "Treating ROB fragment " << robCount << endmsg;
469 }
470
471 // Skip fragments with ROB status errors
472
473 uint32_t robid = (*rob)->source_id();
474 if ((*rob)->nstatus() > 0) {
475 ROBPointer robData;
476 (*rob)->status(robData);
477 if (*robData != 0) {
478 m_errorTool->robError(robid, *robData);
479 if (debug) msg() << "ROB status error - skipping fragment" << endmsg;
480 continue;
481 }
482 }
483
484 // Skip duplicate fragments
485
486 if (!dupCheck.insert(robid).second) {
488 if (debug) msg() << "Skipping duplicate ROB fragment" << endmsg;
489 continue;
490 }
491
492 // Unpack ROD data (slinks)
493
494 RODPointer payloadBeg;
496 RODPointer payloadEnd;
497 (*rob)->rod_data(payloadBeg);
498 payloadEnd = payloadBeg + (*rob)->rod_ndata();
499 payload = payloadBeg;
500 if (payload == payloadEnd) {
501 if (debug) msg() << "ROB fragment empty" << endmsg;
502 continue;
503 }
504
505 // Check identifier
506 const uint32_t sourceID = (*rob)->rod_source_id();
507 if (m_srcIdMap.getRobID(sourceID) != robid ||
508 m_srcIdMap.subDet(sourceID) != m_subDetector ||
509 m_srcIdMap.daqOrRoi(sourceID) != 1 ||
510 (m_srcIdMap.slink(sourceID) != 0 && m_srcIdMap.slink(sourceID) != 2) ||
511 m_srcIdMap.crate(sourceID) < m_crateOffsetHw ||
512 m_srcIdMap.crate(sourceID) >= m_crateOffsetHw + m_crates) {
514 if (debug) {
515 msg() << "Wrong source identifier in data: "
516 << MSG::hex << sourceID << MSG::dec << endmsg;
517 }
518 continue;
519 }
520 const int rodCrate = m_srcIdMap.crate(sourceID);
521 if (debug) {
522 msg() << "Treating crate " << rodCrate
523 << " slink " << m_srcIdMap.slink(sourceID) << endmsg;
524 }
525
526 // First word may be User Header
527 if (L1CaloUserHeader::isValid(*payload)) {
528 L1CaloUserHeader userHeader(*payload);
529 const int minorVersion = (*rob)->rod_version() & 0xffff;
530 userHeader.setVersion(minorVersion);
531 const int headerWords = userHeader.words();
532 if (headerWords != 1) {
534 if (debug) msg() << "Unexpected number of user header words: "
535 << headerWords << endmsg;
536 continue;
537 }
538 for (int i = 0; i < headerWords; ++i) ++payload;
539 }
540
541 // Loop over sub-blocks if there are any
542
543 unsigned int rodErr = L1CaloSubBlock::ERROR_NONE;
544 while (payload != payloadEnd) {
545
547 const int slice = 0;
548 if (CmmSubBlock::cmmBlock(*payload)) {
549 // CMMs
551 CmmJetSubBlock subBlock;
552 payload = subBlock.read(payload, payloadEnd);
553 if (cmCollection != nullptr) {
554 if (subBlock.dataWords() && !subBlock.unpack()) {
555 if (debug) {
556 std::string errMsg(subBlock.unpackErrorMsg());
557 msg() << "CMM-Jet sub-block unpacking failed: "
558 << errMsg << endmsg;
559 }
560 rodErr = subBlock.unpackErrorCode();
561 break;
562 }
563 const LVL1::CMMRoI roi(subBlock.jetEtMap(slice),
564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
565 cmCollection->setRoiWord(roi.jetEtRoiWord());
566 }
567 } else {
568 CmmEnergySubBlock subBlock;
569 payload = subBlock.read(payload, payloadEnd);
570 if (cmCollection != nullptr) {
571 if (subBlock.dataWords() && !subBlock.unpack()) {
572 if (debug) {
573 std::string errMsg(subBlock.unpackErrorMsg());
574 msg() << "CMM-Energy sub-block unpacking failed: "
575 << errMsg << endmsg;
576 }
577 rodErr = subBlock.unpackErrorCode();
578 break;
579 }
580 const LVL1::CMMRoI roi(0, subBlock.sumEtHits(slice),
581 subBlock.missingEtHits(slice),
582 subBlock.missingEtSigHits(slice),
583 subBlock.ex(slice, CmmEnergySubBlock::TOTAL),
584 subBlock.ey(slice, CmmEnergySubBlock::TOTAL),
585 subBlock.et(slice, CmmEnergySubBlock::TOTAL),
586 0, 0, 0, 0,
587 subBlock.exError(slice, CmmEnergySubBlock::TOTAL),
588 subBlock.eyError(slice, CmmEnergySubBlock::TOTAL),
589 subBlock.etError(slice, CmmEnergySubBlock::TOTAL));
590 cmCollection->setRoiWord(roi.energyRoiWord0());
591 cmCollection->setRoiWord(roi.energyRoiWord1());
592 cmCollection->setRoiWord(roi.energyRoiWord2());
593 }
594 }
595 } else {
596 // JEM RoI
597 JemRoiSubBlock subBlock;
598 payload = subBlock.read(payload, payloadEnd);
599 if (jeCollection != nullptr) {
600 if (subBlock.dataWords() && !subBlock.unpack()) {
601 if (debug) {
602 std::string errMsg(subBlock.unpackErrorMsg());
603 msg() << "JEM RoI sub-block unpacking failed: "
604 << errMsg << endmsg;
605 }
606 rodErr = subBlock.unpackErrorCode();
607 break;
608 }
609 for (int frame = 0; frame < 8; ++frame) {
610 for (int forward = 0; forward < 2; ++forward) {
611 const LVL1::JEMRoI roi = subBlock.roi(frame, forward);
612 if (roi.hits() || roi.error()) {
613 jeCollection->push_back(new LVL1::JEMRoI(roi));
614 }
615 }
616 }
617 }
618 }
619 } else {
620 // Just RoI word
621 LVL1::JEMRoI jroi;
622 LVL1::CMMRoI croi;
623 if (jroi.setRoiWord(*payload)) {
624 if (jeCollection != nullptr) {
625 if (jroi.crate() != rodCrate - m_crateOffsetHw) {
626 if (debug) msg() << "Inconsistent RoI crate number: "
627 << jroi.crate() << endmsg;
629 break;
630 }
631 const uint32_t location = (*payload) & 0xfffc0000;
632 if (dupRoiCheck.insert(location).second) {
633 if (jroi.hits() || jroi.error()) {
634 jeCollection->push_back(new LVL1::JEMRoI(*payload));
635 }
636 } else {
637 if (debug) msg() << "Duplicate RoI word "
638 << MSG::hex << *payload << MSG::dec << endmsg;
640 break;
641 }
642 }
643 } else if (croi.setRoiWord(*payload)) {
644 if (cmCollection != nullptr) {
645 uint32_t roiType = (*payload) & 0xf0000000;
646 if ((roiType & 0xe0000000) == 0xa0000000) roiType = 0xa0000000;
647 if (dupRoiCheck.insert(roiType).second) {
648 cmCollection->setRoiWord(*payload);
649 } else {
650 if (debug) msg() << "Duplicate RoI word "
651 << MSG::hex << *payload << MSG::dec << endmsg;
653 break;
654 }
655 }
656 } else {
657 if (debug) msg() << "Invalid RoI word "
658 << MSG::hex << *payload << MSG::dec << endmsg;
660 break;
661 }
662 ++payload;
663 }
664 }
665 if (rodErr != L1CaloSubBlock::ERROR_NONE)
666 m_errorTool->rodError(robid, rodErr);
667 }
668
669 return StatusCode::SUCCESS;
670}
value_type push_back(value_type pElem)
Add an element to the end of the collection.
static bool cmmBlock(uint32_t word)
Determine if header word corresponds to CMM.
static CmmFirmwareCode cmmType(uint32_t word)
CMM differentiation (CMM_CP, CMM_JET, or CMM_ENERGY)
OFFLINE_FRAGMENTS_NAMESPACE::PointerType RODPointer
IROBDataProviderSvc::VROBFRAG::const_iterator ROBIterator
OFFLINE_FRAGMENTS_NAMESPACE::PointerType ROBPointer
static SubBlockWordType wordType(uint32_t word)
Word identification.
static bool isValid(uint32_t word)
Test for valid header word.
bool setRoiWord(uint32_t roiWord)
Set RoI word with ID check.
Definition CMMRoI.cxx:82
bool setRoiWord(uint32_t roiWord)
Set RoI word with ID check.
Definition JEMRoI.cxx:74

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

◆ 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

◆ finalize()

StatusCode LVL1BS::JepRoiByteStreamTool::finalize ( )
overridevirtual

Definition at line 99 of file JepRoiByteStreamTool.cxx.

100{
101 return StatusCode::SUCCESS;
102}

◆ findCmmHits()

const LVL1::CMMJetHits * LVL1BS::JepRoiByteStreamTool::findCmmHits ( int crate,
int dataID,
const CmmHitsMap & cmmHitsMap ) const
private

Find CMM hits for given crate, data ID.

Definition at line 674 of file JepRoiByteStreamTool.cxx.

677{
678 const LVL1::CMMJetHits* hits = 0;
679 CmmHitsMap::const_iterator mapIter;
680 mapIter = cmmHitsMap.find(crate * 100 + dataID);
681 if (mapIter != cmmHitsMap.end()) hits = mapIter->second;
682 return hits;
683}

◆ findCmmSums()

const LVL1::CMMEtSums * LVL1BS::JepRoiByteStreamTool::findCmmSums ( int crate,
int dataID,
const CmmSumsMap & cmmEtMap ) const
private

Find CMM energy sums for given crate, data ID.

Definition at line 687 of file JepRoiByteStreamTool.cxx.

690{
691 const LVL1::CMMEtSums* sums = 0;
692 CmmSumsMap::const_iterator mapIter;
693 mapIter = cmmEtMap.find(crate * 100 + dataID);
694 if (mapIter != cmmEtMap.end()) sums = mapIter->second;
695 return sums;
696}

◆ initialize()

StatusCode LVL1BS::JepRoiByteStreamTool::initialize ( )
overridevirtual

Definition at line 87 of file JepRoiByteStreamTool.cxx.

88{
89 ATH_MSG_INFO( "Initializing " << name());
90
91 ATH_CHECK( m_errorTool.retrieve() );
92 ATH_CHECK( m_byteStreamCnvSvc.retrieve() );
93
94 return StatusCode::SUCCESS;
95}
#define ATH_MSG_INFO(x)

◆ 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 & LVL1BS::JepRoiByteStreamTool::interfaceID ( )
static

AlgTool InterfaceID.

Definition at line 40 of file JepRoiByteStreamTool.cxx.

41{
43}
static const InterfaceID IID_IJepRoiByteStreamTool("JepRoiByteStreamTool", 1, 1)

◆ makeSourceIDs()

std::vector< uint32_t > LVL1BS::JepRoiByteStreamTool::makeSourceIDs ( bool roiDaq) const
private

Definition at line 395 of file JepRoiByteStreamTool.cxx.

396{
397 std::vector<uint32_t> sourceIDs;
398
399 if (roiDaq) {
401 }
402 else {
404 }
405
406 if (sourceIDs.empty()) {
407 const int maxCrates = m_crates + m_crateOffsetHw;
408 const int maxSlinks = m_srcIdMap.maxSlinks();
409 for (int hwCrate = m_crateOffsetHw; hwCrate < maxCrates; ++hwCrate)
410 {
411 for (int slink = 0; slink < maxSlinks; ++slink)
412 {
413 const int daqOrRoi = 1;
414 const uint32_t rodId = m_srcIdMap.getRodID(hwCrate, slink, daqOrRoi,
416 const uint32_t robId = m_srcIdMap.getRobID(rodId);
417 if (roiDaq)
418 {
419 if (slink < 2) sourceIDs.push_back(robId);
420 }
421 else if (slink >= 2) sourceIDs.push_back(robId);
422 }
423 }
424
425 }
426 return sourceIDs;
427}
const std::vector< uint32_t > & sourceIDs(const std::string &sgKey) const
Return reference to vector with all possible Source Identifiers.

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

◆ setupCmmEtMap()

void LVL1BS::JepRoiByteStreamTool::setupCmmEtMap ( const CmmSumsCollection * enCollection,
CmmSumsMap & cmmEtMap ) const
private

Set up CMM energy sums map.

Definition at line 737 of file JepRoiByteStreamTool.cxx.

740{
741 cmmEtMap.clear();
742 if (etCollection) {
743 CmmSumsCollection::const_iterator pos = etCollection->begin();
744 CmmSumsCollection::const_iterator pose = etCollection->end();
745 for (; pos != pose; ++pos) {
746 const LVL1::CMMEtSums* const sums = *pos;
747 const int crate = sums->crate() - m_crateOffsetSw;
748 const int key = crate * 100 + sums->dataID();
749 cmmEtMap.insert(std::make_pair(key, sums));
750 }
751 }
752}
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
int dataID() const
returns data ID
Definition CMMEtSums.cxx:59
int crate() const
Data accessors.
Definition CMMEtSums.cxx:54

◆ setupCmmHitsMap()

void LVL1BS::JepRoiByteStreamTool::setupCmmHitsMap ( const CmmHitsCollection * hitCollection,
CmmHitsMap & cmmHitsMap ) const
private

Set up CMM hits map.

Definition at line 718 of file JepRoiByteStreamTool.cxx.

721{
722 cmmHitsMap.clear();
723 if (hitCollection) {
724 CmmHitsCollection::const_iterator pos = hitCollection->begin();
725 CmmHitsCollection::const_iterator pose = hitCollection->end();
726 for (; pos != pose; ++pos) {
727 const LVL1::CMMJetHits* const hits = *pos;
728 const int crate = hits->crate() - m_crateOffsetSw;
729 const int key = crate * 100 + hits->dataID();
730 cmmHitsMap.insert(std::make_pair(key, hits));
731 }
732 }
733}

◆ setupJemRoiMap()

void LVL1BS::JepRoiByteStreamTool::setupJemRoiMap ( const JemRoiCollection * jeCollection,
JemRoiMap & roiMap ) const
private

Set up JEM RoIs map.

Definition at line 700 of file JepRoiByteStreamTool.cxx.

703{
704 roiMap.clear();
705 if (jeCollection) {
706 JemRoiCollection::const_iterator pos = jeCollection->begin();
707 JemRoiCollection::const_iterator pose = jeCollection->end();
708 for (; pos != pose; ++pos) {
709 const LVL1::JEMRoI* const roi = *pos;
710 const uint32_t key = roi->roiWord();
711 roiMap.insert(std::make_pair(key, roi));
712 }
713 }
714}

◆ sourceIDs()

const std::vector< uint32_t > & LVL1BS::JepRoiByteStreamTool::sourceIDs ( const std::string & sgKey) const

Return reference to vector with all possible Source Identifiers.

Definition at line 429 of file JepRoiByteStreamTool.cxx.

431{
432 const std::string flag("RoIB");
433 const std::string::size_type pos = sgKey.find(flag);
434 const bool roiDaq =
435 (pos == std::string::npos || pos != sgKey.length() - flag.length());
436
437 if (roiDaq) {
438 static const std::vector<uint32_t> sourceIDs = makeSourceIDs(roiDaq);
439 return sourceIDs;
440 }
441 else {
442 static const std::vector<uint32_t> sourceIDsRoIB = makeSourceIDs(roiDaq);
443 return sourceIDsRoIB;
444 }
445}
std::vector< uint32_t > makeSourceIDs(bool roiDaq) const
bool flag
Definition master.py:29

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

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

ServiceHandle<IByteStreamCnvSvc> LVL1BS::JepRoiByteStreamTool::m_byteStreamCnvSvc { this, "ByteStreamCnvSvc", "ByteStreamCnvSvc" }
private

Definition at line 80 of file JepRoiByteStreamTool.h.

81{ this, "ByteStreamCnvSvc", "ByteStreamCnvSvc" };

◆ m_crateOffsetHw

int LVL1BS::JepRoiByteStreamTool::m_crateOffsetHw
private

Property: Hardware crate number offset.

Definition at line 121 of file JepRoiByteStreamTool.h.

◆ m_crateOffsetSw

int LVL1BS::JepRoiByteStreamTool::m_crateOffsetSw
private

Property: Software crate number offset.

Definition at line 123 of file JepRoiByteStreamTool.h.

◆ m_crates

const int LVL1BS::JepRoiByteStreamTool::m_crates
private

Number of crates.

Definition at line 129 of file JepRoiByteStreamTool.h.

◆ m_dataFormat

int LVL1BS::JepRoiByteStreamTool::m_dataFormat
private

Property: Data compression format.

Definition at line 127 of file JepRoiByteStreamTool.h.

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

ToolHandle<LVL1BS::L1CaloErrorByteStreamTool> LVL1BS::JepRoiByteStreamTool::m_errorTool
private

Error collection tool.

Definition at line 99 of file JepRoiByteStreamTool.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_modules

const int LVL1BS::JepRoiByteStreamTool::m_modules
private

Number of JEM modules per crate.

Definition at line 131 of file JepRoiByteStreamTool.h.

◆ m_slinks

int LVL1BS::JepRoiByteStreamTool::m_slinks
private

Property: Number of slinks per crate when writing out bytestream.

Definition at line 133 of file JepRoiByteStreamTool.h.

◆ m_sourceIDsProp

std::vector<uint32_t> LVL1BS::JepRoiByteStreamTool::m_sourceIDsProp
private

Property: ROB source IDs.

Definition at line 135 of file JepRoiByteStreamTool.h.

◆ m_sourceIDsRoIBProp

std::vector<uint32_t> LVL1BS::JepRoiByteStreamTool::m_sourceIDsRoIBProp
private

Property: ROB source IDs for RoIB.

Definition at line 137 of file JepRoiByteStreamTool.h.

◆ m_srcIdMap

const L1CaloSrcIdMap LVL1BS::JepRoiByteStreamTool::m_srcIdMap
private

Source ID converter.

Definition at line 141 of file JepRoiByteStreamTool.h.

◆ m_subDetector

const eformat::SubDetector LVL1BS::JepRoiByteStreamTool::m_subDetector
private

Sub-detector type.

Definition at line 139 of file JepRoiByteStreamTool.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_version

int LVL1BS::JepRoiByteStreamTool::m_version
private

Property: Sub_block header version.

Definition at line 125 of file JepRoiByteStreamTool.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: