From bf8c0bd0b868e96fa62f30ffb1c0b86d34b539e4 Mon Sep 17 00:00:00 2001
From: Oleg Kuprash <oleg.kuprash@cern.ch>
Date: Mon, 12 Oct 2020 15:09:05 +0200
Subject: [PATCH] Switch to unique_ptr, minor updates

---
 .../src/TriggerEDMDeserialiserAlg.cxx           | 17 +++++++----------
 .../src/TriggerEDMDeserialiserAlg.h             |  3 +++
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMDeserialiserAlg.cxx
index beb107095d5..1779f88336e 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 7dfcc464571..e0c03e0a506 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;
   
-- 
GitLab