diff --git a/TileCalorimeter/TileConditions/TileConditions/TileCablingService.h b/TileCalorimeter/TileConditions/TileConditions/TileCablingService.h index 9fa44eb28fba12d3e337dda731a7cfa62c967933..8fbb9680376ac7b9590627c25bdbb87743cff1ba 100644 --- a/TileCalorimeter/TileConditions/TileConditions/TileCablingService.h +++ b/TileCalorimeter/TileConditions/TileConditions/TileCablingService.h @@ -16,12 +16,11 @@ #include "CaloIdentifier/TileTBID.h" #include "CaloIdentifier/CaloLVL1_ID.h" -#include "AthenaKernel/MsgStreamMember.h" +#include "CxxUtils/checker_macros.h" #include <vector> -class TileCablingService -{ +class ATLAS_CHECK_THREAD_SAFETY TileCablingService { friend class TileInfoLoader; friend class TileDetectorTool; friend class TileDetectorFactory; @@ -32,11 +31,7 @@ class TileCablingService public: /** get pointer to service instance*/ - static TileCablingService * instance(bool del); - static TileCablingService * getInstance() {return instance(false); } - - /** delete service instance */ - static TileCablingService * deleteInstance() {return instance(true); } + static TileCablingService* getInstance(); // Conversion between TileID and Trigger Tower ID @@ -105,11 +100,6 @@ public: int getMaxGains(void) const { return m_maxGains; }; - /// Log a message using the Athena controlled logging system - MsgStream& msg( MSG::Level lvl ) const { return m_msg << lvl; } - /// Check whether the logging system is active at the provided verbosity level - bool msgLvl( MSG::Level lvl ) const { return m_msg.get().level() <= lvl; } - protected: /** Default constructor protected */ @@ -237,7 +227,7 @@ private: } TileCablingType m_cablingType; - void setCablingType (TileCablingType type); + bool setCablingType (TileCablingType type); int m_drawer_table[512]; int m_channel_table[512]; @@ -276,8 +266,6 @@ private: int m_maxChannels; int m_maxGains; - mutable Athena::MsgStreamMember m_msg; - public: inline const TileID* getTileID() const { return m_tileID; } diff --git a/TileCalorimeter/TileConditions/TileConditions/TileCablingSvc.h b/TileCalorimeter/TileConditions/TileConditions/TileCablingSvc.h index b7cc47c115cd049a0e70715ad034db7a0479bbee..49cb2b81862892c21d3e580455082a86a6b7ca43 100644 --- a/TileCalorimeter/TileConditions/TileConditions/TileCablingSvc.h +++ b/TileCalorimeter/TileConditions/TileConditions/TileCablingSvc.h @@ -1,20 +1,21 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #ifndef TILECONDITIONS_TILECABLINGSVC_H #define TILECONDITIONS_TILECABLINGSVC_H -// Gaudi includes -#include "GaudiKernel/ServiceHandle.h" +// Tile includes +#include "TileConditions/TileCablingService.h" // Athena includes #include "AthenaBaseComps/AthService.h" #include "AthenaKernel/IOVSvcDefs.h" #include "Identifier/Identifier.h" +#include "CxxUtils/checker_macros.h" -// Tile includes -#include "TileConditions/TileCablingService.h" +// Gaudi includes +#include "GaudiKernel/ServiceHandle.h" // Forward declaration class StoreGateSvc; @@ -25,7 +26,7 @@ template<class TYPE> class SvcFactory; //NGO At some point TileCablingService should be made a tool, but this will introduce //NGO many upstream code changes. -class TileCablingSvc: public AthService { +class ATLAS_CHECK_THREAD_SAFETY TileCablingSvc: public AthService { friend class SvcFactory<TileCablingSvc> ; public: diff --git a/TileCalorimeter/TileConditions/src/TileCablingService.cxx b/TileCalorimeter/TileConditions/src/TileCablingService.cxx index d644a0f8f04ed114a4ba038243730373fb349cb7..a231a6c6a2062daf4b87c7d74c171355ec59e1bc 100644 --- a/TileCalorimeter/TileConditions/src/TileCablingService.cxx +++ b/TileCalorimeter/TileConditions/src/TileCablingService.cxx @@ -5,8 +5,6 @@ #include "TileConditions/TileCablingService.h" #include "TileCalibBlobObjs/TileCalibUtils.h" -#include "AthenaBaseComps/AthMsgStreamMacros.h" - #include <string> #include <iostream> #include <algorithm> @@ -14,14 +12,10 @@ // Singleton method //------------------------------------------------------------ -TileCablingService * TileCablingService::instance(bool del) +TileCablingService * TileCablingService::getInstance() { - static TileCablingService * cablingService = new TileCablingService(); - if (del) { - delete cablingService; - cablingService = 0; - } - return cablingService; + static TileCablingService cablingService ATLAS_THREAD_SAFE; + return &cablingService; } // default constructor @@ -41,7 +35,6 @@ TileCablingService::TileCablingService() , m_run3(false) , m_maxChannels(TileCalibUtils::MAX_CHAN) , m_maxGains(TileCalibUtils::MAX_GAIN) - , m_msg("TileCablingService") { m_testBeam = false; // old cabling for simulation - no special EB modules, wrong numbers for E1-E4 @@ -217,7 +210,7 @@ TileCablingService::setTestBeam (bool testBeam) } } -void +bool TileCablingService::setCablingType(TileCablingService::TileCablingType type) { // cabling type can be: @@ -230,8 +223,6 @@ TileCablingService::setCablingType(TileCablingService::TileCablingType type) m_maxGains = std::round(((double) m_tileID->adc_hash_max()) / m_tileID->pmt_hash_max()); - ATH_MSG_DEBUG("Detected maximum number of gains: " << m_maxGains); - if (TileCablingService::TestBeam == type || TileCablingService::OldSim == type) { // old cabling for simulation - no special EB modules, wrong numbers for E1-E4 m_EBAspec = -1; @@ -322,12 +313,12 @@ TileCablingService::setCablingType(TileCablingService::TileCablingType type) } } else { - ATH_MSG_ERROR("Tile ID helpers should be set up before setting UpgradeABC cabling type!"); + return false; } - } } + return true; } void @@ -1999,7 +1990,7 @@ TileCablingService::hwid2tbtype ( int drawer ) // #define ADD_FADC_FRAG 0x006 // #define ECAL_ADC_FRAG 0x007 // - static int tbtype[8] = { + static const int tbtype[8] = { TileTBID::TDC_TYPE, TileTBID::ADC_TYPE, TileTBID::ADC_TYPE, @@ -2017,7 +2008,7 @@ TileCablingService::hwid2tbtype ( int drawer ) int TileCablingService::hwid2tbmodule ( int drawer, int /* channel */ ) { - static int tbmodule[8] = { + static const int tbmodule[8] = { 0, TileTBID::CRACK_WALL, TileTBID::BACK_WALL, diff --git a/TileCalorimeter/TileConditions/src/TileCablingSvc.cxx b/TileCalorimeter/TileConditions/src/TileCablingSvc.cxx index 7d4958fb4bc22d61333e3392016c460581417db4..586f8da4817effc49f41ff0726ec7bf50f92e599 100644 --- a/TileCalorimeter/TileConditions/src/TileCablingSvc.cxx +++ b/TileCalorimeter/TileConditions/src/TileCablingSvc.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ // Gaudi includes @@ -221,8 +221,8 @@ StatusCode TileCablingSvc::initialize() { } ATH_MSG_INFO( "Setting Cabling type to " << m_cablingType ); - m_cablingService->setCablingType((TileCablingService::TileCablingType) m_cablingType); - + ATH_CHECK( m_cablingService->setCablingType((TileCablingService::TileCablingType) m_cablingType) ); + ATH_MSG_DEBUG( "Maximum number of gains: " << m_cablingService->getMaxChannels()); // ------------ Setting TileCal channel hashes in CaloDDE ------------- // ---------- it can be done only after we set cabling type ----------- @@ -612,7 +612,6 @@ StatusCode TileCablingSvc::initialize() { // //_____________________________________________________________________________ StatusCode TileCablingSvc::finalize() { - ATH_MSG_DEBUG( "finalize called, deleting TileCablingService instance" ); - m_cablingService = m_cablingService->deleteInstance(); + ATH_MSG_DEBUG( "finalized" ); return StatusCode::SUCCESS; }