diff --git a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/CMakeLists.txt b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/CMakeLists.txt index 38c19ec38f83cd12cbee566c03a2618abe2c948e..899ae1db0bdfc9ae65fd83f9d07b80a59f6e5971 100644 --- a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/CMakeLists.txt +++ b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/CMakeLists.txt @@ -18,6 +18,7 @@ atlas_depends_on_subdirs( PUBLIC MuonSpectrometer/MuonCalib/CscCalib/CscCalibTools MuonSpectrometer/MuonCnv/MuonCSC_CnvTools MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondInterface + MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry MuonSpectrometer/MuonIdHelpers MuonSpectrometer/MuonRDO ) @@ -30,7 +31,7 @@ atlas_add_component( CscCalibAlgs src/*.cxx src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps AthContainers StoreGateLib SGtests GaudiKernel CscCalibData MuonCondInterface MuonReadoutGeometry MuonIdHelpersLib MuonRDO ) + LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps AthContainers StoreGateLib SGtests GaudiKernel CscCalibData MuonCondInterface MuonCondData MuonReadoutGeometry MuonIdHelpersLib MuonRDO ) # Install files from the package: atlas_install_python_modules( python/*.py ) diff --git a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcPed.cxx b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcPed.cxx index 792bf7b7ddb6d2e5d23351a4a26cd7de1630e578..3ec362f744b4298a0d46d0072f6c7967b746ab2c 100644 --- a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcPed.cxx +++ b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcPed.cxx @@ -42,7 +42,6 @@ namespace MuonCalib { m_cscId(NULL), m_muon_mgr(NULL), m_chronoSvc(0), - m_cscCoolStrSvc("MuonCalib::CscCoolStrSvc",name), m_cscRdoDecoderTool ("Muon::CscRDO_Decoder"), m_maxStripHash(0), m_numBits(12), @@ -127,11 +126,7 @@ namespace MuonCalib { return StatusCode::FAILURE; } - if(m_cscCoolStrSvc.retrieve().isFailure()) - { - mLog << MSG::FATAL << "Unable to retrieve CscCoolStrSvc" << endmsg; - return StatusCode::FAILURE; - } + ATH_CHECK(m_readKey.initialize()); sc = service("ChronoStatSvc",m_chronoSvc); if(sc.isFailure()) @@ -812,6 +807,9 @@ namespace MuonCalib { if(m_debug) mLog << MSG::DEBUG << "Begining loop over all " << m_peds->size() << " channels data was collected for." << endmsg; + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + //form is:hashID chamber LayerOrientationStrip parametervalue parametervalue CscCalibResultCollection::iterator pedItr = m_peds->begin(); CscCalibResultCollection::iterator pedEnd = m_peds->end(); @@ -830,7 +828,7 @@ namespace MuonCalib { string onlineHexId; //Online ids are same as "string ids" used internally in COOL db. - m_cscCoolStrSvc->indexToStringId(hashId, "CHANNEL", onlineHexId); + readCdo->indexToStringId(hashId, "CHANNEL", onlineHexId); if(m_debug) mLog << MSG::DEBUG << "we're on hash " << hashId << " with pedestal " << ped << "and noise " << noise << endmsg;//<< " and threshold " << thold << endmsg; @@ -903,6 +901,9 @@ namespace MuonCalib { //Outputs a single parameter in version 03-00 void CscCalcPed::outputParameter3(const CscCalibResultCollection & results, ofstream & out){ + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + out << "\n"; out << "<NEW_PAR> " << results.parName() << "\n"; std::string idString; @@ -914,7 +915,7 @@ namespace MuonCalib { double value = (*resItr)->value(); std::string idString; - m_cscCoolStrSvc->indexToStringId(hashId, "CHANNEL", idString); + readCdo->indexToStringId(hashId, "CHANNEL", idString); out << idString << " " << value << "\n"; } diff --git a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcPed.h b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcPed.h index a15ffaca85e1d62722f5d190205370d726a5e645..70202cd710ff07d413ef9ac31e4f160ff2b3505f 100644 --- a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcPed.h +++ b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcPed.h @@ -24,11 +24,12 @@ an RDO #include "TH1.h" #include "TH2.h" #include "TH2F.h" -#include "MuonCondInterface/CscICoolStrSvc.h" +#include "MuonCondData/CscCondDbData.h" class cscIdHelper; class TFile; class IdentifierHash; +class CscCondDbData; //class ICscCalibTool; namespace Muon { @@ -105,9 +106,9 @@ namespace MuonCalib{ const CscIdHelper *m_cscId; const MuonGM::MuonDetectorManager * m_muon_mgr; IChronoStatSvc* m_chronoSvc; - ServiceHandle<CscICoolStrSvc> m_cscCoolStrSvc; ToolHandle<Muon::ICSC_RDO_Decoder> m_cscRdoDecoderTool; - + SG::ReadCondHandleKey<CscCondDbData> m_readKey{this, "ReadKey", "CscCondDbData", "Key of CscCondDbData"}; + /**Parameters input through joboptions*/ std::string m_outputFileName; diff --git a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcSlope.cxx b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcSlope.cxx index 2b797b05de8bd431062784031ac69e536faa687e..551266f1b4d7ebfdcd3c235fc0a342d537503f03 100644 --- a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcSlope.cxx +++ b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcSlope.cxx @@ -48,7 +48,6 @@ namespace MuonCalib { AthAlgorithm(name,pSvcLocator), m_storeGate(NULL), m_cscCalibTool(NULL), - m_cscCoolStrSvc("MuonCalib::CscCoolStrSvc",name), m_cscRdoDecoderTool ("Muon::CscRDO_Decoder"), m_cscId(NULL), m_chronoSvc(NULL), @@ -345,11 +344,7 @@ cerr << "done init services" << endl; } else { - if(m_cscCoolStrSvc.retrieve().isFailure()) - { - mLog << MSG::FATAL << "Unable to retrieve CscCoolStrSvc" << endmsg; - return StatusCode::FAILURE; - } + ATH_CHECK(m_readKey.initialize()); } /*for(unsigned int stripItr = 0 ; stripItr < m_maxStripHash+1; stripItr++) @@ -465,8 +460,11 @@ cerr << "done init services" << endl; { mLog << MSG::FATAL << "Could not find event" << endmsg; return StatusCode::FAILURE; - } + } + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + // mLog << MSG::INFO <<"Got raw data " << endmsg; //Loop over RODs (data from 2 chambers), each of which is in //a single CscRawaData collection @@ -587,8 +585,7 @@ cerr << "done init services" << endl; } else{ - if(StatusCode::SUCCESS != m_cscCoolStrSvc->getParameter(ped,"ped",stripHash)) - { + if(!readCdo->readChannelPed(stripHash, ped).isSuccess()){ ped = 2054; mLog << (m_ignoreDatabaseError ? MSG::WARNING : MSG::ERROR) << "Failed at getting pedestal from COOL for hash " << stripHash << endmsg; @@ -598,8 +595,7 @@ cerr << "done init services" << endl; } else mLog << MSG::VERBOSE << "Got pedestal of " << ped << endmsg; - if(StatusCode::SUCCESS != m_cscCoolStrSvc->getParameter( - noise, "noise", stripHash)) + if(!readCdo->readChannelNoise(stripHash, noise).isSuccess()) { noise = .001; mLog << (m_ignoreDatabaseError ? MSG::WARNING : MSG::ERROR) << "Failed at getting noise from COOL for hash " << stripHash << endmsg; @@ -1134,6 +1130,9 @@ cerr << "done init services" << endl; mLog << MSG::INFO << "Printing out parameter " << results.parName() << endmsg; + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + out << "\n"; out << "<NEW_PAR> " << results.parName() << "\n"; std::string idString; @@ -1145,7 +1144,7 @@ cerr << "done init services" << endl; double value = (*resItr)->value(); std::string idString; - m_cscCoolStrSvc->indexToStringId(hashId, "CHANNEL", idString); + readCdo->indexToStringId(hashId, "CHANNEL", idString); out << idString << " " << value << "\n"; } diff --git a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcSlope.h b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcSlope.h index c917b0cd4fd1ec8572d3b67728c402efa90630ac..7fc2ea9ae59bd0d1ffd0dcdf48debee194de7def 100644 --- a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcSlope.h +++ b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/src/CscCalcSlope.h @@ -19,6 +19,7 @@ so that he can determine the validity of the constants #include "AthContainers/DataVector.h" #include "CscCalibData/CscCalibResultCollection.h" #include "MuonCSC_CnvTools/ICSC_RDO_Decoder.h" +#include "MuonCondData/CscCondDbData.h" //temporary for tests #include "BipolarFit.h" @@ -36,6 +37,7 @@ class ICscCalibTool; class cscIdHelper; class CscCalibResultCollection; class TGraphErrors; +class CscCondDbData; namespace MuonCalib{ /** @@ -83,10 +85,10 @@ namespace MuonCalib{ StoreGateSvc * m_storeGate; //ITHistSvc * m_thistSvc; ICscCalibTool * m_cscCalibTool; - ServiceHandle<CscICoolStrSvc> m_cscCoolStrSvc; ToolHandle<Muon::ICSC_RDO_Decoder> m_cscRdoDecoderTool; const CscIdHelper *m_cscId; IChronoStatSvc* m_chronoSvc; + SG::ReadCondHandleKey<CscCondDbData> m_readKey{this, "ReadKey", "CscCondDbData", "Key of CscCondDbData"}; /**Parameters input through joboptions*/ std::string m_outputFileName; diff --git a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibTools/src/CscCalibTool.cxx b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibTools/src/CscCalibTool.cxx index 1a2ea618aa9d0b43efde218df6fa048ab0d29c73..43459b63e63d595b571554511271a613bf30fbf3 100644 --- a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibTools/src/CscCalibTool.cxx +++ b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibTools/src/CscCalibTool.cxx @@ -10,14 +10,13 @@ #include <cmath> -using namespace MuonCalib; +//using namespace MuonCalib; using std::ostringstream; using std::setw; CscCalibTool::CscCalibTool ( const std::string& t, const std::string& n, const IInterface* p ) - : base_class(t,n,p), - m_cscCoolStrSvc("MuonCalib::CscCoolStrSvc", n) + : base_class(t,n,p) { declareProperty( "Slope", m_slope = 0.19 ); declareProperty( "Noise", m_noise = 3.5 ); @@ -94,11 +93,8 @@ StatusCode CscCalibTool::initialize() { if (m_onlineHLT) { ATH_MSG_DEBUG( "T0BaseFolder and T0PhaseFolder are not loaded!!! HLT COOLDB does not have it!!"); } - - if ( m_cscCoolStrSvc.retrieve().isFailure() ) { - ATH_MSG_FATAL ( "Unable to retrieve pointer to the CSC COLL Conditions Service" ); - return StatusCode::FAILURE; - } + + ATH_CHECK(m_readKey.initialize()); m_messageCnt_t0base=0; m_messageCnt_t0phase=0; @@ -115,10 +111,12 @@ float CscCalibTool::getPSlope(uint32_t stripHashId) const { float slope = m_slope; if ( m_readFromDatabase && m_slopeFromDatabase ) { - if ( !m_cscCoolStrSvc->getSlope(slope,stripHashId) ) { - ATH_MSG_WARNING ( " failed to access CSC conditions database - slope - " - << "strip hash id = " << stripHashId ); - } + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + if(!readCdo->readChannelPSlope(stripHashId, slope).isSuccess()){ + ATH_MSG_WARNING ( " failed to access CSC conditions database - slope - " + << "strip hash id = " << stripHashId ); + } } ATH_MSG_DEBUG ( "The slope is " << slope << " for strip hash = " << stripHashId ); @@ -168,7 +166,9 @@ double CscCalibTool::stripNoise ( uint32_t stripHashId, const bool convert ) con float noise = m_noise; /// ADC counts if ( m_readFromDatabase ) { - if ( !m_cscCoolStrSvc->getNoise(noise,stripHashId) ) { + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + if(!readCdo->readChannelNoise(stripHashId, noise).isSuccess()){ ATH_MSG_DEBUG ( " failed to access CSC conditions database - noise - " << "strip hash id = " << stripHashId ); noise = m_noise; @@ -193,7 +193,9 @@ double CscCalibTool::stripRMS ( uint32_t stripHashId, const bool convert ) const float rms = m_noise; /// ADC counts initialized with m_noise... if ( m_readFromDatabase ) { - if ( !m_cscCoolStrSvc->getRMS(rms,stripHashId) ) { + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + if(!readCdo->readChannelRMS(stripHashId, rms).isSuccess()){ ATH_MSG_DEBUG ( " failed to access CSC conditions database - rms - " << "strip hash id = " << stripHashId ); rms = m_noise; @@ -219,7 +221,9 @@ double CscCalibTool::stripF001 ( uint32_t stripHashId, const bool convert ) cons float f001 = m_noise+m_pedestal; /// ADC counts initialized with m_noise... if ( m_readFromDatabase ) { - if ( !m_cscCoolStrSvc->getF001(f001,stripHashId) ) { + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + if(!readCdo->readChannelF001(stripHashId, f001).isSuccess()){ ATH_MSG_DEBUG ( " failed to access CSC conditions database - f001 - " << "strip hash id = " << stripHashId ); f001 = 3.251*m_noise+m_pedestal; @@ -243,7 +247,9 @@ double CscCalibTool::stripPedestal ( uint32_t stripHashId, const bool convert ) float pedestal = m_pedestal; if ( m_readFromDatabase ) { - if ( !m_cscCoolStrSvc->getPedestal(pedestal,stripHashId) ) { + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + if(!readCdo->readChannelPed(stripHashId, pedestal).isSuccess()){ ATH_MSG_DEBUG ( " failed to access CSC conditions database - pedestal - " << "strip hash id = " << stripHashId ); pedestal = m_pedestal; @@ -274,25 +280,17 @@ bool CscCalibTool::isGood ( uint32_t stripHashId ) const int CscCalibTool::stripStatusBit ( uint32_t stripHashId ) const { - - uint32_t status = 0x0; + + int status = 0; if ( m_readFromDatabase ) { - if ( !m_cscCoolStrSvc->getStatus(status,stripHashId) ) { + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + if(!readCdo->readChannelStatus(stripHashId, status).isSuccess()) ATH_MSG_WARNING ( " failed to access CSC conditions database - status - " << "strip hash id = " << stripHashId ); - - uint8_t status2 = 0x0; - if ( (m_cscCoolStrSvc->getStatus(status2,stripHashId)).isFailure() ) { - ATH_MSG_WARNING ( " failed to access CSC conditions database old way - status - " - << "strip hash id = " << stripHashId ); - }else{ - ATH_MSG_INFO ( " Accessed CSC conditions database old way - status - " - << "strip hash id = " << stripHashId ); - } - } else { - ATH_MSG_VERBOSE ( "The status word is " << std::hex << status - << " for strip hash = " << std::dec << stripHashId ); - } + else + ATH_MSG_INFO ( " Accessed CSC conditions database old way - status - " + << "strip hash id = " << stripHashId ); } return status; } @@ -305,7 +303,9 @@ bool CscCalibTool::stripT0phase ( uint32_t stripHashId ) const { if (! m_onlineHLT ) { if ( m_readFromDatabase ) { - if ( !m_cscCoolStrSvc->getT0Phase(t0phase,stripHashId) ) { + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + if(!readCdo->readChannelT0Phase(stripHashId, t0phase).isSuccess()){ if (m_messageCnt_t0phase < 3) { ATH_MSG_WARNING ( " failed to access CSC conditions database - t0phase - " << "strip hash id = " << stripHashId ); @@ -326,7 +326,9 @@ double CscCalibTool::stripT0base ( uint32_t stripHashId ) const { float t0base = 0.0; if (! m_onlineHLT ) { if ( m_readFromDatabase ) { - if ( !m_cscCoolStrSvc->getT0Base(t0base,stripHashId) ) { + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + if(!readCdo->readChannelT0Base(stripHashId, t0base).isSuccess()){ if (m_messageCnt_t0base < 3) { ATH_MSG_WARNING ( " failed to access CSC conditions database - t0base - " @@ -526,7 +528,9 @@ double CscCalibTool::adcCountToFemtoCoulomb(uint32_t stripHashId, const float ad float slope = getPSlope(stripHashId); if ( m_readFromDatabase ) { - if ( !m_cscCoolStrSvc->getPedestal(pedestal,stripHashId) ) { + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + if(!readCdo->readChannelPed(stripHashId, pedestal).isSuccess()){ ATH_MSG_DEBUG ( " failed to access CSC conditions database - pedestal - " << "strip hash id = " << stripHashId ); pedestal = m_pedestal; @@ -550,7 +554,9 @@ double CscCalibTool::adcCountToNumberOfElectrons(uint32_t stripHashId, const flo float pedestal = m_pedestal; float slope = getPSlope(stripHashId); if ( m_readFromDatabase ) { - if ( !m_cscCoolStrSvc->getPedestal(pedestal,stripHashId) ) { + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + if(!readCdo->readChannelPed(stripHashId, pedestal).isSuccess()){ ATH_MSG_DEBUG ( "failed to access CSC Conditions database - pedestal - " << "strip hash id = " << stripHashId ); pedestal = m_pedestal; @@ -573,7 +579,9 @@ bool CscCalibTool::adcToCharge(const std::vector<uint16_t>& samples, uint32_t st float pedestal = m_pedestal; float slope = getPSlope(stripHashId); if ( m_readFromDatabase ) { - if ( !m_cscCoolStrSvc->getPedestal(pedestal,stripHashId) ) { + SG::ReadCondHandle<CscCondDbData> readHandle{m_readKey}; + const CscCondDbData* readCdo{*readHandle}; + if(!readCdo->readChannelPed(stripHashId, pedestal).isSuccess()){ ATH_MSG_DEBUG ( "failed to access CSC Conditions database - pedestal - " << "strip hash id = " << stripHashId ); pedestal = m_pedestal; diff --git a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibTools/src/CscCalibTool.h b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibTools/src/CscCalibTool.h index feb3e2154030750019c1defad42aa148cbcf82ef..f4b75d9a5503fdffe9e8eb446e12779f41265e54 100644 --- a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibTools/src/CscCalibTool.h +++ b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibTools/src/CscCalibTool.h @@ -19,8 +19,7 @@ *******************************************************************************/ #include "AthenaBaseComps/AthAlgTool.h" -#include "MuonCondData/CscCondDataContainer.h" -#include "MuonCondInterface/CscICoolStrSvc.h" +#include "MuonCondData/CscCondDbData.h" #include "CscCalibTools/ICscCalibTool.h" #include "CxxUtils/checker_macros.h" @@ -33,6 +32,8 @@ #include <mutex> #include <vector> +class CscCondDbData; + class CscCalibTool : public extends<AthAlgTool, ICscCalibTool> { public: @@ -143,7 +144,7 @@ private: protected: - ServiceHandle<MuonCalib::CscICoolStrSvc> m_cscCoolStrSvc; + SG::ReadCondHandleKey<CscCondDbData> m_readKey{this, "ReadKey", "CscCondDbData", "Key of CscCondDbData"}; bool m_readFromDatabase; bool m_slopeFromDatabase;