diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/CMakeLists.txt b/InnerDetector/InDetConditions/SCT_ConditionsServices/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..51e227709c387265c3a2bb3a680c94656fbbee2d --- /dev/null +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/CMakeLists.txt @@ -0,0 +1,48 @@ +################################################################################ +# Package: SCT_ConditionsServices +################################################################################ + +# Declare the package name: +atlas_subdir( SCT_ConditionsServices ) + +# Declare the package's dependencies: +atlas_depends_on_subdirs( PUBLIC + Control/AthenaKernel + DetectorDescription/Identifier + GaudiKernel + InnerDetector/InDetConditions/InDetConditionsSummaryService + InnerDetector/InDetConditions/SCT_ConditionsData + PRIVATE + Control/AthenaBaseComps + Control/StoreGate + Database/AthenaPOOL/AthenaPoolUtilities + Database/AthenaPOOL/RDBAccessSvc + Database/RegistrationServices + DetectorDescription/GeoModel/GeoModelInterfaces + DetectorDescription/GeoModel/GeoModelUtilities + Event/EventInfo + InnerDetector/InDetConditions/InDetByteStreamErrors + InnerDetector/InDetConditions/SiPropertiesSvc + InnerDetector/InDetDetDescr/InDetIdentifier + InnerDetector/InDetDetDescr/InDetReadoutGeometry + InnerDetector/InDetDetDescr/PixelGeoModel + InnerDetector/InDetDetDescr/SCT_Cabling + Tools/PathResolver ) + +# External dependencies: +find_package( Boost COMPONENTS filesystem thread system ) +find_package( CLHEP ) +find_package( COOL COMPONENTS CoolKernel ) +find_package( CORAL COMPONENTS CoralBase CoralKernel RelationalAccess ) +find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) + +# Component(s) in the package: +atlas_add_component( SCT_ConditionsServices + src/*.cxx + src/components/*.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${CORAL_INCLUDE_DIRS} ${COOL_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${Boost_LIBRARIES} ${CORAL_LIBRARIES} ${COOL_LIBRARIES} ${CLHEP_LIBRARIES} AthenaKernel Identifier GaudiKernel SCT_ConditionsData AthenaBaseComps StoreGateLib SGtests AthenaPoolUtilities GeoModelUtilities EventInfo SiPropertiesSvcLib InDetIdentifier InDetReadoutGeometry SCT_CablingLib PathResolver ) + +# Install files from the package: +atlas_install_headers( SCT_ConditionsServices ) + diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_ByteStreamErrorsSvc.h b/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_ByteStreamErrorsSvc.h index 2f7afbdfc54251a2d00fa2cbbb8ed76bf150ebc6..d2ac31daa8539eb314d999505b1f81c12e25c63c 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_ByteStreamErrorsSvc.h +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_ByteStreamErrorsSvc.h @@ -88,6 +88,9 @@ public: virtual bool HVisOn() = 0; + virtual void setDecodedROD(const boost::uint32_t rodId) = 0; + virtual std::vector<boost::uint32_t> getRODOuts() const = 0; + private: }; diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_ConfigurationConditionsSvc.h b/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_ConfigurationConditionsSvc.h index 84df53e12a16b2d673007e33352cecaeaf9d50f5..8b937a9ad424f3ef3e195e47a35544882bb1ba60 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_ConfigurationConditionsSvc.h +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_ConfigurationConditionsSvc.h @@ -47,20 +47,20 @@ public: /** Map of link status for all modules with at least one bad link (true = good, false = bad)*/ virtual std::map<Identifier, std::pair<bool, bool> >* badLinks() = 0; /** Link status for a particluar module (true = good, false = bad)*/ - virtual std::pair<bool, bool> badLinks(Identifier moduleId) = 0; + virtual std::pair<bool, bool> badLinks(const Identifier & moduleId) = 0; /** Map of chips status for all modules with at least one bad chip (packed as 1st 12 bits of unsigned int)*/ virtual std::map<Identifier, unsigned int>* badChips() = 0; /** Chips status for a particular module (packed as 1st 12 bits of unsigned int)*/ - virtual unsigned int badChips(Identifier moduleId) = 0; + virtual unsigned int badChips(const Identifier & moduleId) = 0; /** Set of bad strip Identifiers */ virtual void badStrips(std::set<Identifier>& strips, bool ignoreBadModules = false, bool ignoreBadChips = false) = 0; /** Set of bad strip Identifiers for a particular module*/ - virtual void badStrips(Identifier moduleId, std::set<Identifier>& strips, bool ignoreBadModules = false, bool ignoreBadChips = false) = 0; + virtual void badStrips(const Identifier & moduleId, std::set<Identifier>& strips, bool ignoreBadModules = false, bool ignoreBadChips = false) = 0; /** Get the chip number containing a particular strip*/ - virtual int getChip(Identifier stripId) = 0; + virtual int getChip(const Identifier & stripId) = 0; private: diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_MonitorConditionsSvc.h b/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_MonitorConditionsSvc.h index 40cfc62e0b7ddba6d1bea350b98049f7acadf778..e0d56c050a743ca89ba1b0abedf8cc0140b79515 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_MonitorConditionsSvc.h +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/SCT_ConditionsServices/ISCT_MonitorConditionsSvc.h @@ -39,9 +39,9 @@ public: /// Return a list of bad stip Identifiers virtual void badStrips(std::set<Identifier>& strips)=0; /// Return a list of bad stip Identifiers for a given module - virtual void badStrips(Identifier moduleId, std::set<Identifier>& strips)=0; + virtual void badStrips(const Identifier & moduleId, std::set<Identifier>& strips)=0; /// Return a (space-separated) string of bad stip numbers (including hyphanated ranges) as they are written to the DB - virtual std::string badStripsAsString(Identifier moduleId)=0; + virtual std::string badStripsAsString(const Identifier & moduleId)=0; private: diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/share/testConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsServices/share/testConfig.py index a2ecf62931670486e874a595f078c1fe83bc0af3..be82e8973c477cf790384417dd46f4db7a2d9561 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/share/testConfig.py +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/share/testConfig.py @@ -58,30 +58,64 @@ IOVDbSvc = Service("IOVDbSvc") from IOVDbSvc.CondDB import conddb IOVDbSvc.GlobalTag="OFLCOND-FDR-01-02-00" IOVDbSvc.OutputLevel = 3 -test='run1' +test='MC' # #NOTE: Testing with run2 requires presence of local sqlite file 'configTest.db' # available from http://sroe.web.cern.ch/sroe/configTest.db # if (test=='run1'): - #ToolSvc = ServiceMgr.ToolSvc - conddb.addFolder("","<db>COOLONL_SCT/COMP200</db> /SCT/DAQ/Configuration/Chip") - conddb.addFolder("","<db>COOLONL_SCT/COMP200</db> /SCT/DAQ/Configuration/Module") - conddb.addFolder("","<db>COOLONL_SCT/COMP200</db> /SCT/DAQ/Configuration/MUR") - conddb.addFolder("","<db>COOLONL_SCT/COMP200</db> /SCT/DAQ/Configuration/ROD") - conddb.addFolder("","<db>COOLONL_SCT/COMP200</db> /SCT/DAQ/Configuration/Geog") - conddb.addFolder("","<db>COOLONL_SCT/COMP200</db> /SCT/DAQ/Configuration/RODMUR") + #ToolSvc = ServiceMgr.ToolSvc + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=LOCAL</db> /SCT/DAQ/Configuration/ROD <tag>SctDaqConfigurationRod-MC-06</tag><forceTimestamp>1333597198</forceTimestamp>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=LOCAL</db> /SCT/DAQ/Configuration/MUR <tag>SctDaqConfigurationMur-MC-06</tag><forceTimestamp>1333597198</forceTimestamp>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=LOCAL</db> /SCT/DAQ/Configuration/RODMUR <tag>SctDaqConfigurationRodmur-MC-06</tag><forceTimestamp>1333597198</forceTimestamp>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=LOCAL</db> /SCT/DAQ/Configuration/Geog <tag>SctDaqConfigurationGeog-MC-06</tag><forceTimestamp>1333597198</forceTimestamp>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=LOCAL</db> /SCT/DAQ/Configuration/Chip <tag>SctDaqConfigurationChip-MC-06</tag><forceTimestamp>1333597198</forceTimestamp>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=LOCAL</db> /SCT/DAQ/Configuration/Module <tag>SctDaqConfigurationModule-MC-06</tag><forceTimestamp>1333597198</forceTimestamp>") + ''' + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Configuration/Chip <tag>SctDaqConfigurationChip-MC-06</tag> <forceTimestamp>1333597198</forceTimestamp>") + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Configuration/Module <tag>SctDaqConfigurationModule-MC-06</tag> <forceTimestamp>1333597198</forceTimestamp>") + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Configuration/MUR <tag>SctDaqConfigurationMur-MC-06</tag> <forceTimestamp>1333597198</forceTimestamp>") + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Configuration/ROD <tag>SctDaqConfigurationRod-MC-06</tag> <forceTimestamp>1333597198</forceTimestamp>") + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Configuration/Geog <tag>SctDaqConfigurationGeog-MC-06</tag> <forceTimestamp>1333597198</forceTimestamp>") + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Configuration/RODMUR <tag>SctDaqConfigurationRodmur-MC-06</tag> <forceTimestamp>1333597198</forceTimestamp>") + ''' else: + ''' + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=OFLP200</db> /SCT/DAQ/Config/ROD <tag>SctDaqConfigRod-MC-06</tag><forceRunNumber>20</forceRunNumber>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=OFLP200</db> /SCT/DAQ/Config/MUR <tag>SctDaqConfigMur-MC-06</tag><forceRunNumber>20</forceRunNumber>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=OFLP200</db> /SCT/DAQ/Config/RODMUR <tag>SctDaqConfigRodmur-MC-06</tag><forceRunNumber>20</forceRunNumber>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=OFLP200</db> /SCT/DAQ/Config/Geog <tag>SctDaqConfigGeog-MC-06</tag><forceRunNumber>20</forceRunNumber>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=OFLP200</db> /SCT/DAQ/Config/Chip <tag>SctDaqConfigChip-MC-06</tag><forceRunNumber>20</forceRunNumber>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool.db;dbname=OFLP200</db> /SCT/DAQ/Config/Module <tag>SctDaqConfigModule-MC-06</tag><forceRunNumber>20</forceRunNumber>") + + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool7.db;dbname=OFLP200</db> /SCT/DAQ/Config/ROD <tag>SctDaqConfigRod-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool7.db;dbname=OFLP200</db> /SCT/DAQ/Config/MUR <tag>SctDaqConfigMur-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool7.db;dbname=OFLP200</db> /SCT/DAQ/Config/RODMUR <tag>SctDaqConfigRodmur-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool7.db;dbname=OFLP200</db> /SCT/DAQ/Config/Geog <tag>SctDaqConfigGeog-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool7.db;dbname=OFLP200</db> /SCT/DAQ/Config/Chip <tag>SctDaqConfigChip-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + conddb.addFolder("","<db>sqlite://none;schema=/tmp/sroe/mycool7.db;dbname=OFLP200</db> /SCT/DAQ/Config/Module <tag>SctDaqConfigModule-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + ''' + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Config/Chip <tag>SctDaqConfigChip-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Config/Module <tag>SctDaqConfigModule-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Config/MUR <tag>SctDaqConfigMur-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Config/ROD <tag>SctDaqConfigRod-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Config/Geog <tag>SctDaqConfigGeog-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + conddb.addFolder("","<db>COOLOFL_SCT/OFLP200</db> /SCT/DAQ/Config/RODMUR <tag>SctDaqConfigRodmur-MC-06</tag><forceRunNumber>200805</forceRunNumber>") + + from SCT_Cabling.SCT_CablingConf import SCT_CablingSvc + ToolSvc = ServiceMgr.ToolSvc + ServiceMgr+=SCT_CablingSvc() + ServiceMgr.SCT_CablingSvc.DataSource='COOLVECTOR' + +''' conddb.addFolder("","<db>sqlite://none;schema=configTest.db;dbname=COOLTEST</db> /SCT/DAQ/Config/Chip") conddb.addFolder("","<db>sqlite://none;schema=configTest.db;dbname=COOLTEST</db> /SCT/DAQ/Config/Module") conddb.addFolder("","<db>sqlite://none;schema=configTest.db;dbname=COOLTEST</db> /SCT/DAQ/Config/ROD") conddb.addFolder("","<db>sqlite://none;schema=configTest.db;dbname=COOLTEST</db> /SCT/DAQ/Config/MUR") conddb.addFolder("","<db>sqlite://none;schema=configTest.db;dbname=COOLTEST</db> /SCT/DAQ/Config/RODMUR") conddb.addFolder("","<db>sqlite://none;schema=configTest.db;dbname=COOLTEST</db> /SCT/DAQ/Config/Geog") - from SCT_Cabling.SCT_CablingConf import SCT_CablingSvc - ToolSvc = ServiceMgr.ToolSvc - ServiceMgr+=SCT_CablingSvc() - ServiceMgr.SCT_CablingSvc.DataSource='COOLVECTOR' +''' + from SCT_ConditionsServices.SCT_ConditionsServicesConf import SCT_ConfigurationConditionsSvc MyConfigConditions = SCT_ConfigurationConditionsSvc("MyConfigConditions") @@ -93,16 +127,18 @@ MyConfigTestAlg.ConfigConditions = MyConfigConditions job += MyConfigTestAlg import AthenaCommon.AtlasUnixGeneratorJob -#runNumber=9682 -timeStamp=1228142560 -if (test!='run1'): - timeStamp=1688045568 +ServiceMgr.EventSelector.RunNumber =200805 +ServiceMgr.EventSelector.InitialTimeStamp=1333597198 +#runNumber=2000805 +#timeStamp=1228142560 +#if (test!='run1'): +# timeStamp=1333597198 #ServiceMgr.EventSelector.RunNumber = runNumber #import time, calendar #time in seconds , now #ServiceMgr.EventSelector.InitialTimeStamp = calendar.timegm(time.gmtime()) -ServiceMgr.EventSelector.InitialTimeStamp = timeStamp +#ServiceMgr.EventSelector.InitialTimeStamp = timeStamp theApp.EvtMax = 1 ServiceMgr.MessageSvc.Format = "% F%40W%S%7W%R%T %0W%M" diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ByteStreamErrorsSvc.cxx b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ByteStreamErrorsSvc.cxx index 93a9203f37e3d0ef3c8b33b91c34e16de61a370b..ac5d772c1f240f338a81faf172d85bd7b66cff67 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ByteStreamErrorsSvc.cxx +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ByteStreamErrorsSvc.cxx @@ -194,12 +194,16 @@ void SCT_ByteStreamErrorsSvc::handle(const Incident& inc) { if ((inc.type() == "BeginRun") && (m_useRXredundancy)) { m_rxRedundancy->clear(); + m_rodDecodeStatuses.clear(); std::vector<boost::uint32_t> listOfRODs; m_cabling->getAllRods(listOfRODs); std::vector<boost::uint32_t>::iterator rodIter = listOfRODs.begin(); std::vector<boost::uint32_t>::iterator rodEnd = listOfRODs.end(); for (; rodIter != rodEnd; ++rodIter) { + // Store ROD ID and set all RODs as not decoded + m_rodDecodeStatuses.insert(std::pair<boost::uint32_t, bool>(*rodIter, false)); + std::vector<IdentifierHash> listOfHashes; m_cabling->getHashesForRod(listOfHashes,*rodIter); std::vector<IdentifierHash>::iterator hashIt = listOfHashes.begin(); @@ -224,6 +228,10 @@ SCT_ByteStreamErrorsSvc::handle(const Incident& inc) { m_numRODsHVon=0; m_numRODsTotal=0; if (m_disableRODs) disableRODs(); + // Set all RODs as not decoded + for(auto& rodDecodeStatus: m_rodDecodeStatuses) { + rodDecodeStatus.second = false; + } } return; } @@ -740,4 +748,23 @@ SCT_ByteStreamErrorsSvc::getNumberOfErrors(int errorType) { return 0; } +void +SCT_ByteStreamErrorsSvc::setDecodedROD(const boost::uint32_t rodId) { + // If the rodId is found, set the ROD as decoded. + auto rodDecodeStatus = m_rodDecodeStatuses.find(rodId); + if(rodDecodeStatus!=m_rodDecodeStatuses.end()) { + rodDecodeStatus->second = true; + } +} +std::vector<boost::uint32_t> +SCT_ByteStreamErrorsSvc::getRODOuts() const { + std::vector<boost::uint32_t> rodOuts; + // Create a vector of undecoded RODs as ROD outs + for(auto& rodDecodeStatus: m_rodDecodeStatuses) { + if(not rodDecodeStatus.second) { + rodOuts.push_back(rodDecodeStatus.first); + } + } + return rodOuts; +} diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ByteStreamErrorsSvc.h b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ByteStreamErrorsSvc.h index cfe970836adfc85863fc00a378bc11e717e6a6ff..491fb7b6ebd561cdde9040e927773138e3a589fd 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ByteStreamErrorsSvc.h +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ByteStreamErrorsSvc.h @@ -95,6 +95,9 @@ public: virtual void disableRODs(); + virtual void setDecodedROD(const boost::uint32_t rodId); + virtual std::vector<boost::uint32_t> getRODOuts() const; + private: const SCT_ID* m_sct_id; @@ -152,6 +155,8 @@ private: bool m_disableRODs; double m_rodFailureFraction; + + std::map<boost::uint32_t, bool> m_rodDecodeStatuses; }; #endif diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ConfigurationConditionsSvc.cxx b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ConfigurationConditionsSvc.cxx index 3a28b269f661b956c2ff7bcc2400c4060873a0a8..17b02d2c9c2b8237df652cc1c844a564a8e1bf00 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ConfigurationConditionsSvc.cxx +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ConfigurationConditionsSvc.cxx @@ -7,10 +7,6 @@ // STL includes #include <vector> #include <algorithm> -#include <iostream> -#include <sstream> -#include "boost/lexical_cast.hpp" - // Gaudi includes #include "GaudiKernel/StatusCode.h" @@ -27,6 +23,7 @@ // Local includes #include "SCT_ReadoutTool.h" #include "SCT_Chip.h" +#include "SCT_Cabling/SCT_SerialNumber.h" // Static folder names static const std::string coolChannelFolderName("/SCT/DAQ/Configuration/Chip"); @@ -66,30 +63,15 @@ SCT_ConfigurationConditionsSvc::SCT_ConfigurationConditionsSvc( const std::strin // Initialize StatusCode SCT_ConfigurationConditionsSvc::initialize(){ - msg(MSG:: INFO)<< "Initializing configuration" << endreq; - - // Retrieve cabling service - if (m_cablingSvc.retrieve().isFailure()) return msg(MSG:: ERROR)<< "Can't get the cabling service." << endreq, StatusCode::FAILURE; - - // Retrieve detector store - if (m_detStore.retrieve().isFailure()) return msg(MSG:: FATAL)<< "Detector service not found !" << endreq, StatusCode::FAILURE; - - // Retrieve SCT Detector Manager - if (m_detStore->retrieve(m_pManager,"SCT").isFailure()) return msg(MSG:: ERROR)<< "SCT mgr failed to retrieve" << endreq, StatusCode::FAILURE; - - // Retrieve SCT ID helper - if (m_detStore->retrieve(m_pHelper, "SCT_ID").isFailure()) return msg(MSG::FATAL) << "Could not get SCT ID helper" << endreq, StatusCode::FAILURE; - - // Retrieve readout tools - if (m_readoutTool.retrieve().isFailure()) return msg(MSG:: ERROR)<< "Could not retrieve SCT_ReadoutTool" << endreq, StatusCode::FAILURE; - - // Retrieve IOV service - if (m_IOVSvc.retrieve().isFailure()) return msg(MSG:: ERROR)<< "Failed to retrieve IOVSvc " << endreq, StatusCode::FAILURE; - - // Retrieve IOVDb service - if (m_IOVDbSvc.retrieve().isFailure()) return msg(MSG:: ERROR)<< "Failed to retrieve IOVDbSvc " << endreq, StatusCode::FAILURE; - - // Assign memory for structres + ATH_MSG_INFO( "Initializing configuration" ); + ATH_CHECK(m_cablingSvc.retrieve()); + ATH_CHECK(m_detStore.retrieve()); + ATH_CHECK(m_detStore->retrieve(m_pManager,"SCT")); + ATH_CHECK(m_detStore->retrieve(m_pHelper, "SCT_ID")); + ATH_CHECK(m_readoutTool.retrieve()); + ATH_CHECK(m_IOVSvc.retrieve()); + ATH_CHECK(m_IOVDbSvc.retrieve()); + // Assign memory for structres m_badChannelIds = new std::set<Identifier>; m_badModuleIds = new std::set<Identifier>; m_badWaferIds = new std::set<Identifier>; @@ -110,7 +92,7 @@ StatusCode SCT_ConfigurationConditionsSvc::initialize(){ // Finalize StatusCode SCT_ConfigurationConditionsSvc::finalize(){ - msg(MSG:: INFO)<< "Configuration finalize" << endreq; + ATH_MSG_INFO( "Configuration finalize" ); if (m_badChannelIds) delete m_badChannelIds; if (m_badModuleIds) delete m_badModuleIds; @@ -123,7 +105,6 @@ StatusCode SCT_ConfigurationConditionsSvc::finalize(){ // Query interfaces. StatusCode SCT_ConfigurationConditionsSvc::queryInterface(const InterfaceID& riid, void** ppvInterface) { - if ( ISCT_ConfigurationConditionsSvc::interfaceID().versionMatch(riid) ) { *ppvInterface = this; } else if ( ISCT_ConditionsSvc::interfaceID().versionMatch(riid) ) { @@ -182,7 +163,7 @@ StatusCode SCT_ConfigurationConditionsSvc::fillData(int& /*i*/ , std::list<std:: if(fillChannelData().isFailure()) return StatusCode::FAILURE; } // The bad channel list contains all the information - m_filled = (m_badChannelIds->size() != 0); + m_filled = (not m_badChannelIds->empty()); return StatusCode::SUCCESS; } @@ -214,7 +195,6 @@ StatusCode SCT_ConfigurationConditionsSvc::fillChannelData(){ const uint mask1Index=run1?uint(MASK1_1):uint(MASK1_2); const uint mask2Index=run1?uint(MASK2_1):uint(MASK2_2); const uint mask3Index=run1?uint(MASK3_1):uint(MASK3_2); - // // Clear previous information at callback m_badChannelIds->clear(); @@ -225,10 +205,10 @@ StatusCode SCT_ConfigurationConditionsSvc::fillChannelData(){ if (retrieveFolder(m_dataChannel, channelFolderName).isFailure()) { return msg(MSG:: ERROR)<< "Could not fill channel configuration data" << endreq, StatusCode::FAILURE; } else { - msg(MSG:: INFO)<< "fillChannelData: IOV callback resulted in a Chip CondAttrListVec of size " << m_dataChannel->size() << endreq; + ATH_MSG_INFO( "fillChannelData: IOV callback resulted in a Chip CondAttrListVec of size " << m_dataChannel->size()); } // Loop over modules (i.e groups of 12 chips) in DB folder - const unsigned int nChips(12); + constexpr unsigned int nChips(12); CondAttrListVec::const_iterator modItr(m_dataChannel->begin()); CondAttrListVec::const_iterator modEnd(m_dataChannel->end()); for (;modItr != modEnd; modItr += nChips) { @@ -237,8 +217,8 @@ StatusCode SCT_ConfigurationConditionsSvc::fillChannelData(){ const unsigned int truncatedSerialNumber(run1?(modItr->first - 1):(modItr->first)); const IdentifierHash& hash = m_cablingSvc->getHashFromSerialNumber(truncatedSerialNumber); if (not hash.is_valid()) continue; - Identifier waferId(m_pHelper->wafer_id(hash)); - Identifier moduleId(m_pHelper->module_id(waferId)); + const Identifier waferId(m_pHelper->wafer_id(hash)); + const Identifier moduleId(m_pHelper->module_id(waferId)); // Don't need to bother checking chips if the module is already bad // Commented out until fully tested //if (m_badModuleIds->find(moduleId) == m_badModuleIds->end()) continue; @@ -252,52 +232,48 @@ StatusCode SCT_ConfigurationConditionsSvc::fillChannelData(){ } // Loop over chips within module CondAttrListVec::const_iterator channelItr(modItr); - CondAttrListVec::const_iterator channelEnd(modItr + nChips); + const CondAttrListVec::const_iterator channelEnd(modItr + nChips); std::vector<SCT_Chip*> chipsInMod; chipsInMod.reserve(12); for(; channelItr != channelEnd; ++channelItr){ // Get chip id, config and masks and store as SCT_Chip object // Can get AttributeList from second (see http://lcgapp.cern.ch/doxygen/CORAL/CORAL_1_9_3/doxygen/html/classcoral_1_1_attribute_list.html) - short id = run1?(channelItr->second[chipIndex].data<short>()):(channelItr->second[chipIndex].data<unsigned char>()); - short config = run1?(channelItr->second[configIndex].data<short>()):(channelItr->second[configIndex].data<unsigned short>()); - int mask0 = run1?(channelItr->second[mask0Index].data<int>()):(channelItr->second[mask0Index].data<uint>()); - int mask1 = run1?(channelItr->second[mask1Index].data<int>()):(channelItr->second[mask1Index].data<uint>()); - int mask2 = run1?(channelItr->second[mask2Index].data<int>()):(channelItr->second[mask2Index].data<uint>()); // (=noMask, declared as static int at top of this file) - int mask3 = run1?(channelItr->second[mask3Index].data<int>()):(channelItr->second[mask3Index].data<uint>()); + const short id = run1?(channelItr->second[chipIndex].data<short>()):(channelItr->second[chipIndex].data<unsigned char>()); + const short config = run1?(channelItr->second[configIndex].data<short>()):(channelItr->second[configIndex].data<unsigned short>()); + const int mask0 = run1?(channelItr->second[mask0Index].data<int>()):(channelItr->second[mask0Index].data<uint>()); + const int mask1 = run1?(channelItr->second[mask1Index].data<int>()):(channelItr->second[mask1Index].data<uint>()); + const int mask2 = run1?(channelItr->second[mask2Index].data<int>()):(channelItr->second[mask2Index].data<uint>()); // (=noMask, declared as static int at top of this file) + const int mask3 = run1?(channelItr->second[mask3Index].data<int>()):(channelItr->second[mask3Index].data<uint>()); chipsInMod.push_back(new SCT_Chip(id, config, mask0, mask1, mask2, mask3)); } // Check the module readout to look for bypassed chips, disabled links etc if (m_readoutTool->determineReadout(moduleId, chipsInMod, link0ok, link1ok).isFailure()) return StatusCode::FAILURE; // Loop over chips again now know whether they're in the readout - std::vector<SCT_Chip*>::const_iterator chipItr(chipsInMod.begin()); - std::vector<SCT_Chip*>::const_iterator chipEnd(chipsInMod.end()); std::vector<int> badStripsVec; unsigned int chipStatusWord(0); - for(; chipItr != chipEnd; ++chipItr){ + for(const auto & thisChip:chipsInMod){ // Bad strips (only need to do this if at least one bad channel) - if ((*chipItr)->numberOfMaskedChannels() != 0){ + if (thisChip->numberOfMaskedChannels() != 0){ // Add bad stips to vector badStripsVec.clear(); - (*chipItr)->appendBadStripsToVector(badStripsVec); - // Loop over bad stips and insert strip ID into set - std::vector<int>::const_iterator stripItr(badStripsVec.begin()); - std::vector<int>::const_iterator stripEnd(badStripsVec.end()); - for(;stripItr != stripEnd; ++stripItr){ - Identifier stripId(getStripId(truncatedSerialNumber, (*chipItr)->id(), *stripItr)); + thisChip->appendBadStripsToVector(badStripsVec); + // Loop over bad strips and insert strip ID into set + for(const auto & thisBadStrip:badStripsVec){ + Identifier stripId(getStripId(truncatedSerialNumber, thisChip->id(), thisBadStrip)); // If in rough order, may be better to call with itr of previous insertion as a suggestion if (stripId.is_valid()) m_badChannelIds->insert(stripId); } } // Bad chips (= all strips bad) bitpacked // Should only do this for modules with at least one chip bad? - if ((*chipItr)->numberOfMaskedChannels() == stripsPerChip) chipStatusWord |= (1<<(*chipItr)->id()); + if (thisChip->numberOfMaskedChannels() == stripsPerChip) chipStatusWord |= (1<<thisChip->id()); } // Store chip status if not all good (==0) if (chipStatusWord != 0) (*m_badChips)[moduleId] = chipStatusWord; // Clear up memory associated with chips - for (chipItr = chipsInMod.begin(); chipItr != chipEnd; ++chipItr){ - delete *chipItr; + for (const auto & thisChip:chipsInMod){ + delete thisChip; } } @@ -324,9 +300,8 @@ StatusCode SCT_ConfigurationConditionsSvc::fillModuleData(){ if (retrieveFolder(m_dataModule, moduleFolderName).isFailure()) { return msg(MSG:: ERROR)<< "Could not fill module configuration data" << endreq, StatusCode::FAILURE; } else { - msg(MSG:: INFO)<< "fillModuleData: IOV callback resulted in a CondAttrListVec of size " << m_dataModule->size() << endreq; + ATH_MSG_INFO( "fillModuleData: IOV callback resulted in a CondAttrListVec of size " << m_dataModule->size() ); } - // Loop over modules in DB folder CondAttrListVec::const_iterator pModule(m_dataModule->begin()); CondAttrListVec::const_iterator pLastModule(m_dataModule->end()); @@ -345,14 +320,11 @@ StatusCode SCT_ConfigurationConditionsSvc::fillModuleData(){ ++totalNumberOfValidModules; IdentifierHash oppWaferHash; m_pHelper->get_other_side(m_cablingSvc->getHashFromSerialNumber(truncatedSerialNumber) , oppWaferHash); - Identifier oppWaferId(m_pHelper->wafer_id(oppWaferHash)); - Identifier moduleId(m_pHelper->module_id(waferId)); - + const Identifier oppWaferId(m_pHelper->wafer_id(oppWaferHash)); + const Identifier moduleId(m_pHelper->module_id(waferId)); // Get AttributeList from second (see http://lcgapp.cern.ch/doxygen/CORAL/CORAL_1_9_3/doxygen/html/classcoral_1_1_attribute_list.html) // and get module info from this. Bad module has a -ve group. - - short group=pModule->second[groupIndex].data<short>(); - + const short group=pModule->second[groupIndex].data<short>(); if (group < 0) { // Insert module/wafer ID into set of bad modules/wafers IDs m_badModuleIds->insert(moduleId); @@ -360,14 +332,12 @@ StatusCode SCT_ConfigurationConditionsSvc::fillModuleData(){ m_badWaferIds->insert(oppWaferId); } } - // No longer need the conditions folder as stored locally m_IOVDbSvc->dropObject(moduleFolderName,true); - const unsigned int totalBad(m_badModuleIds->size()); - msg(MSG:: INFO)<< "Total number of module identifiers is " << totalNumberOfModules << endreq; - msg(MSG:: INFO)<< "Total number of modules also found in the cabling is " << totalNumberOfValidModules << endreq; - msg(MSG:: INFO)<< "Total number of bad module identifiers is " << totalBad << endreq; + ATH_MSG_INFO( "Total number of module identifiers is " << totalNumberOfModules ); + ATH_MSG_INFO( "Total number of modules also found in the cabling is " << totalNumberOfValidModules ); + ATH_MSG_INFO( "Total number of bad module identifiers is " << totalBad ); return StatusCode::SUCCESS; } @@ -379,12 +349,9 @@ bool SCT_ConfigurationConditionsSvc::filled() const{ // Get a DB folder StatusCode SCT_ConfigurationConditionsSvc::retrieveFolder(const DataHandle<CondAttrListVec> &pDataVec, const std::string & folderName){ if (not m_detStore) return (msg(MSG:: FATAL) << "The detector store pointer is NULL" << endreq), StatusCode::FAILURE; - if (m_detStore->retrieve(pDataVec, folderName).isFailure()) return (msg(MSG:: FATAL) << "Could not retrieve AttrListVec for " << folderName << endreq), StatusCode::FAILURE; - - if (0 == pDataVec->size()) return (msg(MSG:: FATAL) << "This folder's data set appears to be empty: " << folderName << endreq), StatusCode::FAILURE; - + if (0==pDataVec->size()) return (msg(MSG:: FATAL) << "This folder's data set appears to be empty: " << folderName << endreq), StatusCode::FAILURE; return StatusCode::SUCCESS; } @@ -434,7 +401,7 @@ StatusCode SCT_ConfigurationConditionsSvc::fillLinkStatus() { if (retrieveFolder(m_dataMur, murFolderName).isFailure()) { return msg(MSG:: ERROR)<< "Could not fill MUR configuration data" << endreq, StatusCode::FAILURE; } else { - msg(MSG:: INFO)<< "fillLinkStatus: IOV callback resulted in a MUR CondAttrListColl of size " << m_dataMur->size() << endreq; + ATH_MSG_INFO( "fillLinkStatus: IOV callback resulted in a MUR CondAttrListColl of size " << m_dataMur->size() ); } enum RUN1_INDICES{PK, FOREIGN_KEY, MUR_1, MODULE_1, MODULEID_1, RMODULEID_1, RX0FIBRE_1, RX1FIBRE_1, TXFIBRE_1}; enum RUN2_INDICES{MUR_2, MODULE_2, MODULEID_2, RMODULEID_2, RX0FIBRE_2, RX1FIBRE_2, TXFIBRE_2}; @@ -450,14 +417,14 @@ StatusCode SCT_ConfigurationConditionsSvc::fillLinkStatus() { for (; pMur != pLastMur; ++pMur) { // Check for null values if (pMur->second[snIndex].isNull()) continue; - long long serialNumber = pMur->second[snIndex].data<long long>(); - int truncatedSerialNumber = truncateSerialNumber(serialNumber); - const IdentifierHash& hash = m_cablingSvc->getHashFromSerialNumber(truncatedSerialNumber); + const long long ullSerialNumber = pMur->second[snIndex].data<long long>(); + const SCT_SerialNumber serialNumber(ullSerialNumber); + if (not serialNumber.is_valid()) continue; + const IdentifierHash& hash = m_cablingSvc->getHashFromSerialNumber(serialNumber.to_uint()); if (not hash.is_valid()) continue; Identifier waferId(m_pHelper->wafer_id(hash)); Identifier moduleId(m_pHelper->module_id(waferId)); - int link0 = run1?(pMur->second[link0Index].data<int>()):(pMur->second[link0Index].data<unsigned char>()); int link1 = run1?(pMur->second[link1Index].data<int>()):(pMur->second[link1Index].data<unsigned char>()); @@ -465,23 +432,16 @@ StatusCode SCT_ConfigurationConditionsSvc::fillLinkStatus() { if (link0 == badLink or link1 == badLink) { (*m_badLinks)[moduleId] = std::make_pair((link0!=badLink), (link1!=badLink)); } - } - // No longer need the conditions folder as stored locally m_IOVDbSvc->dropObject(murFolderName,true); return StatusCode::SUCCESS; } -// Truncate a serial number -int SCT_ConfigurationConditionsSvc::truncateSerialNumber(long long serialNumber) { - std::string snString = boost::lexical_cast<std::string>(serialNumber); - return boost::lexical_cast<int>(snString.substr(5)); -} // Check if a strip is within a bad module bool SCT_ConfigurationConditionsSvc::isStripInBadModule(const Identifier& stripId){ - Identifier moduleId(m_pHelper->module_id(m_pHelper->wafer_id(stripId))); + const Identifier moduleId(m_pHelper->module_id(m_pHelper->wafer_id(stripId))); return (m_badModuleIds->find(moduleId) != m_badModuleIds->end()); } @@ -492,14 +452,14 @@ bool SCT_ConfigurationConditionsSvc::isWaferInBadModule(const Identifier& waferI } // Find the chip number containing a particular strip Identifier -int SCT_ConfigurationConditionsSvc::getChip(Identifier stripId) { +int SCT_ConfigurationConditionsSvc::getChip(const Identifier & stripId) { // Find side and strip number - int side(m_pHelper->side(stripId)); + const int side(m_pHelper->side(stripId)); int strip(m_pHelper->strip(stripId)); // Check for swapped readout direction - IdentifierHash waferHash = m_pHelper->wafer_hash(m_pHelper->wafer_id(stripId)); + const IdentifierHash waferHash = m_pHelper->wafer_hash(m_pHelper->wafer_id(stripId)); const InDetDD::SiDetectorElement* pElement = m_pManager->getDetectorElement(waferHash); if (! pElement){ msg(MSG:: FATAL)<< "Element pointer is NULL in 'badStrips' method" << endreq; @@ -511,9 +471,8 @@ int SCT_ConfigurationConditionsSvc::getChip(Identifier stripId) { return (side==0 ? strip/stripsPerChip : strip/stripsPerChip + 6); } -void SCT_ConfigurationConditionsSvc::badStrips(Identifier moduleId, std::set<Identifier>& strips, bool ignoreBadModules, bool ignoreBadChips) { +void SCT_ConfigurationConditionsSvc::badStrips(const Identifier & moduleId, std::set<Identifier>& strips, bool ignoreBadModules, bool ignoreBadChips) { // Bad strips for a given module - if (ignoreBadModules) { // Ignore strips in bad modules if (m_badModuleIds->find(moduleId) != m_badModuleIds->end()) return; @@ -534,13 +493,13 @@ void SCT_ConfigurationConditionsSvc::badStrips(Identifier moduleId, std::set<Id } } -std::pair<bool, bool> SCT_ConfigurationConditionsSvc::badLinks(Identifier moduleId) { +std::pair<bool, bool> SCT_ConfigurationConditionsSvc::badLinks(const Identifier & moduleId) { // Bad links for a given module std::map<Identifier, std::pair<bool, bool> >::const_iterator linkItr(m_badLinks->find(moduleId)); return ((linkItr != m_badLinks->end()) ? (*linkItr).second : std::make_pair(true,true)); } -unsigned int SCT_ConfigurationConditionsSvc::badChips(Identifier moduleId) { +unsigned int SCT_ConfigurationConditionsSvc::badChips(const Identifier & moduleId) { // Bad chips for a given module std::map<Identifier, unsigned int>::const_iterator chipItr(m_badChips->find(moduleId)); return ((chipItr != m_badChips->end()) ? (*chipItr).second : static_cast<unsigned int>(0)); diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ConfigurationConditionsSvc.h b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ConfigurationConditionsSvc.h index dcef0bc8b79f1aedb4275ed86fb6ac4f107f50e9..9b8347515092d3990ca1f3cd2460f7172c94e7c8 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ConfigurationConditionsSvc.h +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ConfigurationConditionsSvc.h @@ -13,10 +13,13 @@ // STL includes #include <string> -#include <set> -#include <list> -#include <map> -#include <utility> + +// These are in the base class header +//#include <set> +//#include <list> +//#include <map> +//this is in map +//#include <utility> // Gaudi includes #include "GaudiKernel/ServiceHandle.h" @@ -94,17 +97,17 @@ public: /**List of bad strips*/ virtual void badStrips(std::set<Identifier>& strips, bool ignoreBadModules = false, bool ignoreBadChips = false); // { return m_badChannelIds; } /**List of bad strips for a given module*/ - virtual void badStrips(Identifier moduleId, std::set<Identifier>& strips, bool ignoreBadModules = false, bool ignoreBadChips = false); + virtual void badStrips(const Identifier & moduleId , std::set<Identifier>& strips, bool ignoreBadModules = false, bool ignoreBadChips = false); /**List of bad links*/ - virtual std::pair<bool, bool> badLinks(Identifier moduleId); + virtual std::pair<bool, bool> badLinks(const Identifier & moduleId); /**Bad links for a given module*/ virtual std::map<Identifier, std::pair<bool, bool> >* badLinks() {return m_badLinks;} /**List of bad chips*/ virtual std::map<Identifier, unsigned int>* badChips() {return m_badChips;} /**Bad chips for a given module*/ - virtual unsigned int badChips(Identifier moduleId); + virtual unsigned int badChips(const Identifier & moduleId); /** Get the chip number containing a particular strip*/ - int getChip(Identifier stripId); + int getChip(const Identifier & stripId); private: std::set<Identifier>* m_badChannelIds; //!< Set of bad strip identifiers (not those in bad strips) @@ -140,8 +143,7 @@ private: bool isStripInBadModule(const Identifier& stripId); /** Is a wafer in a bad module*/ bool isWaferInBadModule(const Identifier& waferId); - /** Truncate a module serial nmuber*/ - int truncateSerialNumber(long long serialNumber); + ///** Get the chip number containing a particular strip*/ //int getChip(Identifier stripId); diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_MonitorConditionsSvc.cxx b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_MonitorConditionsSvc.cxx index 2529d16d8d4302d4454c459fc89647e4e4be6428..b3c83672664dfbf65d6c898613256ce305df8875 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_MonitorConditionsSvc.cxx +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_MonitorConditionsSvc.cxx @@ -46,7 +46,6 @@ #include <sstream> #include <iostream> #include <istream> -#include <boost/lexical_cast.hpp> using std::string; using SCT_ConditionsServices::castId; @@ -272,26 +271,25 @@ SCT_MonitorConditionsSvc::addDefect(const string& defectlist,const int defectBeg return createDefectString(defectBeginChannel,defectEndChannel); } // adding another Defect in DefectList - std::ostringstream defect; - defect << defectlist << " " << defectBeginChannel; + std::string defect= defectlist + " " +std::to_string( defectBeginChannel); if (defectBeginChannel==defectEndChannel){ - defect << " "; + defect+= " "; } else { - defect << "-" << defectEndChannel << " "; + defect+= "-" +std::to_string( defectEndChannel) + " "; } - return defect.str(); + return defect; } /////////////////////////////////////////////////////////////////////////////////////// std::string SCT_MonitorConditionsSvc::createDefectString(const int defectBeginChannel,const int defectEndChannel) const{ - std::ostringstream defect; - defect << " " << defectBeginChannel; + std::string defect(" "); + defect += std::to_string(defectBeginChannel); if (defectBeginChannel!=defectEndChannel) { - defect << "-" << defectEndChannel; + defect += "-" + std::to_string(defectEndChannel); } - defect << " "; - return defect.str(); + defect += " "; + return defect; } StatusCode SCT_MonitorConditionsSvc::setBasicListValues(coral::AttributeList & attrList0, @@ -578,11 +576,11 @@ bool SCT_MonitorConditionsSvc::inRange(const int theNumber, const std::string & std::string::size_type p = stringRange.find(s_separator); if (p != std::string::npos) { //its a range std::string::size_type len1(p++), len2(stringRange.size()-p); - int min = boost::lexical_cast<int>(stringRange.substr(0,len1)); - int max = boost::lexical_cast<int>(stringRange.substr(p,len2)); + int min = std::stoi(stringRange.substr(0,len1)); + int max = std::stoi(stringRange.substr(p,len2)); return inRange(theNumber, min, max); } else { //assume its a single number - return boost::lexical_cast<int>(stringRange) == theNumber; + return std::stoi(stringRange) == theNumber; } } @@ -613,12 +611,12 @@ SCT_MonitorConditionsSvc::nBlock(const int theNumber, const std::string& stringR std::string::size_type p=stringRange.find(s_separator); if (p!=std::string::npos){ //its a range std::string::size_type len1(p++), len2(stringRange.size()-p); - int min=boost::lexical_cast<int>(stringRange.substr(0,len1)); - int max=boost::lexical_cast<int>(stringRange.substr(p,len2)); + int min=std::stoi(stringRange.substr(0,len1)); + int max=std::stoi(stringRange.substr(p,len2)); if ( inRange(theNumber, min, max) ) ndefect = max-min+one; } else { //assume its a single number - if ( boost::lexical_cast<int>(stringRange) == theNumber ) + if ( std::stoi(stringRange) == theNumber ) ndefect = 0; } return ndefect; @@ -648,8 +646,8 @@ SCT_MonitorConditionsSvc::nBlock(const std::string& stringRange) const{ std::string::size_type p = stringRange.find(s_separator); if (p != std::string::npos){ //its a range std::string::size_type len1(p++), len2(stringRange.size()-p); - int min=boost::lexical_cast<int>(stringRange.substr(0,len1)); - int max=boost::lexical_cast<int>(stringRange.substr(p,len2)); + int min=std::stoi(stringRange.substr(0,len1)); + int max=std::stoi(stringRange.substr(p,len2)); ndefect = max-min+one; } else { //assume its a single number ndefect = one; @@ -680,10 +678,7 @@ SCT_MonitorConditionsSvc::inRange(const int x, const int min, const int max) con } // =========================================================================== -int -SCT_MonitorConditionsSvc::stringToInt(const std::string& s) const { - return atoi(s.c_str()); -} + @@ -864,7 +859,7 @@ SCT_MonitorConditionsSvc::no_module(const Identifier& id) const{ ////////////////////////////////////////////////////////////////////////////// std::string -SCT_MonitorConditionsSvc::badStripsAsString(Identifier moduleId) { +SCT_MonitorConditionsSvc::badStripsAsString(const Identifier & moduleId) { return getList(moduleId); } @@ -881,7 +876,7 @@ SCT_MonitorConditionsSvc::badStrips(std::set<Identifier>& strips) { } void -SCT_MonitorConditionsSvc::badStrips(Identifier moduleId, std::set<Identifier>& strips) { +SCT_MonitorConditionsSvc::badStrips(const Identifier & moduleId, std::set<Identifier>& strips) { // Set of bad strip Identifers for a given module // Get defect string and check it is sensible, i.e. non-empty and contains numbers std::string defectStr = getList(moduleId); @@ -931,22 +926,22 @@ void SCT_MonitorConditionsSvc::expandRange(const std::string& rangeStr, std::set if (sepPos != std::string::npos) { // Extract min and max std::string::size_type len1(sepPos++), len2(rangeStr.size()-sepPos); - int min = boost::lexical_cast<int>(rangeStr.substr(0,len1)); - int max = boost::lexical_cast<int>(rangeStr.substr(sepPos,len2)); + int min = std::stoi(rangeStr.substr(0,len1)); + int max = std::stoi(rangeStr.substr(sepPos,len2)); // Add all strips in range to list while (min != (max+1)) rangeList.insert(min++); } else { // Assume single number - rangeList.insert(boost::lexical_cast<int>(rangeStr)); + rangeList.insert(std::stoi(rangeStr)); } } ////////////////////////////////////////////////////////////////////////////// -std::string SCT_MonitorConditionsSvc::deadStripsAsString(Identifier moduleId) { +std::string SCT_MonitorConditionsSvc::deadStripsAsString(const Identifier & moduleId) { return getDeadStripList(moduleId); } ////////////////////////////////////////////////////////////////////////////// -std::string SCT_MonitorConditionsSvc::deadChipsAsString(Identifier moduleId) { +std::string SCT_MonitorConditionsSvc::deadChipsAsString(const Identifier & moduleId) { return getDeadChipList(moduleId); } diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_MonitorConditionsSvc.h b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_MonitorConditionsSvc.h index 1bde08fac1590a81c51afd81a35c0a704f4baac5..68548ce746bd57606fe8c7ca347097f09aaa6fdf 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_MonitorConditionsSvc.h +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_MonitorConditionsSvc.h @@ -88,14 +88,14 @@ public: virtual void badStrips(std::set<Identifier>& strips); /// List of bad strip Identifiers for a given module - virtual void badStrips(Identifier moduleId, std::set<Identifier>& strips); + virtual void badStrips(const Identifier & moduleId, std::set<Identifier>& strips); /// String of bad strip numbers for a given module - virtual std::string badStripsAsString(Identifier moduleId); + virtual std::string badStripsAsString(const Identifier & moduleId); /// String of dead strip/chip numbers for a given module - virtual std::string deadStripsAsString(Identifier moduleId); - virtual std::string deadChipsAsString(Identifier moduleId); + virtual std::string deadStripsAsString(const Identifier & moduleId); + virtual std::string deadChipsAsString(const Identifier & moduleId); // ------------------------------------------------------------------------------------ // local stuff @@ -177,8 +177,6 @@ private: void expandList(const std::string& defectStr, std::set<int>& defectList); - int stringToInt(const std::string& s) const; - StatusCode printCondObjects(const std::string & foldername) const; StatusCode streamOutCondObjects(const std::string & foldername) const; diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_RODVetoSvc.cxx b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_RODVetoSvc.cxx index ba1a86eb105c7bcab61598c8c60e5fe4942954cf..f544d3cd7512f683c8efcf33d80425af33d80882 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_RODVetoSvc.cxx +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_RODVetoSvc.cxx @@ -101,7 +101,8 @@ bool SCT_RODVetoSvc::isGood(const IdentifierHash & hashId){ if (not filled() and fillData().isFailure()) ATH_MSG_WARNING("Data structure could not be filled"); Identifier elementId=m_pHelper->wafer_id(hashId); - return isGood(elementId); + Identifier moduleId =m_pHelper->module_id(elementId); + return isGood(moduleId); } StatusCode diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ReadoutTool.cxx b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ReadoutTool.cxx index 5d41c3af0f61a4011f1bcda2c4ac004e15ddd27c..92d605234dcf9a906c9126f13183cc6da8bd9c6a 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ReadoutTool.cxx +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ReadoutTool.cxx @@ -54,14 +54,10 @@ SCT_ReadoutTool::SCT_ReadoutTool(const std::string &type, const std::string &nam // Initialize StatusCode SCT_ReadoutTool::initialize() { ATH_MSG_DEBUG("Initialize SCT_ReadoutTool"); - // Retrieve cabling - if (m_cablingSvc.retrieve().isFailure()) return msg(MSG::ERROR) << "Can't get the cabling tool." << endreq, StatusCode::FAILURE; - + ATH_CHECK(m_cablingSvc.retrieve()); // Retrieve SCT helper - if (detStore()->retrieve(m_sctId,"SCT_ID").isFailure()) - return msg(MSG::ERROR) << "Unable to retrieve SCT_ID" << endreq, StatusCode::FAILURE; - + ATH_CHECK(detStore()->retrieve(m_sctId,"SCT_ID")) ; return StatusCode::SUCCESS; } @@ -73,7 +69,6 @@ StatusCode SCT_ReadoutTool::finalize() { void SCT_ReadoutTool::setModuleType(Identifier moduleId) { // Set module type as per the ModuleType enum - int bec = m_sctId->barrel_ec(moduleId); if (fabs(bec) == 2) { m_type = SCT_Parameters::ENDCAP; @@ -278,17 +273,11 @@ bool SCT_ReadoutTool::isEndBeingTalkedTo(const SCT_Chip& chip) const { void SCT_ReadoutTool::maskChipsNotInReadout() { // Mask chip (is set mask to 0 0 0 0) if not in readout // If the readout of a particular link is not sane mask all chips on that link - - std::vector<SCT_Chip*>::iterator chipItr(m_chips.begin()); - std::vector<SCT_Chip*>::iterator chipEnd(m_chips.end()); - - for (; chipItr != chipEnd; ++chipItr) { - if(!isChipReadOut(*(*chipItr))) { - - ATH_MSG_INFO( "Masking chip " << (*chipItr)->id() ); - + for (const auto & thisChip:m_chips) { + if(!isChipReadOut(*thisChip)) { + ATH_MSG_DEBUG( "Masking chip " << thisChip->id() ); uint32_t masked = 0; - (*chipItr)->initializeMaskFromInts(masked, masked, masked, masked); + thisChip->initializeMaskFromInts(masked, masked, masked, masked); } } } @@ -296,7 +285,6 @@ void SCT_ReadoutTool::maskChipsNotInReadout() { bool SCT_ReadoutTool::followReadoutUpstream(int link, const SCT_Chip& chip, int remainingDepth) { // Follow the readout upstream (to input side). Will return true if the readout is sane // The "error" cases are only warnings since they possibly only affect one module of the SCT - // Have we gone though all 12 chips -> infinite loop if (remainingDepth < 0) { ATH_MSG_WARNING( "Infinite loop detected in readout" ); @@ -320,9 +308,7 @@ bool SCT_ReadoutTool::followReadoutUpstream(int link, const SCT_Chip& chip, int #ifndef NDEBUG ATH_MSG_DEBUG( "MasterChip" ); #endif - // Chip will be set in readout below - } else if (chip.id() == link*6) { // Link is active but the master position for THAT link does not contain a master // This can happen if everything is readout via other link, therefore the readout is still sane. @@ -373,7 +359,7 @@ bool SCT_ReadoutTool::isLinkStandard(int link){ std::vector<int>& m_chipsOnThisLink = ((link==0) ? m_chipsOnLink0 : m_chipsOnLink1); - // Then it must have six ships being readout ... + // Then it must have six chips being readout ... if (m_chipsOnThisLink.size() != 6) return false; std::vector<int>::const_iterator linkItr(m_chipsOnThisLink.begin()); diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ReadoutTool.h b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ReadoutTool.h index ec7936a4c3c6b893df88025cb4c4781794ea9930..34768ebcd499d7b2c702577731ba69bfbedd9edb 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ReadoutTool.h +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_ReadoutTool.h @@ -14,7 +14,8 @@ // C++ #include <string> #include <vector> -#include <bitset> +#include <bitset> +#include <array> // Gaudi #include "GaudiKernel/ServiceHandle.h" @@ -91,7 +92,7 @@ private: const SCT_ID* m_sctId; //!< ID helper for SCT ServiceHandle<ISCT_CablingSvc> m_cablingSvc; //!< Service handle for SCT Cabling std::vector<SCT_Chip*> m_chips; //!< Vector of actual SCT Chips for that module - std::vector<SCT_PortMap> m_chipMap; //!< Vector of port mapping fro the chips in an SCT module + std::vector<SCT_PortMap> m_chipMap; //!< Vector of port mapping from the chips in an SCT module bool m_linkActive[2]; //!< Links status for link 0 and 1 std::bitset<SCT_Parameters::NChips> m_chipInReadout; //!< Bitset indicating whether a chip is readout or not SCT_Parameters::ModuleType m_type; //!< The type of this module (Barrel, Modified Barrel (0 or 1), Endcap) @@ -100,12 +101,12 @@ private: /** Find the ID of the input chip for chip*/ inline SCT_Parameters::ChipType inputChip(const SCT_Chip& chip) const { - return m_chipMap.at(chip.id()).input(chip.inPort()); + return m_chipMap[chip.id()].input(chip.inPort()); } /** Find the ID of the output chip for chip*/ inline SCT_Parameters::ChipType outputChip(const SCT_Chip& chip) const { - return m_chipMap.at(chip.id()).output(chip.outPort()); + return m_chipMap[chip.id()].output(chip.outPort()); } /** Set chip in readout and which link it is on*/ diff --git a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_SensorsSvc.cxx b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_SensorsSvc.cxx index 223d70e8ba55a36d4504853bf7c1bf3182c6f17d..7cda75487fc62a30d7b6d7e6eeaa1bf0cf588e27 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_SensorsSvc.cxx +++ b/InnerDetector/InDetConditions/SCT_ConditionsServices/src/SCT_SensorsSvc.cxx @@ -54,7 +54,7 @@ StatusCode SCT_SensorsSvc::queryInterface(const InterfaceID& riid, void** ppvInt // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -void SCT_SensorsSvc::getSensorsData(std::vector<std::string> & userVector){ +void SCT_SensorsSvc::getSensorsData(std::vector<std::string> & /*userVector*/){ //for (unsigned int i(0);i!=m_sensorsValues.size();++i){ //userVector.push_back(m_sensorsValues[i]);