From 0cc0b975024ae264097dade76b38b324906c8d37 Mon Sep 17 00:00:00 2001
From: Frank Winklmeier <fwinkl@cern>
Date: Thu, 9 Jul 2020 15:55:34 +0200
Subject: [PATCH 1/5] TrigSteeringEvent: Enable thread checker and fix warnings

---
 .../TrigSteeringEvent/ATLAS_CHECK_THREAD_SAFETY           | 1 +
 .../TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Chain.h | 5 ++---
 .../TrigSteeringEvent/TrigSteeringEvent/HLTResult.h       | 8 ++++----
 .../TrigSteeringEvent/StringSerializer.h                  | 4 ++--
 .../TrigEvent/TrigSteeringEvent/src/StringSerializer.cxx  | 4 ++--
 5 files changed, 11 insertions(+), 11 deletions(-)
 create mode 100644 Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/ATLAS_CHECK_THREAD_SAFETY

diff --git a/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/ATLAS_CHECK_THREAD_SAFETY b/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/ATLAS_CHECK_THREAD_SAFETY
new file mode 100644
index 000000000000..1e90b5884096
--- /dev/null
+++ b/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/ATLAS_CHECK_THREAD_SAFETY
@@ -0,0 +1 @@
+Trigger/TrigEvent/TrigSteeringEvent
diff --git a/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Chain.h b/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Chain.h
index 892d94bc0cfb..b06062a6a31e 100644
--- a/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Chain.h
+++ b/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Chain.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #pragma once
@@ -15,7 +15,6 @@
  * moved from TrigSteering package
  *
  * File and Version Information:
- * $Id: Chain.h,v 1.44 2009-02-16 15:47:04 tbold Exp $
  **********************************************************************************/
 
 #ifndef TRIGSTEERINGEVENT_CHAIN_H
@@ -47,7 +46,7 @@ class TrigTimer;
 
 namespace HLT {
 
-  static std::string no_config = "no config";
+  static const std::string no_config = "no config";
 
   // taht is for backward compatibility of TDT, once new TDT will be available it can be removed from steering
   enum ChainStatus { ChainInvalid=0, ConfigOnlyChain, ChainOK };
diff --git a/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/HLTResult.h b/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/HLTResult.h
index d3a5e4a72eed..f511688956e7 100644
--- a/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/HLTResult.h
+++ b/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/HLTResult.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #pragma once
@@ -483,11 +483,11 @@ namespace HLT {
     
     std::map<unsigned int, std::set<std::pair<CLID, std::string> > > m_modID_id_name; // map from rob module ID to class ID and collection name
 
-    mutable std::vector<unsigned int> m_navigationResultCuts;
+    std::vector<unsigned int> m_navigationResultCuts;
 
-    mutable std::vector<unsigned int> m_navigationResultCuts_DSonly;
+    std::vector<unsigned int> m_navigationResultCuts_DSonly;
 
-    mutable HLTExtraData* m_extraData;     //!< object for m_extras deserialization (on demand)
+    HLTExtraData* m_extraData;     //!< object for m_extras deserialization (on demand)
 
   };
   
diff --git a/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/StringSerializer.h b/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/StringSerializer.h
index c940e313fce2..0d763461e4e8 100755
--- a/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/StringSerializer.h
+++ b/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/StringSerializer.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGSTEERINGEVENT_STRINGSERIALIZER_H
@@ -79,7 +79,7 @@ private:
 
   std::ostringstream m_ostream;  //!< sstream used in serialization
   std::istringstream m_istream;  //!< sstream used in de-serialization
-  static const char* s_delimiter; //!< default delimeter which is put between strings from the input vector while serialization happens
+  static const char * const s_delimiter; //!< default delimeter which is put between strings from the input vector while serialization happens
 };
 
 
