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