diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.cxx index beb107095d5bf164486c40475aae73e72d5be770..1779f88336e3b7986dccdfd93485b07475779ba6 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.cxx @@ -22,7 +22,6 @@ #include "TriggerEDMCLIDs.h" #include "TFile.h" -#include "TList.h" #include "TStreamerInfo.h" #include "PathResolver/PathResolver.h" @@ -300,23 +299,21 @@ void TriggerEDMDeserialiserAlg::toBuffer( TriggerEDMDeserialiserAlg::PayloadIter void TriggerEDMDeserialiserAlg::add_bs_streamerinfos(){ std::string extStreamerInfos = "bs-streamerinfos.root"; - std::string extFile = PathResolver::find_file (extStreamerInfos, "DATAPATH"); - ATH_MSG_DEBUG( "Using " << extFile ); - TFile f(extFile.c_str()); - TList *a = f.GetStreamerInfoList(); - TIter nextinfo(a); - TStreamerInfo *inf; - while ((inf = (TStreamerInfo *)nextinfo()) != 0){ + 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) { + auto inf = (TStreamerInfo*)infObj; TString t_name=inf->GetName(); if (t_name.BeginsWith("listOfRules")){ ATH_MSG_WARNING( "Could not re-load class " << t_name ); continue; } inf->BuildCheck(); - //this triggers a crash on lcg60 TClass *cl = inf->GetClass(); if (cl) ATH_MSG_DEBUG( "external TStreamerInfo for " << cl->GetName() - << " checksum: " << inf->GetCheckSum() ); + << " checksum: " << std::hex << inf->GetCheckSum() ); } } diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.h b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.h index 7dfcc464571f245342adf35408180851d01935c2..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" /** @@ -59,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;