diff --git a/Trigger/TrigEvent/TrigSteeringEvent/src/StringSerializer.cxx b/Trigger/TrigEvent/TrigSteeringEvent/src/StringSerializer.cxx
index 041e02ae578b..64935cb05317 100755
--- a/Trigger/TrigEvent/TrigSteeringEvent/src/StringSerializer.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEvent/src/StringSerializer.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <cstring>
@@ -9,7 +9,7 @@
 namespace TrigSteeringEvent {
 
 
-const char* StringSerializer::s_delimiter = "\n";
+const char* const StringSerializer::s_delimiter = "\n";
 
 
 void StringSerializer::serialize (const std::vector<std::string>& strings, std::vector<uint32_t>& storage ) {
-- 
GitLab


From 64c8ea257452d74503b17093f6ba1b5c95989b09 Mon Sep 17 00:00:00 2001
From: Frank Winklmeier <fwinkl@cern>
Date: Thu, 9 Jul 2020 16:38:41 +0200
Subject: [PATCH 2/5] TrigSteeringEventAthenaPool: Enable thread checker

Enable static thread checker and fix warnings. Also remove some
unprotected DEBUG messages.
---
 .../ATLAS_CHECK_THREAD_SAFETY                 |  1 +
 .../src/HLTResultCnv.cxx                      |  8 ++-----
 .../src/Lvl1ResultCnv.cxx                     | 11 +++------
 .../src/TrigOperationalInfoCnv.cxx            |  8 ++-----
 .../src/TrigOperationalInfoCollectionCnv.cxx  | 12 +++-------
 .../src/TrigPassBitsCnv.cxx                   |  7 +-----
 .../src/TrigPassBitsCollectionCnv.cxx         | 23 +++++++++++--------
 .../src/TrigPassBitsCollectionCnv.h           | 16 ++++++++-----
 .../src/TrigPassFlagsCnv.cxx                  |  2 +-
 .../src/TrigPassFlagsCollectionCnv.cxx        | 23 +++++++++++--------
 .../src/TrigPassFlagsCollectionCnv.h          | 13 +++++++----
 .../src/TrigRoiDescriptorCnv.cxx              | 16 ++++---------
 .../src/TrigRoiDescriptorCollectionCnv.cxx    | 16 ++++---------
 13 files changed, 69 insertions(+), 87 deletions(-)
 create mode 100644 Trigger/TrigEvent/TrigSteeringEventAthenaPool/ATLAS_CHECK_THREAD_SAFETY

diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/ATLAS_CHECK_THREAD_SAFETY b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/ATLAS_CHECK_THREAD_SAFETY
new file mode 100644
index 000000000000..c583baa660c3
--- /dev/null
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/ATLAS_CHECK_THREAD_SAFETY
@@ -0,0 +1 @@
+Trigger/TrigEvent/TrigSteeringEventAthenaPool
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/HLTResultCnv.cxx b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/HLTResultCnv.cxx
index 9f4beae66b16..94482743a401 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/HLTResultCnv.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/HLTResultCnv.cxx
@@ -23,7 +23,6 @@ HLTResultCnv::~HLTResultCnv()
 HLTResult_PERS* HLTResultCnv::createPersistent(HLT::HLTResult* transCont) 
 {
   MsgStream mlog(msgSvc(), "HLTResultConverter" );
-  mlog << MSG::DEBUG << "HLTResultCnv::createPersistent " << endmsg;
 
   HLTResult_PERS* persObj = m_TPConverter->createPersistent( transCont, mlog );
 
@@ -34,20 +33,17 @@ HLTResult_PERS* HLTResultCnv::createPersistent(HLT::HLTResult* transCont)
 HLT::HLTResult* HLTResultCnv::createTransient() 
 {
   MsgStream mlog(msgSvc(), "HLTResultConverter" );
-  mlog << MSG::DEBUG << "HLTResultCnv::createTransient " << endmsg;  
 
-  static pool::Guid p1_guid("9567573D-F35E-4D5E-9A1A-A43B07D3CF3B");  
-  static pool::Guid p0_guid("559D6CB9-9A54-4284-A03D-9C745352281D");
+  static const pool::Guid p1_guid("9567573D-F35E-4D5E-9A1A-A43B07D3CF3B");
+  static const pool::Guid p0_guid("559D6CB9-9A54-4284-A03D-9C745352281D");
   
   if ( compareClassGuid(p1_guid) ) {
-    mlog << MSG::DEBUG << "HLTResult::reading p1 persistent object" << endmsg;
     // using unique_ptr ensures deletion of the persistent object
     std::unique_ptr< HLT::HLTResult_p1 > col_vect( poolReadObject< HLT::HLTResult_p1 >() );
     return m_TPConverter->createTransient( col_vect.get(), mlog );
   }
   
   else if( compareClassGuid(p0_guid) ){
-    mlog << MSG::DEBUG << "HLTResult::reading p0 persistent object" << endmsg;
     // old version from before TP separation, just return it
     return this->poolReadObject<HLT::HLTResult>(); 
   }
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/Lvl1ResultCnv.cxx b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/Lvl1ResultCnv.cxx
index c0ce59283313..bfc471ef9037 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/Lvl1ResultCnv.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/Lvl1ResultCnv.cxx
@@ -31,7 +31,6 @@ Lvl1ResultCnv::~Lvl1ResultCnv()
 Lvl1Result_PERS* Lvl1ResultCnv::createPersistent(LVL1CTP::Lvl1Result* transCont)
 {
   MsgStream mlog(msgSvc(), "Lvl1ResultConverter" );
-  mlog << MSG::DEBUG << "Lvl1ResultCnv::createPersistent " << endmsg;
 
   Lvl1Result_PERS* persObj = m_impl->m_TPConverter_p2.createPersistent( transCont, mlog );
 
@@ -42,23 +41,19 @@ Lvl1Result_PERS* Lvl1ResultCnv::createPersistent(LVL1CTP::Lvl1Result* transCont)
 LVL1CTP::Lvl1Result* Lvl1ResultCnv::createTransient()
 {
   MsgStream mlog(msgSvc(), "Lvl1ResultConverter" );
-  mlog << MSG::DEBUG << "Lvl1ResultCnv::createTransient " << endmsg;
 
-  static pool::Guid p2_guid("F4208CCF-9FAA-4F01-9C0B-26E9E59CE49F");
-  static pool::Guid p1_guid("226FF990-4D6A-4957-AAAD-42172D174773");
-  static pool::Guid p0_guid("18DE165E-3DB5-4EAC-867D-807DA3E217C0");
+  static const pool::Guid p2_guid("F4208CCF-9FAA-4F01-9C0B-26E9E59CE49F");
+  static const pool::Guid p1_guid("226FF990-4D6A-4957-AAAD-42172D174773");
+  static const pool::Guid p0_guid("18DE165E-3DB5-4EAC-867D-807DA3E217C0");
 
   if ( compareClassGuid(p1_guid) ) {
-    mlog << MSG::DEBUG << "Lvl1Result::createTransient reading p1 persistent object" << endmsg;
     // using unique_ptr ensures deletion of the persistent object
     std::unique_ptr< LVL1CTP::Lvl1Result_p1 > col_vect( poolReadObject< LVL1CTP::Lvl1Result_p1 >() );
     return m_impl->m_TPConverter_p1.createTransient( col_vect.get(), mlog );
   } else if( compareClassGuid(p0_guid) ){
-    mlog << MSG::DEBUG << "Lvl1Result::createTransient reading p0 persistent object" << endmsg;
     // old version from before TP separation, just return it
     return this->poolReadObject<LVL1CTP::Lvl1Result>();
   } else if ( compareClassGuid(p2_guid) ) {
-    mlog << MSG::DEBUG << "Lvl1Result::createTransient reading p2 persistent object" << endmsg;
     // using unique_ptr ensures deletion of the persistent object
     std::unique_ptr< LVL1CTP::Lvl1Result_p2 > col_vect( poolReadObject< LVL1CTP::Lvl1Result_p2 >() );
     return m_impl->m_TPConverter_p2.createTransient( col_vect.get(), mlog );
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigOperationalInfoCnv.cxx b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigOperationalInfoCnv.cxx
index abcc27a8a5b4..bba20f0ad5fe 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigOperationalInfoCnv.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigOperationalInfoCnv.cxx
@@ -19,7 +19,6 @@ TrigOperationalInfoCnv::~TrigOperationalInfoCnv()
 TrigOperationalInfo_PERS* TrigOperationalInfoCnv::createPersistent(TrigOperationalInfo* transObj) 
 {
   MsgStream mlog(msgSvc(), "TrigOperationalInfoConverter" );
-  mlog << MSG::DEBUG << "TrigOperationalInfoCnv_p1::createPersistent" << endmsg;
 
   TrigOperationalInfo_PERS *persObj = m_TPConverter->createPersistent( transObj, mlog );
   
@@ -30,16 +29,13 @@ TrigOperationalInfo_PERS* TrigOperationalInfoCnv::createPersistent(TrigOperation
 TrigOperationalInfo* TrigOperationalInfoCnv::createTransient() 
 {
   MsgStream mlog(msgSvc(), "TrigOperationalInfoConverter" );
-  mlog << MSG::DEBUG << "TrigOperationalInfoCnv_p1::createTransient " << endmsg;
-  
-  static pool::Guid p1_guid("765F0281-801B-4F5C-8C4C-5BE7E7DB5E42");
 
-  
+  static const pool::Guid p1_guid("765F0281-801B-4F5C-8C4C-5BE7E7DB5E42");
+
   TrigOperationalInfo *trans_obj(0);
   
   if( compareClassGuid(p1_guid) ) {
     
-    mlog << MSG::DEBUG << "TrigOperationalInfoCnv::reading p1 persistent object" << endmsg;
     std::unique_ptr< TrigOperationalInfo_p1 >   col_vect( this->poolReadObject< TrigOperationalInfo_p1 >() );
     trans_obj = m_TPConverter->createTransient( col_vect.get(), mlog );    
   } else {
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigOperationalInfoCollectionCnv.cxx b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigOperationalInfoCollectionCnv.cxx
index c4787641e79d..a39cff261287 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigOperationalInfoCollectionCnv.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigOperationalInfoCollectionCnv.cxx
@@ -26,7 +26,6 @@ TrigOperationalInfoCollectionCnv::~TrigOperationalInfoCollectionCnv()
 TrigOperationalInfoCollection_PERS* TrigOperationalInfoCollectionCnv::createPersistent(TrigOperationalInfoCollection* transObj) 
 {
   MsgStream mlog(msgSvc(), "TrigOperationalInfoCollectionConverter" );
-  mlog << MSG::DEBUG << "TrigOperationalInfoCollectionCnv::createPersistent" << endmsg;
 
   TrigOperationalInfoCollection_PERS *persObj = m_impl->m_TPConverter_tlp1.createPersistent( transObj, mlog );
   
@@ -37,26 +36,21 @@ TrigOperationalInfoCollection_PERS* TrigOperationalInfoCollectionCnv::createPers
 TrigOperationalInfoCollection* TrigOperationalInfoCollectionCnv::createTransient() 
 {
   MsgStream mlog(msgSvc(), "TrigOperationalInfoCollectionConverter" );
-  mlog << MSG::DEBUG << "TrigOperationalInfoCollectionCnv::createTransient " << endmsg;
-  
-  static pool::Guid tlp1_guid("7D5A0227-E28B-4228-83C5-22F8BBB90BBF");
-  static pool::Guid p1_guid("B6C95F89-C1B9-4B9D-A533-F6F4B57BD277");
+
+  static const pool::Guid tlp1_guid("7D5A0227-E28B-4228-83C5-22F8BBB90BBF");
+  static const pool::Guid p1_guid("B6C95F89-C1B9-4B9D-A533-F6F4B57BD277");
   
   TrigOperationalInfoCollection *trans_obj(0);
   
   if( compareClassGuid(tlp1_guid) ) {
     
-    mlog << MSG::DEBUG << "TrigOperationalInfoCollectionCnv::reading tlp1 persistent object" << endmsg;
     std::unique_ptr< TrigOperationalInfoCollection_tlp1 >   col_vect( this->poolReadObject< TrigOperationalInfoCollection_tlp1 >() );
-    mlog << MSG::DEBUG << "TrigOperationalInfoCollectionCnv::reading tlp1 persistent object pointer" <<  col_vect.get() << endmsg;
     trans_obj = m_impl->m_TPConverter_tlp1.createTransient( col_vect.get(), mlog );
     
   }
   else if( compareClassGuid(p1_guid) ) {
     
-    mlog << MSG::DEBUG << "TrigOperationalInfoCollectionCnv::reading p1 persistent object" << endmsg;
     std::unique_ptr< TrigOperationalInfoCollection_p1 >   col_vect( this->poolReadObject< TrigOperationalInfoCollection_p1 >() );
-    mlog << MSG::DEBUG << "TrigOperationalInfoCollectionCnv::reading p1 persistent object pointer" <<  col_vect.get() << endmsg;
     trans_obj = m_impl->m_TPConverter.createTransient( col_vect.get(), mlog );
     
   }
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCnv.cxx b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCnv.cxx
index 9e0b367f6055..aa760f3a6913 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCnv.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCnv.cxx
@@ -13,8 +13,6 @@ TrigPassBitsCnv::~TrigPassBitsCnv(){}
 TrigPassBits_PERS* TrigPassBitsCnv::createPersistent(TrigPassBits* transObj) {
     MsgStream mlog(msgSvc(), "TrigPassBitsConverter" );
 
-    mlog << MSG::DEBUG << "TrigPassBitsCnv::createPersistent" << endmsg;
-
     TrigPassBitsCnv_p1   converter;
     TrigPassBits_PERS *persObj = converter.createPersistent( transObj, mlog );
 
@@ -25,10 +23,7 @@ TrigPassBits_PERS* TrigPassBitsCnv::createPersistent(TrigPassBits* transObj) {
 TrigPassBits* TrigPassBitsCnv::createTransient() {
     MsgStream mlog(msgSvc(), "TrigPassBitsConverter" );
 
-    mlog << MSG::DEBUG << "TrigPassBitsCnv::createTransient " << endmsg;
-
-    static pool::Guid p1_guid("391FFE21-5D82-471E-9FFC-B77150142B8F");
-
+    static const pool::Guid p1_guid("391FFE21-5D82-471E-9FFC-B77150142B8F");
 
     if( compareClassGuid(p1_guid) ) {
 
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCollectionCnv.cxx b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCollectionCnv.cxx
index 15dc6689ae01..06c60d692e2f 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCollectionCnv.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCollectionCnv.cxx
@@ -6,16 +6,24 @@
 #include "TrigSteeringEventTPCnv/TrigPassBitsCollection_p1.h"
 #include "TrigSteeringEventTPCnv/TrigPassBitsCollectionCnv_p1.h"
 
-static TrigPassBitsCollectionCnv_p1   TPconverter1;
+struct TrigPassBitsCollection_impl
+{
+  TrigPassBitsCollectionCnv_p1 m_TPconverter_p1;
+};
+
+TrigPassBitsCollectionCnv::TrigPassBitsCollectionCnv( ISvcLocator *svcloc ) :
+  TrigPassBitsCollectionCnvBase(svcloc),
+  m_impl(std::make_unique<TrigPassBitsCollection_impl>())
+{}
+
+TrigPassBitsCollectionCnv::~TrigPassBitsCollectionCnv() = default;
 
 //createPersistent 
 TrigPassBitsCollection_PERS * TrigPassBitsCollectionCnv::createPersistent( TrigPassBitsCollection *transObj)
 {
   MsgStream mlog(msgSvc(), "TrigPassBitsCollectionConverter" );
   
-  mlog << MSG::DEBUG << "TrigPassBitsCollectionCnv::createPersistent called" << endmsg;
-  
-  TrigPassBitsCollection_PERS * p_cont = TPconverter1.createPersistent( transObj, mlog );
+  TrigPassBitsCollection_PERS * p_cont = m_impl->m_TPconverter_p1.createPersistent( transObj, mlog );
   
   return p_cont;
   
@@ -27,16 +35,13 @@ TrigPassBitsCollection * TrigPassBitsCollectionCnv::createTransient()
 {
   MsgStream mlog(msgSvc(), "TrigPassBitsCollectionConverter" );
   
-  mlog << MSG::DEBUG << "TrigPassBitsCollectionCnv::createTransient called" << endmsg;
-  
-  static pool::Guid p1_guid( "E6E4F396-D696-4C1C-A0C4-7766E0AF9BB5" );
+  static const pool::Guid p1_guid( "E6E4F396-D696-4C1C-A0C4-7766E0AF9BB5" );
 
   //  TrigPassBitsCollection *p_collection = 0;
   if( compareClassGuid( p1_guid ) )     
   {
          std::unique_ptr< TrigPassBitsCollection_p1 > col_vect( poolReadObject< TrigPassBitsCollection_p1 >() );
-	 //         std::cout << "Reading MFC p1" << std::endl;
-         return TPconverter1.createTransient( col_vect.get(), mlog ) ;
+         return m_impl->m_TPconverter_p1.createTransient( col_vect.get(), mlog ) ;
   }
   else  throw std::runtime_error( "Unsupported persistent version of TrigPassBitsCollection" );
   
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCollectionCnv.h b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCollectionCnv.h
index d116ef8dc9bb..373c9654a058 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCollectionCnv.h
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassBitsCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGEVENTATHENAPOOL_TRIGPASSBITSCONTAINER_CNV_H
@@ -9,23 +9,27 @@
 #include "TrigSteeringEvent/TrigPassBitsCollection.h"
 #include "TrigSteeringEventTPCnv/TrigPassBitsCollection_p1.h"
 
-typedef TrigPassBitsCollection_p1   TrigPassBitsCollection_PERS;
+#include <memory>
 
+typedef TrigPassBitsCollection_p1   TrigPassBitsCollection_PERS;
 typedef T_AthenaPoolCustomCnv<TrigPassBitsCollection, TrigPassBitsCollection_PERS> TrigPassBitsCollectionCnvBase;
+struct TrigPassBitsCollection_impl;
 
 class TrigPassBitsCollectionCnv : public TrigPassBitsCollectionCnvBase {
 
   friend class CnvFactory<TrigPassBitsCollectionCnv>;
 
- protected:
-
 public:
-  TrigPassBitsCollectionCnv( ISvcLocator *svcloc ): TrigPassBitsCollectionCnvBase(svcloc){}
-protected:
+  TrigPassBitsCollectionCnv( ISvcLocator *svcloc );
+  ~TrigPassBitsCollectionCnv();
+
 
+protected:
   virtual TrigPassBitsCollection_PERS *createPersistent( TrigPassBitsCollection *transObj);
   virtual TrigPassBitsCollection      *createTransient();
 
+private:
+  std::unique_ptr<TrigPassBitsCollection_impl> m_impl;
 };
 
 #endif //TRIGPASSBITSCONTAINER_CNV_H
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCnv.cxx b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCnv.cxx
index 616d2796d4a4..ff4b29621f2d 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCnv.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCnv.cxx
@@ -28,7 +28,7 @@ TrigPassFlags* TrigPassFlagsCnv::createTransient() {
     if(mlog.level()<=MSG::DEBUG)
        mlog << MSG::DEBUG << "TrigPassFlagsCnv::createTransient " << endmsg;
 
-    static pool::Guid p1_guid("1FA7E531-B1F9-4EC5-9BD1-FD19CE7368B6");
+    static const pool::Guid p1_guid("1FA7E531-B1F9-4EC5-9BD1-FD19CE7368B6");
 
 
     if( compareClassGuid(p1_guid) ) {
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCollectionCnv.cxx b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCollectionCnv.cxx
index 08e27d202305..85948d4cc05b 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCollectionCnv.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCollectionCnv.cxx
@@ -6,16 +6,24 @@
 #include "TrigSteeringEventTPCnv/TrigPassFlagsCollection_p1.h"
 #include "TrigSteeringEventTPCnv/TrigPassFlagsCollectionCnv_p1.h"
 
-static TrigPassFlagsCollectionCnv_p1   TPconverter1;
+struct TrigPassFlagsCollectionCnv_impl
+{
+  TrigPassFlagsCollectionCnv_p1   m_TPconverter_p1;
+};
+
+TrigPassFlagsCollectionCnv::TrigPassFlagsCollectionCnv( ISvcLocator *svcloc ) :
+  TrigPassFlagsCollectionCnvBase(svcloc),
+  m_impl(std::make_unique<TrigPassFlagsCollectionCnv_impl>())
+{}
+
+TrigPassFlagsCollectionCnv::~TrigPassFlagsCollectionCnv() = default;
 
 //createPersistent 
 TrigPassFlagsCollection_PERS * TrigPassFlagsCollectionCnv::createPersistent( TrigPassFlagsCollection *transObj)
 {
   MsgStream mlog(msgSvc(), "TrigPassFlagsCollectionConverter" );
   
-  mlog << MSG::DEBUG << "TrigPassFlagsCollectionCnv::createPersistent called" << endmsg;
-  
-  TrigPassFlagsCollection_PERS * p_cont = TPconverter1.createPersistent( transObj, mlog );
+  TrigPassFlagsCollection_PERS * p_cont = m_impl->m_TPconverter_p1.createPersistent( transObj, mlog );
   
   return p_cont;
   
@@ -27,16 +35,13 @@ TrigPassFlagsCollection * TrigPassFlagsCollectionCnv::createTransient()
 {
   MsgStream mlog(msgSvc(), "TrigPassFlagsCollectionConverter" );
   
-  mlog << MSG::DEBUG << "TrigPassFlagsCollectionCnv::createTransient called" << endmsg;
-  
-  static pool::Guid p1_guid( "7DE670AF-A256-4E8E-BC44-1CA30810F294" );
+  static const pool::Guid p1_guid( "7DE670AF-A256-4E8E-BC44-1CA30810F294" );
 
   //  TrigPassFlagsCollection *p_collection = 0;
   if( compareClassGuid( p1_guid ) )     
   {
          std::unique_ptr< TrigPassFlagsCollection_p1 > col_vect( poolReadObject< TrigPassFlagsCollection_p1 >() );
-	 //         std::cout << "Reading MFC p1" << std::endl;
-         return TPconverter1.createTransient( col_vect.get(), mlog ) ;
+         return m_impl->m_TPconverter_p1.createTransient( col_vect.get(), mlog ) ;
   }
   else  throw std::runtime_error( "Unsupported persistent version of TrigPassFlagsCollection" );
   
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCollectionCnv.h b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCollectionCnv.h
index 22cad3360521..69bfe2005d63 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCollectionCnv.h
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigPassFlagsCollectionCnv.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGEVENTATHENAPOOL_TRIGPASSFLAGSCONTAINER_CNV_H
@@ -9,23 +9,26 @@
 #include "TrigSteeringEvent/TrigPassFlagsCollection.h"
 #include "TrigSteeringEventTPCnv/TrigPassFlagsCollection_p1.h"
 
-typedef TrigPassFlagsCollection_p1   TrigPassFlagsCollection_PERS;
+#include <memory>
 
+typedef TrigPassFlagsCollection_p1   TrigPassFlagsCollection_PERS;
 typedef T_AthenaPoolCustomCnv<TrigPassFlagsCollection, TrigPassFlagsCollection_PERS> TrigPassFlagsCollectionCnvBase;
+struct TrigPassFlagsCollectionCnv_impl;
 
 class TrigPassFlagsCollectionCnv : public TrigPassFlagsCollectionCnvBase {
 
   friend class CnvFactory<TrigPassFlagsCollectionCnv>;
 
- protected:
-
 public:
-  TrigPassFlagsCollectionCnv( ISvcLocator *svcloc ): TrigPassFlagsCollectionCnvBase(svcloc){}
+  TrigPassFlagsCollectionCnv( ISvcLocator *svcloc );
+  ~TrigPassFlagsCollectionCnv();
 protected:
 
   virtual TrigPassFlagsCollection_PERS *createPersistent( TrigPassFlagsCollection *transObj);
   virtual TrigPassFlagsCollection      *createTransient();
 
+private:
+  std::unique_ptr<TrigPassFlagsCollectionCnv_impl> m_impl;
 };
 
 #endif //TRIGPASSBITSCONTAINER_CNV_H
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigRoiDescriptorCnv.cxx b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigRoiDescriptorCnv.cxx
index 6c3a0a8e9f04..15dd82952150 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigRoiDescriptorCnv.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigRoiDescriptorCnv.cxx
@@ -33,7 +33,6 @@ TrigRoiDescriptorCnv::~TrigRoiDescriptorCnv()
 TrigRoiDescriptor_PERS* TrigRoiDescriptorCnv::createPersistent(TrigRoiDescriptor* transObj) 
 {
   MsgStream mlog(msgSvc(), "TrigRoiDescriptorConverter" );
-  mlog << MSG::DEBUG << "TrigRoiDescriptorCnv::createPersistent" << endmsg;
 
   TrigRoiDescriptor_PERS *persObj = m_TPConverters->p3.createPersistent( transObj, mlog );
   
@@ -44,39 +43,34 @@ TrigRoiDescriptor_PERS* TrigRoiDescriptorCnv::createPersistent(TrigRoiDescriptor
 TrigRoiDescriptor* TrigRoiDescriptorCnv::createTransient() 
 {
   MsgStream mlog(msgSvc(), "TrigRoiDescriptorConverter" );
-  mlog << MSG::DEBUG << "TrigRoiDescriptorCnv::createTransient " << endmsg;
-  
-  static pool::Guid p3_guid("28F5BCC8-1F3D-47B1-8286-087F1B298F0A");
-  static pool::Guid p2_guid("D53CE59B-99A8-4B25-87D5-C08D1AF4BA8A");
-  static pool::Guid p1_guid("391FFE21-5D82-471E-9FFC-B77150142B8F");
-  static pool::Guid p0_guid("B2C86E23-8421-4F34-8014-AE4A7E4BA0A7");
+
+  static const pool::Guid p3_guid("28F5BCC8-1F3D-47B1-8286-087F1B298F0A");
+  static const pool::Guid p2_guid("D53CE59B-99A8-4B25-87D5-C08D1AF4BA8A");
+  static const pool::Guid p1_guid("391FFE21-5D82-471E-9FFC-B77150142B8F");
+  static const pool::Guid p0_guid("B2C86E23-8421-4F34-8014-AE4A7E4BA0A7");
 
   TrigRoiDescriptor *trans_obj(0);
   
   if( compareClassGuid(p3_guid) ) {
     
-    mlog << MSG::DEBUG << "TrigRoiDescriptorCnv::reading p3 persistent object" << endmsg;
     std::unique_ptr< TrigRoiDescriptor_p3 >   col_vect( this->poolReadObject< TrigRoiDescriptor_p3 >() );
     trans_obj = m_TPConverters->p3.createTransient( col_vect.get(), mlog );
     
   }
   else if( compareClassGuid(p2_guid) ) {
     
-    mlog << MSG::DEBUG << "TrigRoiDescriptorCnv::reading p2 persistent object" << endmsg;
     std::unique_ptr< TrigRoiDescriptor_p2 >   col_vect( this->poolReadObject< TrigRoiDescriptor_p2 >() );
     trans_obj = m_TPConverters->p2.createTransient( col_vect.get(), mlog );
     
   }
   else if( compareClassGuid(p1_guid) ) {
     
-    mlog << MSG::DEBUG << "TrigRoiDescriptorCnv::reading p1 persistent object" << endmsg;
     std::unique_ptr< TrigRoiDescriptor_p1 >   col_vect( this->poolReadObject< TrigRoiDescriptor_p1 >() );
     trans_obj = m_TPConverters->p1.createTransient( col_vect.get(), mlog );
     
   }
   else if( compareClassGuid(p0_guid) ) {
 
-    mlog << MSG::DEBUG << "TrigRoiDescriptorCnv::reading p0 persistent object" << endmsg;
     // old version from before TP separation, just return it
     trans_obj = this->poolReadObject<TrigRoiDescriptor>();
 
diff --git a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigRoiDescriptorCollectionCnv.cxx b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigRoiDescriptorCollectionCnv.cxx
index 0a580ed98a40..e6b71241b178 100644
--- a/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigRoiDescriptorCollectionCnv.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEventAthenaPool/src/TrigRoiDescriptorCollectionCnv.cxx
@@ -40,7 +40,6 @@ TrigRoiDescriptorCollectionCnv::~TrigRoiDescriptorCollectionCnv()
 TrigRoiDescriptorCollection_PERS* TrigRoiDescriptorCollectionCnv::createPersistent(TrigRoiDescriptorCollection* transObj) 
 {
   MsgStream mlog(msgSvc(), "TrigRoiDescriptorCollectionConverter" );
-  mlog << MSG::DEBUG << "TrigRoiDescriptorCollectionCnv::createPersistent" << endmsg;
 
   TrigRoiDescriptorCollection_PERS *persObj = m_impl->m_TPConverter_p3.createPersistent( transObj, mlog );
   
@@ -51,36 +50,31 @@ TrigRoiDescriptorCollection_PERS* TrigRoiDescriptorCollectionCnv::createPersiste
 TrigRoiDescriptorCollection* TrigRoiDescriptorCollectionCnv::createTransient() 
 {
   MsgStream mlog(msgSvc(), "TrigRoiDescriptorCollectionConverter" );
-  mlog << MSG::DEBUG << "TrigRoiDescriptorCollectionCnv::createTransient " << endmsg;
-  
-  static pool::Guid p3_guid("615418EF-EEFB-4E87-A396-7313E67C547E");
-  static pool::Guid p2_guid("D1A44F23-416C-4AB6-BFFA-2EA280565D4E");
-  static pool::Guid p1_guid("D0A0B6E7-9E0C-484E-AE8C-AC57B5111EA0");
-  static pool::Guid tlp1_guid("CE80FC4E-B16B-40B2-9D9E-EB4916B663B0");
+
+  static const pool::Guid p3_guid("615418EF-EEFB-4E87-A396-7313E67C547E");
+  static const pool::Guid p2_guid("D1A44F23-416C-4AB6-BFFA-2EA280565D4E");
+  static const pool::Guid p1_guid("D0A0B6E7-9E0C-484E-AE8C-AC57B5111EA0");
+  static const pool::Guid tlp1_guid("CE80FC4E-B16B-40B2-9D9E-EB4916B663B0");
   
   TrigRoiDescriptorCollection *trans_obj(0);
 
   if( compareClassGuid(p3_guid) ) {
 
-    mlog << MSG::DEBUG << "TrigRoiDescriptorCollectionCnv::reading p3 persistent object" << endmsg;
     std::unique_ptr< TrigRoiDescriptorCollection_p3 >   col_vect( this->poolReadObject< TrigRoiDescriptorCollection_p3 >() );
     trans_obj = m_impl->m_TPConverter_p3.createTransient( col_vect.get(), mlog );    
   }
   else if( compareClassGuid(p2_guid) ) {
     
-    mlog << MSG::DEBUG << "TrigRoiDescriptorCollectionCnv::reading p2 persistent object" << endmsg;
     std::unique_ptr< TrigRoiDescriptorCollection_p2 >   col_vect( this->poolReadObject< TrigRoiDescriptorCollection_p2 >() );
     trans_obj = m_impl->m_TPConverter_p2.createTransient( col_vect.get(), mlog );    
   }
   else if( compareClassGuid(tlp1_guid) ) {
     
-    mlog << MSG::DEBUG << "TrigRoiDescriptorCollectionCnv::reading tlp1 persistent object" << endmsg;
     std::unique_ptr< TrigRoiDescriptorCollection_tlp1 >   col_vect( this->poolReadObject< TrigRoiDescriptorCollection_tlp1 >() );
     trans_obj = m_impl->m_TPConverter_tlp1.createTransient( col_vect.get(), mlog );    
   }
   else if( compareClassGuid(p1_guid) ) {
     
-    mlog << MSG::DEBUG << "TrigRoiDescriptorCollectionCnv::reading p1 persistent object" << endmsg;
     std::unique_ptr< TrigRoiDescriptorCollection_p1 >   col_vect( this->poolReadObject< TrigRoiDescriptorCollection_p1 >() );
     trans_obj = m_impl->m_TPConverter_p1.createTransient( col_vect.get(), mlog );    
   }
-- 
GitLab


From 83dfa65138e4bd2facda410bd4fe793c94801771 Mon Sep 17 00:00:00 2001
From: Frank Winklmeier <fwinkl@cern>
Date: Thu, 9 Jul 2020 16:44:48 +0200
Subject: [PATCH 3/5] TrigSteeringEventTPCnv: Enable thread checker and fix
 warnings

---
 Trigger/TrigEvent/TrigSteeringEventTPCnv/CMakeLists.txt    | 2 +-
 .../TrigSteeringEventTPCnv/ATLAS_CHECK_THREAD_SAFETY       | 1 +
 .../test/TrigPassFlagsCnv_p1_test.cxx                      | 7 ++++---
 3 files changed, 6 insertions(+), 4 deletions(-)
 create mode 100644 Trigger/TrigEvent/TrigSteeringEventTPCnv/TrigSteeringEventTPCnv/ATLAS_CHECK_THREAD_SAFETY

diff --git a/Trigger/TrigEvent/TrigSteeringEventTPCnv/CMakeLists.txt b/Trigger/TrigEvent/TrigSteeringEventTPCnv/CMakeLists.txt
index eff7eb87b8b3..1fe49fed227c 100644
--- a/Trigger/TrigEvent/TrigSteeringEventTPCnv/CMakeLists.txt
+++ b/Trigger/TrigEvent/TrigSteeringEventTPCnv/CMakeLists.txt
@@ -25,7 +25,7 @@ function( _add_test test )
    atlas_add_test( ${test}
                    SOURCES
                    test/${test}.cxx
-                   LINK_LIBRARIES TestTools TrigSteeringEventTPCnv )
+                   LINK_LIBRARIES CxxUtils TestTools TrigSteeringEventTPCnv )
 endfunction()
 
 _add_test( HLTResultCnv_p1_test )
diff --git a/Trigger/TrigEvent/TrigSteeringEventTPCnv/TrigSteeringEventTPCnv/ATLAS_CHECK_THREAD_SAFETY b/Trigger/TrigEvent/TrigSteeringEventTPCnv/TrigSteeringEventTPCnv/ATLAS_CHECK_THREAD_SAFETY
new file mode 100644
index 000000000000..becb4f6a9f61
--- /dev/null
+++ b/Trigger/TrigEvent/TrigSteeringEventTPCnv/TrigSteeringEventTPCnv/ATLAS_CHECK_THREAD_SAFETY
@@ -0,0 +1 @@
+Trigger/TrigEvent/TrigSteeringEventTPCnv
diff --git a/Trigger/TrigEvent/TrigSteeringEventTPCnv/test/TrigPassFlagsCnv_p1_test.cxx b/Trigger/TrigEvent/TrigSteeringEventTPCnv/test/TrigPassFlagsCnv_p1_test.cxx
index 5aa77ae0bf56..048f0ff2ea0b 100644
--- a/Trigger/TrigEvent/TrigSteeringEventTPCnv/test/TrigPassFlagsCnv_p1_test.cxx
+++ b/Trigger/TrigEvent/TrigSteeringEventTPCnv/test/TrigPassFlagsCnv_p1_test.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id$
@@ -13,6 +13,7 @@
 
 #undef NDEBUG
 #include "TrigSteeringEventTPCnv/TrigPassFlagsCnv_p1.h"
+#include "CxxUtils/checker_macros.h"
 #include "TestTools/random.h"
 #include "TestTools/leakcheck.h"
 #include "GaudiKernel/MsgStream.h"
@@ -42,7 +43,7 @@ void testit (const TrigPassFlags& trans1)
 }
 
 
-void test1()
+void test1 ATLAS_NOT_REENTRANT ()
 {
   std::cout << "test1\n";
   Athena_test::Leakcheck check;
@@ -60,7 +61,7 @@ void test1()
 }
 
 
-int main()
+int main ATLAS_NOT_REENTRANT ()
 {
   test1();
   return 0;
-- 
GitLab


From ed50b6bf871c2f80b89f07d0744c9add1bbc19e5 Mon Sep 17 00:00:00 2001
From: Frank Winklmeier <fwinkl@cern>
Date: Thu, 9 Jul 2020 17:12:22 +0200
Subject: [PATCH 4/5] TrigStorageDefinitions: Enable thread checker

---
 .../TrigStorageDefinitions/ATLAS_CHECK_THREAD_SAFETY             | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 Trigger/TrigEvent/TrigStorageDefinitions/TrigStorageDefinitions/ATLAS_CHECK_THREAD_SAFETY

diff --git a/Trigger/TrigEvent/TrigStorageDefinitions/TrigStorageDefinitions/ATLAS_CHECK_THREAD_SAFETY b/Trigger/TrigEvent/TrigStorageDefinitions/TrigStorageDefinitions/ATLAS_CHECK_THREAD_SAFETY
new file mode 100644
index 000000000000..e23ee3103773
--- /dev/null
+++ b/Trigger/TrigEvent/TrigStorageDefinitions/TrigStorageDefinitions/ATLAS_CHECK_THREAD_SAFETY
@@ -0,0 +1 @@
+Trigger/TrigEvent/TrigStorageDefinitions
-- 
GitLab


From 064a6c8f14f264569637c62a9f3eba01782d74e5 Mon Sep 17 00:00:00 2001
From: Frank Winklmeier <fwinkl@cern>
Date: Mon, 13 Jul 2020 12:14:59 +0200
Subject: [PATCH 5/5] TrigSteeringEvent: Mark HLTResult::getExtraData as not
 threads-safe

`HLTResult::getExtraData() const` is not thread safe as it modifies one
of its members. This is currently only used in `L1TopoValDataCnvAlg`
that itself is not thread-safe. Once that algorithm is migrated (or
removed) this method should just be deleted.
---
 Trigger/TrigEvent/TrigSteeringEvent/CMakeLists.txt          | 6 +++---
 .../TrigSteeringEvent/TrigSteeringEvent/HLTResult.h         | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/Trigger/TrigEvent/TrigSteeringEvent/CMakeLists.txt b/Trigger/TrigEvent/TrigSteeringEvent/CMakeLists.txt
index adfbe9dc9fb3..cb0a27f8fa8e 100644
--- a/Trigger/TrigEvent/TrigSteeringEvent/CMakeLists.txt
+++ b/Trigger/TrigEvent/TrigSteeringEvent/CMakeLists.txt
@@ -8,13 +8,13 @@ if( XAOD_STANDALONE )
    atlas_add_library( TrigSteeringEvent
       TrigSteeringEvent/*.h Root/*.cxx
       PUBLIC_HEADERS TrigSteeringEvent
-      LINK_LIBRARIES AthContainers AsgTools RoiDescriptor xAODCore
+      LINK_LIBRARIES AthContainers AsgTools CxxUtils RoiDescriptor xAODCore
       TrigConfHLTData )
 elseif( XAOD_ANALYSIS )
    atlas_add_library( TrigSteeringEvent
       TrigSteeringEvent/*.h Root/*.cxx src/*.cxx
       PUBLIC_HEADERS TrigSteeringEvent
-      LINK_LIBRARIES AthContainers AsgTools AthenaKernel RoiDescriptor
+      LINK_LIBRARIES AthContainers AsgTools AthenaKernel CxxUtils RoiDescriptor
       xAODCore GaudiKernel TrigConfHLTData )
 
    atlas_add_dictionary( TrigSteeringEventDict
@@ -30,7 +30,7 @@ else()
       TrigSteeringEvent/*.h Root/*.cxx src/*.cxx
       PUBLIC_HEADERS TrigSteeringEvent
       INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${TDAQ-COMMON_INCLUDE_DIRS}
-      LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} AsgTools AthContainers AthenaBaseComps AthenaKernel GaudiKernel RoiDescriptor TrigConfHLTData xAODCore
+      LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} AsgTools AthContainers AthenaBaseComps AthenaKernel CxxUtils GaudiKernel RoiDescriptor TrigConfHLTData xAODCore
       PRIVATE_LINK_LIBRARIES TrigT1Interfaces xAODTrigger TrigNavigationLib )
 
    atlas_add_dictionary( TrigSteeringEventDict
diff --git a/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/HLTResult.h b/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/HLTResult.h
index f511688956e7..1af1bc3a6e9b 100644
--- a/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/HLTResult.h
+++ b/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/HLTResult.h
@@ -20,8 +20,8 @@
 #include "TrigSteeringEvent/Enums.h"
 #include "TrigSteeringEvent/GenericResult.h"
 #include "AthenaKernel/IClassIDSvc.h"
-
 #include "AthenaKernel/CLASS_DEF.h"
+#include "CxxUtils/checker_macros.h"
 
 /****************************************************************************************
  * (June 2006; comments on documentation to: Andreas.Hoecker@cern.ch)
@@ -304,7 +304,7 @@ namespace HLT {
      * @brief Return object representing the extra payload
      */
     HLTExtraData& getExtraData();
-    inline const HLTExtraData& getExtraData() const {
+    inline const HLTExtraData& getExtraData ATLAS_NOT_THREAD_SAFE () const {
       return const_cast<HLTResult*>(this)->getExtraData();
     }
 
-- 
GitLab