Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Tool responsible for filling an HLT result object with serialised EDM collections.
More...
#include <TriggerEDMSerialiserTool.h>
|
StatusCode | addCollectionToSerialise (const std::string &typeKeyAuxIDs, std::vector< Address > &addressVec) const |
| Parse entry from m_collectionsToSerialize and add it to m_toSerialise. More...
|
|
StatusCode | fillPayload (const void *data, size_t sz, std::vector< uint32_t > &buffer) const |
| Copy bytes from the memory into the buffer converting from char[] to uint32_t[] This function is candidate to be made global function at some point and we will need also readPayload function. More...
|
|
StatusCode | serialiseContainer (void *data, const Address &address, std::vector< uint32_t > &buffer) const |
| Place inside the buffer the serialised container (can be either TP, xAOD) involves simple invocation of serialiser. More...
|
|
StatusCode | serialisexAODAuxContainer (void *data, const Address &address, std::vector< uint32_t > &buffer, SGImplSvc *evtStore) const |
| Place inside the buffer serialised the xAOD Aux container involves selection and recording of dynamic variables. More...
|
|
StatusCode | serialiseTPContainer (void *data, const Address &address, std::vector< uint32_t > &buffer) const |
| Place inside the buffer the serialised old type of container involves T/P conversion. More...
|
|
StatusCode | serialiseDynAux (DataObject *dObject, const Address &address, std::vector< uint32_t > &buffer, size_t &nDynWritten) const |
| Add dynamic variables to the payload. More...
|
|
StatusCode | serialise (const Address &address, std::vector< uint32_t > &buffer, SGImplSvc *evtStore) const |
| Retrieve data from event store, serialise and fill the buffer using one of the specific serialise methods, depending on the data type. More...
|
|
StatusCode | tryAddData (HLT::HLTResultMT &hltResult, const uint16_t id, const std::vector< uint32_t > &data, Address::Truncation truncationMode, const std::unordered_map< uint16_t, std::vector< uint32_t >> &deferredInterfaceBuffer) const |
| Try appending serialised data to HLT result. More...
|
|
StatusCode | fillDebugInfo (const TruncationInfoMap &truncationInfoMap, xAOD::TrigCompositeContainer &debugInfoCont, HLT::HLTResultMT &resultToFill, SGImplSvc *evtStore) const |
| Parse the truncation debug information, fill monitoring histograms, fill and record the debug info collection. More...
|
|
Tool responsible for filling an HLT result object with serialised EDM collections.
Its configuration is a list of EDM classes + keys + designation of dynamic variables + HLT result IDs. According to this list, objects are looked up in the main store and if found the serialisation service is used to convert the collections into arrays of bytes. Serialised data is wrapped info a vector of 32-bit integers and prefixed with header containing description of the payload (details may change). Such fragments for subsequent collections are concatenated together to form EDM payload in HLTResultMT. The HLTResultMT object stores serialised payload for all HLT result ROBs and all of them are filled together following the IDs in the configuration list.
For unpacking, the
- See also
- TriggerEDMDeserialiserAlg is used
Definition at line 37 of file TriggerEDMSerialiserTool.h.
◆ TruncationInfoMap
◆ TriggerEDMSerialiserTool()
TriggerEDMSerialiserTool::TriggerEDMSerialiserTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ ~TriggerEDMSerialiserTool()
virtual TriggerEDMSerialiserTool::~TriggerEDMSerialiserTool |
( |
| ) |
|
|
overridevirtualdefault |
◆ activeModuleIDs()
Build a list of module IDs to serialise based on the stream tags.
Definition at line 655 of file TriggerEDMSerialiserTool.cxx.
656 std::set<uint16_t> activeIDs;
657 for (
const eformat::helper::StreamTag& st :
result.getStreamTags()) {
658 if (st.robs.empty() && st.dets.empty()) {
662 for (
const uint32_t robid : st.robs) {
663 eformat::helper::SourceIdentifier sid(robid);
664 if (sid.subdetector_id() != eformat::SubDetector::TDAQ_HLT) {
667 activeIDs.insert(sid.module_id());
◆ addCollectionToSerialise()
StatusCode TriggerEDMSerialiserTool::addCollectionToSerialise |
( |
const std::string & |
typeKeyAuxIDs, |
|
|
std::vector< Address > & |
addressVec |
|
) |
| const |
|
private |
Parse entry from m_collectionsToSerialize and add it to m_toSerialise.
Definition at line 89 of file TriggerEDMSerialiserTool.cxx.
93 std::vector<std::string> def;
94 boost::split( def, typeKeyAuxIDs, boost::is_any_of(
";") );
96 if ( def.size() < 2 ) {
97 ATH_MSG_ERROR(
"Invalid EDM collection specification: " << typeKeyAuxIDs);
98 return StatusCode::FAILURE;
101 const std::string typeKeyAux = def[0];
102 const std::string configuredType = typeKeyAux.substr( 0, typeKeyAux.find(
'#') );
103 const std::string
key = typeKeyAux.substr( typeKeyAux.find(
'#')+1, typeKeyAux.find(
'.')-typeKeyAux.find(
'#') );
105 std::string transientType;
106 std::string persistentType;
109 if ( configuredType.find(
'_') == std::string::npos ) {
110 transientType = configuredType;
112 transientType = configuredType.substr( 0, configuredType.find(
'_') );
115 if (
m_clidSvc->getIDOfTypeName(transientType, clid).isFailure() ) {
116 ATH_MSG_ERROR(
"Can not find CLID for " << transientType <<
" that is needed for serialisation " <<
key );
117 return StatusCode::FAILURE;
119 ATH_MSG_VERBOSE(
"Decoded transient type: " << transientType <<
" with the CLID " << clid );
120 if ( transientType == configuredType ) {
121 std::string realTypeName;
122 if(
m_clidSvc->getTypeInfoNameOfID( clid, realTypeName ).isFailure() ) {
123 ATH_MSG_ERROR(
"Can not find real type name for " << transientType <<
" that is needed for serialisation " <<
key );
124 return StatusCode::FAILURE;
126 persistentType = transientType +
version( realTypeName );
127 ATH_MSG_VERBOSE(transientType <<
" = "<< configuredType <<
" thus obtained real type name from clid svc " << realTypeName <<
" forming persistent type name "<< persistentType );
129 persistentType = configuredType;
136 ATH_MSG_ERROR(
"The type " << persistentType <<
" is not known to ROOT serialiser" );
137 return StatusCode::FAILURE;
141 if ( def.size() > 2 && def[2].find(
"allowTruncation") != std::string::npos ) {
146 std::vector<std::string> splitModuleIDs;
147 boost::split( splitModuleIDs, def[1], boost::is_any_of(
",") );
148 std::vector<uint16_t> moduleIdVec;
149 for (
const auto&
module: splitModuleIDs ) moduleIdVec.push_back( std::stoi(
module ) );
150 std::sort(moduleIdVec.begin(), moduleIdVec.end());
152 if (moduleIdVec.empty()) {
153 ATH_MSG_ERROR(
"No HLT result module IDs given for " << typeKeyAux );
154 return StatusCode::FAILURE;
157 ATH_MSG_DEBUG(
"Transient type " << transientType <<
" persistent type " << persistentType <<
" will be written to " << moduleIdVec.size() <<
" result ROBFragments with IDs: "
158 << moduleIdVec <<
"" );
160 if ( persistentType.rfind(
"xAOD", 0) != std::string::npos ) {
162 if ( typeKeyAux.find(
'.') != std::string::npos ) {
164 const std::string allVars = typeKeyAux.substr( typeKeyAux.find(
'.')+1 );
165 if (!allVars.empty()) {
166 std::set<std::string> variableNames;
167 boost::split( variableNames, allVars, [](
const char c){
return c ==
'.'; } );
169 for (
const auto&
el: variableNames ) {
173 sel.selectAux( variableNames );
182 return StatusCode::SUCCESS;
◆ fill()
StatusCode TriggerEDMSerialiserTool::fill |
( |
HLT::HLTResultMT & |
resultToFill, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
overridevirtual |
Definition at line 402 of file TriggerEDMSerialiserTool.cxx.
406 ATH_MSG_ERROR(
"Trying to fill a result which is not empty! Likely misconfiguration, returning a FAILURE");
407 return StatusCode::FAILURE;
418 auto debugInfoData = std::make_unique<xAOD::TrigCompositeContainer>();
419 auto debugInfoAux = std::make_unique<xAOD::TrigCompositeAuxContainer>();
420 debugInfoData->setStore(debugInfoAux.get());
421 ATH_CHECK(debugInfo.record(std::move(debugInfoData), std::move(debugInfoAux)));
425 if (activeModules.empty()) {
426 ATH_MSG_DEBUG(
"No active module IDs in this event. This is normal for events accepted "
427 <<
"only to calibration streams. Skip all EDM serialisation.");
428 return StatusCode::SUCCESS;
432 std::vector<uint32_t>
buffer;
435 std::unordered_map<uint16_t, std::vector<uint32_t>> deferredInterfaceBuffer;
438 std::vector<uint16_t> addressActiveModuleIds;
440 activeModules.begin(), activeModules.end(),
441 std::back_inserter(addressActiveModuleIds));
442 if (addressActiveModuleIds.empty()) {
444 <<
"because its module IDs are not active in this event");
457 ATH_MSG_DEBUG(
"Serialised size of " <<
address.persTypeName() <<
" is " << thisFragmentSize <<
" bytes" );
458 for (
const uint16_t id : addressActiveModuleIds) {
470 deferredInterfaceBuffer.erase(
id);
475 ATH_MSG_DEBUG(
"Module " <<
id <<
" payload after inserting " <<
address.persTypeName() <<
" has "
477 truncationInfoMap[
id].push_back({&
address, thisFragmentSize,
true});
481 " truncated - could not add " <<
address.persTypeName() <<
483 truncationInfoMap[
id].push_back({&
address, thisFragmentSize,
false});
491 return StatusCode::SUCCESS;
◆ fillDebugInfo()
Parse the truncation debug information, fill monitoring histograms, fill and record the debug info collection.
Definition at line 538 of file TriggerEDMSerialiserTool.cxx.
544 ATH_MSG_ERROR(
"HLT result truncation on total size! Limit of "
546 <<
" MB exceeded. Flagging all module IDs as truncated.");
552 for (
const auto& [
id, truncationInfoVec] : truncationInfoMap) {
556 debugInfoCont.
push_back(debugInfoThisModule);
562 std::pair<std::string, size_t> largestRecorded{
"None", 0};
563 std::pair<std::string, size_t> largestDropped{
"None", 0};
564 std::pair<std::string, size_t> firstDropped{
"None", 0};
565 moduleId(*debugInfoThisModule) =
id;
567 bool severeTruncation =
false;
568 bool truncated =
false;
569 for (
const TruncationInfo& truncationInfo : truncationInfoVec) {
571 sizeSum += truncationInfo.size;
572 typeNameVec(*debugInfoThisModule).push_back(truncationInfo.addrPtr->persTypeName());
573 sizeVec(*debugInfoThisModule).push_back(truncationInfo.size);
574 isRecordedVec(*debugInfoThisModule).push_back(
static_cast<char>(truncationInfo.recorded));
575 if (truncationInfo.recorded && truncationInfo.size > largestRecorded.second) {
576 largestRecorded = {truncationInfo.addrPtr->persTypeName(), truncationInfo.size};
578 if (!truncationInfo.recorded && truncationInfo.size > largestDropped.second) {
579 largestDropped = {truncationInfo.addrPtr->persTypeName(), truncationInfo.size};
581 if (!truncationInfo.recorded && !truncated) {
582 firstDropped = {truncationInfo.addrPtr->persTypeName(), truncationInfo.size};
586 if (!truncationInfo.recorded) {
590 totalSize(*debugInfoThisModule) = sizeSum;
591 msg(severeTruncation ? MSG::ERROR : MSG::WARNING)
592 <<
"HLT result truncation" << (severeTruncation ?
"." :
" in low priority collections.")
593 <<
" Module ID: " <<
id <<
", limit: "
595 << sizeSum/1024. <<
" kB, largest recorded collection: " << largestRecorded.first
596 <<
" (" << largestRecorded.second/1024. <<
" kB), largest dropped collection: "
597 << largestDropped.first <<
" (" << largestDropped.second/1024. <<
" kB), "
598 <<
" first dropped collection: " <<firstDropped.first <<
" (" << firstDropped.second/1024. <<
" kB)"
605 std::stringstream
ss;
606 ss <<
"Passing chains in this event: ";
614 const std::string
prefix = severeTruncation ?
"" :
"Allowed";
618 prefix+
"Truncation_LargestName",
619 largestRecorded.second > largestDropped.second ? largestRecorded.first : largestDropped.first);
621 prefix+
"Truncation_LargestSize",
622 largestRecorded.second > largestDropped.second ? largestRecorded.second/1024. : largestDropped.second/1024.);
627 if (!debugInfoCont.
empty()) {
628 std::vector<Address> debugInfoAddressVec;
629 const std::string debugInfoID = std::string(
"xAOD::TrigCompositeContainer#")+
m_debugInfoWHKey.key()+
";0";
630 const std::string debugInfoAuxID = std::string(
"xAOD::TrigCompositeAuxContainer#")+
m_debugInfoWHKey.key()+
"Aux.;0";
633 std::vector<uint32_t>
buffer;
634 for (
const Address&
address : debugInfoAddressVec) {
641 return StatusCode::SUCCESS;
◆ fillPayload()
StatusCode TriggerEDMSerialiserTool::fillPayload |
( |
const void * |
data, |
|
|
size_t |
sz, |
|
|
std::vector< uint32_t > & |
buffer |
|
) |
| const |
|
private |
Copy bytes from the memory into the buffer converting from char[] to uint32_t[] This function is candidate to be made global function at some point and we will need also readPayload function.
Definition at line 198 of file TriggerEDMSerialiserTool.cxx.
203 const size_t neededSize = std::ceil(
double(
sz)/
sizeof(
uint32_t) );
204 const size_t existingSize =
buffer.size();
205 buffer.resize(existingSize + neededSize);
207 return StatusCode::SUCCESS;
◆ initialize()
StatusCode TriggerEDMSerialiserTool::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 37 of file TriggerEDMSerialiserTool.cxx.
51 auto jobOptionsSvc = service<Gaudi::Interfaces::IOptionsSvc>(
"JobOptionsSvc",
false);
52 if (!jobOptionsSvc.isValid()) {
53 ATH_MSG_WARNING(
"Could not retrieve JobOptionsSvc, will not update the EventSizeHardLimitMB property");
56 if (jobOptionsSvc->has(
"DataFlowConfig.DF_MaxEventSizeMB")) {
57 if (
m_eventSizeHardLimitMB.fromString(jobOptionsSvc->get(
"DataFlowConfig.DF_MaxEventSizeMB")).isSuccess()) {
59 <<
" from DataFlowConfig.DF_MaxEventSizeMB");
62 ATH_MSG_ERROR(
"Could not convert DataFlowConfig.DF_MaxEventSizeMB to integer. Leaving EventSizeHardLimitMB="
67 ATH_MSG_DEBUG(
"Could not retrieve DataFlowConfig.DF_MaxEventSizeMB from JobOptionsSvc. This is fine if running "
68 <<
"offline, but should not happen online. Leaving EventSizeHardLimitMB="
77 return StatusCode::FAILURE;
86 return StatusCode::SUCCESS;
◆ makeHeader()
Given the ID of the collection (in address arg) insert basic streaming info into the buffer.
Definition at line 185 of file TriggerEDMSerialiserTool.cxx.
189 std::vector<uint32_t> serializedLabel;
192 ss.serialize(
descr, serializedLabel );
193 buffer.push_back( serializedLabel.size() );
194 buffer.insert(
buffer.end(), serializedLabel.begin(), serializedLabel.end() );
195 return StatusCode::SUCCESS;
◆ serialise()
StatusCode TriggerEDMSerialiserTool::serialise |
( |
const Address & |
address, |
|
|
std::vector< uint32_t > & |
buffer, |
|
|
SGImplSvc * |
evtStore |
|
) |
| const |
|
private |
Retrieve data from event store, serialise and fill the buffer using one of the specific serialise methods, depending on the data type.
Definition at line 375 of file TriggerEDMSerialiserTool.cxx.
377 if ( dObj ==
nullptr ) {
379 return StatusCode::SUCCESS;
383 if ( rawptr ==
nullptr ) {
384 ATH_MSG_DEBUG(
"Data Object with key " <<
address.key <<
" can not be converted to void* for streaming" );
385 return StatusCode::SUCCESS;
398 ATH_MSG_ERROR(
"Unknown Address category - neither of xAODInterface, xAODAux, OldTP");
399 return StatusCode::FAILURE;
◆ serialiseContainer()
StatusCode TriggerEDMSerialiserTool::serialiseContainer |
( |
void * |
data, |
|
|
const Address & |
address, |
|
|
std::vector< uint32_t > & |
buffer |
|
) |
| const |
|
private |
Place inside the buffer the serialised container (can be either TP, xAOD) involves simple invocation of serialiser.
Definition at line 287 of file TriggerEDMSerialiserTool.cxx.
293 ATH_MSG_DEBUG(
"Streamed to buffer at address " << mem <<
" of " <<
sz <<
" bytes" );
295 if ( mem ==
nullptr or
sz == 0 ) {
297 return StatusCode::FAILURE;
301 std::vector<uint32_t> fragment;
304 if ( mem !=
nullptr )
delete []
static_cast<const char*
>( mem );
308 fragment[0] = fragment.size();
309 buffer.insert(
buffer.end(), fragment.begin(), fragment.end() );
311 return StatusCode::SUCCESS;
◆ serialiseDynAux()
StatusCode TriggerEDMSerialiserTool::serialiseDynAux |
( |
DataObject * |
dObject, |
|
|
const Address & |
address, |
|
|
std::vector< uint32_t > & |
buffer, |
|
|
size_t & |
nDynWritten |
|
) |
| const |
|
private |
Add dynamic variables to the payload.
Definition at line 212 of file TriggerEDMSerialiserTool.cxx.
218 const SG::IAuxStoreIO* auxStoreIO = dObjAux->template cast<SG::IAuxStoreIO> (
nullptr,
true);
219 if ( auxStoreIO ==
nullptr ) {
220 ATH_MSG_DEBUG(
"Can't obtain AuxContainerBase of " <<
address.key <<
" no dynamic variables presumably" );
221 return StatusCode::SUCCESS;
226 if ( selected.
empty() ) {
227 ATH_MSG_VERBOSE(
"Empty set of dynamic variables to store, do nothing" );
228 return StatusCode::SUCCESS;
230 ATH_MSG_DEBUG(
"Ready for serialisation of " << selected.
size() <<
" dynamic variables");
235 const std::type_info* tinfo = auxStoreIO->
getIOType (auxVarID);
240 TClass*
cls = TClass::GetClass (*tinfo);
244 <<
"' fulltype '" << fullTypeName <<
"' aux ID '" << auxVarID <<
"' class '" <<
cls->GetName() );
248 if (
m_clidSvc->getIDOfTypeInfoName(fullTypeName, clid).isFailure() ) {
249 ATH_MSG_ERROR(
"Unable to obtain CLID for either typeName:" <<
typeName <<
" or fullTypeName:" << fullTypeName);
250 ATH_MSG_ERROR(
"Please check if this is something which should obtain a CLID via TriggerEDMCLIDs.h");
251 return StatusCode::FAILURE;
258 const void* rawptr = auxStoreIO->
getIOData( auxVarID );
264 if ( mem ==
nullptr or
sz == 0 ) {
266 return StatusCode::FAILURE;
270 std::vector<uint32_t> fragment;
276 fragment[0] = fragment.size();
278 delete []
static_cast<const char*
>( mem );
280 buffer.insert(
buffer.end(), fragment.begin(), fragment.end() );
283 return StatusCode::SUCCESS;
◆ serialiseTPContainer()
StatusCode TriggerEDMSerialiserTool::serialiseTPContainer |
( |
void * |
data, |
|
|
const Address & |
address, |
|
|
std::vector< uint32_t > & |
buffer |
|
) |
| const |
|
private |
Place inside the buffer the serialised old type of container involves T/P conversion.
Definition at line 360 of file TriggerEDMSerialiserTool.cxx.
363 std::string converterPersistentType;
372 return StatusCode::SUCCESS;
◆ serialisexAODAuxContainer()
StatusCode TriggerEDMSerialiserTool::serialisexAODAuxContainer |
( |
void * |
data, |
|
|
const Address & |
address, |
|
|
std::vector< uint32_t > & |
buffer, |
|
|
SGImplSvc * |
evtStore |
|
) |
| const |
|
private |
Place inside the buffer serialised the xAOD Aux container involves selection and recording of dynamic variables.
Definition at line 314 of file TriggerEDMSerialiserTool.cxx.
328 if (data_interface !=
nullptr) {
345 size_t baseSize =
buffer.size();
347 return StatusCode::SUCCESS;
351 size_t nDynWritten = 0;
353 if ( nDynWritten > 0 ) {
355 << nDynWritten <<
"x DynAux : " <<
buffer.size()*
sizeof(
uint32_t) );
357 return StatusCode::SUCCESS;
◆ tryAddData()
StatusCode TriggerEDMSerialiserTool::tryAddData |
( |
HLT::HLTResultMT & |
hltResult, |
|
|
const uint16_t |
id, |
|
|
const std::vector< uint32_t > & |
data, |
|
|
Address::Truncation |
truncationMode, |
|
|
const std::unordered_map< uint16_t, std::vector< uint32_t >> & |
deferredInterfaceBuffer |
|
) |
| const |
|
private |
Try appending serialised data to HLT result.
If data would exceed truncation threshold, don't add and flag the corresponding module ID as truncated.
- Returns
- FAILURE in case the truncation threshold is undefined
Definition at line 494 of file TriggerEDMSerialiserTool.cxx.
500 ATH_MSG_ERROR(
"Module ID " <<
id <<
" missing from TruncationThresholds map. Cannot determine if result needs truncation");
501 return StatusCode::FAILURE;
508 size_t currentTotalSizeWords = 0;
510 const uint32_t currentTotalSizeBytes = currentTotalSizeWords*
sizeof(
uint32_t);
517 ATH_MSG_DEBUG(
"Skipping adding data to result with module ID " <<
id <<
" because of full-result truncation");
523 ATH_MSG_DEBUG(
"Skipping adding data to truncated result with module ID " <<
id);
532 ATH_MSG_DEBUG(
"Adding data to result with module ID " <<
id);
535 return StatusCode::SUCCESS;
◆ version()
std::string TriggerEDMSerialiserTool::version |
( |
const std::string & |
name | ) |
|
|
staticprivate |
Obtain version from the actual type name.
Definition at line 644 of file TriggerEDMSerialiserTool.cxx.
645 if (
name.find(
"DataVector") != std::string::npos ) {
649 if (
name.find(
'_') != std::string::npos ) {
650 return name.substr(
name.find(
'_') );
◆ tester
◆ m_clidSvc
Initial value:{ this, "ClassIDSvc", "ClassIDSvc",
"Service to translate class name to CLID" }
Definition at line 122 of file TriggerEDMSerialiserTool.h.
◆ m_collectionsToSerialize
Gaudi::Property< std::vector< std::string > > TriggerEDMSerialiserTool::m_collectionsToSerialize |
|
private |
Initial value:{
this, "CollectionsToSerialize", {},
"EDM streaming configuration \'collectionKeyType;module1,module2,...[;allowTruncation]\' where collectionKeyType is a string "
"formatted like for AthenaOutputStream, e.g. TYPE#SG.aux1.aux2..etc. For xAOD classes the typedef type should be "
"used and the _vN version number is automatically detected. For old T/P classes the persistent version has to be "
"given. Module IDs following the semicolon are the HLT result ROB module IDs to which the collection should be "
"written. ID=0 is the main result, other IDs are used for data scouting. The optional allowTruncation "
"indicates if the collection can be truncated without raising an ERROR.",
"OrderedSet<std::string>"
}
Definition at line 53 of file TriggerEDMSerialiserTool.h.
◆ m_debugInfoWHKey
Initial value:{
this, "DebugInfoWHKey", "TruncationDebugInfo"
}
StoreGate key for the truncation debug info object.
Definition at line 79 of file TriggerEDMSerialiserTool.h.
◆ m_debugNavigationSummaryRHKey
Initial value:{
this, "NavigationSummaryRHKey", "HLTNav_Summary"
}
StoreGate key for the navigation summary object - with this we can print which chains accepted the event which truncated.
Definition at line 83 of file TriggerEDMSerialiserTool.h.
◆ m_eventSizeHardLimitMB
Gaudi::Property<int> TriggerEDMSerialiserTool::m_eventSizeHardLimitMB |
|
private |
Initial value:{
this, "EventSizeHardLimitMB", -1,
"Hard limit for output event size in megabytes. Set automatically in initialize from run parameters. "
"In partition, it corresponds to DCM sbaBlockSize_MiB. Value <0 means no limit."
}
Definition at line 69 of file TriggerEDMSerialiserTool.h.
◆ m_fullResultTruncationFrac
Gaudi::Property<float> TriggerEDMSerialiserTool::m_fullResultTruncationFrac |
|
private |
Initial value:{
this, "FullResultTruncationFrac", 0.8,
"Fraction of EventSizeHardLimitMB which defines the limit on the total size of HLT output (sum of all modules)"
}
Definition at line 74 of file TriggerEDMSerialiserTool.h.
◆ m_monTool
◆ m_saveDynamic
Gaudi::Property<bool> TriggerEDMSerialiserTool::m_saveDynamic |
|
private |
Initial value:{
this, "SaveDynamic", true, "If false skips serialising of dynamic variables. Use for test purpose only."
}
Definition at line 63 of file TriggerEDMSerialiserTool.h.
◆ m_serializerSvc
Initial value:{ this, "Serializer", "AthenaRootSerializeSvc",
"Service to translate transient to persistent representation" }
Definition at line 124 of file TriggerEDMSerialiserTool.h.
◆ m_toSerialise
std::vector< Address > TriggerEDMSerialiserTool::m_toSerialise |
|
private |
◆ m_tpTool
Initial value:{ this, "TPTool", "TrigSerTPTool/TrigSerTPTool",
"Tool to do Transient/Persistent conversion (Old EDM)"}
Definition at line 127 of file TriggerEDMSerialiserTool.h.
◆ m_truncationThresholds
Gaudi::Property<std::map<uint16_t,uint32_t> > TriggerEDMSerialiserTool::m_truncationThresholds |
|
private |
Initial value:{
this, "TruncationThresholds", {}, "HLT result truncation thresholds. Key is module ID, value is max size in bytes"
}
Definition at line 66 of file TriggerEDMSerialiserTool.h.
The documentation for this class was generated from the following files:
void copyAuxStoreThinned(const SG::IConstAuxStore &orig, SG::IAuxStore ©, const SG::ThinningInfo *info)
Helper to copy an aux store while applying thinning.
def persistent(transient)
char data[hepevt_bytes_allocation_ATLAS]
Group
Properties of a chain group.
static TScopeAdapter ByNameNoQuiet(const std::string &name, Bool_t load=kTRUE)
A non-templated base class for DataBucket, allows to access the transient object address as a void*.
static AuxTypeRegistry & instance()
Return the singleton registry instance.
TrigComposite_v1 TrigComposite
Declare the latest version of the class.
Helper class to provide type-safe access to aux data.
bool fromStorable(DataObject *pDObj, T *&pTrans, bool quiet=false, IRegisterTransient *irt=0, bool isConst=true)
std::string getName(SG::auxid_t auxid) const
Return the name of an aux data item.
void addDecisionID(DecisionID id, Decision *d)
Appends the decision (given as ID) to the decision object.
std::string getVecTypeName(SG::auxid_t auxid) const
Return the type of the STL vector used to hold an aux data item.
Common base class for the auxiliary containers.
#define ATH_MSG_VERBOSE(x)
virtual const std::type_info * getIOType(SG::auxid_t auxid) const =0
Return the type of the data to be stored for one aux data item.
void * cast(void *p, CLID clid) const
Cast to a base pointer.
Interface providing I/O for a generic auxiliary store.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
const ExtendedEventContext & getExtendedEventContext(const EventContext &ctx)
Retrieve an extended context from a context object.
const Decision * getTerminusNode(SG::ReadHandle< DecisionContainer > &container)
size_t auxid_t
Identifier for a particular aux data item.
bit_t size() const
Count the number of 1 bits in the set.
const std::set< uint16_t > & getTruncatedModuleIds() const
Getter for the truncation information.
std::string typeinfoName(const std::type_info &ti)
Convert a type_info to a demangled string.
void addTruncatedModuleId(const uint16_t moduleId, bool severeTruncation=true)
Add module ID to the list of truncated results.
void addSerialisedData(const uint16_t moduleId, const std::vector< uint32_t > &data)
Append serialised data (copy of input) for a given moduleId, doesn't remove existing data.
Default, invalid implementation of ClassID_traits.
DataObject * accessData(const CLID &id) const
find proxy and access its data. Returns 0 to flag failure
The Athena Transient Store API.
bool empty() const
Return true if there are no 1 bits in the set.
Class used to describe composite objects in the HLT.
uint32_t CLID
The Class ID type.
virtual const SG::auxid_set_t & getDynamicAuxIDs() const =0
Get the list of all dynamically created variables.
Class helping in dealing with dynamic branch selection.
const std::unordered_map< uint16_t, std::vector< uint32_t > > & getSerialisedData() const
Serialised data getter.
static const BaseInfoBase * find(CLID clid)
Find the BaseInfoBase instance for clid.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
virtual const void * getIOData(SG::auxid_t auxid) const =0
Return a pointer to the data to be stored for one aux data item.
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
#define ATH_MSG_WARNING(x)
void Destruct(void *place) const
The non-template portion of the BaseInfo implementation.
void decisionIDs(const Decision *d, DecisionIDContainer &destination)
Extracts DecisionIDs stored in the Decision object.
std::string name() const
reports human redable name if it is enabled or, empty string
A set of aux data identifiers.
Declare a monitored scalar variable.
Set * set_intersection(Set *set1, Set *set2)
Perform an intersection of two sets.
Bool_t IsComplete() const
bool empty() const noexcept
Returns true if the collection is empty.