diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RPCStandaloneTracksMon.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RPCStandaloneTracksMon.h index 9406cb1bfa2521de2cdb11b590b4f2bc9b357990..50977d306ed1aba3b7eb50380d7693c52d9189ae 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RPCStandaloneTracksMon.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RPCStandaloneTracksMon.h @@ -31,7 +31,7 @@ #include "MuonReadoutGeometry/RpcReadoutElement.h" #include "RPCcablingInterface/IRPCcablingServerSvc.h" - +#include "MuonPrepRawData/MuonPrepDataContainer.h" #include "xAODTracking/TrackParticle.h" #include "xAODMuon/MuonContainer.h" @@ -41,8 +41,12 @@ #include "xAODEventInfo/EventInfo.h" #include "TrigT1Interfaces/RecMuonRoiSvc.h" - +#include "TrigT1Result/MuCTPI_RDO.h" #include "TrigDecisionTool/TrigDecisionTool.h" +#include "MuonRDO/RpcSectorLogicContainer.h" +#include "MuonTrigCoinData/RpcCoinDataContainer.h" + +#include "StoreGate/ReadHandleKey.h" #include <TError.h> #include <TH1F.h> @@ -89,7 +93,6 @@ class RPCStandaloneTracksMon: public ManagedMonitorToolBase { ActiveStoreSvc* m_activeStore; - std::string m_muonsName; std::string m_muonSegmentsName; std::string m_muonTracksName; std::string m_msVertexCollection; @@ -149,16 +152,18 @@ class RPCStandaloneTracksMon: public ManagedMonitorToolBase { const IRPCcablingSvc* m_cabling; - - const RpcSectorLogicContainer* m_sectorLogicContainer; - //Declare Properties + SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_key_rpc{this,"RpcPrepDataContainer","RPC_Measurements","RPC PRDs"}; + SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this,"EventInfo","EventInfo","event info"}; + SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_clusterContainerName{this,"ClusterContainer","rpcClusters","RPC clusters"}; + SG::ReadHandleKey<MuCTPI_RDO> m_muCTPI_RDO_key{this,"muCTPI_RDO_key","MUCTPI_RDO","muCTPI RDO"}; + SG::ReadHandleKey<RpcSectorLogicContainer> m_sectorLogicContainerKey{this,"RPCSec","RPC_SECTORLOGIC","RPC sector logic"}; + SG::ReadHandleKey<Muon::RpcCoinDataContainer> m_rpc_coin_key{this,"RPCCoinKey","RPC_triggerHits","RPC coin container"}; + SG::ReadHandleKey<xAOD::MuonContainer> m_muonsName{this,"MuonCollection","Muons","muons"}; std::string m_chamberName ; std::string m_StationSize ; - std::string m_key_rpc ; std::string m_key_trig ; bool m_doClusters ; - std::string m_clusterContainerName ; bool m_checkCabling ; bool m_rpcfile ; bool m_rpcchamberhist ; @@ -193,6 +198,8 @@ class RPCStandaloneTracksMon: public ManagedMonitorToolBase { double m_MuonDeltaRMatching ; bool m_requireMuonCombinedTight ; bool m_StandAloneMatchedWithTrack ; + + bool m_isMC ; int m_nClus; // number of clusters diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataEfficiency.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataEfficiency.h index 3f0b913fc69b7fc7b16f4a6764b4c245b10b7596..fa41bf010837760b793b2a7449d71cca37e08bca 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataEfficiency.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataEfficiency.h @@ -45,6 +45,10 @@ #include "MuonTrigCoinData/RpcCoinDataContainer.h" #include "MuonTrigCoinData/RpcCoinDataCollection.h" +#include "xAODEventInfo/EventInfo.h" + +#include "StoreGate/ReadHandleKey.h" + // STL includes #include <sstream> #include <string.h> @@ -180,11 +184,8 @@ class RpcLv1RawDataEfficiency: public ManagedMonitorToolBase { virtual StatusCode procHistograms(); private: - StatusCode readOfflineMuonContainer(std::string key); // Retrieving information and data - ActiveStoreSvc* m_activeStore; // to get all the other information const RpcIdHelper* m_rpcIdHelper; - const RpcSectorLogicContainer* m_sectorLogicContainer; const MuonGM::MuonDetectorManager* m_muonMgr; // to retrieve coincidence informations // Trigger type stuff @@ -200,6 +201,12 @@ class RpcLv1RawDataEfficiency: public ManagedMonitorToolBase { int m_lumiblock; int m_BCID; + bool m_isMC; + + SG::ReadHandleKey<Muon::RpcCoinDataContainer> m_rpcCoinKey{this,"RpcCoinKey","RPC_triggerHits","RPC coincidences"}; + SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this,"EventInfo","EventInfo","EventInfo"}; + SG::ReadHandleKey<RpcSectorLogicContainer> m_sectorLogicContainerKey{this,"RPCSec","RPC_SECTORLOGIC","RPC sector logic"}; + // muon informations for offline muons and trigger hits std::vector<OfflineMuon> m_OfflineMuons; std::vector<CoincidenceData*> m_CoincidenceData; diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataSectorLogic.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataSectorLogic.h index e4285695bba0eb04e92178d7868188b12955a9ea..431925a7782696991e18ce4362f5a814dc57743d 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataSectorLogic.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataSectorLogic.h @@ -38,6 +38,8 @@ #include "MuonRDO/RpcPadContainer.h" #include "MuonRDO/RpcSectorLogicContainer.h" +#include "xAODEventInfo/EventInfo.h" + #include <sstream> #include <string.h> #include <vector> @@ -65,16 +67,18 @@ class RpcLv1RawDataSectorLogic: public ManagedMonitorToolBase { // Private functions and members and histograms - ActiveStoreSvc* m_activeStore; - StatusCode StoreTriggerType(); int GetTriggerType() { return m_trigtype; } int m_trigtype; + SG::ReadHandleKey<RpcSectorLogicContainer> m_sectorLogicContainerKey{this,"RPCSec","RPC_SECTORLOGIC","RPC sector logic"}; + SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this,"EventInfo","EventInfo","event info"}; + int m_rpc_eventstotal; int m_rpc_event_inarea; bool m_lumiblockhist ; + bool m_isMC; // Declare Histograms TH1* m_rpclv1_Hits_per_TriggerSector; @@ -113,7 +117,6 @@ class RpcLv1RawDataSectorLogic: public ManagedMonitorToolBase { int m_Tower_in; int m_in_sectorid; - const RpcSectorLogicContainer* m_sectorLogicContainer; }; #endif diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataValAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataValAlg.h index 61509d8623c807340619a6bf43a8185104b899eb..5f38e293b749c534b18d1ac7f8a8d4f419741127 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataValAlg.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataValAlg.h @@ -15,7 +15,6 @@ #include "GaudiKernel/Algorithm.h" #include "GaudiKernel/StatusCode.h" -#include "StoreGate/StoreGateSvc.h" #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/NTuple.h" @@ -23,6 +22,8 @@ #include "AthenaMonitoring/ManagedMonitorToolBase.h" #include "MuonDQAUtils/MuonDQAHistMap.h" +#include "xAODEventInfo/EventInfo.h" + #include "RPCcablingInterface/IRPCcablingServerSvc.h" #include "MuonReadoutGeometry/MuonDetectorManager.h" @@ -41,6 +42,8 @@ #include "RpcRawDataMonitoring/RpcGlobalUtilities.h" +#include "StoreGate/ReadHandleKey.h" + #include <sstream> #include <string.h> #include <vector> @@ -80,10 +83,6 @@ class RpcLv1RawDataValAlg: public ManagedMonitorToolBase { MuonDQAHistMap m_stationHists; - StoreGateSvc* m_eventStore; - - ActiveStoreSvc* m_activeStore; - StatusCode StoreTriggerType(); int GetTriggerType() { return m_trigtype; } int m_trigtype; @@ -91,6 +90,9 @@ class RpcLv1RawDataValAlg: public ManagedMonitorToolBase { int m_sector; int m_side; + SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this,"EventInfo","EventInfo","event info"}; + SG::ReadHandleKey<RpcPadContainer> m_rpcRdoKey{this,"RpcRdo","RPCPAD","RPC RDO"}; + std::vector<std::string> m_sectorlogicTowerCma_name_list ; std::vector<std::string> m_sectorlogicTowerCma_name_list2 ; std::vector<std::string> m_profile_list ; diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataValAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataValAlg.h index e3c2139865b0a7215504ee6739b3c043b1f61270..244bb0b2b6a13500dd58289c4d9a45ab924098d3 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataValAlg.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataValAlg.h @@ -35,6 +35,12 @@ #include "RPCcablingInterface/IRPCcablingServerSvc.h" +#include "MuonPrepRawData/MuonPrepDataContainer.h" +#include "MuonTrigCoinData/RpcCoinDataContainer.h" +#include "xAODEventInfo/EventInfo.h" + +#include "StoreGate/ReadHandleKey.h" + #include <TError.h> #include <TH1F.h> @@ -75,14 +81,12 @@ class RpcRawDataValAlg: public ManagedMonitorToolBase { // Private function to add the clusters to the ntuple StatusCode addClusters(std::string clusterContainerName); - StoreGateSvc* m_eventStore; - - ActiveStoreSvc* m_activeStore; - - //ServiceHandle<IRPCConditionsSvc> m_pSummarySvc; - + SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this,"EventInfo","EventInfo","event info"}; + SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_key_rpc{this,"RpcPrepDataContainer","RPC_Measurements","RPC PRDs"}; + SG::ReadHandleKey<Muon::RpcCoinDataContainer> m_key_trig{this,"RPCTriggerContainer","RPC_triggerHits","RPC trigger hits"}; + SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_clusterContainerName{this,"ClusterContainer","rpcClusters","RPC clusters"}; std::string m_generic_path_rpcmonitoring ; @@ -133,10 +137,7 @@ class RpcRawDataValAlg: public ManagedMonitorToolBase { //Declare Properties std::string m_chamberName ; std::string m_StationSize ; - std::string m_key_rpc ; - std::string m_key_trig ; bool m_doClusters ; - std::string m_clusterContainerName ; bool m_checkCabling ; bool m_rpcfile ; bool m_rpcchamberhist ; diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawBS_MonitoringOptions.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawBS_MonitoringOptions.py index 470887e14fdf131e52222e091e37858b22013721..9529f43b5eae67b35ac9b30e06779e12fca15d14 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawBS_MonitoringOptions.py +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawBS_MonitoringOptions.py @@ -37,7 +37,8 @@ rpcLv1SLRawMonMan = AthenaMonManager(name="RpcLv1SLRawMonManager", OutputLevel = muonOutputLevel) from RpcRawDataMonitoring.RpcRawDataMonitoringConf import RpcLv1RawDataSectorLogic rpcLV1RawDataSectorLogic = RpcLv1RawDataSectorLogic(name='rpcLV1RawDataSectorLogic',OutputLevel = OutputMessageLevel) - +if globalflags.DataSource() != 'data': + rpcLV1RawDataSectorLogic.isMC = True ToolSvc += rpcLV1RawDataSectorLogic rpcLv1SLRawMonMan.AthenaMonTools += [ rpcLV1RawDataSectorLogic ] topSequence += rpcLv1SLRawMonMan diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawESD_MonitoringOptions.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawESD_MonitoringOptions.py index d294d61cffd132eb8c593f466e852aa6c22c1c7c..e60664aab0a0fbec890e0ebf18bf1fc9ae5015a5 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawESD_MonitoringOptions.py +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawESD_MonitoringOptions.py @@ -71,7 +71,9 @@ RPCStandaloneTracksMon = RPCStandaloneTracksMon(name='RPCStandaloneTracksMon', rpc_readout_window = 0.2, ## micro sec doRadiography = False, doCoolDB = False, - ClusterContainer = "rpcClusters") + ClusterContainer = "rpcClusters") +if globalflags.DataSource() != 'data': + RPCStandaloneTracksMon.isMC = True ToolSvc += RPCStandaloneTracksMon rpcTrackMonMan.AthenaMonTools += [ RPCStandaloneTracksMon ] topSequence += rpcTrackMonMan @@ -91,6 +93,8 @@ if not hasattr(topSequence,"RpcClusterBuilderPRD"): topSequence += RpcClusterBuilderPRD(ClusterTimeSpread = 10000, OutputLevel = FATAL) rpcLv1RawDataEfficiency = RpcLv1RawDataEfficiency(name='rpcLv1RawDataEfficiency') +if globalflags.DataSource() != 'data': + rpcLv1RawDataEfficiency.isMC = True ToolSvc += rpcLv1RawDataEfficiency rpcLv1RawEfficiencyMonMan.AthenaMonTools += [ rpcLv1RawDataEfficiency ] topSequence += rpcLv1RawEfficiencyMonMan diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCStandaloneTracksMon.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCStandaloneTracksMon.cxx index 7b5b37c60a64875acb26f05e3d4c330c8accacf8..4f6f5b4e93d26890fb0cd6eec72de671c22f7166 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCStandaloneTracksMon.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCStandaloneTracksMon.cxx @@ -25,18 +25,12 @@ #include "MuonRDO/RpcCoinMatrix.h" #include "MuonRDO/RpcPad.h" #include "MuonRDO/RpcPadContainer.h" -#include "MuonRDO/RpcSectorLogicContainer.h" -#include "TrigT1Result/MuCTPI_RDO.h" #include "TrigT1Result/MuCTPI_DataWord_Decoder.h" #include "TrigT1Interfaces/RecMuonRoI.h" #include "TrigConfL1Data/TriggerThreshold.h" #include "MuonDigitContainer/RpcDigitContainer.h" -#include "MuonPrepRawData/MuonPrepDataContainer.h" - -#include "MuonTrigCoinData/RpcCoinDataContainer.h" - #include "MuonDQAUtils/MuonChamberNameConverter.h" #include "MuonDQAUtils/MuonChambersRange.h" #include "MuonDQAUtils/MuonCosmicSetup.h" @@ -44,7 +38,6 @@ #include "MuonIdHelpers/MuonStationIndex.h" -#include "xAODEventInfo/EventInfo.h" #include "TrkMultiComponentStateOnSurface/MultiComponentStateOnSurface.h" #include "TrkMultiComponentStateOnSurface/MultiComponentState.h" @@ -100,8 +93,6 @@ RPCStandaloneTracksMon::RPCStandaloneTracksMon( const std::string & type, const declareProperty("CosmicStation", m_cosmicStation = 0 ); declareProperty("Side", m_side = 0 ); declareProperty("Clusters", m_doClusters = true ); - declareProperty("ClusterContainer", m_clusterContainerName = "rpcClusters" ); - declareProperty("RpcPrepDataContainer",m_key_rpc = "RPC_Measurements" ); declareProperty("RPCTriggerContainer", m_key_trig = "RPC_triggerHits" ); declareProperty("MinimunEntries", m_MinEntries = 10 ); // min entries required for summary plot declareProperty("rpc_readout_window", m_rpc_readout_window = 0.2 ); // rpc readout window in 10^(-6) s for noise evaluation @@ -121,7 +112,6 @@ RPCStandaloneTracksMon::RPCStandaloneTracksMon( const std::string & type, const declareProperty("Muon_Trigger_Items", m_muon_triggers); declareProperty("TriggerDecisionTool", m_trigDecTool); - declareProperty("MuonCollection", m_muonsName = "Muons"); declareProperty("MuonSegmentCollection", m_muonSegmentsName = "MuonSegments"); declareProperty("MuonTrackCollection", m_muonTracksName = "MuonSpectrometerTrackParticles"); declareProperty("MuonExtrapolatedTrackCollection", m_muonExtrapTracksName = "ExtrapolatedMuonTrackParticles"); @@ -133,6 +123,8 @@ RPCStandaloneTracksMon::RPCStandaloneTracksMon( const std::string & type, const declareProperty("MuonDeltaRMatching" , m_MuonDeltaRMatching = 0.15 ); declareProperty("requireMuonCombinedTight" , m_requireMuonCombinedTight = false ); declareProperty("StandAloneMatchedWithTrack" , m_StandAloneMatchedWithTrack = true ); + + declareProperty("isMC" , m_isMC = false ); declareProperty( "selectTriggerChainGroup" , m_selectTriggerChainGroup = false ); declareProperty( "deSelectTriggerChainGroup" , m_deselectTriggerChainGroup = false ); @@ -176,19 +168,6 @@ StatusCode RPCStandaloneTracksMon::initialize(){ StatusCode sc; - // Store Gate store - sc = serviceLocator()->service("StoreGateSvc", m_eventStore); - if (sc != StatusCode::SUCCESS ) { - ATH_MSG_ERROR ( " Cannot get StoreGateSvc " ); - return sc ; - } - // retrieve the active store - sc = serviceLocator()->service("ActiveStoreSvc", m_activeStore); - if (sc != StatusCode::SUCCESS ) { - ATH_MSG_ERROR ( " Cannot get ActiveStoreSvc " ); - return sc ; - } - // Initialize the IdHelper StoreGateSvc* detStore = 0; sc = service("DetectorStore", detStore); @@ -270,8 +249,15 @@ StatusCode RPCStandaloneTracksMon::initialize(){ m_hRPCPhiEtaCoinThr_eff.clear() ; m_hRPCPadThr_eff.clear() ; m_hRPCMuctpiThr_eff.clear() ; - m_sectorLogicContainer = 0 ; + ATH_CHECK(m_key_rpc.initialize()); + ATH_CHECK(m_eventInfo.initialize()); + ATH_CHECK(m_clusterContainerName.initialize()); + ATH_CHECK(m_muCTPI_RDO_key.initialize()); + ATH_CHECK(m_sectorLogicContainerKey.initialize(!m_isMC)); + ATH_CHECK(m_rpc_coin_key.initialize()); + ATH_CHECK(m_muonsName.initialize()); + return StatusCode::SUCCESS; } @@ -336,39 +322,19 @@ StatusCode RPCStandaloneTracksMon::fillHistograms() // // retrieve containers // const xAOD::MuonSegmentContainer* MuonSegments = evtStore()->retrieve< const xAOD::MuonSegmentContainer > (m_muonSegmentsName); // const xAOD::TrackParticleContainer* tracksMS = evtStore()->retrieve< const xAOD::TrackParticleContainer > (m_muonTracksName); - const xAOD::MuonContainer* Muons = evtStore()->retrieve< const xAOD::MuonContainer > (m_muonsName); - if (!Muons) { - ATH_MSG_WARNING ("Couldn't retrieve Muons container with key: " << m_muonsName); - return StatusCode::SUCCESS; - } - ATH_MSG_DEBUG ("Muon container with key: " << m_muonsName<<" found"); + SG::ReadHandle<xAOD::MuonContainer> Muons(m_muonsName); + ATH_MSG_DEBUG ("Muon container with key: " << m_muonsName.key()<<" found"); // const xAOD::VertexContainer* MSVertices = evtStore()->retrieve< const xAOD::VertexContainer > (m_msVertexCollection); // const xAOD::TrackParticleContainer* METracks = evtStore()->retrieve< const xAOD::TrackParticleContainer >( m_muonExtrapTracksName ); // const xAOD::TrackParticleContainer* IDTracks = evtStore()->retrieve< const xAOD::TrackParticleContainer > ( m_innerTracksName ); - const Muon::RpcPrepDataContainer* rpc_container; - sc = (*m_activeStore)->retrieve(rpc_container, m_key_rpc); - if (sc.isFailure()) { - ATH_MSG_ERROR ( " Cannot retrieve RpcPrepDataContainer " << m_key_rpc ); - return sc; - } - ATH_MSG_DEBUG ( "RpcPrepDataContainer " << m_key_rpc <<" found"); + SG::ReadHandle<Muon::RpcPrepDataContainer> rpc_container(m_key_rpc); + ATH_MSG_DEBUG ( "RpcPrepDataContainer " << m_key_rpc.key() <<" found"); - - - const DataHandle<xAOD::EventInfo> eventInfo; - sc = m_eventStore->retrieve( eventInfo ); - if (sc.isFailure()) { - ATH_MSG_DEBUG ( "no event info" ); - return StatusCode::SUCCESS; - } - else { - ATH_MSG_DEBUG ( "yes event info" ); - } + SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo); - //int RunNumber = eventInfo->runNumber(); //long int EventNumber = eventInfo->eventNumber(); long int BCID = eventInfo-> bcid() ; @@ -385,15 +351,6 @@ StatusCode RPCStandaloneTracksMon::fillHistograms() } } - - // check if data or MC - int isMC=0; - if (eventInfo->eventType(xAOD::EventInfo::IS_SIMULATION ) ){ - isMC=1; - ATH_MSG_INFO( "SIMULATION"); - } - // return StatusCode::SUCCESS; // stop this algorithms execute() for this event, here only interested in MC - ATH_MSG_DEBUG ("****** rpc->size() : " << rpc_container->size()); Muon::RpcPrepDataContainer::const_iterator containerIt; @@ -415,16 +372,9 @@ StatusCode RPCStandaloneTracksMon::fillHistograms() MonGroup rpc_triggerefficiency( this, m_generic_path_rpcmonitoring +"/TriggerEfficiency", run, ATTRIB_UNMANAGED ); // begin cluster monitoring - const Muon::RpcPrepDataContainer* rpc_clusterContainer = nullptr; - if(m_eventStore->contains<Muon::RpcPrepDataContainer>(m_clusterContainerName)){ - sc = m_eventStore->retrieve(rpc_clusterContainer, m_clusterContainerName); - if (sc.isFailure()) { - ATH_MSG_DEBUG ( " RPCStandaloneTracksMon :: Cannot retrieve the RPC cluster container " ); - return sc; - } - } + SG::ReadHandle<Muon::RpcPrepDataContainer> rpc_clusterContainer(m_clusterContainerName); - if (m_doClusters && rpc_clusterContainer ) + if (m_doClusters) { ATH_MSG_DEBUG ( "Start RPC Cluster Monitoring" ); @@ -834,7 +784,7 @@ StatusCode RPCStandaloneTracksMon::fillHistograms() //Check for muon combined match bool foundmatch3DwithMuon = false; int nm=0; - if (Muons){ + if (Muons.cptr()){ // CombinedMuons Tight for (const xAOD::Muon* muons: *Muons) { @@ -912,77 +862,64 @@ StatusCode RPCStandaloneTracksMon::fillHistograms() std::list<muctpi_rdo> muctpi_rdo_roi_list; muctpi_rdo_roi_list.clear(); - const MuCTPI_RDO* muctpiRDO; - sc = (*m_activeStore)->retrieve(muctpiRDO,"MUCTPI_RDO"); - if (sc.isFailure()) { - ATH_MSG_WARNING ( "Cannot retrieve the MuCTPI" ); - return StatusCode::SUCCESS; - } - else { - + SG::ReadHandle<MuCTPI_RDO> muctpiRDO(m_muCTPI_RDO_key); - // Create some dummy LVL1 muon thresholds: - std::vector< TrigConf::TriggerThreshold* > dummy_thresholds; - - - // Loop over the MuCTPI data words, and "reconstruct" them: - std::vector< uint32_t >::const_iterator dw_itr = muctpiRDO->dataWord().begin(); - std::vector< uint32_t >::const_iterator dw_end = muctpiRDO->dataWord().end(); - for( ; dw_itr != dw_end; ++dw_itr ) { - - muctpi_rdo muctpi_rdo_roi; - // Use the same class that is used by the LVL2 steering to decode - // the muon RoIs: - - uint32_t dataWord = (*dw_itr); - uint32_t RoIWord = ( ( dataWord & 0x18000000 ) | - ( ( dataWord & 0x3fe0000 ) >> 3 ) | - ( dataWord & 0x3fff ) ); - - LVL1::RecMuonRoI roi( RoIWord, - &( *m_rpcRoiSvc ), &( *m_tgcRoiSvc ), - &dummy_thresholds ); - - muctpi_rdo_roi.eta= roi.eta() ; - muctpi_rdo_roi.phi= roi.phi() ; - muctpi_rdo_roi.source= roi.sysID() ; - muctpi_rdo_roi.hemisphere= roi.subsysID() ; - int muctpi_bcid = ( ( dataWord >> 14 ) & 0x7 ); - // store difference from L1Acc - int dbc = muctpi_bcid; - if (!isMC) dbc = dbc - BCID%8; - if (dbc<=-4) { - dbc=dbc+8; - }else if (dbc>4) { - dbc=dbc-8; - } - muctpi_rdo_roi.bcid=dbc; - muctpi_rdo_roi.sectorID= roi.sectorID() ; - muctpi_rdo_roi.thrNumber= roi.getThresholdNumber() ; - muctpi_rdo_roi.RoINumber= roi.getRoINumber() ; - muctpi_rdo_roi.overlapFlags= roi.getOverlap() ; - - - muctpi_rdo_roi_list.push_back(muctpi_rdo_roi); - - } - - ATH_MSG_DEBUG(" MUCTPI RoIs = " << muctpi_rdo_roi_list.size() ); + // Create some dummy LVL1 muon thresholds: + std::vector< TrigConf::TriggerThreshold* > dummy_thresholds; + + + // Loop over the MuCTPI data words, and "reconstruct" them: + std::vector< uint32_t >::const_iterator dw_itr = muctpiRDO->dataWord().begin(); + std::vector< uint32_t >::const_iterator dw_end = muctpiRDO->dataWord().end(); + for( ; dw_itr != dw_end; ++dw_itr ) { + + muctpi_rdo muctpi_rdo_roi; + // Use the same class that is used by the LVL2 steering to decode + // the muon RoIs: + + uint32_t dataWord = (*dw_itr); + uint32_t RoIWord = ( ( dataWord & 0x18000000 ) | + ( ( dataWord & 0x3fe0000 ) >> 3 ) | + ( dataWord & 0x3fff ) ); + + LVL1::RecMuonRoI roi( RoIWord, + &( *m_rpcRoiSvc ), &( *m_tgcRoiSvc ), + &dummy_thresholds ); + + muctpi_rdo_roi.eta= roi.eta() ; + muctpi_rdo_roi.phi= roi.phi() ; + muctpi_rdo_roi.source= roi.sysID() ; + muctpi_rdo_roi.hemisphere= roi.subsysID() ; + int muctpi_bcid = ( ( dataWord >> 14 ) & 0x7 ); + // store difference from L1Acc + int dbc = muctpi_bcid; + if (!m_isMC) dbc = dbc - BCID%8; + if (dbc<=-4) { + dbc=dbc+8; + }else if (dbc>4) { + dbc=dbc-8; + } + muctpi_rdo_roi.bcid=dbc; + muctpi_rdo_roi.sectorID= roi.sectorID() ; + muctpi_rdo_roi.thrNumber= roi.getThresholdNumber() ; + muctpi_rdo_roi.RoINumber= roi.getRoINumber() ; + muctpi_rdo_roi.overlapFlags= roi.getOverlap() ; + + + muctpi_rdo_roi_list.push_back(muctpi_rdo_roi); + } + + ATH_MSG_DEBUG(" MUCTPI RoIs = " << muctpi_rdo_roi_list.size() ); // Retrieve the Sector Logic container - sc = (*m_activeStore) -> retrieve(m_sectorLogicContainer); - if (sc.isFailure()) { - if (isMC==1) ATH_MSG_DEBUG ( "Cannot retrieve the RpcSectorLogicContainer ... that's normal in MC: no container is produced in digitization" ); - else - { - ATH_MSG_WARNING ( "Cannot retrieve the RpcSectorLogicContainer ... however, there's no reason to stop here" ); - //return StatusCode::SUCCESS; - } + if (m_isMC) { + ATH_MSG_DEBUG ( "Cannot retrieve the RpcSectorLogicContainer ... that's normal in MC: no container is produced in digitization" ); } else { - ATH_MSG_DEBUG("RpcSectorLogicContainer found with size " << m_sectorLogicContainer->size()); + SG::ReadHandle<RpcSectorLogicContainer> sectorLogicContainer(m_sectorLogicContainerKey); + ATH_MSG_DEBUG("RpcSectorLogicContainer found with size " << sectorLogicContainer->size()); /////////////////////////////////////////// // Loop over the Sector Logic containers // @@ -994,9 +931,9 @@ StatusCode RPCStandaloneTracksMon::fillHistograms() phimaxpad.clear(); thresholdpad.clear(); - RpcSectorLogicContainer::const_iterator its = m_sectorLogicContainer -> begin(); + RpcSectorLogicContainer::const_iterator its = sectorLogicContainer -> begin(); - for ( ; its != m_sectorLogicContainer -> end() ; ++its ) + for ( ; its != sectorLogicContainer -> end() ; ++its ) { int i_sectorid = (*its)->sectorId(); // Loop over the trigger hits of each sector @@ -1038,16 +975,9 @@ StatusCode RPCStandaloneTracksMon::fillHistograms() /////////////// Trigger hits efficiency //Trigger hits - const Muon::RpcCoinDataContainer* rpc_coin_container; - sc = (*m_activeStore)->retrieve(rpc_coin_container, "RPC_triggerHits" ); - if (sc.isFailure()) { - ATH_MSG_WARNING ( "Cannot retrieve RPC trigger hits container"); - return sc; - } - - + SG::ReadHandle<Muon::RpcCoinDataContainer> rpc_coin_container(m_rpc_coin_key); - if (Muons){ + if (Muons.cptr()){ // CombinedMuons Tight for (const xAOD::Muon* muons: *Muons) { diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataEfficiency.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataEfficiency.cxx index d580e4204f62bab7b8cbf2acbaf3f14d823d4e00..ce2cb42f80a37cea3615e7ef8df1883955be792e 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataEfficiency.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataEfficiency.cxx @@ -25,9 +25,7 @@ #include "AthenaMonitoring/AthenaMonManager.h" #include "MuonPrepRawData/MuonPrepDataContainer.h" -#include "MuonTrigCoinData/RpcCoinDataContainer.h" -#include "xAODEventInfo/EventInfo.h" #include <inttypes.h> #include <sstream> @@ -41,7 +39,9 @@ RpcLv1RawDataEfficiency::RpcLv1RawDataEfficiency( const std::string & type, const std::string & name, const IInterface* parent ) :ManagedMonitorToolBase( type, name, parent ) -{} +{ + declareProperty("isMC" , m_isMC = false ); +} //================================================================================================================================ RpcLv1RawDataEfficiency::~RpcLv1RawDataEfficiency() @@ -55,9 +55,7 @@ StatusCode RpcLv1RawDataEfficiency::initialize() ATH_MSG_INFO( "In initializing 'RpcLv1RawDataEfficiency'" ); ATH_MSG_INFO( "Package version = "<< PACKAGE_VERSION ); - m_activeStore = 0 ; m_rpcIdHelper = 0 ; - m_sectorLogicContainer = 0 ; m_muonMgr = 0 ; m_trigtype = 0 ; m_event = 0 ; @@ -82,132 +80,20 @@ StatusCode RpcLv1RawDataEfficiency::initialize() m_rpclv1_sectorhits_C[5] = 0 ; m_rpclv1_sectorhits_all[5]= 0 ; - // Retrieve the active store where all the information is being read from - ATH_CHECK( serviceLocator()->service("ActiveStoreSvc", m_activeStore) ); - ATH_CHECK( detStore()->retrieve(m_rpcIdHelper,"RPCIDHELPER") ); ATH_CHECK( detStore()->retrieve(m_muonMgr) ); ATH_MSG_DEBUG( "Found the MuonDetectorManager from detector store." ); + ATH_CHECK(m_rpcCoinKey.initialize()); + ATH_CHECK(m_eventInfo.initialize()); + ATH_CHECK(m_sectorLogicContainerKey.initialize(!m_isMC)); + // Ignore the checking code ManagedMonitorToolBase::initialize().ignore(); return StatusCode::SUCCESS; } - -//================================================================================================================================ -// Reads the offline muon container into vectors for use in filling histograms -//================================================================================================================================ -StatusCode RpcLv1RawDataEfficiency::readOfflineMuonContainer( std::string key ) -{ - ATH_MSG_VERBOSE( "Reading OfflineMuonContainer... " ); - - // read the container the first time or again, so delete the old one - m_OfflineMuons.clear(); - - const float ptcut = 1.0; - const float etamin = -1.0; - const float etamax = 1.0; - - const Analysis::MuonContainer* muonCont; - - // retrieve the offline muon container - StatusCode sc = (*m_activeStore)->retrieve(muonCont, key); - if(sc.isFailure()) { - ATH_MSG_WARNING( "Container of muon particle with key " << key << " not found in ActiveStore" ); - return StatusCode::SUCCESS; - } - - float pt,eta; - - int pixHits; - int sctHits; - int trtHits; - int pixHoles; - int sctHoles; - int trtOL; - int trtOLfrac; - bool trt; - float matchChi2; - - Analysis::MuonContainer::const_iterator it = muonCont->begin(); - Analysis::MuonContainer::const_iterator ite = muonCont->end(); - for (; it != ite; it++ ) { - pt = (*it)->pt(); - eta = (*it)->eta(); - if( fabs(pt) < ptcut || - fabs(eta) < etamin || - fabs(eta) > etamax ) continue; - - pixHits = (*it)->numberOfPixelHits(); - sctHits = (*it)->numberOfSCTHits(); - trtHits = (*it)->numberOfTRTHits(); - pixHoles = (*it)->numberOfPixelHoles(); - sctHoles = (*it)->numberOfSCTHoles(); - trtOL = (*it)->numberOfTRTOutliers(); - - trtOLfrac = 0; - if( trtHits + trtOL > 0 ) trtOLfrac = trtOL/(trtHits + trtOL); - - trt=false; - if( fabs(eta) < 1.9 ) - trt = ( (trtHits > 5) && (trtOLfrac < 0.9) ); - else{ - if( trtHits > 5 ) - trt = ( trtOLfrac < 0.9 ); - else - trt=true; - } - - matchChi2 = (*it)->matchChi2(); - - //Muid MCP except phi hits - if( key == "MuidMuonCollection" && - !( (*it)->combinedMuonTrackParticle() && - sctHits >= 6 && - pixHits >= 2 && - pixHoles+sctHoles <=1 && - trt - ) ) continue; - - //Staco MCP - if( key == "StacoMuonCollection" && - ! ( (*it)->combinedMuonTrackParticle() && - sctHits >= 6 && - pixHits >= 2 && - pixHoles+sctHoles <=1 && - trt && - matchChi2 < 50 ) ) continue; - - OfflineMuon offmu; - offmu.SetPtEtaPhiQ( pt/CLHEP::GeV, eta, (*it)->phi(), (*it)->charge() ); - m_OfflineMuons.push_back(offmu); - } - ATH_MSG_VERBOSE( "Number of offline muons before dR check : " << m_OfflineMuons.size() ); - - // check if no track is too close to another track - bool bTooClose = false; - float trackdr; - const float trackdr_min = .8; - - vector<OfflineMuon>::const_iterator it1 = m_OfflineMuons.begin(); - vector<OfflineMuon>::const_iterator it2; - while( it1 != m_OfflineMuons.end() ) { - it2 = it1+1; - while( it2 != m_OfflineMuons.end() ) { - trackdr = (*it1).DeltaR( (*it2) ); - if( trackdr < trackdr_min ) bTooClose = true; - ++it2;} - ++it1; } - if(bTooClose) m_OfflineMuons.clear(); - - ATH_MSG_VERBOSE( "Finished reading OfflineMuonContainer... " ); - return StatusCode::SUCCESS; -} - - - //================================================================================================================================ // Reads RPC coincidence data from container into vectors for use in filling histograms //================================================================================================================================ @@ -215,8 +101,7 @@ StatusCode RpcLv1RawDataEfficiency::readRpcCoinDataContainer() { ATH_MSG_DEBUG( "Reading RpcCoincidenceContainer... " ); - const Muon::RpcCoinDataContainer* rpc_coin_container; - ATH_CHECK( (*m_activeStore)->retrieve(rpc_coin_container, "RPC_triggerHits" ) ); + SG::ReadHandle<Muon::RpcCoinDataContainer> rpc_coin_container(m_rpcCoinKey); Muon::RpcCoinDataContainer::const_iterator it_container; //Muon::RpcCoinDataCollection::const_iterator it_collection; Identifier prdcoll_id; @@ -269,8 +154,7 @@ StatusCode RpcLv1RawDataEfficiency::readRpcCoinDataContainer() StatusCode RpcLv1RawDataEfficiency::StoreTriggerType() { ATH_MSG_DEBUG( "Storing Trigger Type... " ); - const xAOD::EventInfo* eventInfo; - ATH_CHECK( evtStore() -> retrieve(eventInfo) ); + SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo); ATH_MSG_DEBUG( "RpcLv1RawDataEfficiency::retrieved eventInfo" ); // Protection against simulated cosmics when the trigger_info() of the event_info is not filled and returns a null pointer. @@ -333,16 +217,13 @@ StatusCode RpcLv1RawDataEfficiency::fillHistograms( ) // == Filling the Histograms //--------------------Sector Hits--------------------------------- - // Retrieve the Sector Logic container - if ( (*m_activeStore) -> retrieve(m_sectorLogicContainer).isFailure() ) { - ATH_MSG_INFO( "Cannot retrieve the RpcSectorLogicContainer" ); - return StatusCode::FAILURE; - } - else { - - RpcSectorLogicContainer::const_iterator it = m_sectorLogicContainer -> begin(); + if(!m_isMC){ + // Retrieve the Sector Logic container + SG::ReadHandle<RpcSectorLogicContainer> sectorLogicContainer(m_sectorLogicContainerKey); - for ( ; it != m_sectorLogicContainer -> end() ; ++it ) + RpcSectorLogicContainer::const_iterator it = sectorLogicContainer -> begin(); + + for ( ; it != sectorLogicContainer -> end() ; ++it ) { int i_sectorid = (*it)->sectorId(); // Loop over the trigger hits of each sector @@ -365,7 +246,6 @@ StatusCode RpcLv1RawDataEfficiency::fillHistograms( ) } } } - return StatusCode::SUCCESS; } diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataSectorLogic.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataSectorLogic.cxx index 9bb4926e34f651698863fa713e27455780baa4d6..3a96fbd299ff86c2769e6bcccbd6c71e159427c8 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataSectorLogic.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataSectorLogic.cxx @@ -14,7 +14,6 @@ #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/AlgFactory.h" -#include "xAODEventInfo/EventInfo.h" #include "MuonDQAUtils/MuonChamberNameConverter.h" #include "MuonDQAUtils/MuonChambersRange.h" #include "MuonDQAUtils/MuonCosmicSetup.h" @@ -38,6 +37,7 @@ RpcLv1RawDataSectorLogic::RpcLv1RawDataSectorLogic( const std::string & type, { // Declare the properties declareProperty("LumiblockHist" , m_lumiblockhist = false ); + declareProperty("isMC" , m_isMC = false ); } //*********************************************************************************************************************** @@ -68,10 +68,9 @@ StatusCode RpcLv1RawDataSectorLogic::initialize() m_Tower_out = 0 ; m_Tower_in = 0 ; m_in_sectorid = 0 ; - m_sectorLogicContainer = 0 ; - // Retrieve the active store - ATH_CHECK( serviceLocator() -> service("ActiveStoreSvc", m_activeStore) ); + ATH_CHECK(m_sectorLogicContainerKey.initialize(!m_isMC)); + ATH_CHECK(m_eventInfo.initialize()); // Ignore the checking code ManagedMonitorToolBase::initialize().ignore(); @@ -83,8 +82,7 @@ StatusCode RpcLv1RawDataSectorLogic::initialize() //*********************************************************************************************************************** StatusCode RpcLv1RawDataSectorLogic::StoreTriggerType() { - const xAOD::EventInfo* eventInfo; - ATH_CHECK( evtStore() -> retrieve(eventInfo) ); + SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo); ATH_MSG_DEBUG( "RpcLv1RawDataSectorLogic::retrieved eventInfo" ); m_trigtype = eventInfo->level1TriggerType(); @@ -178,147 +176,142 @@ StatusCode RpcLv1RawDataSectorLogic::fillHistograms( ) m_nTriggerHits = 0; - // Retrieve the Sector Logic container - sc = (*m_activeStore) -> retrieve(m_sectorLogicContainer); - - if (sc.isFailure()) { - ATH_MSG_INFO( "Cannot retrieve the RpcSectorLogicContainer" ); - return StatusCode::SUCCESS; - } - else { + if(!m_isMC){ + // Retrieve the Sector Logic container + SG::ReadHandle<RpcSectorLogicContainer> sectorLogicContainer(m_sectorLogicContainerKey); /////////////////////////////////////////// // Loop over the Sector Logic containers // /////////////////////////////////////////// - RpcSectorLogicContainer::const_iterator it = m_sectorLogicContainer -> begin(); - for ( ; it != m_sectorLogicContainer -> end() ; ++it ) + RpcSectorLogicContainer::const_iterator it = sectorLogicContainer -> begin(); + for ( ; it != sectorLogicContainer -> end() ; ++it ) { int i_sectorid = (*it)->sectorId(); m_nTriggerHitsperSector = 0; - + // Loop over the trigger hits of each sector RpcSectorLogic::const_iterator ithit = (*it) -> begin(); for ( ; ithit != (*it) -> end() ; ++ithit ) - { - // from RpcSLTriggerHit - bool b_isInput = (*ithit) -> isInput(); - int i_rowinBcid = (*ithit) -> rowinBcid();//readout window BCid - int i_padid = (*ithit) -> padId();//tower - int i_ptid = (*ithit) -> ptId();//threshold - int i_roi = (*ithit) -> roi();//region of interest - int i_triggerBcid = (*ithit) -> triggerBcid(); - - m_Diff_triggerBCid = 0; - m_in_triggerBCid = 0; - m_out_triggerBCid = 0; - m_in_rowinBCid = 0; - m_out_rowinBCid = 0; - m_Tower_in = -1; - - if (b_isInput == true){ - m_nTriggerHits++; - m_nTriggerHitsperSector++; + { + // from RpcSLTriggerHit + bool b_isInput = (*ithit) -> isInput(); + int i_rowinBcid = (*ithit) -> rowinBcid();//readout window BCid + int i_padid = (*ithit) -> padId();//tower + int i_ptid = (*ithit) -> ptId();//threshold + int i_roi = (*ithit) -> roi();//region of interest + int i_triggerBcid = (*ithit) -> triggerBcid(); + + m_Diff_triggerBCid = 0; + m_in_triggerBCid = 0; + m_out_triggerBCid = 0; + m_in_rowinBCid = 0; + m_out_rowinBCid = 0; + m_Tower_in = -1; + + if (b_isInput == true){ + m_nTriggerHits++; + m_nTriggerHitsperSector++; - //Fill hits per trigger sector histogram - m_rpclv1_Hits_per_TriggerSector -> Fill(float(i_sectorid)); - //per lumi block - if(m_lumiblockhist)m_rpclv1_Hits_per_TriggerSector_LB -> Fill(float(i_sectorid)); - - //Fill Pad vs. tigger sector histograms - if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad -> Fill(float(-(i_padid + 1)), float(i_sectorid)); - else m_rpclv1_TriggerSector_vs_Pad -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); + //Fill hits per trigger sector histogram + m_rpclv1_Hits_per_TriggerSector -> Fill(float(i_sectorid)); + //per lumi block + if(m_lumiblockhist)m_rpclv1_Hits_per_TriggerSector_LB -> Fill(float(i_sectorid)); - if (i_ptid == 1){ - if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt1 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); - else m_rpclv1_TriggerSector_vs_Pad_Pt1 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); - } - if (i_ptid == 2){ - if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt2 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); - else m_rpclv1_TriggerSector_vs_Pad_Pt2 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); - } - if (i_ptid == 3){ - if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt3 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); - else m_rpclv1_TriggerSector_vs_Pad_Pt3 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); - } - if (i_ptid == 4){ - if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt4 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); - else m_rpclv1_TriggerSector_vs_Pad_Pt4 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); - } - if (i_ptid == 5){ - if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt5 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); - else m_rpclv1_TriggerSector_vs_Pad_Pt5 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); - } - if (i_ptid == 6){ - if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt6 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); - else m_rpclv1_TriggerSector_vs_Pad_Pt6 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); - } + //Fill Pad vs. tigger sector histograms + if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad -> Fill(float(-(i_padid + 1)), float(i_sectorid)); + else m_rpclv1_TriggerSector_vs_Pad -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); - //Fill trigger sector vs. rowin BCid histogram - m_rpclv1_rowinBCid_vs_TriggerSector -> Fill(float(i_sectorid), float(i_rowinBcid)); - - //Fill Threshold vs. Pad(Tower) histogram - m_rpclv1_ptid_vs_Tower -> Fill(float(i_padid), float(i_ptid)); - - //Trigger BCid in - m_in_triggerBCid = i_triggerBcid; - //ReadOutWindow BCid in - m_in_rowinBCid = i_rowinBcid; - - //Tower in - m_Tower_in = i_padid; + if (i_ptid == 1){ + if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt1 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); + else m_rpclv1_TriggerSector_vs_Pad_Pt1 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); + } + if (i_ptid == 2){ + if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt2 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); + else m_rpclv1_TriggerSector_vs_Pad_Pt2 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); + } + if (i_ptid == 3){ + if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt3 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); + else m_rpclv1_TriggerSector_vs_Pad_Pt3 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); + } + if (i_ptid == 4){ + if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt4 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); + else m_rpclv1_TriggerSector_vs_Pad_Pt4 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); + } + if (i_ptid == 5){ + if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt5 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); + else m_rpclv1_TriggerSector_vs_Pad_Pt5 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); + } + if (i_ptid == 6){ + if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt6 -> Fill(float(-(i_padid + 1)), float(i_sectorid)); + else m_rpclv1_TriggerSector_vs_Pad_Pt6 -> Fill(float((i_padid + 1)), float(i_sectorid - 32)); + } + + //Fill trigger sector vs. rowin BCid histogram + m_rpclv1_rowinBCid_vs_TriggerSector -> Fill(float(i_sectorid), float(i_rowinBcid)); + + //Fill Threshold vs. Pad(Tower) histogram + m_rpclv1_ptid_vs_Tower -> Fill(float(i_padid), float(i_ptid)); - m_Tower_out = -1; - // Loop over the trigger hits of each sector - RpcSectorLogic::const_iterator ithiti = (*it) -> begin(); - for ( ; ithiti != (*it) -> end() ; ++ithiti ) - { - bool b_isInput1 = (*ithiti) -> isInput(); - int i_roi1 = (*ithiti) -> roi();//region of interest - int i_triggerBcid1 = (*ithiti) -> triggerBcid(); - int i_rowinBcid1 = (*ithiti) -> rowinBcid(); - if (b_isInput1 == false){ - - //Tower out calculated from ROI out - if ( i_roi1 < 4 ) m_Tower_out = 0; - if ( i_roi1 >= 4 && i_roi < 8 ) m_Tower_out = 1; - if ( i_roi1 >= 8 && i_roi < 12 ) m_Tower_out = 2; - if ( i_roi1 >= 12 && i_roi < 16 ) m_Tower_out = 3; - if ( i_roi1 >= 16 && i_roi < 20 ) m_Tower_out = 4; - if ( i_roi1 >= 20 && i_roi < 24 ) m_Tower_out = 5; - if ( i_roi1 >= 24 ) m_Tower_out = 6; + //Trigger BCid in + m_in_triggerBCid = i_triggerBcid; + //ReadOutWindow BCid in + m_in_rowinBCid = i_rowinBcid; + + //Tower in + m_Tower_in = i_padid; + + m_Tower_out = -1; + // Loop over the trigger hits of each sector + RpcSectorLogic::const_iterator ithiti = (*it) -> begin(); + for ( ; ithiti != (*it) -> end() ; ++ithiti ) + { + bool b_isInput1 = (*ithiti) -> isInput(); + int i_roi1 = (*ithiti) -> roi();//region of interest + int i_triggerBcid1 = (*ithiti) -> triggerBcid(); + int i_rowinBcid1 = (*ithiti) -> rowinBcid(); + if (b_isInput1 == false){ + + //Tower out calculated from ROI out + if ( i_roi1 < 4 ) m_Tower_out = 0; + if ( i_roi1 >= 4 && i_roi < 8 ) m_Tower_out = 1; + if ( i_roi1 >= 8 && i_roi < 12 ) m_Tower_out = 2; + if ( i_roi1 >= 12 && i_roi < 16 ) m_Tower_out = 3; + if ( i_roi1 >= 16 && i_roi < 20 ) m_Tower_out = 4; + if ( i_roi1 >= 20 && i_roi < 24 ) m_Tower_out = 5; + if ( i_roi1 >= 24 ) m_Tower_out = 6; - //Trigger BCid out - m_out_triggerBCid = i_triggerBcid1; - //ReadOutWindow BCid in - m_out_rowinBCid = i_rowinBcid1; - - //Calculate Timing difference in trigger BCid - if ((m_Tower_out == m_Tower_in) && (m_out_rowinBCid == m_in_rowinBCid)){ - if(m_in_triggerBCid - m_out_triggerBCid >= 0) m_Diff_triggerBCid = m_in_triggerBCid - m_out_triggerBCid; - else m_Diff_triggerBCid = (m_in_triggerBCid - m_out_triggerBCid) + 8; - } - } + //Trigger BCid out + m_out_triggerBCid = i_triggerBcid1; + //ReadOutWindow BCid in + m_out_rowinBCid = i_rowinBcid1; + + //Calculate Timing difference in trigger BCid + if ((m_Tower_out == m_Tower_in) && (m_out_rowinBCid == m_in_rowinBCid)){ + if(m_in_triggerBCid - m_out_triggerBCid >= 0) m_Diff_triggerBCid = m_in_triggerBCid - m_out_triggerBCid; + else m_Diff_triggerBCid = (m_in_triggerBCid - m_out_triggerBCid) + 8; + } + } - } - } + } + } - - //Fill in/out dependent histograms & histograms with timing difference only for IN - if (b_isInput == true){ - - m_rpclv1_triggerBCid_inout_vs_Tower -> Fill(float(m_Tower_out), float(m_Diff_triggerBCid)); - - // if (i_padid == 0){ - m_rpclv1_triggerBCid_inout_vs_TriggerSector -> Fill(float(i_sectorid), float(m_Diff_triggerBCid)); - m_rpclv1_triggerBCid_inout -> Fill(float(m_Diff_triggerBCid)); - //per lumi block - if(m_lumiblockhist)m_rpclv1_triggerBCid_inout_LB -> Fill(float(m_Diff_triggerBCid)); - // } - - if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_triggerBCid_inout -> Fill(float(-(i_padid + 1)), float(i_sectorid), float(m_Diff_triggerBCid)); - else m_rpclv1_TriggerSector_vs_Pad_triggerBCid_inout -> Fill(float((i_padid + 1)), float(i_sectorid - 32), float(m_Diff_triggerBCid)); - } + + //Fill in/out dependent histograms & histograms with timing difference only for IN + if (b_isInput == true){ + + m_rpclv1_triggerBCid_inout_vs_Tower -> Fill(float(m_Tower_out), float(m_Diff_triggerBCid)); - } // End Loop over the trigger hits of each sector + // if (i_padid == 0){ + m_rpclv1_triggerBCid_inout_vs_TriggerSector -> Fill(float(i_sectorid), float(m_Diff_triggerBCid)); + m_rpclv1_triggerBCid_inout -> Fill(float(m_Diff_triggerBCid)); + //per lumi block + if(m_lumiblockhist)m_rpclv1_triggerBCid_inout_LB -> Fill(float(m_Diff_triggerBCid)); + // } + + if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_triggerBCid_inout -> Fill(float(-(i_padid + 1)), float(i_sectorid), float(m_Diff_triggerBCid)); + else m_rpclv1_TriggerSector_vs_Pad_triggerBCid_inout -> Fill(float((i_padid + 1)), float(i_sectorid - 32), float(m_Diff_triggerBCid)); + } + + } // End Loop over the trigger hits of each sector // Fill the trigger hits per event per sector histogram here if (m_nTriggerHitsperSector > 0) { @@ -326,14 +319,14 @@ StatusCode RpcLv1RawDataSectorLogic::fillHistograms( ) //per lumi block if(m_lumiblockhist)m_rpclv1_TriggerHitsperEventperTriggerSector_LB -> Fill(float(i_sectorid), float(m_nTriggerHitsperSector)); } - + } // End Loop over the Sector Logic containers - - // Fill the trigger hits per event histogram here - m_rpclv1_TriggerHitsperEvent -> Fill(float(m_nTriggerHits)); } + // Fill the trigger hits per event histogram here + m_rpclv1_TriggerHitsperEvent -> Fill(float(m_nTriggerHits)); + } // AthenaMonManager::tier0 || AthenaMonManager::tier0Raw return sc; diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataValAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataValAlg.cxx index feab3818dfa40801cdbf8884a934253912fce056..b26f5b77f3310d2a6fc7d29bd0999e966dc465ab 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataValAlg.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataValAlg.cxx @@ -14,7 +14,6 @@ #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/AlgFactory.h" -#include "xAODEventInfo/EventInfo.h" #include "MuonDQAUtils/MuonChamberNameConverter.h" #include "MuonDQAUtils/MuonChambersRange.h" #include "MuonDQAUtils/MuonCosmicSetup.h" @@ -74,19 +73,6 @@ StatusCode RpcLv1RawDataValAlg::initialize() ATH_MSG_INFO ( "RpcLv1ReduceNbins " << m_rpclv1reducenbins ); StatusCode sc; - // Store Gate store - sc = serviceLocator()->service("StoreGateSvc", m_eventStore); - if (sc != StatusCode::SUCCESS ) { - ATH_MSG_ERROR ( " Cannot get StoreGateSvc " ); - return sc ; - } - // retrieve the active store - sc = serviceLocator()->service("ActiveStoreSvc", m_activeStore); - if (sc != StatusCode::SUCCESS ) { - ATH_MSG_ERROR ( " Cannot get ActiveStoreSvc " ); - return sc ; - } - // Initialize the IdHelper StoreGateSvc* detStore = 0; sc = service("DetectorStore", detStore); @@ -137,23 +123,20 @@ StatusCode RpcLv1RawDataValAlg::initialize() hardware_name_list.push_back("XXX"); ManagedMonitorToolBase::initialize().ignore(); // Ignore the checking code; + + ATH_CHECK(m_eventInfo.initialize()); + ATH_CHECK(m_rpcRdoKey.initialize()); return StatusCode::SUCCESS; } StatusCode RpcLv1RawDataValAlg::StoreTriggerType() { - const xAOD::EventInfo* eventInfo = nullptr; - StatusCode sc = StatusCode::SUCCESS; - sc = m_eventStore->retrieve(eventInfo); - if ( sc.isFailure() ) { - ATH_MSG_ERROR ( "Could not find eventInfo " ); - return sc; - }else {ATH_MSG_DEBUG ( "RpcLv1RawDataValAlg::retrieved eventInfo" );} + SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo); m_trigtype = eventInfo->level1TriggerType(); - return sc; + return StatusCode::SUCCESS; } @@ -191,12 +174,7 @@ StatusCode RpcLv1RawDataValAlg::fillHistograms() // Prepare the retrieval of the RpcPadContainer - const RpcPadContainer* rpcRDO = nullptr; - sc= (*m_activeStore)->retrieve(rpcRDO,"RPCPAD"); - if (sc.isFailure()) { - ATH_MSG_ERROR ( "Could not find RPC Pads" ); - return sc; - } + SG::ReadHandle<RpcPadContainer> rpcRDO(m_rpcRdoKey); // begin loop to get trigger time for (RpcPadContainer::const_iterator rdoColli = rpcRDO->begin(); rdoColli!=rpcRDO->end(); ++rdoColli) diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcRawDataValAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcRawDataValAlg.cxx index 39dcb257e3399ede4859f039a44313bc2e78c672..e5555a53836ceeb8cb32b82397f386e6fc2d3d05 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcRawDataValAlg.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcRawDataValAlg.cxx @@ -35,10 +35,6 @@ #include "MuonDigitContainer/RpcDigitContainer.h" -#include "MuonPrepRawData/MuonPrepDataContainer.h" - -#include "MuonTrigCoinData/RpcCoinDataContainer.h" - #include "MuonDQAUtils/MuonChamberNameConverter.h" #include "MuonDQAUtils/MuonChambersRange.h" #include "MuonDQAUtils/MuonCosmicSetup.h" @@ -93,9 +89,6 @@ RpcRawDataValAlg::RpcRawDataValAlg( const std::string & type, const std::string declareProperty("lv1Thres_2", m_lv1Thres_2 = 2 ); declareProperty("lv1Thres_3", m_lv1Thres_3 = 3 ); declareProperty("doCoolDB", m_doCoolDB = true ); - declareProperty("ClusterContainer", m_clusterContainerName = "rpcClusters" ); - declareProperty("RpcPrepDataContainer",m_key_rpc = "RPC_Measurements" ); - declareProperty("RPCTriggerContainer", m_key_trig = "RPC_triggerHits" ); declareProperty("MinimunEntries", m_MinEntries = 10 ); // min entries required for summary plot declareProperty("LB_Nbins" , m_LB_Nbins = 300 ); declareProperty("LBmax" , m_LBmax = 1500 ); @@ -130,19 +123,6 @@ StatusCode RpcRawDataValAlg::initialize(){ StatusCode sc; - // Store Gate store - sc = serviceLocator()->service("StoreGateSvc", m_eventStore); - if (sc != StatusCode::SUCCESS ) { - ATH_MSG_ERROR ( " Cannot get StoreGateSvc " ); - return sc ; - } - // retrieve the active store - sc = serviceLocator()->service("ActiveStoreSvc", m_activeStore); - if (sc != StatusCode::SUCCESS ) { - ATH_MSG_ERROR ( " Cannot get ActiveStoreSvc " ); - return sc ; - } - // Initialize the IdHelper StoreGateSvc* detStore = 0; sc = service("DetectorStore", detStore); @@ -245,6 +225,10 @@ StatusCode RpcRawDataValAlg::initialize(){ m_first = true ; + ATH_CHECK(m_eventInfo.initialize()); + ATH_CHECK( m_key_rpc.initialize()); + ATH_CHECK( m_key_trig.initialize()); + ATH_CHECK(m_clusterContainerName.initialize(m_doClusters)); return StatusCode::SUCCESS; } @@ -263,31 +247,18 @@ StatusCode RpcRawDataValAlg::fillHistograms() int lumiblock = -1 ; - const DataHandle<xAOD::EventInfo> eventInfo; - StatusCode sc = m_eventStore->retrieve( eventInfo ); - if (sc.isFailure()) { - ATH_MSG_INFO ( "no event info" ); - return StatusCode::SUCCESS; - } - else { + SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo); - lumiblock = eventInfo->lumiBlock() ; + lumiblock = eventInfo->lumiBlock() ; - ATH_MSG_DEBUG ( "event LB " << lumiblock ); - - } + ATH_MSG_DEBUG ( "event LB " << lumiblock ); float AverageLuminosityWeight = 1; - const Muon::RpcPrepDataContainer* rpc_container; - sc = (*m_activeStore)->retrieve(rpc_container, m_key_rpc); - if (sc.isFailure()) { - ATH_MSG_ERROR ( " Cannot retrieve RpcPrepDataContainer " << m_key_rpc ); - return sc; - } + SG::ReadHandle<Muon::RpcPrepDataContainer> rpc_container(m_key_rpc); ATH_MSG_DEBUG ( "****** rpc->size() : " << rpc_container->size()) ; @@ -1222,13 +1193,8 @@ StatusCode RpcRawDataValAlg::fillHistograms() // loop on trigger hits if(m_doTriggerHits){ - const Muon::RpcCoinDataContainer* rpc_trigcontainer; + SG::ReadHandle<Muon::RpcCoinDataContainer> rpc_trigcontainer(m_key_trig ); - sc = (*m_activeStore)->retrieve(rpc_trigcontainer, m_key_trig ); - if (sc.isFailure()) { - ATH_MSG_ERROR ( " Cannot retrieve RPC trigger Hits container " << m_key_trig ); - return sc; - } Muon::RpcCoinDataContainer::const_iterator trigcontainerIt; for ( trigcontainerIt = rpc_trigcontainer->begin(); trigcontainerIt != rpc_trigcontainer->end(); ++trigcontainerIt ) { @@ -1832,25 +1798,12 @@ StatusCode RpcRawDataValAlg::fillHistograms() m_rpcTriggerHitsPerEvents_Phi_HighPt -> Fill (NTrigger_Phi_HighPt) ; } // begin cluster monitoring - const Muon::RpcPrepDataContainer* rpc_clusterContainer; - bool Clus_Retr = false; - if(m_eventStore->contains<Muon::RpcPrepDataContainer>(m_clusterContainerName)){ - sc = m_eventStore->retrieve(rpc_clusterContainer, m_clusterContainerName); - if ( sc.isSuccess() ) { - Clus_Retr = true ; - } - else { - ATH_MSG_DEBUG ( " RpcRawDataValAlg :: Cannot retrieve the RPC cluster container " ); - Clus_Retr = false; - return sc; - } - } - else { Clus_Retr = false;} - if (m_doClusters && Clus_Retr ) + if (m_doClusters ) { ATH_MSG_DEBUG ( "Start RPC Cluster Monitoring" ); - + SG::ReadHandle<Muon::RpcPrepDataContainer> rpc_clusterContainer(m_clusterContainerName); + // RPC clusters histograms m_nClus=0;