From 61d2c7ab2fcf3e898e34efbc73d0e0a7e1273bbd Mon Sep 17 00:00:00 2001 From: Frank Winklmeier <fwinkl@cern> Date: Wed, 22 Jul 2020 15:02:09 +0200 Subject: [PATCH] TrigT1CaloCalibTools: fixes for thread checker Some fixes to eventually run the static thread checker. L1CaloTriggerTowerDecoratorAlg still needs to be done. --- Trigger/TrigT1/TrigT1CaloCalibTools/CMakeLists.txt | 2 +- .../TrigT1CaloCalibTools/L1CaloCells2TriggerTowers.h | 7 +++++-- .../TrigT1CaloCalibTools/L1CaloLArTowerEnergy.h | 6 ++++-- .../L1CaloPprPhos4ShapeCollection.h | 5 +++-- .../TrigT1CaloCalibTools/TriggerTowerThinningAlg.h | 10 +++++----- .../src/L1CaloPprPhos4ShapeCollection.cxx | 4 ++-- 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/Trigger/TrigT1/TrigT1CaloCalibTools/CMakeLists.txt b/Trigger/TrigT1/TrigT1CaloCalibTools/CMakeLists.txt index dea05e30876..5c9ff5adc62 100644 --- a/Trigger/TrigT1/TrigT1CaloCalibTools/CMakeLists.txt +++ b/Trigger/TrigT1/TrigT1CaloCalibTools/CMakeLists.txt @@ -12,7 +12,7 @@ atlas_add_library( TrigT1CaloCalibToolsLib src/*.cxx PUBLIC_HEADERS TrigT1CaloCalibTools INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CORAL_INCLUDE_DIRS} - LINK_LIBRARIES ${CORAL_LIBRARIES} ${ROOT_LIBRARIES} AsgTools AthenaBaseComps AthenaKernel AthenaPoolUtilities CaloDetDescrLib CaloEvent CaloIdentifier CaloTriggerToolLib DerivationFrameworkInterfaces GaudiKernel Identifier LArCablingLib LArElecCalib LArIdentifier LArRawEvent LArRecConditions StoreGateLib TileConditionsLib TileEvent TrigT1CaloCalibConditions TrigT1CaloCalibToolInterfaces TrigT1CaloCondSvcLib TrigT1CaloEventLib TrigT1CaloMonitoringToolsLib TrigT1CaloToolInterfaces TrigT1CaloUtilsLib TrigT1Interfaces xAODTrigL1Calo + LINK_LIBRARIES ${CORAL_LIBRARIES} ${ROOT_LIBRARIES} AsgTools AthenaBaseComps AthenaKernel AthenaPoolUtilities CaloDetDescrLib CaloEvent CaloIdentifier CaloTriggerToolLib CxxUtils DerivationFrameworkInterfaces GaudiKernel Identifier LArCablingLib LArElecCalib LArIdentifier LArRawEvent LArRecConditions StoreGateLib TileConditionsLib TileEvent TrigT1CaloCalibConditions TrigT1CaloCalibToolInterfaces TrigT1CaloCondSvcLib TrigT1CaloEventLib TrigT1CaloMonitoringToolsLib TrigT1CaloToolInterfaces TrigT1CaloUtilsLib TrigT1Interfaces xAODTrigL1Calo PRIVATE_LINK_LIBRARIES AthenaMonitoringLib EventInfo LWHists ) atlas_add_component( TrigT1CaloCalibTools diff --git a/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloCells2TriggerTowers.h b/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloCells2TriggerTowers.h index 12b5b5e7575..30793d03584 100644 --- a/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloCells2TriggerTowers.h +++ b/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloCells2TriggerTowers.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef _TRIGGER_TRIGT1_TRIGT1CALOCALIBTOOLS_L1CALOCELLS2TRIGGERTOWERS_H_ @@ -8,6 +8,7 @@ // Athena Includes #include "AsgTools/AsgTool.h" #include "GaudiKernel/ToolHandle.h" +#include "CxxUtils/checker_macros.h" #include "StoreGate/StoreGateSvc.h" // Calo includes @@ -47,7 +48,9 @@ */ namespace LVL1 { -class L1CaloCells2TriggerTowers final : virtual public IL1CaloCells2TriggerTowers, public asg::AsgTool + +class ATLAS_NOT_THREAD_SAFE // use of LArCablingBase +L1CaloCells2TriggerTowers final : virtual public IL1CaloCells2TriggerTowers, public asg::AsgTool { /// Create a proper constructor for Athena ASG_TOOL_CLASS( L1CaloCells2TriggerTowers , LVL1::IL1CaloCells2TriggerTowers ) diff --git a/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloLArTowerEnergy.h b/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloLArTowerEnergy.h index 0324a1222bb..e27c105778b 100644 --- a/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloLArTowerEnergy.h +++ b/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloLArTowerEnergy.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef _TRIGGER_TRIGT1_TRIGT1CALOCALIBTOOLS_L1CALOLARTOWERENERGY_H_ @@ -8,6 +8,7 @@ // Athena includes #include "AsgTools/AsgTool.h" #include "GaudiKernel/ToolHandle.h" +#include "CxxUtils/checker_macros.h" #include "StoreGate/StoreGateSvc.h" #include "Identifier/Identifier.h" @@ -40,7 +41,8 @@ namespace LVL1 { -class L1CaloLArTowerEnergy : virtual public IL1CaloLArTowerEnergy, public asg::AsgTool +class ATLAS_NOT_THREAD_SAFE // use of LArCablingBase +L1CaloLArTowerEnergy : virtual public IL1CaloLArTowerEnergy, public asg::AsgTool { /// Create a proper constructor for Athena ASG_TOOL_CLASS( L1CaloLArTowerEnergy , LVL1::IL1CaloLArTowerEnergy ) diff --git a/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloPprPhos4ShapeCollection.h b/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloPprPhos4ShapeCollection.h index cb833277f7d..fbf55e5fe6d 100644 --- a/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloPprPhos4ShapeCollection.h +++ b/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/L1CaloPprPhos4ShapeCollection.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 */ // ******************************************************** @@ -66,6 +66,7 @@ #include "TrigT1CaloMonitoringTools/TrigT1CaloLWHistogramTool.h" #include "GaudiKernel/ToolHandle.h" +#include "CxxUtils/checker_macros.h" class TTree; class TFile; @@ -111,7 +112,7 @@ public: StatusCode Fill(const L1CaloCoolChannelId& coolId,const unsigned int timeSlice,const unsigned int rodHeaderStep,const int adc); StatusCode Fill(const L1CaloCoolChannelId& coolId,const unsigned int rodHeaderStep,const std::vector<int> adc); - StatusCode Finalize(void); + StatusCode Finalize ATLAS_NOT_REENTRANT(void); TProfile* GetRawSignalShape(const L1CaloCoolChannelId& coolId){return GetMapIterator(coolId)->second->GetRawSignalShape();}; unsigned int GetRawMaxPeakBin(const L1CaloCoolChannelId& coolId){return GetMapIterator(coolId)->second->GetRawMaxPeakBin();}; diff --git a/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/TriggerTowerThinningAlg.h b/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/TriggerTowerThinningAlg.h index fa709b934a6..a81603779d5 100644 --- a/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/TriggerTowerThinningAlg.h +++ b/Trigger/TrigT1/TrigT1CaloCalibTools/TrigT1CaloCalibTools/TriggerTowerThinningAlg.h @@ -58,11 +58,11 @@ namespace DerivationFramework { double m_minRandom; // Counters - mutable unsigned long m_nEventsProcessed; - mutable unsigned long m_nEventsAllTriggerTowersKeptByRandom; - mutable unsigned long m_nTriggerTowersProcessed; - mutable unsigned long m_nTriggerTowersKept; - mutable unsigned long m_nTriggerTowersRejected; + mutable std::atomic<unsigned long> m_nEventsProcessed; + mutable std::atomic<unsigned long> m_nEventsAllTriggerTowersKeptByRandom; + mutable std::atomic<unsigned long> m_nTriggerTowersProcessed; + mutable std::atomic<unsigned long> m_nTriggerTowersKept; + mutable std::atomic<unsigned long> m_nTriggerTowersRejected; // Tools and random number generator TRandom3* m_random; diff --git a/Trigger/TrigT1/TrigT1CaloCalibTools/src/L1CaloPprPhos4ShapeCollection.cxx b/Trigger/TrigT1/TrigT1CaloCalibTools/src/L1CaloPprPhos4ShapeCollection.cxx index a00492c4171..0c5f9fdf1c3 100644 --- a/Trigger/TrigT1/TrigT1CaloCalibTools/src/L1CaloPprPhos4ShapeCollection.cxx +++ b/Trigger/TrigT1/TrigT1CaloCalibTools/src/L1CaloPprPhos4ShapeCollection.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 "TrigT1CaloCalibTools/L1CaloPprPhos4ShapeCollection.h" @@ -231,7 +231,7 @@ StatusCode L1CaloPprPhos4ShapeCollection::Fill(const L1CaloCoolChannelId& coolId return itr->second->Fill(rodHeaderStep, adc); } -StatusCode L1CaloPprPhos4ShapeCollection::Finalize(void) { +StatusCode L1CaloPprPhos4ShapeCollection::Finalize ATLAS_NOT_REENTRANT(void) { // want to store the profiles and histograms for each cool id into // a TTree, which will be output to a file. -- GitLab