diff --git a/Trigger/TrigDataAccess/TrigSerializeResult/share/bs-streamerinfos.root b/Trigger/TrigDataAccess/TrigSerializeResult/share/bs-streamerinfos.root index 4ff3afcecfe4a39485b6689ffed3016e157f9805..bec235d093be6adf51c2d52bfd17f0c8b0045086 100644 Binary files a/Trigger/TrigDataAccess/TrigSerializeResult/share/bs-streamerinfos.root and b/Trigger/TrigDataAccess/TrigSerializeResult/share/bs-streamerinfos.root differ diff --git a/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt b/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt index 568ab360049d71af54926c91dcaffb1039e217d3..1dc131abefc80f62e5337f1fd7de9f5df700505d 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt +++ b/Trigger/TrigSteer/TrigOutputHandling/CMakeLists.txt @@ -13,7 +13,9 @@ atlas_add_library( TrigOutputHandlingLib src/*.cxx PUBLIC_HEADERS TrigOutputHandling INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} - LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} GaudiKernel AthViews AthenaBaseComps RootUtils TrigSteeringEvent TrigSerializeResultLib TrigConfData xAODTrigCalo xAODTrigRinger xAODTrigEgamma xAODEgamma xAODBTagging xAODTrigger xAODTracking xAODTrigMuon xAODMuon xAODTau xAODTrigBphys xAODTrigMissingET DecisionHandlingLib AthenaMonitoringKernelLib TrigPartialEventBuildingLib TrigSerializeTPLib AthContainersRoot TrigCompositeUtilsLib TrigCostMonitorMTLib ) + LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} GaudiKernel AthViews AthenaBaseComps RootUtils TrigSteeringEvent TrigSerializeResultLib TrigConfData xAODTrigCalo xAODTrigRinger xAODTrigEgamma xAODEgamma xAODBTagging xAODTrigger xAODTracking xAODTrigMuon xAODMuon xAODTau xAODTrigBphys xAODTrigMissingET DecisionHandlingLib AthenaMonitoringKernelLib TrigPartialEventBuildingLib TrigSerializeTPLib AthContainersRoot TrigCompositeUtilsLib TrigCostMonitorMTLib + PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} PathResolver ) + atlas_add_component( TrigOutputHandling src/components/*.cxx diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.cxx index a39aa0c19116dbf36635b1810af01a9b4b0a2aea..d7a5a53be823a046d04877c8c94f8b36e5a82b65 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.cxx @@ -21,6 +21,11 @@ #include "TriggerEDMDeserialiserAlg.h" #include "TriggerEDMCLIDs.h" +#include "TFile.h" +#include "TStreamerInfo.h" +#include "PathResolver/PathResolver.h" + + class TriggerEDMDeserialiserAlg::WritableAuxStore : public SG::AuxStoreInternal { public: WritableAuxStore() {} @@ -74,6 +79,7 @@ StatusCode TriggerEDMDeserialiserAlg::initialize() { ATH_CHECK( m_clidSvc.retrieve() ); ATH_CHECK( m_serializerSvc.retrieve() ); ATH_CHECK( m_tpTool.retrieve() ); + add_bs_streamerinfos(); return StatusCode::SUCCESS; } @@ -290,3 +296,25 @@ void TriggerEDMDeserialiserAlg::toBuffer( TriggerEDMDeserialiserAlg::PayloadIter // we rely on continuous memory layout of std::vector ... std::memcpy( buffer, &(*dataStart), dataSize( start ) ); } + +void TriggerEDMDeserialiserAlg::add_bs_streamerinfos(){ + std::string extStreamerInfos = "bs-streamerinfos.root"; + std::string extFilePath = PathResolver::find_file(extStreamerInfos, "DATAPATH"); + ATH_MSG_DEBUG( "Using " << extFilePath ); + TFile extFile(extFilePath.c_str()); + m_streamerInfoList = std::unique_ptr<TList>(extFile.GetStreamerInfoList()); + for(const auto&& infObj: *m_streamerInfoList) { + TString t_name=infObj->GetName(); + if (t_name.BeginsWith("listOfRules")){ + ATH_MSG_WARNING( "Could not re-load class " << t_name ); + continue; + } + + TStreamerInfo* inf = dynamic_cast<TStreamerInfo*>(infObj); + inf->BuildCheck(); + TClass *cl = inf->GetClass(); + if (cl) + ATH_MSG_DEBUG( "external TStreamerInfo for " << cl->GetName() + << " checksum: " << std::hex << inf->GetCheckSum() ); + } +} diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.h b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.h index 009eb723e52218983813939e759454a9ee3a00f7..e0c03e0a506bf7674dabd801a45679a084ffe594 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.h +++ b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.h @@ -12,6 +12,7 @@ #include "AthenaKernel/IAthenaSerializeSvc.h" #include "TrigSerializeTP/TrigSerTPTool.h" +#include "TList.h" /** @@ -46,6 +47,8 @@ public: private: friend StatusCode tester( TriggerEDMDeserialiserAlg* ); + void add_bs_streamerinfos(); + SG::ReadHandleKey<HLT::HLTResultMT> m_resultKey { this, "ResultKey", "HLTResultMT", "Key of the HLT result object" }; Gaudi::Property<std::string> m_prefix{ this, "Prefix", "", "Set for testing to avoid clash with the input collections" }; Gaudi::Property<int> m_moduleID{ this, "ModuleID", 0, "Module ID of HLT result ROB, default 0 is the main HLT result, others are for TLA, calibration etc." }; @@ -57,6 +60,8 @@ private: ToolHandle<TrigSerTPTool> m_tpTool{ this, "TPTool", "TrigSerTPTool/TrigSerTPTool", "Tool to do Transient/Persistent conversion (Old EDM)"}; + std::unique_ptr<TList> m_streamerInfoList; + typedef std::vector<uint32_t> Payload; typedef std::vector<uint32_t>::const_iterator PayloadIterator;