diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RPCMonitorAlgorithm.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RPCMonitorAlgorithm.h deleted file mode 100644 index 91f354266518705758bc4a169228dc1d7be5976c..0000000000000000000000000000000000000000 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RPCMonitorAlgorithm.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef RPCMONITORDQ_RPCMONITORALGORITHM_H -#define RPCMONITORDQ_RPCMONITORALGORITHM_H - -#include "AthenaMonitoring/AthMonitorAlgorithm.h" -#include "AthenaMonitoringKernel/Monitored.h" - -#include "xAODMuon/MuonContainer.h" -#include "xAODMuon/MuonAuxContainer.h" -#include "MuonIdHelpers/RpcIdHelper.h" -#include "MuonRDO/RpcPadContainer.h" -#include "xAODTrigger/MuonRoIContainer.h" - -class RPCMonitorAlgorithm : public AthMonitorAlgorithm -{ - - public: - - RPCMonitorAlgorithm(const std::string& name, ISvcLocator* svcLocator); - virtual ~RPCMonitorAlgorithm(); - virtual StatusCode initialize() override; - virtual StatusCode fillHistograms( const EventContext& ctx ) const override; - - private: - - SG::ReadHandleKey<xAOD::MuonContainer> m_MuonContainerKey - { this, "MuonContainerKey", "Muons", "Key for Muon Containers" }; - SG::ReadHandleKey<RpcPadContainer> m_rpcPadContainerKey - { this, "RpcPadContainerKey", "RPCPAD", "Key for Rpc Pad" }; - SG::ReadHandleKey<xAOD::MuonRoIContainer> m_l1RoiContainerKey - { this, "L1RoiContainerKey", "LVL1MuonRoIs", "Key for L1 ROIs" }; - - // - // Define configurable cuts - // - - // cuts for muon and roi matching - Gaudi::Property<float> m_minRoIDR {this, "MinRoIDR", 0.3}; - - // cuts for the selected muons - Gaudi::Property<float> m_minPt {this, "MinPt", 2.0e3}; - Gaudi::Property<float> m_minEta {this, "MinEta", 0.0}; - Gaudi::Property<float> m_maxEta {this, "MaxEta", 1.05}; - - // xAOD::Muon::Quality m_quality; - Gaudi::Property<int> m_quality {this, "MuQuality", 1}; -}; - - -#endif diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcTrackAnaAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcTrackAnaAlg.h index 75276b004c8c1b46c05e21898c7618e5ab6c9c03..014737519c693a8ad504cacc9a56a858d78eb22b 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcTrackAnaAlg.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcTrackAnaAlg.h @@ -13,8 +13,6 @@ #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" #include "StoreGate/ReadHandleKey.h" -// #include "StoreGate/ReadCondHandleKey.h" -// #include "StoreGate/StoreGateSvc.h" #include "EventInfo/EventInfo.h" // ATLAS @@ -55,6 +53,8 @@ class RpcTrackAnaAlg : public AthMonitorAlgorithm StatusCode initArrayHistosMap(); StatusCode fillMuonExtrapolateEff(const EventContext& ctx) const; + StatusCode fillHistPRD(const EventContext& ctx) const; + StatusCode triggerMatching(const xAOD::Muon* , const std::vector<TagDef>& ) const; StatusCode extrapolate2RPC(const xAOD::TrackParticle *track, const Trk::PropDirection direction, std::vector<GasGapResult>& results) const; @@ -65,7 +65,7 @@ class RpcTrackAnaAlg : public AthMonitorAlgorithm private: BooleanProperty m_plotMuonEff{this, "plotMuonEff", false, "switch to plot histograms for Muon Efficiency"}; - BooleanProperty m_analyseTrack{this, "analyseTrack", false, "switch to analysis track, extrapolate track to RPC"}; + BooleanProperty m_plotPRD{this, "plotPRD", false, "switch to plot histograms for Prepare Data objects"}; BooleanProperty m_useAODParticle{this, "useAODParticle", false, "use AOD Particle"}; DoubleProperty m_avrLumiThr{this, "avrLumiThr", 10., "Thrshold of average luminosity per Luminosity block"}; @@ -99,8 +99,9 @@ class RpcTrackAnaAlg : public AthMonitorAlgorithm /////////////////////////////////////////////////////////////////// ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}; + SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo {this,"EventInfo","EventInfo","event info"}; + const RpcIdHelper *m_rpcIdHelper; - const MuonGM::MuonDetectorManager *m_muonMgr; ToolHandle<Trk::IExtrapolator> m_extrapolator{this,"TrackExtrapolator","Trk::Extrapolator/AtlasExtrapolator","Track extrapolator"}; @@ -112,7 +113,6 @@ class RpcTrackAnaAlg : public AthMonitorAlgorithm std::vector<TagDef> m_trigTagDefs; std::vector<std::shared_ptr<GasGapData>> m_gasGapData; - }; #endif diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RpcMonitorAlgorithm.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RpcMonitorAlgorithm.py index df721d812ece2b87d7cc3117aefdb7fded6577e9..f9ecbbebdc1081f24e2ee44f85eb050425bec2ba 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RpcMonitorAlgorithm.py +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RpcMonitorAlgorithm.py @@ -22,111 +22,124 @@ def RpcMonitoringConfig(inputFlags): helper = AthMonitorCfgHelper(inputFlags,'RpcMonitoringCfg') ###################################################################################################### - ## RpcOccupancyAnalysis + ## RpcTrackAnaAlgAlg ###################################################################################################### - RpcOccupancyAnalysis=CompFactory.RpcOccupancyAnalysis + from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg + extrapolator = result.popToolsAndMerge(AtlasExtrapolatorCfg(inputFlags)) - rpcOccupancyAlg = helper.addAlgorithm(RpcOccupancyAnalysis, "RpcOccupancyAnalysisAlg") - # set properties of algorithm RpcOccupancyAnalysis - rpcOccupancyAlg.plotPRD = True + rpcTrackAnaAlg = helper.addAlgorithm(CompFactory.RpcTrackAnaAlg, "RpcTrackAnaAlgAlg", TrackExtrapolator = extrapolator) - rpcOccupancyAlg.TagTrigList = 'HLT_mu26_ivarmedium' - myGroup_occup = helper.addGroup(rpcOccupancyAlg, 'RpcOccupancyAnalysis', 'Muon/MuonRawDataMonitoring/RPC/') + from InDetRecExample.TrackingCommon import use_tracking_geometry_cond_alg + if use_tracking_geometry_cond_alg: + from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig import TrackingGeometryCondAlgCfg + result.merge( TrackingGeometryCondAlgCfg(inputFlags ) ) + else: + from TrkConfig.AtlasTrackingGeometrySvcConfig import TrackingGeometrySvcCfg + result.merge(TrackingGeometrySvcCfg(inputFlags)) - myGroup_occup.defineHistogram('run;Run', + rpcTrackAnaAlg.plotMuonEff = True + rpcTrackAnaAlg.plotPRD = True + + rpcTrackAnaAlg.TagTrigList = 'HLT_mu26_ivarmedium' + rpcTrackAnaAlg.TagAndProbe = False + rpcTrackAnaAlg.TagAndProbeZmumu = False + + ###################################################################################################### + ## Occupancy histograms + ###################################################################################################### + myGroup_track = helper.addGroup(rpcTrackAnaAlg, 'RpcTrackAnaAlg', 'Muon/MuonRawDataMonitoring/RPC/') + + myGroup_track.defineHistogram('run;Run', title='Run Number;run;Events', type='TH1I', path='RpcOccupancy', xbins=800000,xmin=200000.5,xmax=1000000.5) - myGroup_occup.defineHistogram('evtLB', + myGroup_track.defineHistogram('evtLB', title='Number of Event;Luminosity Block;N Event', type='TH1I', path='RpcOccupancy', xbins=1200, xmin=0.5, xmax=1200.5) - myGroup_occup.defineHistogram('prdTime', + myGroup_track.defineHistogram('prdTime', title="Number of RPC Prepare Data;Time;N RPC Prepare Data", type='TH1D', path='RpcOccupancy', xbins=67, xmin=-104.6875, xmax=104.6875) - myGroup_occup.defineHistogram('prd_sec,prd_layer;NPRDHit_sectorVSlayer', + myGroup_track.defineHistogram('prd_sec,prd_layer;NPRDHit_sectorVSlayer', title="NPRDHit_sectorVSlayer;Sector;layer((dbR-1)*2+gasGap);NHit", type='TH2I', path='RpcOccupancy', xbins=33, xmin=-16.5, xmax=16.5, ybins=8, ymin=0.5, ymax=8.5) - myGroup_occup.defineHistogram('prd_sec_1214,prd_layer_1214;NPRDHit_sectorVSlayer_Sector1214', + myGroup_track.defineHistogram('prd_sec_1214,prd_layer_1214;NPRDHit_sectorVSlayer_Sector1214', title="NPRDHit_sectorVSlayer_Sector1214;Sector;layer((dbR-1)*2+gasGap);NHit", type='TH2I', path='RpcOccupancy', xbins=[-14.5,-13.5,-12.5,-11.5, 11.5, 12.5, 13.5, 14.5], ybins=8, ymin=0.5, ymax=8.5) - myGroup_occup.defineHistogram('prd_sec_eta,prd_layer_eta;NPRDHit_sectorVSlayer_Eta', + myGroup_track.defineHistogram('prd_sec_eta,prd_layer_eta;NPRDHit_sectorVSlayer_Eta', title="NPRDHit_sectorVSlayer_eta;Sector;layer((dbR-1)*2+gasGap);NHit", type='TH2I', path='RpcOccupancy', xbins=33, xmin=-16.5, xmax=16.5, ybins=8, ymin=0.5, ymax=8.5) - myGroup_occup.defineHistogram('prd_sec_phi,prd_layer_phi;NPRDHit_sectorVSlayer_Phi', + myGroup_track.defineHistogram('prd_sec_phi,prd_layer_phi;NPRDHit_sectorVSlayer_Phi', title="NPRDHit_sectorVSlayer_phi;Sector;layer((dbR-1)*2+gasGap);NHit", type='TH2I', path='RpcOccupancy', xbins=33, xmin=-16.5, xmax=16.5, ybins=8, ymin=0.5, ymax=8.5) - myGroup_occup.defineHistogram('StationName,panelInd_geo;NPRDHit_stationName_vs_panelIndex', + myGroup_track.defineHistogram('StationName,panelInd;NPRDHit_stationName_vs_panelIndex', title='StationName_vs_panelIndex;StationName;Panel Index;NHit', type='TH2I', path='RpcOccupancy', xbins=53, xmin=0.5, xmax=53.5, ybins=8592, ymin=-0.5, ymax=8591.5) - myGroup_occup.defineHistogram('StationEta,panelInd_geo;NPRDHit_stationEta_vs_panelIndex', + myGroup_track.defineHistogram('StationEta,panelInd;NPRDHit_stationEta_vs_panelIndex', title='StationEta_vs_panelIndex;StationEta;Panel Index;NHit', type='TH2I', path='RpcOccupancy', xbins=17, xmin=-8.5, xmax=8.5, ybins=8592, ymin=-0.5, ymax=8591.5) - myGroup_occup.defineHistogram('StationPhi,panelInd_geo;NPRDHit_stationPhi_vs_panelIndex', + myGroup_track.defineHistogram('StationPhi,panelInd;NPRDHit_stationPhi_vs_panelIndex', title='StationPhi_vs_panelIndex;StationPhi;Panel Index;NHit', type='TH2I', path='RpcOccupancy', xbins=8, xmin=0.5, xmax=8.5, ybins=8592, ymin=-0.5, ymax=8591.5) - myGroup_occup.defineHistogram('DoubletR,panelInd_geo;NPRDHit_doubletR_vs_panelIndex', + myGroup_track.defineHistogram('DoubletR,panelInd;NPRDHit_doubletR_vs_panelIndex', title='DoubletR_vs_panelIndex;DoubletR;Panel Index;NHit', type='TH2I', path='RpcOccupancy', xbins=2, xmin=0.5, xmax=2.5, ybins=8592, ymin=-0.5, ymax=8591.5) - myGroup_occup.defineHistogram('DoubletZ,panelInd_geo;NPRDHit_doubletZ_vs_panelIndex', + myGroup_track.defineHistogram('DoubletZ,panelInd;NPRDHit_doubletZ_vs_panelIndex', title='DoubletZ_vs_panelIndex;DoubletZ;Panel Index;NHit', type='TH2I', path='RpcOccupancy', xbins=3, xmin=0.5, xmax=3.5, ybins=8592, ymin=-0.5, ymax=8591.5) - myGroup_occup.defineHistogram('DoubletPhi,panelInd_geo;NPRDHit_doubletPhi_vs_panelIndex', + myGroup_track.defineHistogram('DoubletPhi,panelInd;NPRDHit_doubletPhi_vs_panelIndex', title='DoubletPhi_vs_panelIndex;DoubletPhi;Panel Index;NHit', type='TH2I', path='RpcOccupancy', xbins=2, xmin=0.5, xmax=2.5, ybins=8592, ymin=-0.5, ymax=8591.5) - myGroup_occup.defineHistogram('GasGap,panelInd_geo;NPRDHit_gasgap_vs_panelIndex', + myGroup_track.defineHistogram('GasGap,panelInd;NPRDHit_gasgap_vs_panelIndex', title='GasGap_vs_panelIndex;GasGap;Panel Index;NHit', type='TH2I', path='RpcOccupancy', xbins=2, xmin=0.5, xmax=2.5, ybins=8592, ymin=-0.5, ymax=8591.5) - myGroup_occup.defineHistogram('MeasPhi,panelInd_geo;NPRDHit_measPhi_vs_panelIndex', + myGroup_track.defineHistogram('MeasPhi,panelInd;NPRDHit_measPhi_vs_panelIndex', title='MeasPhi_vs_panelIndex;MeasPhi;Panel Index;NHit', type='TH2I', path='RpcOccupancy', xbins=2, xmin=-0.5, xmax=1.5, ybins=8592, ymin=-0.5, ymax=8591.5) - # stationName = {'2':'BML', '3':'BMS', '4':'BOL', '5':'BOS', '8':'BMF' , '9':'BOF', '10':'BOG', '53':'BME'} - timeTags = ['All', 'B3', 'C1', 'A3'] # B3: 3 BC before BC0; C1: BC0; A3: 3 BC after BC0 - array_timeTags = helper.addArray([timeTags], rpcOccupancyAlg, 'RpcOccupancyAnalysis', 'Muon/MuonRawDataMonitoring/RPC/') - array_timeTags.defineHistogram('LB,panelInd;NPRDHit_Panels', - title='{0}_Number of RPC Prepare Data;Luminosity Block;Panel Index;NHit', + myGroup_track.defineHistogram('LB,panelInd;NPRDHit_Panels_All', + title='Number of RPC Prepare Data;Luminosity Block;Panel Index;NHit', type='TH2I', path='RpcOccupancy', xbins=1200, xmin=0.5, xmax=1200.5, ybins=8592, ymin=-0.5, ymax=8591.5) - array_timeTags.defineHistogram('LB;NPRDHitVSLB', - title="{0}_Number of RPC Prepare Data;Luminosity Block;NHit", + myGroup_track.defineHistogram('LB;NPRDHitVSLB_All', + title="Number of RPC Prepare Data;Luminosity Block;NHit", type='TH1I', path='RpcOccupancy', xbins=1200, xmin=0.5, xmax=1200.5) @@ -134,28 +147,6 @@ def RpcMonitoringConfig(inputFlags): ###################################################################################################### ## Rpc Track Analysis ###################################################################################################### - from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg - extrapolator = result.popToolsAndMerge(AtlasExtrapolatorCfg(inputFlags)) - - rpcTrackAnaAlg = helper.addAlgorithm(CompFactory.RpcTrackAnaAlg, "RpcTrackAnaAlgAlg", TrackExtrapolator = extrapolator) - - from InDetRecExample.TrackingCommon import use_tracking_geometry_cond_alg - if use_tracking_geometry_cond_alg: - from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig import TrackingGeometryCondAlgCfg - result.merge( TrackingGeometryCondAlgCfg(inputFlags ) ) - else: - from TrkConfig.AtlasTrackingGeometrySvcConfig import TrackingGeometrySvcCfg - result.merge(TrackingGeometrySvcCfg(inputFlags)) - - rpcTrackAnaAlg.plotMuonEff = True - rpcTrackAnaAlg.analyseTrack= True - - rpcTrackAnaAlg.TagTrigList = 'HLT_mu26_ivarmedium' - rpcTrackAnaAlg.TagAndProbe = False - rpcTrackAnaAlg.TagAndProbeZmumu = False - - myGroup_track = helper.addGroup(rpcTrackAnaAlg, 'RpcTrackAnaAlg', 'Muon/MuonRawDataMonitoring/RPC/') - trackPath = 'TrackMatch' myGroup_track.defineHistogram('hitMultiplicity_eta;HitMultiplicity_eta', type='TH1I', diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.cxx index 6fa28796cbd93d3eb48608027282f8e0a8a0cd5c..57519d529272ea137d6a7238d5ef9ac8444fea31 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.cxx @@ -26,13 +26,12 @@ RpcTrackAnaAlg::~RpcTrackAnaAlg () {} //================================================================================================ StatusCode RpcTrackAnaAlg::initialize () { - using namespace Monitored; - ATH_MSG_INFO(" RpcTrackAnaAlg initialize begin "); ATH_CHECK( AthMonitorAlgorithm::initialize()); ATH_CHECK( detStore()->retrieve(m_muonMgr) ); ATH_CHECK( m_idHelperSvc.retrieve()); + ATH_CHECK( m_eventInfo.initialize() ); m_dataType = dataTypeStringToEnum(m_dataTypeStr); ATH_CHECK( m_lumiDataKey.initialize (m_useLumi) ); @@ -149,6 +148,11 @@ StatusCode RpcTrackAnaAlg::initTrigTag() //================================================================================================ StatusCode RpcTrackAnaAlg::fillHistograms(const EventContext& ctx) const { + using namespace Monitored; + + SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo, ctx); + int e_lumiBlock = eventInfo->lumiBlock(); + if (!m_lumiDataKey.empty() && ! m_lbDurationDataKey.empty()) { SG::ReadCondHandle<LuminosityCondData> lumi(m_lumiDataKey, ctx); @@ -168,9 +172,20 @@ StatusCode RpcTrackAnaAlg::fillHistograms(const EventContext& ctx) const ATH_CHECK( fillMuonExtrapolateEff(ctx) ); } + + if(m_plotPRD) { + ATH_CHECK( fillHistPRD(ctx) ); + } + + auto tool = getGroup(m_packageName); + auto evtLB = Scalar<int>("evtLB", e_lumiBlock); + auto run = Scalar<int>("run", eventInfo->runNumber()); + fill(tool, evtLB, run); + return StatusCode::SUCCESS; } +//================================================================================================ StatusCode RpcTrackAnaAlg::fillMuonExtrapolateEff(const EventContext& ctx) const { using namespace Monitored; @@ -232,7 +247,6 @@ StatusCode RpcTrackAnaAlg::fillMuonExtrapolateEff(const EventContext& ctx) const if( mu1_it->muon->charge() == mu2_it->muon->charge() ) continue; double dimuon_mass = (mu2_it->fourvec + mu1_it->fourvec).M(); - // if(std::abs( dimuon_mass - m_zMass.value()) > m_zMassWindow.value() )continue; if(dimuon_mass>m_zMass_lowLimit && dimuon_mass<m_zMass_upLimit) { mu1_it->isZmumu=true; mu2_it->isZmumu=true; @@ -240,8 +254,7 @@ StatusCode RpcTrackAnaAlg::fillMuonExtrapolateEff(const EventContext& ctx) const } } - // if (m_analyseTrack && mu1_it->isolated && mu1_it->isZmumu) { - if (m_analyseTrack) { + if ( mu1_it->isolated && mu1_it->isZmumu ) { const xAOD::TrackParticle* track = mu1_it->muon->trackParticle(xAOD::Muon::MuonSpectrometerTrackParticle); if(!track) continue; @@ -254,6 +267,124 @@ StatusCode RpcTrackAnaAlg::fillMuonExtrapolateEff(const EventContext& ctx) const return StatusCode::SUCCESS; } +//================================================================================================ +StatusCode RpcTrackAnaAlg::fillHistPRD(const EventContext& ctx) const +{ + using namespace Monitored; + // + // Read RPC Prepare data + // + + SG::ReadHandle<Muon::RpcPrepDataContainer> rpcContainer(m_rpcPrdKey, ctx); + const RpcIdHelper& rpcIdHelper = m_idHelperSvc->rpcIdHelper(); + + SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo, ctx); + const int i_lb = eventInfo->lumiBlock(); + std::vector<double> v_prdTime = {}; + + auto prd_sec_all = Scalar<int>("prd_sec", 0 ); + auto prd_layer_all = Scalar<int>("prd_layer", 0 ); + auto prd_sec_1214 = Scalar<int>("prd_sec_1214", 0 ); + auto prd_layer_1214 = Scalar<int>("prd_layer_1214", 0 ); + + auto prd_sec_all_eta = Scalar<int>("prd_sec_eta", 0 ); + auto prd_layer_all_eta = Scalar<int>("prd_layer_eta", 0 ); + auto prd_sec_all_phi = Scalar<int>("prd_sec_phi", 0 ); + auto prd_layer_all_phi = Scalar<int>("prd_layer_phi", 0 ); + + auto i_prd_LB = Scalar<int>("LB", i_lb ); + auto i_panelIndex = Scalar<int>("panelInd", 0 ); + + auto i_prd_stationName = Scalar<int>("StationName", 0 ); + auto i_prd_stationEta = Scalar<int>("StationEta", 0 ); + auto i_prd_stationPhi = Scalar<int>("StationPhi", 0 ); + auto i_prd_doubletR = Scalar<int>("DoubletR", 0 ); + auto i_prd_doubletZ = Scalar<int>("DoubletZ", 0 ); + auto i_prd_doubletPhi = Scalar<int>("DoubletPhi", 0 ); + auto i_prd_gasGap = Scalar<int>("GasGap", 0 ); + auto i_prd_measPhi = Scalar<int>("MeasPhi", -1); + + auto tool = getGroup(m_packageName); + + int panel_index; + std::pair<int, int> sec_layer; + + // + // loop on RpcPrepData container + // + for(const Muon::RpcPrepDataCollection *rpcCollection: *rpcContainer) { + if(!rpcCollection) { + continue; + } + + // + // loop on RpcPrepData + // + for(const Muon::RpcPrepData* rpcData: *rpcCollection) { + if(!rpcData) { + continue; + } + + Identifier id = rpcData->identify(); + const int measphi = rpcIdHelper.measuresPhi(id); + + auto temp_panel = std::make_unique<RpcPanel>(id, rpcIdHelper); + + std::map<Identifier, std::shared_ptr<RpcPanel>>::const_iterator i_panel=m_rpcPanelMap.find(temp_panel->panelId); + if (i_panel == m_rpcPanelMap.end()){ + ATH_MSG_WARNING( "The panelID corresponding prd hit does NOT link to a known Panel !!!" ); + continue; + } + else{ + panel_index = i_panel->second->panel_index; + } + + sec_layer = temp_panel->getSectorLayer(); + prd_sec_all = sec_layer.first; + prd_layer_all = sec_layer.second; + + if (std::abs(sec_layer.first)==12 || std::abs(sec_layer.first)==14){ + prd_sec_1214 = sec_layer.first; + prd_layer_1214 = sec_layer.second; + } + + fill(tool, prd_sec_all, prd_layer_all, prd_sec_1214, prd_layer_1214); + + if (measphi == 0){ + prd_sec_all_eta = sec_layer.first; + prd_layer_all_eta = sec_layer.second; + fill(tool, prd_sec_all_eta, prd_layer_all_eta); + } + else{ + prd_sec_all_phi = sec_layer.first; + prd_layer_all_phi = sec_layer.second; + fill(tool, prd_sec_all_phi, prd_layer_all_phi); + } + + i_panelIndex = panel_index; + fill(tool, i_prd_LB, i_panelIndex); + + i_prd_stationName = i_panel->second->stationName; + i_prd_stationEta = i_panel->second->stationEta ; + i_prd_stationPhi = i_panel->second->stationPhi ; + i_prd_doubletR = i_panel->second->doubletR ; + i_prd_doubletZ = i_panel->second->doubletZ ; + i_prd_doubletPhi = i_panel->second->doubletPhi ; + i_prd_gasGap = i_panel->second->gasGap ; + i_prd_measPhi = i_panel->second->measPhi ; + fill(tool, i_panelIndex, i_prd_LB, i_prd_stationName, i_prd_stationEta, i_prd_stationPhi, i_prd_doubletR, i_prd_doubletZ, i_prd_doubletPhi, i_prd_gasGap, i_prd_measPhi); + + v_prdTime.push_back(rpcData->time()); + } // loop on RpcPrepData + } // loop on RpcPrepData container + + auto prdTimeCollection = Collection("prdTime", v_prdTime); + fill(tool, prdTimeCollection); + + ATH_MSG_DEBUG( " fillHistPRD finished " ); + return StatusCode::SUCCESS; +} + //================================================================================================ StatusCode RpcTrackAnaAlg::triggerMatching(const xAOD::Muon* offline_muon, const std::vector<TagDef>& list_of_triggers ) const { @@ -313,7 +444,7 @@ StatusCode RpcTrackAnaAlg::extrapolate2RPC(const xAOD::TrackParticle *track, con // // Iterate over RPC readout elements and compute intersections with each gas gap // - for(const std::shared_ptr<GasGapData>& gap: m_gasGapData) { + for(const std::shared_ptr<GasGapData> gap: m_gasGapData) { ExResult result(gap->gapid, direction); // Compute track distance to the center of ReadoutElement and to the gas gap surface @@ -330,7 +461,7 @@ StatusCode RpcTrackAnaAlg::extrapolate2RPC(const xAOD::TrackParticle *track, con if(m_minDRTrackToReadoutElement > 0.0 && result.minTrackReadoutDR > m_minDRTrackToReadoutElement) { continue; } - + if(m_minDRTrackToGasGap > 0.0 && result.minTrackGasGapDR > m_minDRTrackToGasGap) { continue; } @@ -687,4 +818,4 @@ bool RpcTrackAnaAlg::IsNearbyHit(const std::vector<const Muon::RpcPrepData*> &cl } return false; -} +} \ No newline at end of file diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/components/RpcRawDataMonitoring_entries.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/components/RpcRawDataMonitoring_entries.cxx index 15f36e5fc8f793f5eee44fba29607ca4d3553e82..584ce4fa9c05a011d86da59fbda303ed20474461 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/components/RpcRawDataMonitoring_entries.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/components/RpcRawDataMonitoring_entries.cxx @@ -3,8 +3,6 @@ #include "RpcRawDataMonitoring/RpcLv1RawDataSectorLogic.h" #include "RpcRawDataMonitoring/RpcLv1RawDataEfficiency.h" #include "RpcRawDataMonitoring/RPCStandaloneTracksMon.h" -#include "RpcRawDataMonitoring/RPCMonitorAlgorithm.h" -#include "RpcRawDataMonitoring/RpcOccupancyAnalysis.h" #include "RpcRawDataMonitoring/RpcTrackAnaAlg.h" #include "RpcRawDataMonitoring/RPCLv1AnaAlg.h" @@ -13,7 +11,5 @@ DECLARE_COMPONENT( RpcLv1RawDataValAlg ) DECLARE_COMPONENT( RpcLv1RawDataSectorLogic ) DECLARE_COMPONENT( RpcLv1RawDataEfficiency ) DECLARE_COMPONENT( RPCStandaloneTracksMon ) -DECLARE_COMPONENT( RPCMonitorAlgorithm ) -DECLARE_COMPONENT( RpcOccupancyAnalysis ) DECLARE_COMPONENT( RpcTrackAnaAlg ) DECLARE_COMPONENT( RPCLv1AnaAlg )