|
ATLAS Offline Software
|
Tool to perform ROB fragments to jet elements, jet hits and energy sums, and JEP container to raw data conversions.
More...
#include <JepByteStreamV2Tool.h>
|
| JepByteStreamV2Tool (const std::string &type, const std::string &name, const IInterface *parent) |
|
virtual | ~JepByteStreamV2Tool () |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | finalize () override |
|
StatusCode | convert (const std::string &name, DataVector< LVL1::JetElement > *jeCollection) const |
| Convert ROB fragments to jet elements. More...
|
|
StatusCode | convert (const std::string &sgKey, const IROBDataProviderSvc::VROBFRAG &robFrags, DataVector< LVL1::JetElement > *jeCollection) const |
|
StatusCode | convert (const std::string &name, DataVector< LVL1::JEMEtSums > *etCollection) const |
| Convert ROB fragments to energy sums. More...
|
|
StatusCode | convert (const std::string &sgKey, const IROBDataProviderSvc::VROBFRAG &robFrags, DataVector< LVL1::JEMEtSums > *etCollection) const |
|
StatusCode | convert (const std::string &name, DataVector< LVL1::CMXJetTob > *tobCollection) const |
| Convert ROB fragments to CMX TOBs. More...
|
|
StatusCode | convert (const std::string &sgKey, const IROBDataProviderSvc::VROBFRAG &robFrags, DataVector< LVL1::CMXJetTob > *tobCollection) const |
|
StatusCode | convert (const std::string &name, DataVector< LVL1::CMXJetHits > *hitCollection) const |
| Convert ROB fragments to CMX jet hits. More...
|
|
StatusCode | convert (const std::string &sgKey, const IROBDataProviderSvc::VROBFRAG &robFrags, DataVector< LVL1::CMXJetHits > *hitCollection) const |
|
StatusCode | convert (const std::string &name, DataVector< LVL1::CMXEtSums > *etCollection) const |
| Convert ROB fragments to CMX energy sums. More...
|
|
StatusCode | convert (const std::string &sgKey, const IROBDataProviderSvc::VROBFRAG &robFrags, DataVector< LVL1::CMXEtSums > *etCollection) const |
|
StatusCode | convert (const LVL1::JEPBSCollectionV2 *jep) const |
| Convert JEP Container to bytestream. More...
|
|
const std::vector< uint32_t > & | sourceIDs () const |
| Return reference to vector with all possible Source Identifiers. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
enum | CollectionType {
JET_ELEMENTS,
ENERGY_SUMS,
CMX_TOBS,
CMX_HITS,
CMX_SUMS
} |
|
typedef DataVector< LVL1::JetElement > | JetElementCollection |
|
typedef DataVector< LVL1::JEMEtSums > | EnergySumsCollection |
|
typedef DataVector< LVL1::CMXJetTob > | CmxTobCollection |
|
typedef DataVector< LVL1::CMXJetHits > | CmxHitsCollection |
|
typedef DataVector< LVL1::CMXEtSums > | CmxSumsCollection |
|
typedef std::map< unsigned int, LVL1::JetElement * > | JetElementMap |
|
typedef std::map< unsigned int, const LVL1::JetElement * > | ConstJetElementMap |
|
typedef std::map< int, LVL1::JEMEtSums * > | EnergySumsMap |
|
typedef std::map< int, const LVL1::JEMEtSums * > | ConstEnergySumsMap |
|
typedef std::map< int, LVL1::CMXJetTob * > | CmxTobMap |
|
typedef std::map< int, const LVL1::CMXJetTob * > | ConstCmxTobMap |
|
typedef std::map< int, LVL1::CMXJetHits * > | CmxHitsMap |
|
typedef std::map< int, const LVL1::CMXJetHits * > | ConstCmxHitsMap |
|
typedef std::map< int, LVL1::CMXEtSums * > | CmxSumsMap |
|
typedef std::map< int, const LVL1::CMXEtSums * > | ConstCmxSumsMap |
|
typedef IROBDataProviderSvc::VROBFRAG::const_iterator | ROBIterator |
|
typedef OFFLINE_FRAGMENTS_NAMESPACE::PointerType | ROBPointer |
|
typedef OFFLINE_FRAGMENTS_NAMESPACE::PointerType | RODPointer |
|
typedef ServiceHandle< StoreGateSvc > | StoreGateSvc_t |
|
|
StatusCode | convertBs (const std::string &sgKey, const IROBDataProviderSvc::VROBFRAG &robFrags, JepByteStreamToolData &data) const |
| Convert bytestream to given container type. More...
|
|
void | decodeCmxEnergy (CmxEnergySubBlock *subBlock, int trigJem, CmxSumsData &data, LocalData &ld) const |
| Unpack CMX-Energy sub-block. More...
|
|
void | decodeCmxJet (CmxJetSubBlock *subBlock, int trigJem, JepByteStreamToolData &data, LocalData &ld) const |
| Unpack CMX-Jet sub-block. More...
|
|
void | decodeJem (JemSubBlockV2 *subBlock, int trigJem, JepByteStreamToolData &data, LocalData &ld) const |
| Unpack JEM sub-block. More...
|
|
int | tobKey (int crate, int jem, int frame, int loc) const |
| Find TOB map key for given crate, jem, frame, loc. More...
|
|
const LVL1::JetElement * | findJetElement (double eta, double phi, const ConstJetElementMap &jeMap, LVL1::JetElementKey &elementKey) const |
| Find a jet element given eta, phi. More...
|
|
LVL1::JetElement * | findJetElement (const JetElementData &data, double eta, double phi, LVL1::JetElementKey &elementKey) const |
|
const LVL1::JEMEtSums * | findEnergySums (int crate, int module, const ConstEnergySumsMap &etMap) const |
| Find energy sums for given crate, module. More...
|
|
LVL1::JEMEtSums * | findEnergySums (const EnergySumsData &data, int crate, int module) const |
|
const LVL1::CMXJetTob * | findCmxTob (int key, const ConstCmxTobMap &cmxTobMap) const |
| Find CMX TOB for given key. More...
|
|
LVL1::CMXJetTob * | findCmxTob (const CmxTobData &data, int key) const |
|
const LVL1::CMXJetHits * | findCmxHits (int crate, int source, const ConstCmxHitsMap &cmxHitsMap) const |
| Find CMX hits for given crate, source. More...
|
|
LVL1::CMXJetHits * | findCmxHits (const CmxHitsData &data, int crate, int source) const |
|
const LVL1::CMXEtSums * | findCmxSums (int crate, int source, const ConstCmxSumsMap &cmxEtMap) const |
| Find CMX energy sums for given crate, source. More...
|
|
LVL1::CMXEtSums * | findCmxSums (const CmxSumsData &data, int crate, int source) const |
|
std::vector< uint32_t > | makeSourceIDs () const |
|
void | setupJeMap (const JetElementCollection *jeCollection, ConstJetElementMap &jeMap, LVL1::JetElementKey &elementKey) const |
| Set up jet element map. More...
|
|
void | setupEtMap (const EnergySumsCollection *enCollection, ConstEnergySumsMap &etMap) const |
| Set up energy sums map. More...
|
|
void | setupCmxTobMap (const CmxTobCollection *tobCollection, ConstCmxTobMap &cmxTobMap) const |
| Set up CMX TOB map. More...
|
|
void | setupCmxHitsMap (const CmxHitsCollection *hitCollection, ConstCmxHitsMap &cmxHitsMap) const |
| Set up CMX hits map. More...
|
|
void | setupCmxEtMap (const CmxSumsCollection *enCollection, ConstCmxSumsMap &cmxEtMap) const |
| Set up CMX energy sums map. More...
|
|
bool | slinkSlices (int crate, int module, int modulesPerSlink, int ×lices, int &trigJem, const ConstJetElementMap &jeMap, const ConstEnergySumsMap &etMap, const ConstCmxTobMap &cmxTobMap, const ConstCmxHitsMap &cmxHitsMap, const ConstCmxSumsMap &cmxEtMap, LVL1::JetElementKey &elementKey) const |
| Get number of slices and triggered slice offset for next slink. More...
|
|
void | energySubBlockTypes (int source, CmxEnergySubBlock::SourceType &srcType, CmxEnergySubBlock::SumType &sumType, CmxEnergySubBlock::HitsType &hitType) const |
| Get energy subBlock types from CMXEtSums source type. More...
|
|
int | jetSubBlockSourceId (int source) const |
| Get jet hits subBlock source ID from CMXJetHits source type. More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
Tool to perform ROB fragments to jet elements, jet hits and energy sums, and JEP container to raw data conversions.
Based on ROD document version X_xxx. <<== CHECK
- Author
- Peter Faulkner
Definition at line 58 of file JepByteStreamV2Tool.h.
◆ CmxHitsCollection
◆ CmxHitsMap
◆ CmxSumsCollection
◆ CmxSumsMap
◆ CmxTobCollection
◆ CmxTobMap
◆ ConstCmxHitsMap
◆ ConstCmxSumsMap
◆ ConstCmxTobMap
◆ ConstEnergySumsMap
◆ ConstJetElementMap
◆ EnergySumsCollection
◆ EnergySumsMap
◆ JetElementCollection
◆ JetElementMap
◆ ROBIterator
◆ ROBPointer
◆ RODPointer
◆ StoreGateSvc_t
◆ CollectionType
◆ JepByteStreamV2Tool()
LVL1BS::JepByteStreamV2Tool::JepByteStreamV2Tool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
Definition at line 51 of file JepByteStreamV2Tool.cxx.
56 m_jemMaps(
"LVL1::JemMappingTool/JemMappingTool"),
57 m_errorTool(
"LVL1BS::L1CaloErrorByteStreamTool/L1CaloErrorByteStreamTool"),
62 declareInterface<JepByteStreamV2Tool>(
this);
65 "Crate/Module/Channel to Eta/Phi/Layer mapping tool");
67 "Tool to collect errors for monitoring");
70 "Offset of JEP crate numbers in bytestream");
72 "Offset of JEP crate numbers in RDOs");
74 "The number of S-Links per crate");
78 "ROB fragment source identifiers");
82 "Format version number in sub-block header");
84 "Format identifier (0-1) in sub-block header");
86 "The number of slices in the simulation");
88 "If >0, the number of slices in bytestream");
90 "Minimum crate number, allows partial output");
92 "Maximum crate number, allows partial output");
◆ ~JepByteStreamV2Tool()
LVL1BS::JepByteStreamV2Tool::~JepByteStreamV2Tool |
( |
| ) |
|
|
virtual |
◆ convert() [1/11]
Convert JEP Container to bytestream.
CMX energy sums map
Definition at line 240 of file JepByteStreamV2Tool.cxx.
244 return StatusCode::FAILURE;
253 "JepByteStreamV2") );
292 int timeslicesNew = 1;
301 if (
module%modulesPerSlink == 0) {
302 const int daqOrRoi = 0;
303 const int slink =
module/modulesPerSlink;
305 msg() <<
"Treating crate " << hwCrate
306 <<
" slink " << slink <<
endmsg;
319 msg(MSG::ERROR) <<
"Inconsistent number of slices or "
320 <<
"triggered slice offsets in data for crate "
321 << hwCrate <<
" slink " << slink <<
endmsg;
322 return StatusCode::FAILURE;
329 <<
"Slices/offset: " << timeslices <<
" " << trigJem;
330 if (timeslices != timeslicesNew) {
331 msg() <<
" modified to " << timeslicesNew <<
" " << trigJemNew;
335 L1CaloUserHeader userHeader;
336 userHeader.setJem(trigJemNew);
340 theROD->push_back(userHeader.header());
349 JemSubBlockV2*
const subBlock =
new JemSubBlockV2();
351 hwCrate,
module, timeslicesNew);
353 if (neutralFormat)
break;
367 std::vector<int> emData;
368 std::vector<int> hadData;
369 std::vector<int> emErrors;
370 std::vector<int> hadErrors;
378 const int index = ( neutralFormat ) ? 0 :
slice;
379 JemSubBlockV2*
const subBlock = jemBlocks[
index];
385 subBlock->fillJetElement(
slice, jetEle);
395 subBlock->setStatus(failingBCN, gLinkTimeout, gLinkDown,
396 moduleError, fIFOOverflow, bCNMismatch,
397 gLinkProtocol, gLinkParity);
408 std::vector<unsigned int> exVec;
409 std::vector<unsigned int> eyVec;
410 std::vector<unsigned int> etVec;
415 const int index = ( neutralFormat ) ? 0 :
slice;
416 JemSubBlockV2*
const subBlock = jemBlocks[
index];
426 JemSubBlockV2*
const subBlock = *
pos;
427 if ( !subBlock->pack()) {
428 msg(MSG::ERROR) <<
"JEM sub-block packing failed" <<
endmsg;
429 return StatusCode::FAILURE;
432 msg() <<
"JEM sub-block data words: "
433 << subBlock->dataWords() <<
endmsg;
435 subBlock->write(theROD);
451 CmxEnergySubBlock*
const enBlock =
new CmxEnergySubBlock();
452 const int cmxEnergyVersion = 3;
457 CmxJetSubBlock*
const jetBlock =
new CmxJetSubBlock();
462 if (neutralFormat)
break;
476 std::vector<unsigned int> ex;
477 std::vector<unsigned int> ey;
478 std::vector<unsigned int>
et;
479 std::vector<int> exErr;
480 std::vector<int> eyErr;
481 std::vector<int> etErr;
500 const int index = ( neutralFormat ) ? 0 :
slice;
501 CmxEnergySubBlock*
const subBlock = cmxEnergyBlocks[
index];
505 exError, eyError, etError);
512 subBlock->setSubsums(
slice, srcType, sumType,
514 exError, eyError, etError);
516 subBlock->setEtHits(
slice, hitType, sumType,
et[
slice]);
524 for (;
pos != cmxEnergyBlocks.
end(); ++
pos) {
525 CmxEnergySubBlock*
const subBlock = *
pos;
526 if ( !subBlock->pack()) {
527 msg(MSG::ERROR) <<
"CMX-Energy sub-block packing failed" <<
endmsg;
528 return StatusCode::FAILURE;
531 msg() <<
"CMX-Energy sub-block data words: "
532 << subBlock->dataWords() <<
endmsg;
534 subBlock->write(theROD);
539 for (
int jem = 0; jem <
m_modules; ++jem) {
540 for (
int frame = 0; frame <
m_frames; ++frame) {
542 const int key =
tobKey(crate, jem, frame, loc);
545 std::vector<int> energyLarge;
546 std::vector<int> energySmall;
547 std::vector<int>
error;
548 std::vector<unsigned int> presence;
560 const int index = ( neutralFormat ) ? 0 :
slice;
561 CmxJetSubBlock*
const subBlock = cmxJetBlocks[
index];
562 subBlock->setTob(
slice, jem, frame, loc, energyLarge[
slice],
563 energySmall[
slice], err0);
564 subBlock->setParityBits(
slice, jem, err1);
565 subBlock->setPresenceMap(
slice, jem, presence[
slice]);
585 std::vector<unsigned int> hits0;
586 std::vector<unsigned int> hits1;
587 std::vector<int> err0;
588 std::vector<int> err1;
608 const int index = ( neutralFormat ) ? 0 :
slice;
609 CmxJetSubBlock*
const subBlock = cmxJetBlocks[
index];
619 jos = cmxJetBlocks.
begin();
620 for (; jos != cmxJetBlocks.
end(); ++jos) {
621 CmxJetSubBlock*
const subBlock = *jos;
622 if ( !subBlock->pack()) {
623 msg(MSG::ERROR) <<
"CMX-Jet sub-block packing failed" <<
endmsg;
624 return StatusCode::FAILURE;
627 msg() <<
"CMX-Jet sub-block data words: "
628 << subBlock->dataWords() <<
endmsg;
630 subBlock->write(theROD);
634 return StatusCode::SUCCESS;
◆ convert() [2/11]
Convert ROB fragments to CMX energy sums.
Definition at line 217 of file JepByteStreamV2Tool.cxx.
221 const std::vector<uint32_t>& vID(
sourceIDs());
224 m_robDataProvider->getROBData(Gaudi::Hive::currentContext(), vID, robFrags,
"JepByteStreamV2Tool");
225 ATH_MSG_DEBUG(
"Number of ROB fragments:" << robFrags.size());
226 return convert(sgKey, robFrags, collection);
◆ convert() [3/11]
Convert ROB fragments to CMX jet hits.
Definition at line 194 of file JepByteStreamV2Tool.cxx.
198 const std::vector<uint32_t>& vID(
sourceIDs());
201 m_robDataProvider->getROBData(Gaudi::Hive::currentContext(), vID, robFrags,
"JepByteStreamV2Tool");
202 ATH_MSG_DEBUG(
"Number of ROB fragments:" << robFrags.size());
203 return convert(sgKey, robFrags, collection);
◆ convert() [4/11]
Convert ROB fragments to CMX TOBs.
Definition at line 172 of file JepByteStreamV2Tool.cxx.
176 const std::vector<uint32_t>& vID(
sourceIDs());
179 m_robDataProvider->getROBData(Gaudi::Hive::currentContext(), vID, robFrags,
"JepByteStreamV2Tool");
180 ATH_MSG_DEBUG(
"Number of ROB fragments:" << robFrags.size());
181 return convert(sgKey, robFrags, collection);
◆ convert() [5/11]
Convert ROB fragments to energy sums.
Definition at line 150 of file JepByteStreamV2Tool.cxx.
154 const std::vector<uint32_t>& vID(
sourceIDs());
157 m_robDataProvider->getROBData(Gaudi::Hive::currentContext(), vID, robFrags,
"JepByteStreamV2Tool");
158 ATH_MSG_DEBUG(
"Number of ROB fragments:" << robFrags.size());
159 return convert(sgKey, robFrags, collection);
◆ convert() [6/11]
Convert ROB fragments to jet elements.
Definition at line 128 of file JepByteStreamV2Tool.cxx.
132 const std::vector<uint32_t>& vID(
sourceIDs());
135 m_robDataProvider->getROBData(Gaudi::Hive::currentContext(), vID, robFrags,
"JepByteStreamV2Tool");
136 ATH_MSG_DEBUG(
"Number of ROB fragments:" << robFrags.size());
137 return convert(sgKey, robFrags, collection);
◆ convert() [7/11]
◆ convert() [8/11]
◆ convert() [9/11]
◆ convert() [10/11]
◆ convert() [11/11]
◆ convertBs()
Convert bytestream to given container type.
Definition at line 672 of file JepByteStreamV2Tool.cxx.
680 const std::string
flag(
"Overlap");
681 const std::string::size_type
pos = sgKey.find(
flag);
683 (
pos == std::string::npos ||
pos != sgKey.length() -
flag.length()) ? 0 : 1;
689 JemSubBlockV2 jemSubBlock;
691 CmxEnergySubBlock cmxEnergySubBlock;
693 CmxJetSubBlock cmxJetSubBlock;
698 std::set<uint32_t> dupCheck;
701 for (; rob != robEnd; ++rob) {
705 msg() <<
"Treating ROB fragment " << robCount <<
endmsg;
710 uint32_t robid = (*rob)->source_id();
711 if ((*rob)->nstatus() > 0) {
713 (*rob)->status(robData);
716 if (
debug)
msg() <<
"ROB status error - skipping fragment" <<
endmsg;
723 if (!dupCheck.insert(robid).second) {
734 (*rob)->rod_data(payloadBeg);
735 payloadEnd = payloadBeg + (*rob)->rod_ndata();
743 const uint32_t sourceID = (*rob)->rod_source_id();
752 msg() <<
"Wrong source identifier in data: ROD "
753 << MSG::hex << sourceID <<
" ROB " << robid
760 const int minorVersion = (*rob)->rod_version() & 0xffff;
767 msg() <<
"Treating crate " << rodCrate
777 L1CaloUserHeader userHeader(*
payload);
778 userHeader.setVersion(minorVersion);
779 const int headerWords = userHeader.words();
780 if (headerWords != 1) {
782 if (
debug)
msg() <<
"Unexpected number of user header words: "
786 for (
int i = 0;
i < headerWords; ++
i) ++
payload;
788 int trigJem = userHeader.jem();
790 msg() <<
"Minor format version number: " << MSG::hex
791 << minorVersion << MSG::dec <<
endmsg
792 <<
"JEM triggered slice offset: " << trigJem <<
endmsg;
798 while (
payload != payloadEnd) {
808 cmxJetSubBlock.clear();
810 if (cmxJetSubBlock.crate() != rodCrate) {
811 if (
debug)
msg() <<
"Inconsistent crate number in ROD source ID"
824 cmxEnergySubBlock.clear();
826 if (cmxEnergySubBlock.crate() != rodCrate) {
827 if (
debug)
msg() <<
"Inconsistent crate number in ROD source ID"
848 if (jemSubBlock.crate() != rodCrate) {
849 if (
debug)
msg() <<
"Inconsistent crate number in ROD source ID"
867 return StatusCode::SUCCESS;
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ decodeCmxEnergy()
Unpack CMX-Energy sub-block.
Definition at line 872 of file JepByteStreamV2Tool.cxx.
880 const int hwCrate = subBlock->crate();
881 const int module = subBlock->cmxPosition();
882 const int firmware = subBlock->cmxFirmware();
883 const int summing = subBlock->cmxSumming();
884 const int timeslices = subBlock->timeslices();
885 const int sliceNum = subBlock->slice();
887 msg() <<
"CMX-Energy: Crate " << hwCrate
889 <<
" Firmware " << firmware
890 <<
" Summing " << summing
891 <<
" Total slices " << timeslices
892 <<
" Slice " << sliceNum <<
endmsg;
894 if (timeslices <= trigJem) {
895 if (
debug)
msg() <<
"Triggered CMX slice from header "
896 <<
"inconsistent with number of slices: "
897 << trigJem <<
", " << timeslices <<
endmsg;
901 if (timeslices <= sliceNum) {
902 if (
debug)
msg() <<
"Total slices inconsistent with slice number: "
903 << timeslices <<
", " << sliceNum <<
endmsg;
908 if (subBlock->dataWords() && !subBlock->unpack()) {
910 std::string errMsg(subBlock->unpackErrorMsg());
911 msg() <<
"CMX-Energy sub-block unpacking failed: " << errMsg <<
endmsg;
913 ld.rodErr = subBlock->unpackErrorCode();
923 std::vector<unsigned int>& exVec(
ld.uintVec0);
924 std::vector<unsigned int>& eyVec(
ld.uintVec1);
925 std::vector<unsigned int>& etVec(
ld.uintVec2);
926 std::vector<int>& exErrVec(
ld.intVec0);
927 std::vector<int>& eyErrVec(
ld.intVec1);
928 std::vector<int>& etErrVec(
ld.intVec2);
931 const int ssError = derr.
error();
932 const int sliceBeg = ( neutralFormat ) ? 0 : sliceNum;
933 const int sliceEnd = ( neutralFormat ) ? timeslices : sliceNum + 1;
961 exErr = exErrBits.error();
962 eyErr = eyErrBits.error();
963 etErr = etErrBits.error();
985 ex = subBlock->hits(
slice, hitType, sumType);
990 exErr = exErrBits.error();
991 eyErr = eyErrBits.error();
992 etErr = etErrBits.error();
993 if (ex || ey ||
et || exErr || eyErr || etErr) {
996 exVec.assign(timeslices, 0);
997 eyVec.assign(timeslices, 0);
998 etVec.assign(timeslices, 0);
999 exErrVec.assign(timeslices, 0);
1000 eyErrVec.assign(timeslices, 0);
1001 etErrVec.assign(timeslices, 0);
1005 exErrVec[
slice] = exErr;
1006 eyErrVec[
slice] = eyErr;
1007 etErrVec[
slice] = etErr;
1009 std::make_unique<LVL1::CMXEtSums>(swCrate,
source, etVec, exVec, eyVec,
1010 etErrVec, exErrVec, eyErrVec, trigJem);
1012 data.m_cmxEtMap.insert(std::make_pair(
key, sumsp.get()));
1013 data.m_cmxEtCollection->push_back(std::move(sumsp));
1015 exVec = sums->
ExVec();
1016 eyVec = sums->
EyVec();
1017 etVec = sums->
EtVec();
1021 const int nsl = exVec.size();
1022 if (timeslices != nsl) {
1023 if (
debug)
msg() <<
"Inconsistent number of slices in sub-blocks"
1029 exErrVec[
slice] != 0 || eyErrVec[
slice] != 0 ||
1030 etErrVec[
slice] != 0) {
1038 exErrVec[
slice] = exErr;
1039 eyErrVec[
slice] = eyErr;
1040 etErrVec[
slice] = etErr;
1041 sums->
addEx(exVec, exErrVec);
1042 sums->
addEy(eyVec, eyErrVec);
1043 sums->
addEt(etVec, etErrVec);
◆ decodeCmxJet()
Unpack CMX-Jet sub-block.
Definition at line 1054 of file JepByteStreamV2Tool.cxx.
1061 const int hwCrate = subBlock->crate();
1062 const int module = subBlock->cmxPosition();
1063 const int firmware = subBlock->cmxFirmware();
1064 const int summing = subBlock->cmxSumming();
1065 const int timeslices = subBlock->timeslices();
1066 const int sliceNum = subBlock->slice();
1068 msg() <<
"CMX-Jet: Crate " << hwCrate
1070 <<
" Firmware " << firmware
1071 <<
" Summing " << summing
1072 <<
" Total slices " << timeslices
1073 <<
" Slice " << sliceNum <<
endmsg;
1075 if (timeslices <= trigJem) {
1076 if (
debug)
msg() <<
"Triggered CMX slice from header "
1077 <<
"inconsistent with number of slices: "
1078 << trigJem <<
", " << timeslices <<
endmsg;
1082 if (timeslices <= sliceNum) {
1083 if (
debug)
msg() <<
"Total slices inconsistent with slice number: "
1084 << timeslices <<
", " << sliceNum <<
endmsg;
1089 if (subBlock->dataWords() && !subBlock->unpack()) {
1091 std::string errMsg(subBlock->unpackErrorMsg());
1092 msg() <<
"CMX-Jet sub-block unpacking failed: " << errMsg <<
endmsg;
1094 ld.rodErr = subBlock->unpackErrorCode();
1104 std::vector<int>& energyLgVec(
ld.intVec0);
1105 std::vector<int>& energySmVec(
ld.intVec1);
1106 std::vector<int>& errorVec(
ld.intVec2);
1107 std::vector<unsigned int>& presenceMapVec(
ld.uintVec0);
1108 std::vector<unsigned int>& hit0Vec(
ld.uintVec0);
1109 std::vector<unsigned int>& hit1Vec(
ld.uintVec1);
1110 std::vector<int>& err0Vec(
ld.intVec0);
1111 std::vector<int>& err1Vec(
ld.intVec1);
1114 const int ssError = derr.
error();
1115 const int sliceBeg = ( neutralFormat ) ? 0 : sliceNum;
1116 const int sliceEnd = ( neutralFormat ) ? timeslices : sliceNum + 1;
1122 CmxTobData& tdata =
static_cast<CmxTobData&
> (
data);
1124 for (
int jem = 0; jem <
m_modules; ++jem) {
1125 const unsigned int presenceMap = subBlock->presenceMap(
slice, jem);
1126 for (
int tob = 0; tob <
m_maxTobs; ++tob) {
1127 const int energyLarge = subBlock->energyLarge(
slice, jem, tob);
1128 const int energySmall = subBlock->energySmall(
slice, jem, tob);
1129 int error = subBlock->tobError(
slice, jem, tob);
1130 if (energyLarge == 0 && energySmall == 0 &&
error == 0)
break;
1131 const int loc = subBlock->localCoord(
slice, jem, tob);
1132 const int frame = subBlock->frame(
slice, jem, tob);
1136 if (neutralFormat) {
1137 const int parity = subBlock->parityBits(
slice, jem);
1144 error = errBits.error();
1145 const int key =
tobKey(crate, jem, frame, loc);
1148 energyLgVec.assign(timeslices, 0);
1149 energySmVec.assign(timeslices, 0);
1150 errorVec.assign(timeslices, 0);
1151 presenceMapVec.assign(timeslices, 0);
1152 energyLgVec[
slice] = energyLarge;
1153 energySmVec[
slice] = energySmall;
1155 presenceMapVec[
slice] = presenceMap;
1157 std::make_unique<LVL1::CMXJetTob>(swCrate, jem, frame, loc,
1158 energyLgVec, energySmVec, errorVec,
1159 presenceMapVec, trigJem);
1160 tdata.m_cmxTobMap.insert(std::make_pair(
key, tbp.get()));
1161 tdata.m_cmxTobCollection->push_back(std::move(tbp));
1163 energyLgVec =
tb->energyLgVec();
1164 energySmVec =
tb->energySmVec();
1165 errorVec =
tb->errorVec();
1166 presenceMapVec =
tb->presenceMapVec();
1167 const int nsl = energyLgVec.size();
1168 if (timeslices != nsl) {
1169 if (
debug)
msg() <<
"Inconsistent number of slices in sub-blocks"
1174 if (energyLgVec[
slice] != 0 || energySmVec[
slice] != 0 ||
1175 errorVec[
slice] != 0 || presenceMapVec[
slice] != 0) {
1180 energyLgVec[
slice] = energyLarge;
1181 energySmVec[
slice] = energySmall;
1183 presenceMapVec[
slice] = presenceMap;
1184 tb->addTob(energyLgVec, energySmVec, errorVec, presenceMapVec);
1193 CmxHitsData& hdata =
static_cast<CmxHitsData&
> (
data);
1203 const unsigned int hit0 = subBlock->hits(
slice, sourceId, 0);
1204 const unsigned int hit1 = subBlock->hits(
slice, sourceId, 1);
1205 int err0 = subBlock->hitsError(
slice, sourceId, 0);
1206 int err1 = subBlock->hitsError(
slice, sourceId, 1);
1213 err0 = err0Bits.error();
1214 err1 = err1Bits.error();
1215 if (hit0 || hit1 || err0 || err1) {
1218 hit0Vec.assign(timeslices, 0);
1219 hit1Vec.assign(timeslices, 0);
1220 err0Vec.assign(timeslices, 0);
1221 err1Vec.assign(timeslices, 0);
1222 hit0Vec[
slice] = hit0;
1223 hit1Vec[
slice] = hit1;
1224 err0Vec[
slice] = err0;
1225 err1Vec[
slice] = err1;
1227 std::make_unique<LVL1::CMXJetHits>(swCrate,
source, hit0Vec, hit1Vec,
1228 err0Vec, err1Vec, trigJem);
1230 hdata.m_cmxHitsMap.insert(std::make_pair(
key, jhp.get()));
1231 hdata.m_cmxHitCollection->push_back(std::move(jhp));
1237 const int nsl = hit0Vec.size();
1238 if (timeslices != nsl) {
1239 if (
debug)
msg() <<
"Inconsistent number of slices in sub-blocks"
1244 if (hit0Vec[
slice] != 0 || hit1Vec[
slice] != 0 ||
1245 err0Vec[
slice] != 0 || err1Vec[
slice] != 0) {
1250 hit0Vec[
slice] = hit0;
1251 hit1Vec[
slice] = hit1;
1252 err0Vec[
slice] = err0;
1253 err1Vec[
slice] = err1;
1254 jh->
addHits(hit0Vec, hit1Vec, err0Vec, err1Vec);
◆ decodeJem()
Unpack JEM sub-block.
Definition at line 1266 of file JepByteStreamV2Tool.cxx.
1274 const int hwCrate = subBlock->crate();
1275 const int module = subBlock->module();
1276 const int timeslices = subBlock->timeslices();
1277 const int sliceNum = subBlock->slice();
1279 msg() <<
"JEM: Crate " << hwCrate
1281 <<
" Total slices " << timeslices
1282 <<
" Slice " << sliceNum <<
endmsg;
1284 if (timeslices <= trigJem) {
1285 if (
debug)
msg() <<
"Triggered JEM slice from header "
1286 <<
"inconsistent with number of slices: "
1287 << trigJem <<
", " << timeslices <<
endmsg;
1291 if (timeslices <= sliceNum) {
1292 if (
debug)
msg() <<
"Total slices inconsistent with slice number: "
1293 << timeslices <<
", " << sliceNum <<
endmsg;
1298 if (subBlock->dataWords() && !subBlock->unpack()) {
1300 std::string errMsg(subBlock->unpackErrorMsg());
1301 msg() <<
"JEM sub-block unpacking failed: " << errMsg <<
endmsg;
1303 ld.rodErr = subBlock->unpackErrorCode();
1312 std::vector<unsigned int>& exVec(
ld.uintVec0);
1313 std::vector<unsigned int>& eyVec(
ld.uintVec1);
1314 std::vector<unsigned int>& etVec(
ld.uintVec2);
1317 const int ssError = derr.
error();
1318 std::vector<int>
dummy(timeslices);
1319 const int sliceBeg = ( neutralFormat ) ? 0 : sliceNum;
1320 const int sliceEnd = ( neutralFormat ) ? timeslices : sliceNum + 1;
1324 JetElementData& jedata =
static_cast<JetElementData&
> (
data);
1329 const JemJetElement jetEle(subBlock->jetElement(
slice,
chan));
1330 if (jetEle.data() || ssError) {
1335 if (
layer ==
ld.coreOverlap) {
1339 const unsigned int key =
ld.elementKey.jeKey(phi, eta);
1341 std::make_unique<LVL1::JetElement>(phi, eta,
dummy,
dummy,
key,
1344 jedata.m_jeMap.insert(std::make_pair(
key, jep.get()));
1345 jedata.m_jeCollection->push_back(std::move(jep));
1347 const std::vector<int>& emEnergy(je->
emEnergyVec());
1349 const std::vector<int>& emError(je->
emErrorVec());
1350 const std::vector<int>& hadError(je->
hadErrorVec());
1351 const int nsl = emEnergy.size();
1352 if (timeslices != nsl) {
1354 msg() <<
"Inconsistent number of slices in sub-blocks"
1360 if (emEnergy[
slice] != 0 || hadEnergy[
slice] != 0 ||
1361 emError[
slice] != 0 || hadError[
slice] != 0) {
1362 if (
debug)
msg() <<
"Duplicate data for slice "
1370 const int linkError = jetEle.linkError();
1376 emErrBits.error(), hadErrBits.error(),
1379 }
else if (
verbose && jetEle.data()) {
1380 msg(
MSG::VERBOSE) <<
"Non-zero data but no channel mapping for channel "
1391 EnergySumsData& sumdata =
static_cast<EnergySumsData&
> (
data);
1395 const unsigned int ex = subBlock->ex(
slice);
1396 const unsigned int ey = subBlock->ey(
slice);
1397 const unsigned int et = subBlock->et(
slice);
1401 exVec.assign(timeslices, 0);
1402 eyVec.assign(timeslices, 0);
1403 etVec.assign(timeslices, 0);
1408 std::make_unique<LVL1::JEMEtSums>(swCrate,
module, etVec, exVec, eyVec,
1410 sumdata.m_etMap.insert(std::make_pair(crate*
m_modules+
module, sumsp.get()));
1411 sumdata.m_etCollection->push_back(std::move(sumsp));
1413 exVec = sums->
ExVec();
1414 eyVec = sums->
EyVec();
1415 etVec = sums->
EtVec();
1416 const int nsl = exVec.size();
1417 if (timeslices != nsl) {
1419 msg() <<
"Inconsistent number of slices in sub-blocks"
1426 if (
debug)
msg() <<
"Duplicate data for slice "
◆ detStore()
◆ energySubBlockTypes()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
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::JepByteStreamV2Tool::finalize |
( |
| ) |
|
|
overridevirtual |
◆ findCmxHits() [1/2]
Definition at line 1534 of file JepByteStreamV2Tool.cxx.
1538 CmxHitsMap::const_iterator mapIter =
data.m_cmxHitsMap.find(crate*100 +
source);
1539 if (mapIter !=
data.m_cmxHitsMap.end())
return mapIter->second;
◆ findCmxHits() [2/2]
Find CMX hits for given crate, source.
Definition at line 1525 of file JepByteStreamV2Tool.cxx.
1529 ConstCmxHitsMap::const_iterator mapIter = cmxHitsMap.find(crate*100 +
source);
1530 if (mapIter != cmxHitsMap.end())
return mapIter->second;
◆ findCmxSums() [1/2]
Definition at line 1555 of file JepByteStreamV2Tool.cxx.
1559 CmxSumsMap::const_iterator mapIter =
data.m_cmxEtMap.find(crate*100 +
source);
1560 if (mapIter !=
data.m_cmxEtMap.end())
return mapIter->second;
◆ findCmxSums() [2/2]
Find CMX energy sums for given crate, source.
Definition at line 1546 of file JepByteStreamV2Tool.cxx.
1550 ConstCmxSumsMap::const_iterator mapIter = cmxEtMap.find(crate*100 +
source);
1551 if (mapIter != cmxEtMap.end())
return mapIter->second;
◆ findCmxTob() [1/2]
Definition at line 1514 of file JepByteStreamV2Tool.cxx.
1517 CmxTobMap::const_iterator mapIter =
data.m_cmxTobMap.find(
key);
1518 if (mapIter !=
data.m_cmxTobMap.end())
return mapIter->second;
◆ findCmxTob() [2/2]
Find CMX TOB for given key.
Definition at line 1506 of file JepByteStreamV2Tool.cxx.
1509 ConstCmxTobMap::const_iterator mapIter = cmxTobMap.find(
key);
1510 if (mapIter != cmxTobMap.end())
return mapIter->second;
◆ findEnergySums() [1/2]
◆ findEnergySums() [2/2]
Find energy sums for given crate, module.
Definition at line 1485 of file JepByteStreamV2Tool.cxx.
1489 ConstEnergySumsMap::const_iterator mapIter = etMap.find(crate*
m_modules +
module);
1490 if (mapIter != etMap.end())
return mapIter->second;
◆ findJetElement() [1/2]
Definition at line 1471 of file JepByteStreamV2Tool.cxx.
1476 const unsigned int key = elementKey.
jeKey(phi, eta);
1477 JetElementMap::const_iterator mapIter =
data.m_jeMap.find(
key);
1478 if (mapIter !=
data.m_jeMap.end())
return mapIter->second;
◆ findJetElement() [2/2]
Find a jet element given eta, phi.
Definition at line 1460 of file JepByteStreamV2Tool.cxx.
1465 const unsigned int key = elementKey.
jeKey(phi, eta);
1466 ConstJetElementMap::const_iterator mapIter = jeMap.find(
key);
1467 if (mapIter != jeMap.end())
return mapIter->second;
◆ initialize()
StatusCode LVL1BS::JepByteStreamV2Tool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ inputHandles()
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::JepByteStreamV2Tool::interfaceID |
( |
| ) |
|
|
static |
◆ jetSubBlockSourceId()
int LVL1BS::JepByteStreamV2Tool::jetSubBlockSourceId |
( |
int |
source | ) |
const |
|
private |
◆ makeSourceIDs()
std::vector< uint32_t > LVL1BS::JepByteStreamV2Tool::makeSourceIDs |
( |
| ) |
const |
|
private |
Definition at line 639 of file JepByteStreamV2Tool.cxx.
651 for (
int slink = 0; slink < maxSlinks; ++slink)
653 const int daqOrRoi = 0;
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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()
◆ renounceArray()
◆ setupCmxEtMap()
◆ setupCmxHitsMap()
Set up CMX hits map.
Definition at line 1626 of file JepByteStreamV2Tool.cxx.
1631 if (hitCollection) {
1634 for (;
pos != pose; ++
pos) {
1637 const int key = crate*100 +
hits->source();
1638 cmxHitsMap.insert(std::make_pair(
key,
hits));
◆ setupCmxTobMap()
Set up CMX TOB map.
Definition at line 1604 of file JepByteStreamV2Tool.cxx.
1609 if (tobCollection) {
1612 for (;
pos != pose; ++
pos) {
1615 const int jem = tob->
jem();
1616 const int frame = tob->
frame();
1618 const int key =
tobKey(crate, jem, frame, loc);
1619 cmxTobMap.insert(std::make_pair(
key, tob));
◆ setupEtMap()
◆ setupJeMap()
◆ slinkSlices()
bool LVL1BS::JepByteStreamV2Tool::slinkSlices |
( |
int |
crate, |
|
|
int |
module, |
|
|
int |
modulesPerSlink, |
|
|
int & |
timeslices, |
|
|
int & |
trigJem, |
|
|
const ConstJetElementMap & |
jeMap, |
|
|
const ConstEnergySumsMap & |
etMap, |
|
|
const ConstCmxTobMap & |
cmxTobMap, |
|
|
const ConstCmxHitsMap & |
cmxHitsMap, |
|
|
const ConstCmxSumsMap & |
cmxEtMap, |
|
|
LVL1::JetElementKey & |
elementKey |
|
) |
| const |
|
private |
Get number of slices and triggered slice offset for next slink.
Definition at line 1664 of file JepByteStreamV2Tool.cxx.
1685 if ( !je )
continue;
1686 const int numdat = 5;
1687 std::vector<int> sums(numdat);
1688 std::vector<int> sizes(numdat);
1704 const int peak = je->
peak();
1705 for (
int i = 0;
i < numdat; ++
i) {
1706 if (sums[
i] == 0)
continue;
1710 }
else if (
slices != sizes[
i] || trigJ != peak)
return false;
1715 const int numdat = 3;
1716 std::vector<unsigned int> sums(numdat);
1717 std::vector<int> sizes(numdat);
1719 (
et->ExVec()).end(), 0);
1721 (
et->EyVec()).end(), 0);
1723 (
et->EtVec()).end(), 0);
1724 sizes[0] = (
et->ExVec()).
size();
1725 sizes[1] = (
et->EyVec()).
size();
1726 sizes[2] = (
et->EtVec()).
size();
1727 const int peak =
et->peak();
1728 for (
int i = 0;
i < numdat; ++
i) {
1729 if (sums[
i] == 0)
continue;
1733 }
else if (
slices != sizes[
i] || trigJ != peak)
return false;
1739 for (
int jem =
module; jem <
module + modulesPerSlink; ++jem) {
1740 for (
int frame = 0; frame <
m_frames; ++frame) {
1742 const int key =
tobKey(crate, jem, frame, loc);
1745 const int numdat = 4;
1746 std::vector<int> sums(numdat);
1747 std::vector<int> sizes(numdat);
1760 const int peak = tob->
peak();
1761 for (
int i = 0;
i < numdat; ++
i) {
1762 if (sums[
i] == 0)
continue;
1766 }
else if (
slices != sizes[
i] || trigJ != peak)
return false;
1774 const int maxDataID = (maxDataID1 > maxDataID2) ? maxDataID1 : maxDataID2;
1776 const int numdat = 6;
1777 std::vector<unsigned int> sums(numdat);
1778 std::vector<int> sizes(numdat);
1783 (
hits->hitsVec0()).end(), 0);
1785 (
hits->hitsVec1()).end(), 0);
1787 (
hits->errorVec0()).end(), 0);
1789 (
hits->errorVec1()).end(), 0);
1790 sizes[0] = (
hits->hitsVec0()).
size();
1791 sizes[1] = (
hits->hitsVec1()).
size();
1792 sizes[2] = (
hits->errorVec0()).
size();
1793 sizes[3] = (
hits->errorVec1()).
size();
1794 const int peak =
hits->peak();
1795 for (
int i = 0;
i < 4; ++
i) {
1796 if (sums[
i] == 0)
continue;
1800 }
else if (
slices != sizes[
i] || trigJ != peak)
return false;
1806 (
et->ExVec()).end(), 0);
1808 (
et->EyVec()).end(), 0);
1810 (
et->EtVec()).end(), 0);
1812 (
et->ExErrorVec()).end(), 0);
1814 (
et->EyErrorVec()).end(), 0);
1816 (
et->EtErrorVec()).end(), 0);
1817 sizes[0] = (
et->ExVec()).
size();
1818 sizes[1] = (
et->EyVec()).
size();
1819 sizes[2] = (
et->EtVec()).
size();
1820 sizes[3] = (
et->ExErrorVec()).
size();
1821 sizes[4] = (
et->EyErrorVec()).
size();
1822 sizes[5] = (
et->EtErrorVec()).
size();
1823 const int peak =
et->peak();
1824 for (
int i = 0;
i < numdat; ++
i) {
1825 if (sums[
i] == 0)
continue;
1829 }
else if (
slices != sizes[
i] || trigJ != peak)
return false;
◆ sourceIDs()
const std::vector< uint32_t > & LVL1BS::JepByteStreamV2Tool::sourceIDs |
( |
| ) |
const |
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ tobKey()
int LVL1BS::JepByteStreamV2Tool::tobKey |
( |
int |
crate, |
|
|
int |
jem, |
|
|
int |
frame, |
|
|
int |
loc |
|
) |
| const |
|
private |
Find TOB map key for given crate, jem, frame, loc.
Definition at line 1451 of file JepByteStreamV2Tool.cxx.
1454 return ((((((crate<<4)+jem)<<3)+frame)<<2)+loc);
◆ updateVHKA()
◆ m_byteStreamCnvSvc
◆ m_channels
const int LVL1BS::JepByteStreamV2Tool::m_channels |
|
private |
◆ m_crateMax
int LVL1BS::JepByteStreamV2Tool::m_crateMax |
|
private |
◆ m_crateMin
int LVL1BS::JepByteStreamV2Tool::m_crateMin |
|
private |
◆ m_crateOffsetHw
int LVL1BS::JepByteStreamV2Tool::m_crateOffsetHw |
|
private |
◆ m_crateOffsetSw
int LVL1BS::JepByteStreamV2Tool::m_crateOffsetSw |
|
private |
◆ m_crates
const int LVL1BS::JepByteStreamV2Tool::m_crates |
|
private |
◆ m_dataFormat
int LVL1BS::JepByteStreamV2Tool::m_dataFormat |
|
private |
◆ m_detStore
◆ m_dfltSlices
int LVL1BS::JepByteStreamV2Tool::m_dfltSlices |
|
private |
◆ m_enableEncoding
Gaudi::Property<bool> LVL1BS::JepByteStreamV2Tool::m_enableEncoding |
|
private |
Initial value:{
this, "enableEncoding", true, "Enable conversion from RDO to ByteStream"}
Definition at line 111 of file JepByteStreamV2Tool.h.
◆ m_errorTool
◆ m_evtStore
◆ m_forceSlices
int LVL1BS::JepByteStreamV2Tool::m_forceSlices |
|
private |
◆ m_frames
const int LVL1BS::JepByteStreamV2Tool::m_frames |
|
private |
◆ m_jemMaps
◆ m_locations
const int LVL1BS::JepByteStreamV2Tool::m_locations |
|
private |
◆ m_maxTobs
const int LVL1BS::JepByteStreamV2Tool::m_maxTobs |
|
private |
◆ m_modules
const int LVL1BS::JepByteStreamV2Tool::m_modules |
|
private |
◆ m_robDataProvider
◆ m_slinks
int LVL1BS::JepByteStreamV2Tool::m_slinks |
|
private |
◆ m_sourceIDsProp
std::vector<uint32_t> LVL1BS::JepByteStreamV2Tool::m_sourceIDsProp |
|
private |
◆ m_srcIdMap
◆ m_subDetector
const eformat::SubDetector LVL1BS::JepByteStreamV2Tool::m_subDetector |
|
private |
◆ m_varHandleArraysDeclared
◆ m_version
int LVL1BS::JepByteStreamV2Tool::m_version |
|
private |
◆ m_vhka
The documentation for this class was generated from the following files:
const std::vector< unsigned int > & ExVec() const
returns module Ex sum
uint16_t minorVersionPreLS1() const
Return last ROD header minor version for pre-LS1 data.
char data[hepevt_bytes_allocation_ATLAS]
int slink(uint32_t code) const
Return slink from unpacked moduleID.
Extra patterns decribing particle interation process.
Const iterator class for DataVector/DataList.
int peak() const
returns peak slice number
const std::vector< int > & emEnergyVec() const
Return data for all slices.
void addSlice(int slice, int emEnergy, int hadEnergy, int emError, int hadError, int linkError)
add data for one timeslice.
Template class for assembling a full atlas raw event from subfragments.
virtual unsigned int jeKey(const xAOD::TriggerTower &tower)
returns key of passed tower
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
int source() const
returns data source
static int peak(int oldPeak, int oldSlices, int newSlices)
Return new triggered slice offset.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
const DataVector< CMXJetTob > * CmxTobs() const
Return pointer to CMX TOBs collection.
int peak() const
return triggered slice offset
bool accumulate(AccumulateMap &map, std::vector< module_t > const &modules, FPGATrackSimMatrixAccumulator const &acc)
Accumulates an accumulator (e.g.
const std::vector< unsigned int > & presenceMapVec() const
returns presence maps
void addEy(const std::vector< unsigned int > &Ey, const std::vector< int > &EyError)
Update Ey sum.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool msgLvl(const MSG::Level lvl) const
uint32_t getRobID(uint32_t rod_id) const
Make a ROB Source ID from a ROD source ID.
int frame() const
returns frame number
const std::vector< unsigned int > & EyVec() const
returns module Ey sum
int module() const
returns module number
const std::vector< unsigned int > & hitsVec1() const
returns hits1
void addEy(const std::vector< unsigned int > &Ey)
Update Ey sum.
const std::vector< int > & energyLgVec() const
For multi-slice readout.
static bool cmxBlock(uint32_t word)
Determine if header word corresponds to CMX.
const std::vector< int > & ExErrorVec() const
returns module Ex errors
const std::vector< int > & EtErrorVec() const
returns module ET errors
virtual void setOwner(IDataHandleHolder *o)=0
const std::vector< int > & energySmVec() const
returns energy small window
const std::vector< unsigned int > & EtVec() const
Access multi-slice data.
const std::vector< int > & hadEnergyVec() const
return Had energy vector reference (all timeslices)
int jem() const
returns JEM number
const std::vector< unsigned int > & hitsVec0() const
For multi-slice readout.
Jet elements are the inputs to the Jet, ETmiss and ETsum triggers.
static void data(const std::vector< int > &oldVec, std::vector< int > &newVec, int newSlices)
Return modified data vector<int>
int crate() const
returns crate number
(Non-const) Iterator class for DataVector/DataList.
int crate() const
Data accessors.
void set(ErrorBit bit, int value=1)
Set an error bit or data.
const std::vector< int > & errorVec1() const
returns error1
int crate(uint32_t code) const
Return crate from unpacked moduleID.
const DataVector< JEMEtSums > * EnergySums() const
Return pointer to energy sums collection.
std::vector< const ROBF * > VROBFRAG
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
const std::vector< int > & errorVec() const
returns error
const std::vector< int > & errorVec0() const
returns error0
double eta() const
Eta of centre of JetElement.
static SubBlockWordType wordType(uint32_t word)
Word identification.
int error() const
Return the full error word.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
const DataVector< CMXJetHits > * CmxHits() const
Return pointer to CMX hit sums collection.
void addHits(const std::vector< unsigned int > &hits0, const std::vector< unsigned int > &hits1, const std::vector< int > &error0, const std::vector< int > &error1)
Add data to existing object.
The JetElementKey object provides the key for each JetElement depending on its eta,...
@ MISSING_ET_SIG_STANDARD
uint16_t minorVersion() const
Return ROD header minor version to use when writing BS.
const std::vector< int > & EyErrorVec() const
returns module Ey errors
value_type push_back(value_type pElem)
Add an element to the end of the collection.
CMXEtSums object stores Et sums from the Energy CMXs.
const std::vector< unsigned int > & ExVec() const
returns module Ex sum
const std::vector< int > & hadErrorVec() const
return Had error vector reference (all timeslices)
static CmxFirmwareCode cmxType(uint32_t word)
CMX differentiation (CMX_CP, CMX_JET, or CMX_ENERGY)
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
eformat::SubDetector subDet(uint32_t code) const
Return sub-detector for given ID.
void addEt(const std::vector< unsigned int > &Et)
Update ET sum.
TOB data received by the merger modules.
void setRodMinorVersion(uint16_t m)
change the ROD minor version
double phi() const
Phi of centre of JetElement.
const std::vector< unsigned int > & EyVec() const
returns module Ey sum
void addEt(const std::vector< unsigned int > &Et, const std::vector< int > &EtError)
Add data to existing objects.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
const DataVector< CMXEtSums > * CmxSums() const
Return pointer to CMX energy sums collection.
uint32_t getRodID(int crate, int slink, int daqOrRoi, eformat::SubDetector subdet) const
Make a ROD Source ID.
const std::vector< unsigned int > & EtVec() const
returns module ET sum
void addEx(const std::vector< unsigned int > &Ex, const std::vector< int > &ExError)
Update Ex sum.
void addEx(const std::vector< unsigned int > &Ex)
Update Ex sum.
int crate() const
Data accessors.
std::vector< uint32_t > RODDATA
ROD data as a vector of unsigned int.
const std::vector< int > & emErrorVec() const
return Em error vector reference (all timeslices)
const std::vector< int > & linkErrorVec() const
return link error vector reference (all timeslices)
int maxSlinks() const
Return the maximum possible number of slinks.
int location() const
returns location
int daqOrRoi(uint32_t code) const
Return daqOrRoi from unpacked moduleID.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
RODDATA * getRodData(uint32_t id)
get a block of ROD data
Summary of JEP (Jet) hits produced by the merger modules.
const DataVector< JetElement > * JetElements() const
Return pointer to jet element collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.