diff --git a/DataQuality/DataQualityConfigurations/config/RPC/collisions_run.config b/DataQuality/DataQualityConfigurations/config/RPC/collisions_run.config index 9c7cf1bd8987b20db91757765abc7b50d3696a7c..35e4e6ec5b0bcdf16a0ad3aece6eac6c6da8161c 100644 --- a/DataQuality/DataQualityConfigurations/config/RPC/collisions_run.config +++ b/DataQuality/DataQualityConfigurations/config/RPC/collisions_run.config @@ -35,16 +35,9 @@ output top_level { output Occupancy { output Hits { } - output Chi2_HitRateFit { - } - output P0_HitRateFit { - } - output P1_HitRateFit { - } output MeanRate_HitRateFit { } - output PredictedRate_HitRateFit { - } + } output MuonDetectionEfficiency { @@ -79,7 +72,18 @@ output top_level { weight = 0.0 algorithm = RPC_AlwaysGreenSummary + output Global { + } + output Occupancy { + output Chi2_HitRateFit { + } + output P0_HitRateFit { + } + output P1_HitRateFit { + } + output PredictedRate_HitRateFit { + } output NSectorLayer_vs_FitVar { } output NPanel_vs_FitVar { @@ -973,6 +977,20 @@ output top_level { } } } + + output ClusterSize { + } + + output HitMultiplicity { + } + + output Noise { + output OuttimeHitFraction { + } + + output OuttimeOnTrackHitFraction { + } + } } #Expert } #RPC } #MuonDetectors @@ -1177,56 +1195,72 @@ dir Muon { } hist p0_layer[1,2]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/P0_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/P0_HitRateFit algorithm = alg_hitRate_p0_2D_layer12 } hist p0_layer[3,4]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/P0_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/P0_HitRateFit algorithm = alg_hitRate_p0_2D_layer34 } hist p0_layer[5,6]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/P0_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/P0_HitRateFit algorithm = alg_hitRate_p0_2D_layer56 } + hist p0_layer[7,8]_measPhi[0,1] { + output = MuonDetectors/RPC/Expert/Occupancy/P0_HitRateFit + algorithm = alg_hitRate_p0_2D_layer78 + } hist p1_layer[1,2]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/P1_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/P1_HitRateFit algorithm = alg_hitRate_p1_2D_layer12 } hist p1_layer[3,4]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/P1_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/P1_HitRateFit algorithm = alg_hitRate_p1_2D_layer34 } hist p1_layer[5,6]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/P1_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/P1_HitRateFit algorithm = alg_hitRate_p1_2D_layer56 } + hist p1_layer[7,8]_measPhi[0,1] { + output = MuonDetectors/RPC/Expert/Occupancy/P1_HitRateFit + algorithm = alg_hitRate_p1_2D_layer78 + } hist chi2_layer[1,2]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/Chi2_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/Chi2_HitRateFit algorithm = alg_hitRate_chi2_2D_layer12 } hist chi2_layer[3,4]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/Chi2_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/Chi2_HitRateFit algorithm = alg_hitRate_chi2_2D_layer34 } hist chi2_layer[5,6]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/Chi2_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/Chi2_HitRateFit algorithm = alg_hitRate_chi2_2D_layer56 } + hist chi2_layer[7,8]_measPhi[0,1] { + output = MuonDetectors/RPC/Expert/Occupancy/Chi2_HitRateFit + algorithm = alg_hitRate_chi2_2D_layer78 + } hist predRate_layer[1,2]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/PredictedRate_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/PredictedRate_HitRateFit algorithm = alg_hitRate_predRate_2D_layer12 } hist predRate_layer[3,4]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/PredictedRate_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/PredictedRate_HitRateFit algorithm = alg_hitRate_predRate_2D_layer34 } hist predRate_layer[5,6]_measPhi[0,1] { - output = MuonDetectors/RPC/Shifter/Occupancy/PredictedRate_HitRateFit + output = MuonDetectors/RPC/Expert/Occupancy/PredictedRate_HitRateFit algorithm = alg_hitRate_predRate_2D_layer56 } + hist predRate_layer[7,8]_measPhi[0,1] { + output = MuonDetectors/RPC/Expert/Occupancy/PredictedRate_HitRateFit + algorithm = alg_hitRate_predRate_2D_layer78 + } hist meanRate_layer[1,2]_measPhi[0,1] { output = MuonDetectors/RPC/Shifter/Occupancy/MeanRate_HitRateFit @@ -1240,6 +1274,10 @@ dir Muon { output = MuonDetectors/RPC/Shifter/Occupancy/MeanRate_HitRateFit algorithm = alg_hitRate_meanRate_2D_layer56 } + hist meanRate_layer[7,8]_measPhi[0,1] { + output = MuonDetectors/RPC/Shifter/Occupancy/MeanRate_HitRateFit + algorithm = alg_hitRate_meanRate_2D_layer78 + } } dir SubDetector { @@ -3678,41 +3716,36 @@ dir Muon { } dir Hits { - hist prdhits_layer1_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/Occupancy/Hits - algorithm = alg_meanGreater_2D_layer1 - } - hist prdhits_layer2_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/Occupancy/Hits - algorithm = alg_meanGreater_2D_layer2 - } - hist prdhits_layer3_measPhi[0,1]@Shifter { + hist prdhits_layer[1,2]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/Occupancy/Hits - algorithm = alg_meanGreater_2D_layer3 + algorithm = alg_meanGreater_2D_layer12 } - hist prdhits_layer4_measPhi[0,1]@Shifter { + hist prdhits_layer[3,4]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/Occupancy/Hits - algorithm = alg_meanGreater_2D_layer4 + algorithm = alg_meanGreater_2D_layer34 } - hist prdhits_layer5_measPhi[0,1]@Shifter { + hist prdhits_layer[5,6]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/Occupancy/Hits - algorithm = alg_meanGreater_2D_layer5 + algorithm = alg_meanGreater_2D_layer56 } - hist prdhits_layer6_measPhi[0,1]@Shifter { + hist prdhits_layer[7,8]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/Occupancy/Hits - algorithm = alg_meanGreater_2D_layer6 + algorithm = alg_meanGreater_2D_layer78 } } - hist NPRDHit_sectorVSlayer@Shifter { + hist NPRDHit_sectorVSlayer { + output = MuonDetectors/RPC/Expert/Occupancy algorithm = alg_hits_sectorVSlayer_all } - hist NPRDHit_sectorVSlayer_Eta@Shifter { + hist NPRDHit_sectorVSlayer_Eta { + output = MuonDetectors/RPC/Expert/Occupancy algorithm = alg_hits_sectorVSlayer_all } - hist NPRDHit_sectorVSlayer_Phi@Shifter { + hist NPRDHit_sectorVSlayer_Phi { + output = MuonDetectors/RPC/Expert/Occupancy algorithm = alg_hits_sectorVSlayer_all } @@ -3732,7 +3765,7 @@ dir Muon { } hist NEvent_VS_Lumi { - output = MuonDetectors/RPC/Shifter/Global + output = MuonDetectors/RPC/Expert/Global algorithm = RPC_GraphNoEmpty } } ## end dir RpcOccupancy @@ -3755,19 +3788,20 @@ dir Muon { hist NMuonBarrel { algorithm = RPC_HistNoEmpty&GatherData } - hist MuonPt_full { - algorithm = RPC_HistNoEmpty&GatherData - } hist Pt_AllMuons { algorithm = RPC_HistNoEmpty&GatherData - output = MuonDetectors/RPC/Shifter/Global + output = MuonDetectors/RPC/Expert/Global } hist Eta_AllMuons { algorithm = RPC_HistNoEmpty&GatherData - output = MuonDetectors/RPC/Shifter/Global + output = MuonDetectors/RPC/Expert/Global } hist Phi_AllMuons { + algorithm = RPC_HistNoEmpty&GatherData + output = MuonDetectors/RPC/Expert/Global + } + hist EtaVSPhi_AllMuons { algorithm = RPC_HistNoEmpty&GatherData output = MuonDetectors/RPC/Shifter/Global } @@ -3784,44 +3818,38 @@ dir Muon { algorithm = RPC_HistNoEmpty&GatherData output = MuonDetectors/RPC/Shifter/Global } - - } ## end dir PlotCand - - dir L1Trigger { - algorithm = RPC_AlwaysGreenSummary - hist NMuonBarrel_medium { - output = MuonDetectors/L1MU/L1MUB/Expert + hist EtaVSPhi_MuonFromZ { algorithm = RPC_HistNoEmpty&GatherData + output = MuonDetectors/RPC/Shifter/Global } - hist MuonPt { - output = MuonDetectors/L1MU/L1MUB/Expert + hist EtaVSPhi_MuonFromZ_plateau { algorithm = RPC_HistNoEmpty&GatherData - } - - hist L1TriggerEffNum_[1-6] { output = MuonDetectors/L1MU/L1MUB/Expert - algorithm = RPC_HistNoEmpty&GatherData } - hist L1TriggerEffDen { + } ## end dir PlotCand + + dir L1Trigger { + algorithm = RPC_AlwaysGreenSummary + hist L1TriggerEffNum_thr[1-6] { output = MuonDetectors/L1MU/L1MUB/Expert algorithm = RPC_HistNoEmpty&GatherData } - hist L1TriggerEff_eta_phi_[1-6]@Shifter { + hist L1TriggerEff_eta_phi_thr[1-6]@Shifter { output = MuonDetectors/L1MU/L1MUB/Shifter display = Draw=COLZ algorithm = alg_GatherData } - hist L1TriggerEff_muPt_[1-6]@Shifter { + hist L1TriggerEff_muPt_thr[1-6]@Shifter { output = MuonDetectors/L1MU/L1MUB/Shifter algorithm = alg_GatherData } - hist L1TriggerEff_muEta_[1-6]@Shifter { + hist L1TriggerEff_muEta_thr[1-6]@Shifter { output = MuonDetectors/L1MU/L1MUB/Shifter algorithm = alg_GatherData } - hist L1TriggerEff_muPhi_[1-6]@Shifter { + hist L1TriggerEff_muPhi_thr[1-6]@Shifter { output = MuonDetectors/L1MU/L1MUB/Shifter algorithm = alg_GatherData } @@ -3835,12 +3863,12 @@ dir Muon { display = Draw=COLZ output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency } - hist Panel_Efficiency_MuonFromZ@Shifter { + hist Detection_Efficiency_MuonFromZ { algorithm = alg_GatherData display = Draw=COLZ - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency + output = MuonDetectors/RPC/Expert/MuonDetectionEfficiency } - hist Panel_Efficiency_LB_MuonFromZ@Shifter { + hist Detection_Efficiency_LB_MuonFromZ@Shifter { algorithm = alg_GatherData output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency } @@ -3853,9 +3881,9 @@ dir Muon { algorithm = RPC_AlgNoEmpty output = MuonDetectors/RPC/Shifter/HitMultiplicity } - hist HitMultiplicity_Panels@Shifter { + hist HitMultiplicity_Panels { algorithm = RPC_AlgNoEmpty - output = MuonDetectors/RPC/Shifter/HitMultiplicity + output = MuonDetectors/RPC/Expert/HitMultiplicity } hist ClusterSize_etaView@Shifter { @@ -3866,29 +3894,29 @@ dir Muon { algorithm = RPC_AlgNoEmpty output = MuonDetectors/RPC/Shifter/ClusterSize } - hist ClusterSize_Panels@Shifter { + hist ClusterSize_Panels { algorithm = RPC_AlgNoEmpty - output = MuonDetectors/RPC/Shifter/ClusterSize + output = MuonDetectors/RPC/Expert/ClusterSize } - hist OuttimeHitFraction_PRDHit@Shifter { + hist OuttimeHitFraction_PRDHit { algorithm = alg_GatherData display = Draw=COLZ - output = MuonDetectors/RPC/Shifter/Noise/OuttimeHitFraction + output = MuonDetectors/RPC/Expert/Noise/OuttimeHitFraction } - hist OuttimeHitFraction_PRDHit_onTrack@Shifter { + hist OuttimeHitFraction_PRDHit_onTrack { algorithm = alg_GatherData display = Draw=COLZ - output = MuonDetectors/RPC/Shifter/Noise/OuttimeOnTrackHitFraction + output = MuonDetectors/RPC/Expert/Noise/OuttimeOnTrackHitFraction } - hist hitMultiplicity_per_sectors_per_layers_etaAndPhiPanels@Shifter { - output = MuonDetectors/RPC/Shifter/HitMultiplicity + hist hitMultiplicity_per_sectors_per_layers_etaAndPhiPanels { + output = MuonDetectors/RPC/Expert/HitMultiplicity algorithm = RPC_AlgNoEmpty } - hist hitMultiplicity_per_panel_etaAndPhiView@Shifter { - output = MuonDetectors/RPC/Shifter/HitMultiplicity + hist hitMultiplicity_per_panel_etaAndPhiView { + output = MuonDetectors/RPC/Expert/HitMultiplicity algorithm = RPC_AlgNoEmpty } hist hitMultiplicity_per_panel_etaView@Shifter { @@ -3900,12 +3928,12 @@ dir Muon { algorithm = RPC_AlgNoEmpty } - hist averageClusterSize_per_sectors_per_layers_etaAndPhiPanels@Shifter { - output = MuonDetectors/RPC/Shifter/ClusterSize + hist averageClusterSize_per_sectors_per_layers_etaAndPhiPanels { + output = MuonDetectors/RPC/Expert/ClusterSize algorithm = RPC_AlgNoEmpty } - hist averageClusterSize_per_panel_etaAndPhiView@Shifter { - output = MuonDetectors/RPC/Shifter/ClusterSize + hist averageClusterSize_per_panel_etaAndPhiView { + output = MuonDetectors/RPC/Expert/ClusterSize algorithm = RPC_AlgNoEmpty } hist averageClusterSize_per_panel_etaView@Shifter { @@ -3917,12 +3945,12 @@ dir Muon { algorithm = RPC_AlgNoEmpty } - hist outTimeHitFrac_onTrack_per_sectors_per_layers_etaAndPhiPanels@Shifter { - output = MuonDetectors/RPC/Shifter/Noise/OuttimeOnTrackHitFraction + hist outTimeHitFrac_onTrack_per_sectors_per_layers_etaAndPhiPanels { + output = MuonDetectors/RPC/Expert/Noise/OuttimeOnTrackHitFraction algorithm = OuttimeHitFracOnTrack_allSetLayers_BinDump } - hist outTimeHitFrac_onTrack_per_panel_etaAndPhiView@Shifter { - output = MuonDetectors/RPC/Shifter/Noise/OuttimeOnTrackHitFraction + hist outTimeHitFrac_onTrack_per_panel_etaAndPhiView { + output = MuonDetectors/RPC/Expert/Noise/OuttimeOnTrackHitFraction algorithm = OuttimeHitFracOnTrack_allPanels_BinDump } hist outTimeHitFrac_onTrack_per_panel_etaView@Shifter { @@ -3934,12 +3962,12 @@ dir Muon { algorithm = OuttimeHitFracOnTrack_etaORphiPanels_BinDump } - hist outTimeHitFrac_per_sectors_per_layers_etaAndPhiPanels@Shifter { - output = MuonDetectors/RPC/Shifter/Noise/OuttimeHitFraction + hist outTimeHitFrac_per_sectors_per_layers_etaAndPhiPanels { + output = MuonDetectors/RPC/Expert/Noise/OuttimeHitFraction algorithm = OuttimeHitFrac_allSetLayers_BinDump } - hist outTimeHitFrac_per_panel_etaAndPhiView@Shifter { - output = MuonDetectors/RPC/Shifter/Noise/OuttimeHitFraction + hist outTimeHitFrac_per_panel_etaAndPhiView { + output = MuonDetectors/RPC/Expert/Noise/OuttimeHitFraction algorithm = OuttimeHitFrac_allPanels_BinDump } hist outTimeHitFrac_per_panel_etaView@Shifter { @@ -3961,45 +3989,37 @@ dir Muon { algorithm = alg_detEff_1D_Secto1214 } - hist detEff_layer1_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency - algorithm = alg_detEff_2D_layer1 - } - hist detEff_layer2_measPhi[0,1]@Shifter { + hist detEff_layer[1,2]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency - algorithm = alg_detEff_2D_layer2 + algorithm = alg_detEff_2D_layer12 } - hist detEff_layer3_measPhi[0,1]@Shifter { + hist detEff_layer[3,4]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency - algorithm = alg_detEff_2D_layer3 + algorithm = alg_detEff_2D_layer34 } - hist detEff_layer4_measPhi[0,1]@Shifter { + hist detEff_layer[5,6]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency - algorithm = alg_detEff_2D_layer4 + algorithm = alg_detEff_2D_layer56 } - hist detEff_layer5_measPhi[0,1]@Shifter { + hist detEff_layer[7,8]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency - algorithm = alg_detEff_2D_layer5 - } - hist detEff_layer6_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency - algorithm = alg_detEff_2D_layer6 + algorithm = alg_detEff_2D_layer78 } - hist detEff_per_sectors_per_layers_etaAndPhiPanels@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency + hist detEff_per_sectors_per_layers_etaAndPhiPanels { + output = MuonDetectors/RPC/Expert/MuonDetectionEfficiency algorithm = MuDetectionEff_allSetLayers_BinDump } - hist detEff_per_panel_etaAndPhiView@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency + hist detEff_per_panel_etaAndPhiView { + output = MuonDetectors/RPC/Expert/MuonDetectionEfficiency algorithm = MuDetectionEff_allPanels_BinDump } - hist detEff_per_panel_etaView@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency + hist detEff_per_panel_etaView { + output = MuonDetectors/RPC/Expert/MuonDetectionEfficiency algorithm = MuDetectionEff_etaORphiPanels_BinDump } - hist detEff_per_panel_phiView@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency + hist detEff_per_panel_phiView { + output = MuonDetectors/RPC/Expert/MuonDetectionEfficiency algorithm = MuDetectionEff_etaORphiPanels_BinDump } @@ -4839,114 +4859,82 @@ dir Muon { } dir NMuon { - hist muon_Z_num_layer1_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer1 - } - hist muon_Z_num_layer2_measPhi[0,1]@Shifter { + hist muon_Z_num_layer[1,2]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer2 + algorithm = alg_meanGreater_2D_layer12 } - hist muon_Z_num_layer3_measPhi[0,1]@Shifter { + hist muon_Z_num_layer[3,4]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer3 + algorithm = alg_meanGreater_2D_layer34 } - hist muon_Z_num_layer4_measPhi[0,1]@Shifter { + hist muon_Z_num_layer[5,6]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer4 + algorithm = alg_meanGreater_2D_layer56 } - hist muon_Z_num_layer5_measPhi[0,1]@Shifter { + hist muon_Z_num_layer[7,8]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer5 + algorithm = alg_meanGreater_2D_layer78 } - hist muon_Z_num_layer6_measPhi[0,1]@Shifter { + hist muon_Z_den_layer[1,2]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer6 + algorithm = alg_meanGreater_2D_layer12 } - hist muon_Z_den_layer1_measPhi[0,1]@Shifter { + hist muon_Z_den_layer[3,4]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer1 + algorithm = alg_meanGreater_2D_layer34 } - hist muon_Z_den_layer2_measPhi[0,1]@Shifter { + hist muon_Z_den_layer[5,6]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer2 + algorithm = alg_meanGreater_2D_layer56 } - hist muon_Z_den_layer3_measPhi[0,1]@Shifter { + hist muon_Z_den_layer[7,8]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer3 - } - hist muon_Z_den_layer4_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer4 - } - hist muon_Z_den_layer5_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer5 - } - hist muon_Z_den_layer6_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/MuonsFromZ - algorithm = alg_meanGreater_2D_layer6 + algorithm = alg_meanGreater_2D_layer78 } - hist muon_all_num_layer1_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer1 - } - hist muon_all_num_layer2_measPhi[0,1]@Shifter { + hist muon_all_num_layer[1,2]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer2 + algorithm = alg_meanGreater_2D_layer12 } - hist muon_all_num_layer3_measPhi[0,1]@Shifter { + hist muon_all_num_layer[3,4]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer3 + algorithm = alg_meanGreater_2D_layer34 } - hist muon_all_num_layer4_measPhi[0,1]@Shifter { + hist muon_all_num_layer[5,6]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer4 + algorithm = alg_meanGreater_2D_layer56 } - hist muon_all_num_layer5_measPhi[0,1]@Shifter { + hist muon_all_num_layer[7,8]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer5 + algorithm = alg_meanGreater_2D_layer78 } - hist muon_all_num_layer6_measPhi[0,1]@Shifter { + hist muon_all_den_layer[1,2]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer6 + algorithm = alg_meanGreater_2D_layer12 } - hist muon_all_den_layer1_measPhi[0,1]@Shifter { + hist muon_all_den_layer[3,4]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer1 + algorithm = alg_meanGreater_2D_layer34 } - hist muon_all_den_layer2_measPhi[0,1]@Shifter { + hist muon_all_den_layer[5,6]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer2 + algorithm = alg_meanGreater_2D_layer56 } - hist muon_all_den_layer3_measPhi[0,1]@Shifter { + hist muon_all_den_layer[7,8]_measPhi[0,1]@Shifter { output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer3 - } - hist muon_all_den_layer4_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer4 - } - hist muon_all_den_layer5_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer5 - } - hist muon_all_den_layer6_measPhi[0,1]@Shifter { - output = MuonDetectors/RPC/Shifter/MuonDetectionEfficiency/AllMuons - algorithm = alg_meanGreater_2D_layer6 + algorithm = alg_meanGreater_2D_layer78 } } dir ClusterSize { - hist ClusterSize_Sector_.* { + hist ClusterSize_sector.* { output = MuonDetectors/RPC/Shifter/ClusterSize/PerSector algorithm = RPC_AlgNoEmpty } } dir PRDHitTime { - hist PRDHitTime_MuonFromZ_Sector_.* { + hist PRDHitTime_MuonFromZ_sector.* { output = MuonDetectors/RPC/Shifter/Timing/PerSector algorithm = RPC_AlgNoEmpty } @@ -5097,39 +5085,23 @@ algorithm alg_detEff_1D_Secto1214 { TotalBins = 4 } -algorithm alg_detEff_2D_layer1 { +algorithm alg_detEff_2D_layer12 { libname = libdqm_algorithms.so name = Bins_GreaterThan_Threshold thresholds = th_bins_layer1 BinThreshold = 0.9 MinStat = 1 - TotalBins = 656 + TotalBins = 662 } -algorithm alg_detEff_2D_layer2 { - libname = libdqm_algorithms.so - name = Bins_GreaterThan_Threshold - thresholds = th_bins_layer1 - BinThreshold = 0.9 - MinStat = 1 - TotalBins = 656 -} -algorithm alg_detEff_2D_layer3 { +algorithm alg_detEff_2D_layer34 { libname = libdqm_algorithms.so name = Bins_GreaterThan_Threshold thresholds = th_bins_layer3 BinThreshold = 0.9 MinStat = 1 - TotalBins = 660 + TotalBins = 662 } -algorithm alg_detEff_2D_layer4 { - libname = libdqm_algorithms.so - name = Bins_GreaterThan_Threshold - thresholds = th_bins_layer3 - BinThreshold = 0.9 - MinStat = 1 - TotalBins = 660 -} -algorithm alg_detEff_2D_layer5 { +algorithm alg_detEff_2D_layer56 { libname = libdqm_algorithms.so name = Bins_GreaterThan_Threshold thresholds = th_bins_layer5 @@ -5137,13 +5109,13 @@ algorithm alg_detEff_2D_layer5 { MinStat = 1 TotalBins = 768 } -algorithm alg_detEff_2D_layer6 { +algorithm alg_detEff_2D_layer78 { libname = libdqm_algorithms.so name = Bins_GreaterThan_Threshold - thresholds = th_bins_layer5 + thresholds = th_bins_layer7 BinThreshold = 0.9 MinStat = 1 - TotalBins = 768 + TotalBins = 56 } algorithm alg_detEff_1D_eachSubDet_BOL_Layer12 { @@ -5276,39 +5248,23 @@ algorithm alg_detEff_1D_eachSubDet_Sec1214_Layer78 { } ## algorithms for meansGreaterThan -algorithm alg_meanGreater_2D_layer1 { +algorithm alg_meanGreater_2D_layer12 { libname = libdqm_algorithms.so name = Bins_GreaterThan_Threshold thresholds = th_bins_layer1 BinThreshold = 0.5 MinStat = 1 - TotalBins = 656 -} -algorithm alg_meanGreater_2D_layer2 { - libname = libdqm_algorithms.so - name = Bins_GreaterThan_Threshold - thresholds = th_bins_layer1 - BinThreshold = 0.5 - MinStat = 1 - TotalBins = 656 -} -algorithm alg_meanGreater_2D_layer3 { - libname = libdqm_algorithms.so - name = Bins_GreaterThan_Threshold - thresholds = th_bins_layer3 - BinThreshold = 0.5 - MinStat = 1 - TotalBins = 660 + TotalBins = 662 } -algorithm alg_meanGreater_2D_layer4 { +algorithm alg_meanGreater_2D_layer34 { libname = libdqm_algorithms.so name = Bins_GreaterThan_Threshold thresholds = th_bins_layer3 BinThreshold = 0.5 MinStat = 1 - TotalBins = 660 + TotalBins = 662 } -algorithm alg_meanGreater_2D_layer5 { +algorithm alg_meanGreater_2D_layer56 { libname = libdqm_algorithms.so name = Bins_GreaterThan_Threshold thresholds = th_bins_layer5 @@ -5316,13 +5272,13 @@ algorithm alg_meanGreater_2D_layer5 { MinStat = 1 TotalBins = 768 } -algorithm alg_meanGreater_2D_layer6 { +algorithm alg_meanGreater_2D_layer78 { libname = libdqm_algorithms.so name = Bins_GreaterThan_Threshold - thresholds = th_bins_layer5 + thresholds = th_bins_layer7 BinThreshold = 0.5 MinStat = 1 - TotalBins = 768 + TotalBins = 56 } ## algorithms for hit rate @@ -5417,7 +5373,7 @@ algorithm alg_hitRate_p0_2D_layer12 { thresholds = th_bins_layer1 BinThreshold = 5.e4 MinStat = 1 - TotalBins = 656 + TotalBins = 662 } algorithm alg_hitRate_p1_2D_layer12 { @@ -5426,7 +5382,7 @@ algorithm alg_hitRate_p1_2D_layer12 { thresholds = th_bins_layer1 BinThreshold = 0. MinStat = 1 - TotalBins = 656 + TotalBins = 662 } algorithm alg_hitRate_chi2_2D_layer12 { @@ -5435,7 +5391,7 @@ algorithm alg_hitRate_chi2_2D_layer12 { thresholds = th_bins_layer1 BinThreshold = 25. MinStat = 1 - TotalBins = 656 + TotalBins = 662 } algorithm alg_hitRate_predRate_2D_layer12 { @@ -5444,7 +5400,7 @@ algorithm alg_hitRate_predRate_2D_layer12 { thresholds = th_bins_layer1 BinThreshold = 1.e6 MinStat = 1 - TotalBins = 656 + TotalBins = 662 } algorithm alg_hitRate_meanRate_2D_layer12 { @@ -5453,7 +5409,7 @@ algorithm alg_hitRate_meanRate_2D_layer12 { thresholds = th_bins_layer1 BinThreshold = 8.e5 MinStat = 1 - TotalBins = 656 + TotalBins = 662 } algorithm alg_hitRate_p0_2D_layer34 { @@ -5462,7 +5418,7 @@ algorithm alg_hitRate_p0_2D_layer34 { thresholds = th_bins_layer3 BinThreshold = 5.e4 MinStat = 1 - TotalBins = 660 + TotalBins = 662 } algorithm alg_hitRate_p1_2D_layer34 { @@ -5471,7 +5427,7 @@ algorithm alg_hitRate_p1_2D_layer34 { thresholds = th_bins_layer3 BinThreshold = 0. MinStat = 1 - TotalBins = 660 + TotalBins = 662 } algorithm alg_hitRate_chi2_2D_layer34 { @@ -5480,7 +5436,7 @@ algorithm alg_hitRate_chi2_2D_layer34 { thresholds = th_bins_layer3 BinThreshold = 25. MinStat = 1 - TotalBins = 660 + TotalBins = 662 } algorithm alg_hitRate_predRate_2D_layer34 { @@ -5489,7 +5445,7 @@ algorithm alg_hitRate_predRate_2D_layer34 { thresholds = th_bins_layer3 BinThreshold = 1.e6 MinStat = 1 - TotalBins = 660 + TotalBins = 662 } algorithm alg_hitRate_meanRate_2D_layer34 { @@ -5498,7 +5454,7 @@ algorithm alg_hitRate_meanRate_2D_layer34 { thresholds = th_bins_layer3 BinThreshold = 8.e5 MinStat = 1 - TotalBins = 660 + TotalBins = 662 } algorithm alg_hitRate_p0_2D_layer56 { @@ -5546,6 +5502,51 @@ algorithm alg_hitRate_meanRate_2D_layer56 { TotalBins = 768 } +algorithm alg_hitRate_p0_2D_layer78 { + libname = libdqm_algorithms.so + name = Bins_LessThan_Threshold + thresholds = th_bins_layer5 + BinThreshold = 5.e4 + MinStat = 1 + TotalBins = 56 +} + +algorithm alg_hitRate_p1_2D_layer78 { + libname = libdqm_algorithms.so + name = Bins_GreaterThan_Threshold + thresholds = th_bins_layer5 + BinThreshold = 0. + MinStat = 1 + TotalBins = 56 +} + +algorithm alg_hitRate_chi2_2D_layer78 { + libname = libdqm_algorithms.so + name = Bins_LessThan_Threshold + thresholds = th_bins_layer5 + BinThreshold = 25. + MinStat = 1 + TotalBins = 56 +} + +algorithm alg_hitRate_predRate_2D_layer78 { + libname = libdqm_algorithms.so + name = Bins_LessThan_Threshold + thresholds = th_bins_layer5 + BinThreshold = 1.e6 + MinStat = 1 + TotalBins = 56 +} + +algorithm alg_hitRate_meanRate_2D_layer78 { + libname = libdqm_algorithms.so + name = Bins_LessThan_Threshold + thresholds = th_bins_layer5 + BinThreshold = 8.e5 + MinStat = 1 + TotalBins = 56 +} + algorithm alg_hitRate_p0_1D_eachSubDet_BOL_Layer12 { libname = libdqm_algorithms.so name = Bins_LessThan_Threshold @@ -5988,25 +5989,32 @@ thresholds th_bins_Sector1214 { thresholds th_bins_layer1 { limits NBins { - warning = 604 - error = 525 + warning = 596 + error = 530 } } thresholds th_bins_layer3 { limits NBins { - warning = 607 - error = 528 + warning = 596 + error = 530 } } thresholds th_bins_layer5 { limits NBins { - warning = 707 + warning = 691 error = 614 } } +thresholds th_bins_layer7 { + limits NBins { + warning = 50 + error = 45 + } +} + thresholds th_bins_eachSubDet_BOL_Layer12 { limits NBins { warning = 11 @@ -6104,4 +6112,4 @@ thresholds th_bins_eachSubDet_Sec1214_Layer78 { warning = 5 error = 4 } -} \ No newline at end of file +} diff --git a/DataQuality/DataQualityUtils/data/postprocessing/RPCmon.yaml b/DataQuality/DataQualityUtils/data/postprocessing/RPCmon.yaml index 80710b3e637e10905d852ee66d64cfdc8d6f0d66..f93a93d7df0aee2a1c411d307020e172d6ea2b04 100644 --- a/DataQuality/DataQualityUtils/data/postprocessing/RPCmon.yaml +++ b/DataQuality/DataQualityUtils/data/postprocessing/RPCmon.yaml @@ -42,7 +42,7 @@ Description: RPC outtime-time (on-track hits) fration --- # detection efficiency -Input : ['Muon/MuonRawDataMonitoring/RPC/TrackMatch/Panel_Efficiency_MuonFromZ'] +Input : ['Muon/MuonRawDataMonitoring/RPC/TrackMatch/Detection_Efficiency_MuonFromZ'] VariableOutput : True OutputDOF : [ ] @@ -71,7 +71,7 @@ Description: RPC 1DMuonHit --- # 2D Nmuons decayed from Z -Input : ['Muon/MuonRawDataMonitoring/RPC/TrackMatch/Panel_Efficiency_MuonFromZ'] +Input : ['Muon/MuonRawDataMonitoring/RPC/TrackMatch/Detection_Efficiency_MuonFromZ'] VariableOutput : True OutputDOF : [ ] @@ -80,7 +80,7 @@ Description: RPC Nmuons for muons from Z --- # 2D Nmuons in all events -Input : ['Muon/MuonRawDataMonitoring/RPC/TrackMatch/Panel_Efficiency_AllMuons'] +Input : ['Muon/MuonRawDataMonitoring/RPC/TrackMatch/Detection_Efficiency_AllMuons'] VariableOutput : True OutputDOF : [ ] diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/CoreClass.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/CoreClass.py index 23ec275d77b2843a0924bbde2e7879ce0b3f1b83..d8aa21c1afd260755a21805eac7edb21f5304a2c 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/CoreClass.py +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/CoreClass.py @@ -134,8 +134,8 @@ class Draw_Base(object): _var_title = { "p0" : "p0" , "p1" : "p1" , - "chi2" : "Chi2/ndf" , - "prdhits" : "PRD hits" , + "chi2" : "Chi2/ndf" , + "prdhits" : "Hits" , "muon_Z_num" : "Muons(Z) extrapolated to individual RPC panels with hits", "muon_Z_den" : "Muons(Z) extrapolated to individual RPC panels", "muon_all_num" : "Muons(All) extrapolated to individual RPC panels with hits", @@ -467,7 +467,7 @@ class Draw_Base(object): z_max = self._rangeOfVariables_perPanel[self._variable][1] dic_hists = {} - for i_layer in range(1, 7): # 1,2,...,6 + for i_layer in range(1, 9): # 1,2,...,8 for i_measPhi in [0, 1]: h2_name = out_hname+"_layer"+str(i_layer)+"_measPhi"+str(i_measPhi) h2_title = out_htitle+"("+layerNames[i_layer]+"-"+isMeasPhiNames[i_measPhi]+")" @@ -476,8 +476,6 @@ class Draw_Base(object): for i_sector, dic_perSecLayer in self._dic_panels_detect.items(): i_layer = i_sector[1] - if i_layer > 6: - i_layer = i_layer-2 for i_dbPhi_meas, dic_dbPhi_meas in dic_perSecLayer.items(): h2_temp = dic_hists[(i_layer, i_dbPhi_meas[1])] @@ -494,7 +492,7 @@ class Draw_Base(object): h2_temp.SetBinContent(x_bin, y_bin, content) list_hists = [] - for i_layer in range(1, 7): # 1,2,...,6 + for i_layer in range(1, 9): # 1,2,...,8 for i_measPhi in [0, 1]: h2 = dic_hists[(i_layer, i_measPhi)] @@ -508,6 +506,8 @@ class Draw_Base(object): HistDecorate.set_verticalGrid(h2) HistDecorate.set_horizonGrid(h2) HistDecorate.setAxisLabel_EtaPhi(h2) + + HistDecorate.set_blankBox(h2, i_layer) list_hists.append(h2) diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/HistDecorate.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/HistDecorate.py index 940ddfcceb6035476d813fe0ed0220bf51656fa6..345ee6f7523111c0f308b53f0c8e48035af4fe96 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/HistDecorate.py +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/HistDecorate.py @@ -32,6 +32,129 @@ zTitleOffset = {"TH1" : 0., "TEfficiency" : 0. } +############################################################################# +list_boxes_layers = { + 1: [ + ("1:3", "1:32"), ("7", "1:32"), ("9", "1:32"), ("19:20", "1:32"), ("30", "1:32"), ("32", "1:32"),("36:38", "1:32"), + + ("4:12", "23:24"), ("4:12", "27:28"), ("27:35", "23:24"), ("27:35", "27:28"), + + ("4", "3:4"), ("4", "7:8"), ("4", "11:12"), ("4", "15:16"), ("4", "19:20"), ("4", "31:32"), + ("35", "3:4"), ("35", "7:8"), ("35", "11:12"), ("35", "15:16"), ("35", "19:20"), ("35", "31:32"), + + ("10", "1:2"), ("10", "5:6"), ("10", "9:10"), ("10", "13:14"), ("10", "17:18"), ("10", "21:22"), ("10", "29:30"), + ("14", "1:2"), ("14", "5:6"), ("14", "9:10"), ("14", "13:14"), ("14", "17:18"), ("14", "21:30"), + ("17", "1:2"), ("17", "13:14"), ("17", "17:18"), ("17", "21:22"), ("17", "25:26"), ("17", "29:30"), + + ("29", "1:2"), ("29", "5:6"), ("29", "9:10"), ("29", "13:14"), ("29", "17:18"), ("29", "21:22"), ("29", "29:30"), + ("25", "1:2"), ("25", "5:6"), ("25", "9:10"), ("25", "13:14"), ("25", "17:18"), ("25", "21:30"), + ("22", "13:14"), ("22", "17:18"), ("22", "21:22"), ("22", "25:26"), ("22", "29:30"), + ], + + 2: [ + ("1:3", "1:32"), ("7", "1:32"), ("9", "1:32"), ("19:20", "1:32"), ("30", "1:32"), ("32", "1:32"),("36:38", "1:32"), + + ("4:12", "23:24"), ("4:12", "27:28"), ("27:35", "23:24"), ("27:35", "27:28"), + + ("4", "3:4"), ("4", "7:8"), ("4", "11:12"), ("4", "15:16"), ("4", "19:20"), ("4", "31:32"), + ("35", "3:4"), ("35", "7:8"), ("35", "11:12"), ("35", "15:16"), ("35", "19:20"), ("35", "31:32"), + + ("10", "1:2"), ("10", "5:6"), ("10", "9:10"), ("10", "13:14"), ("10", "17:18"), ("10", "21:22"), ("10", "29:30"), + ("14", "1:2"), ("14", "5:6"), ("14", "9:10"), ("14", "13:14"), ("14", "17:18"), ("14", "21:30"), + ("17", "1:2"), ("17", "13:14"), ("17", "17:18"), ("17", "21:22"), ("17", "25:26"), ("17", "29:30"), + + ("29", "1:2"), ("29", "5:6"), ("29", "9:10"), ("29", "13:14"), ("29", "17:18"), ("29", "21:22"), ("29", "29:30"), + ("25", "1:2"), ("25", "5:6"), ("25", "9:10"), ("25", "13:14"), ("25", "17:18"), ("25", "21:30"), + ("22", "13:14"), ("22", "17:18"), ("22", "21:22"), ("22", "25:26"), ("22", "29:30"), + ], + + 3: [ + ("1:4", "1:32"), ("7", "1:32"), ("19:20", "1:32"), ("32", "1:32"),("35:38", "1:32"), + + ("5:11", "23:24"), ("5:11", "27:28"), ("28:34", "23:24"), ("28:34", "27:28"), + + ("9:10", "1:2"), ("9:10", "5:6"), ("9:10", "9:10"), ("9:10", "13:14"), ("9:10", "17:18"), ("9:10", "21:22"), ("9:10", "29:30"), + ("29:30", "1:2"), ("29:30", "5:6"), ("29:30", "9:10"), ("29:30", "13:14"), ("29:30", "17:18"), ("29:30", "21:22"), ("29:30", "29:30"), + + ("9", "25:26"), ("30", "25:26"), + + ("14", "1:2"), ("14", "5:6"), ("14", "9:10"), ("14", "13:14"), ("14", "17:18"), ("14", "21:30"), + ("17", "1:2"), ("17", "13:14"), ("17", "17:18"), ("17", "21:22"), ("17", "25:26"), ("17", "29:30"), + + ("25", "1:2"), ("25", "5:6"), ("25", "9:10"), ("25", "13:14"), ("25", "17:18"), ("25", "21:30"), + ("22", "13:14"), ("22", "17:18"), ("22", "21:22"), ("22", "25:26"), ("22", "29:30"), + ], + + 4: [ + ("1:4", "1:32"), ("7", "1:32"), ("19:20", "1:32"), ("32", "1:32"),("35:38", "1:32"), + + ("5:11", "23:24"), ("5:11", "27:28"), ("28:34", "23:24"), ("28:34", "27:28"), + + ("9:10", "1:2"), ("9:10", "5:6"), ("9:10", "9:10"), ("9:10", "13:14"), ("9:10", "17:18"), ("9:10", "21:22"), ("9:10", "29:30"), + ("29:30", "1:2"), ("29:30", "5:6"), ("29:30", "9:10"), ("29:30", "13:14"), ("29:30", "17:18"), ("29:30", "21:22"), ("29:30", "29:30"), + + ("9", "25:26"), ("30", "25:26"), + + ("14", "1:2"), ("14", "5:6"), ("14", "9:10"), ("14", "13:14"), ("14", "17:18"), ("14", "21:30"), + ("17", "1:2"), ("17", "13:14"), ("17", "17:18"), ("17", "21:22"), ("17", "25:26"), ("17", "29:30"), + + ("25", "1:2"), ("25", "5:6"), ("25", "9:10"), ("25", "13:14"), ("25", "17:18"), ("25", "21:30"), + ("22", "13:14"), ("22", "17:18"), ("22", "21:22"), ("22", "25:26"), ("22", "29:30"), + ], + + 5: [ + ("1:4", "1:22"), ("19:20", "1:22"), ("35:38", "1:22"), + ("1:4", "29:32"), ("19:20", "29:32"), ("35:38", "29:32"), + + ("9", "1:32"), ("14", "1:32"), ("25", "1:32"), ("30", "1:32"), + + ("1", "23:28"), ("3", "23:28"), ("19", "23:28"), ("36", "23:28"), ("38", "23:28"), + + ("5", "23:24"), ("10", "23:24"), ("15", "23:24"), ("24", "23:24"), ("29", "23:24"), ("34", "23:24"), + ("5", "27:28"), ("10", "27:28"), ("15", "27:28"), ("24", "27:28"), ("29", "27:28"), ("34", "27:28"), + + ("4", "25:26"), ("20", "25:26"), ("35", "25:26"), + ], + + 6: [ + ("1:4", "1:22"), ("19:20", "1:22"), ("35:38", "1:22"), + ("1:4", "29:32"), ("19:20", "29:32"), ("35:38", "29:32"), + + ("9", "1:32"), ("14", "1:32"), ("25", "1:32"), ("30", "1:32"), + + ("1", "23:28"), ("3", "23:28"), ("19", "23:28"), ("36", "23:28"), ("38", "23:28"), + + ("5", "23:24"), ("10", "23:24"), ("15", "23:24"), ("24", "23:24"), ("29", "23:24"), ("34", "23:24"), + ("5", "27:28"), ("10", "27:28"), ("15", "27:28"), ("24", "27:28"), ("29", "27:28"), ("34", "27:28"), + + ("4", "25:26"), ("20", "25:26"), ("35", "25:26"), + ], + + 7: [ + ("1:38", "1:22"), + ("1:38", "29:32"), + + ("14:25", "23:28"), + ("1:38", "25:26"), + + ("1", "23:28"), ("3", "23:28"), ("5", "23:28"), ("34", "23:28"), ("36", "23:28"), ("38", "23:28"), + + ("9:11", "23:28"), ("28:30", "23:28"), + ], + + 8: [ + ("1:38", "1:22"), + ("1:38", "29:32"), + + ("14:25", "23:28"), + ("1:38", "25:26"), + + ("1", "23:28"), ("3", "23:28"), ("5", "23:28"), ("34", "23:28"), ("36", "23:28"), ("38", "23:28"), + + ("9:11", "23:28"), ("28:30", "23:28"), + ], +} + # ----------------------------------------------------------------------- def classifyInstance(hist): @@ -84,7 +207,7 @@ def set_verticalGrid(hist2d): hist2d.GetListOfFunctions().Add(solid_line) - # ----------------------------------------------------------------------- +# ----------------------------------------------------------------------- def set_horizonGrid(hist2d): xmin = -19. xmax = 19. @@ -101,6 +224,53 @@ def set_horizonGrid(hist2d): dash_line .SetLineColor(ROOT.kBlack) hist2d.GetListOfFunctions().Add(dash_line) +# ----------------------------------------------------------------------- +def set_blankBox(hist_2d, layer): + if not (layer in list_boxes_layers): + print("HistDecorate::set_blankBox::ERROR - unknown layer index %d"%layer) + return + + list_boxes = list_boxes_layers[layer] + for box_str in list_boxes: + box_pos = findBoxPos(hist_2d, box_str[0], box_str[1]) + + tbox =ROOT.TBox(box_pos[0], box_pos[1], box_pos[2], box_pos[3]) + tbox.SetFillColor(ROOT.kGray) + + hist_2d.GetListOfFunctions().Add(tbox) + +# ----------------------------------------------------------------------- +def findBoxPos(h2, binx_str, biny_str): + bins_X = [int(i) for i in binx_str.split(":")] + bins_Y = [int(i) for i in biny_str.split(":")] + + Xpos = findAxisPos(h2, bins_X, axis = 1) + Ypos = findAxisPos(h2, bins_Y, axis = 2) + + return (Xpos[0], Ypos[0], Xpos[1], Ypos[1]) + +# ----------------------------------------------------------------------- +def findAxisPos(h2, bins, axis = 1): + low_bin = 0 + up_bin = 0 + if len(bins) == 2: + low_bin = bins[0] + up_bin = bins[1] + else: + low_bin = bins[0] + up_bin = bins[0] + + if axis == 1: + pos_1 = h2.GetXaxis().GetBinLowEdge(low_bin) + pos_2 = h2.GetXaxis().GetBinUpEdge(up_bin) + elif axis == 2: + pos_1 = h2.GetYaxis().GetBinLowEdge(low_bin) + pos_2 = h2.GetYaxis().GetBinUpEdge(up_bin) + else: + print("HistDecorate::findAxisPos::ERROR - the axis index can only be 1 or 2") + + return (pos_1, pos_2) + ############################################################################# def setAxisLabel_EtaPhi(hist2d): x_axis = hist2d.GetXaxis() diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RPCPostProcessing.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RPCPostProcessing.py index e3fd9b7d145a077d25ce0bb59691f0251a33350e..5563ffe54e9c491272016f66e6c75579311e8cb2 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RPCPostProcessing.py +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RPCPostProcessing.py @@ -1,6 +1,8 @@ # -#Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +#Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + # +# import ROOT # local import RpcRawDataMonitoring.RPCRawDataMonUtils as RPCRawDataMonUtils @@ -160,7 +162,7 @@ def make_hit_rate(inputs): list_summary_allSectorsAndLayers = draw_occu.GetSummary_allSectorsAndLayers([h_name, i_var]) ### - ### "(p0|p1|chi2|predRate|meanRate)_layer[1-6]_measPhi[01]", + ### "(p0|p1|chi2|predRate|meanRate)_layer[1-8]_measPhi[01]", ### list_hist2d_EtaPhi_allLayer = draw_occu.GetHist2D_EtaPhi_allLayer([h_name, i_var]) @@ -197,7 +199,7 @@ def make_2dhits(inputs): dic_histos = {} ### - ### "prdhits_layer[1-6]_measPhi[01]", + ### "prdhits_layer[1-8]_measPhi[01]", ### list_hist2d_EtaPhi_allLayer = draw_hits.GetHist2D_EtaPhi_allLayer(config, doSetZRange = False) getHistNames(list_hist2d_EtaPhi_allLayer, "Muon/MuonRawDataMonitoring/RPC/RpcOccupancy/Hits", dic_histos) @@ -258,7 +260,7 @@ def make_detection_eff(inputs): draw_eff = CoreClass.Draw_DetectEfficiency(hist) draw_eff.SetPanelDic(DicPanels) - h_name = "Panel_Efficiency_MuonFromZ" + h_name = "Detection_Efficiency_MuonFromZ" # ----------------------------------------------------------------------- variable = "detEff" @@ -278,7 +280,7 @@ def make_detection_eff(inputs): getHistNames(list_summary_eachSectorsAndLayers, "Muon/MuonRawDataMonitoring/RPC/TrackMatch/MuonDetectionEff/SubDetector", dic_histos) ### - ### "detEff_layer[1-6]_measPhi[01]", + ### "detEff_layer[1-8]_measPhi[01]", ### list_hist2d_EtaPhi_allLayer = draw_eff.GetHist2D_EtaPhi_allLayer(config) getHistNames(list_hist2d_EtaPhi_allLayer, "Muon/MuonRawDataMonitoring/RPC/TrackMatch/MuonDetectionEff", dic_histos) @@ -299,7 +301,7 @@ def make_detection_eff(inputs): ############################################################################# def make_2d_nmuons_Z(inputs): - hist_eff = inputs[0][1][0].Clone() #"Panel_Efficiency_MuonFromZ" + hist_eff = inputs[0][1][0].Clone() #"Detection_Efficiency_MuonFromZ" DicPanels = readElementFromXML() dic_histos = {} @@ -315,7 +317,7 @@ def make_2d_nmuons_Z(inputs): variable = "muon_Z_num" config = [h_name, variable] - # "muon_Z_num_layer[1-6]_measPhi[01]", + # "muon_Z_num_layer[1-8]_measPhi[01]", list_hist2d_EtaPhi_allLayer = draw_hits.GetHist2D_EtaPhi_allLayer(config, doSetZRange = False) getHistNames(list_hist2d_EtaPhi_allLayer, "Muon/MuonRawDataMonitoring/RPC/TrackMatch/NMuon", dic_histos) @@ -331,7 +333,7 @@ def make_2d_nmuons_Z(inputs): variable = "muon_Z_den" config = [h_name, variable] - # "muon_Z_den_layer[1-6]_measPhi[01]", + # "muon_Z_den_layer[1-8]_measPhi[01]", list_hist2d_EtaPhi_allLayer = draw_hits.GetHist2D_EtaPhi_allLayer(config, doSetZRange = False) getHistNames(list_hist2d_EtaPhi_allLayer, "Muon/MuonRawDataMonitoring/RPC/TrackMatch/NMuon", dic_histos) @@ -339,7 +341,7 @@ def make_2d_nmuons_Z(inputs): ############################################################################# def make_2d_nmuons_all(inputs): - hist_eff = inputs[0][1][0].Clone() #"Panel_Efficiency_AllMuons" + hist_eff = inputs[0][1][0].Clone() #"Detection_Efficiency_AllMuons" DicPanels = readElementFromXML() dic_histos = {} @@ -355,7 +357,7 @@ def make_2d_nmuons_all(inputs): variable = "muon_all_num" config = [h_name, variable] - # "muon_all_num_layer[1-6]_measPhi[01]", + # "muon_all_num_layer[1-8]_measPhi[01]", list_hist2d_EtaPhi_allLayer = draw_hits.GetHist2D_EtaPhi_allLayer(config, doSetZRange = False) getHistNames(list_hist2d_EtaPhi_allLayer, "Muon/MuonRawDataMonitoring/RPC/TrackMatch/NMuon", dic_histos) @@ -371,7 +373,7 @@ def make_2d_nmuons_all(inputs): variable = "muon_all_den" config = [h_name, variable] - # "muon_all_den_layer[1-6]_measPhi[01]", + # "muon_all_den_layer[1-8]_measPhi[01]", list_hist2d_EtaPhi_allLayer = draw_hits.GetHist2D_EtaPhi_allLayer(config, doSetZRange = False) getHistNames(list_hist2d_EtaPhi_allLayer, "Muon/MuonRawDataMonitoring/RPC/TrackMatch/NMuon", dic_histos) @@ -436,4 +438,10 @@ def getHistNames(hist_list, prefix, dic_hist): ############################################################################# if __name__ == '__main__': - print ("RPCPostProcessing: Hello, World !") \ No newline at end of file + print ("RPCPostProcessing: Hello, World !") + + # infile = ROOT.TFile("ExampleMonitorOutput.root", "READ") + # hist = infile.Get("run_358615/Muon/MuonRawDataMonitoring/RPC/RpcOccupancy/NPRDHit_Panels_All") + # inputs = [[0, [hist]]] + # dic_ = make_2dhits(inputs) + diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RpcMonitorAlgorithm.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RpcMonitorAlgorithm.py index f6eac4758fc0ba7fe61b4bfeaff0cff2ca537735..5986453e2a918784b3d1d2da0f08d519b895be97 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RpcMonitorAlgorithm.py +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/python/RpcMonitorAlgorithm.py @@ -33,10 +33,7 @@ def RpcMonitoringConfig(inputFlags): rpcTrackAnaAlg.plotMuonEff = True rpcTrackAnaAlg.plotPRD = True rpcTrackAnaAlg.ElementsFileName = "Element.xml" - - # rpcTrackAnaAlg.TagTrigList = 'HLT_mu26_ivarmedium' rpcTrackAnaAlg.TagAndProbe = False - # rpcTrackAnaAlg.TagAndProbeZmumu = False if not inputFlags.DQ.triggerDataAvailable: rpcTrackAnaAlg.MuonRoIContainerName = '' @@ -63,7 +60,7 @@ def RpcMonitoringConfig(inputFlags): xbins=1200, xmin=0.5, xmax=1200.5) myGroup_track.defineHistogram('prdTime', - title="Number of RPC Prepare Data;Time;N RPC Prepare Data", + title="Number of RPC Hit;Time;NHit", type='TH1D', path='RpcOccupancy', xbins=67, xmin=-104.6875, xmax=104.6875) @@ -94,12 +91,12 @@ def RpcMonitoringConfig(inputFlags): ybins=8, ymin=0.5, ymax=8.5) myGroup_track.defineHistogram('LB,panelInd;NPRDHit_Panels_All', - title='Number of RPC Prepare Data;Luminosity Block;Panel Index;NHit', + title='Number of RPC Hit;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) myGroup_track.defineHistogram('LB;NPRDHitVSLB_All', - title="Number of RPC Prepare Data;Luminosity Block;NHit", + title="Number of RPC Hit;Luminosity Block;NHit", type='TH1I', path='RpcOccupancy', xbins=1200, xmin=0.5, xmax=1200.5) @@ -115,7 +112,7 @@ def RpcMonitoringConfig(inputFlags): path=trackPath, xbins=1200, xmin=0.5, xmax=1200.5, ybins=33, ymin=-16.5, ymax=16.5) - ## Z muon + ## probe muon with Z tag&probe method myGroup_track.defineHistogram('muPt_MuonFromZ;Pt_MuonFromZ', title='Pt of muons decayed from Z candidates;Pt[MeV];NMuon', type='TH1D', @@ -130,6 +127,18 @@ def RpcMonitoringConfig(inputFlags): title='#phi of muons decayed from Z candidates;#phi;NMuon', type='TH1D', path='PlotCand', + xbins=32, xmin=-3.1415926, xmax=3.1415926) + myGroup_track.defineHistogram('muEta_MuonFromZ,muPhi_MuonFromZ;EtaVSPhi_MuonFromZ', + type='TH2D', + title='Eta vs phi for muons decayed from Z;#eta;#phi;NMuon', + path='PlotCand', + xbins=42,xmin=-1.05, xmax=1.05, + ybins=32,ymin=-3.1415926,ymax=3.1415926) + myGroup_track.defineHistogram('muEta_p_MuonFromZ,muPhi_p_MuonFromZ;EtaVSPhi_MuonFromZ_plateau', + type='TH2D', + title='Eta vs phi for muons decayed from Z(pT>25GeV);#eta;#phi;NMuon', + path='PlotCand', + xbins=42,xmin=-1.05, xmax=1.05, ybins=32,ymin=-3.1415926,ymax=3.1415926) myGroup_track.defineHistogram('hitMulti_eta;HitMultiplicity_eta', @@ -168,13 +177,13 @@ def RpcMonitoringConfig(inputFlags): path=trackPath, xbins=11, xmin=-0.5, xmax=10.5, ybins=8592, ymin=-0.5, ymax=8591.5) - myGroup_track.defineHistogram('muon_passExtrap,panelInd_hM;Panel_Efficiency_MuonFromZ', + myGroup_track.defineHistogram('muon_passExtrap,panelInd_hM;Detection_Efficiency_MuonFromZ', title='Panels detection efficiency for muons decayed from Z candidates;Panel Index;Efficiency', type='TEfficiency', path=trackPath, xbins=8592, xmin=-0.5, xmax=8591.5) - myGroup_track.defineHistogram('muon_passExtrap,LB_detEff;Panel_Efficiency_LB_MuonFromZ', + myGroup_track.defineHistogram('muon_passExtrap,LB_detEff;Detection_Efficiency_LB_MuonFromZ', title='Panels detection efficiency for muons decayed from Z candidates;Luminosity Block;Efficiency', type='TEfficiency', path=trackPath, @@ -207,48 +216,42 @@ def RpcMonitoringConfig(inputFlags): title='#phi of muons in all events;#phi;NMuon', type='TH1D', path='PlotCand', + xbins=32, xmin=-3.1415926, xmax=3.1415926) + myGroup_track.defineHistogram('muEta_allMu,muPhi_allMu;EtaVSPhi_AllMuons', + type='TH2D', + title='Eta vs phi of all muons;#eta;#phi;NMuon', + path='PlotCand', + xbins=42,xmin=-1.05, xmax=1.05, ybins=32,ymin=-3.1415926,ymax=3.1415926) - myGroup_track.defineHistogram('muon_passExtrap_allMu,panelInd_hM_allMu;Panel_Efficiency_AllMuons', + + myGroup_track.defineHistogram('muon_passExtrap_allMu,panelInd_hM_allMu;Detection_Efficiency_AllMuons', title='Panels detection efficiency for all muons;Panel Index;Efficiency', type='TEfficiency', path=trackPath, xbins=8592, xmin=-0.5, xmax=8591.5) - sectors = [str(k) for k in range(1, 16+1)] + sectors = ["sector"+str(k) for k in range(1, 16+1)] array_sectors = helper.addArray([sectors], rpcTrackAnaAlg, 'RpcTrackAnaAlg', 'Muon/MuonRawDataMonitoring/RPC/') - array_sectors.defineHistogram('cs_sec;ClusterSize_Sector', - title='Cluster size on sector{0};Cluster size;NCluster', + array_sectors.defineHistogram('cs_sec;ClusterSize', + title='Cluster size on {0};Cluster size;NCluster', type='TH1I', path='TrackMatch/ClusterSize', xbins=11, xmin=-0.5, xmax=10.5) - array_sectors.defineHistogram('hitTime_sec;PRDHitTime_MuonFromZ_Sector', - title='Hit time on sector{0};Hit time;NHits', + array_sectors.defineHistogram('hitTime_sec;PRDHitTime_MuonFromZ', + title='Hit time on {0};Hit time;NHits', type='TH1I', path='TrackMatch/PRDHitTime', xbins=67, xmin=-104.6875, xmax=104.6875) ###################################################################################################### - ## Rpc lv1 Analysis + ## Rpc lv1 trigger ###################################################################################################### - RPCLv1AnaAlg = CompFactory.RPCLv1AnaAlg - - Lv1AnaAlg = helper.addAlgorithm(RPCLv1AnaAlg, "RPCLv1AnaAlgAlg") - # Lv1AnaAlg.TriggerChain = 'HLT_mu26_ivarmedium' - - if not inputFlags.DQ.triggerDataAvailable: - Lv1AnaAlg.MuonRoIContainerName = '' - else: - # LVL1MuonRoIs are only available after the HLTResultMTByteStreamDecoderAlg has executed - from TrigDecisionTool.TrigDecisionToolConfig import getRun3NavigationContainerFromInput - Lv1AnaAlg.ExtraInputs += [('xAOD::TrigCompositeContainer' , 'StoreGateSvc+'+getRun3NavigationContainerFromInput(inputFlags))] - - myGroup_lv1Trigger = helper.addGroup(Lv1AnaAlg, 'RPCLv1AnaAlg', 'Muon/MuonRawDataMonitoring/RPC/') - + myGroup_lv1Trigger = helper.addGroup(rpcTrackAnaAlg, 'RpcTrackAnaAlg', 'Muon/MuonRawDataMonitoring/RPC/') myGroup_lv1Trigger.defineHistogram('nMu;NMuon', title='Number of Muons;nMuons;Events', type='TH1I', @@ -259,13 +262,6 @@ def RpcMonitoringConfig(inputFlags): type='TH1I', path='PlotCand', xbins=5,xmin=-0.5,xmax=4.5) - - myGroup_lv1Trigger.defineHistogram('muPt_full;MuonPt_full', - title='barrel and endcap muon Pt;Pt[MeV];NMuon', - type='TH1D', - path='PlotCand', - xbins=100,xmin=0,xmax=400e3) - myGroup_lv1Trigger.defineHistogram('roiEta;roiEta', title='roi eta;roi #eta;rois', type='TH1D', @@ -283,56 +279,37 @@ def RpcMonitoringConfig(inputFlags): type='TH1I', path='PlotCand', xbins=6,xmin=0.5,xmax=6.5) - - myGroup_lv1Trigger.defineHistogram('nMuBarrel_medium;NMuonBarrel_medium', - title='Number of Barrel Medium Muons;nMuons;Events', - type='TH1I', - path='L1Trigger', - xbins=5,xmin=-0.5,xmax=4.5) - myGroup_lv1Trigger.defineHistogram('muPtDen;MuonPt', - title='Barrel Muon Pt;Pt[MeV];NMuon', - type='TH1D', - path='L1Trigger', - xbins=200,xmin=0,xmax=1000e3) + lv1Triggers = ["thr"+str(k) for k in range(1, 6+1)] + array_triggerThr = helper.addArray([lv1Triggers], rpcTrackAnaAlg, 'RpcTrackAnaAlg', 'Muon/MuonRawDataMonitoring/RPC/') - myGroup_lv1Trigger.defineHistogram('muEtaDen,muPhiDen;L1TriggerEffDen', - type='TH2D', - title='L1 Trigger Efficiency Denominator;#eta;#phi;NMuon', - path='L1Trigger', - xbins=42,xmin=-1.05, xmax=1.05, - ybins=32,ymin=-3.1415926,ymax=3.1415926) - - lv1Triggers = [str(k) for k in range(1, 6+1)] - array_triggerThr = helper.addArray([lv1Triggers], Lv1AnaAlg, 'RPCLv1AnaAlg', 'Muon/MuonRawDataMonitoring/RPC') - - array_triggerThr.defineHistogram('passTrigger,muPt;L1TriggerEff_muPt', - title='L1 Trigger Threshold{0} Efficiency;Pt[MeV];#epsilon Thr{0}', + array_triggerThr.defineHistogram('passTrigger,muPt_l1;L1TriggerEff_muPt', + title='L1 Trigger Efficiency for {0};Pt[MeV];#epsilon for {0}', type='TEfficiency', path='L1Trigger', xbins=10, xmin=0.0, xmax=80.0e3) - array_triggerThr.defineHistogram('passTrigger,muEta;L1TriggerEff_muEta', - title='L1 Trigger Threshold{0} Efficiency;#eta;#epsilon Thr{0}', + array_triggerThr.defineHistogram('passTrigger_plateau,muEta_l1;L1TriggerEff_muEta', + title='L1 Trigger Efficiency for {0};#eta;#epsilon for {0}', type='TEfficiency', path='L1Trigger', xbins=42,xmin=-1.05, xmax=1.05) - array_triggerThr.defineHistogram('passTrigger,muPhi;L1TriggerEff_muPhi', - title='L1 Trigger Threshold{0} Efficiency;#phi;#epsilon Thr{0}', + array_triggerThr.defineHistogram('passTrigger_plateau,muPhi_l1;L1TriggerEff_muPhi', + title='L1 Trigger Efficiency for {0};#phi;#epsilon for {0}', type='TEfficiency', path='L1Trigger', xbins=32,xmin=-3.1415926,xmax=3.1415926) - array_triggerThr.defineHistogram('muEta,muPhi;L1TriggerEffNum', + array_triggerThr.defineHistogram('muEta_l1,muPhi_l1;L1TriggerEffNum', type='TH2D', - title='L1 Trigger Efficiency numerator;#eta;#phi;NMuon Thr{0}', + title='L1 Trigger Efficiency Numerator for {0};#eta;#phi;NMuon for {0}', path='L1Trigger', xbins=42,xmin=-1.05, xmax=1.05, ybins=32,ymin=-3.1415926,ymax=3.1415926) - array_triggerThr.defineHistogram('passTrigger,muEta,muPhi;L1TriggerEff_eta_phi', - title='L1 Trigger Threshold{0} Efficiency;#eta;#phi;#epsilon Thr{0}', + array_triggerThr.defineHistogram('passTrigger_plateau,muEta_l1,muPhi_l1;L1TriggerEff_eta_phi', + title='L1 Trigger Efficiency for {0};#eta;#phi;#epsilon for {0}', type='TEfficiency', path='L1Trigger', xbins=42,xmin=-1.05, xmax=1.05, @@ -372,9 +349,7 @@ if __name__=="__main__": print ("WIll use files: \n", file_list) flags.Input.Files = file_list - flags.Output.HISTFileName = 'RPCMonitoringOutput.root' - flags.GeoModel.AtlasVersion = "ATLAS-R2-2016-01-00-01" flags.lock() diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCDQUtils.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCDQUtils.h index 5c8cc776a5b27dc2565d0145f8cd9cb5fd373867..611ff95daf8c36291c40eb1d0a454eae81f2f64c 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCDQUtils.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCDQUtils.h @@ -141,4 +141,4 @@ struct GasGapData }; -#endif \ No newline at end of file +#endif diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCLv1AnaAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCLv1AnaAlg.cxx deleted file mode 100644 index 5d5549ea4fc3f95a2b91f6b419d8e22066ae6819..0000000000000000000000000000000000000000 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCLv1AnaAlg.cxx +++ /dev/null @@ -1,178 +0,0 @@ -/* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration -*/ - -#include "RPCLv1AnaAlg.h" - -//======================================================================================================== -RPCLv1AnaAlg::RPCLv1AnaAlg (const std::string& name, ISvcLocator* pSvcLocator) - :AthMonitorAlgorithm(name,pSvcLocator) -{} - -RPCLv1AnaAlg::~RPCLv1AnaAlg() {} - -//======================================================================================================== -StatusCode RPCLv1AnaAlg::initialize() -{ - ATH_CHECK( m_MuonContainerKey .initialize()); - ATH_CHECK( m_rpcPadContainerKey.initialize()); - ATH_CHECK( m_l1RoiContainerKey .initialize(SG::AllowEmpty)); - - std::vector<std::string> triggerThrs = {"1", "2", "3", "4", "5", "6"}; - m_TriggerThrGroup = Monitored::buildToolMap<int>(m_tools, "RPCLv1AnaAlg", triggerThrs); - - return AthMonitorAlgorithm::initialize(); -} - -//======================================================================================================== -StatusCode RPCLv1AnaAlg::fillHistograms(const EventContext& ctx) const -{ - using namespace Monitored; - auto tool = getGroup(m_packageName); - - std::vector<double> muPtfullVec = {}; - std::vector<double> muPtDenVec = {}; - - - int nmuon = 0; - int nmuon_barrel = 0; - int nmuon_barrel_midium = 0; - - // - // read muons - // - SG::ReadHandle<xAOD::MuonContainer> muonsHandle(m_MuonContainerKey, ctx); - - if(!muonsHandle.isValid()) { - ATH_MSG_ERROR("evtStore() does not contain muon Collection with name "<< m_MuonContainerKey); - return StatusCode::FAILURE; - } - - // - // fill muon Pt - // - muPtfullVec.reserve(muonsHandle->size()); - const xAOD::MuonContainer *muons = muonsHandle.cptr(); - for(const xAOD::Muon* muonItr : *muons) { - nmuon ++; - muPtfullVec.push_back(muonItr->pt()); - } - auto muPtFullCollection = Collection("muPt_full", muPtfullVec); - - // - // read rois - // - /* raw LVL1MuonRoIs */ - if (!m_l1RoiContainerKey.empty()) { - SG::ReadHandle<xAOD::MuonRoIContainer> muonRoIs(m_l1RoiContainerKey, ctx); - - if(!muonRoIs.isValid()){ - ATH_MSG_ERROR("evtStore() does not contain muon L1 ROI Collection with name "<< m_l1RoiContainerKey); - return StatusCode::FAILURE; - } - const xAOD::MuonRoIContainer *rois = muonRoIs.cptr(); - - std::vector<double> roiEtaVec = {}; - std::vector<double> roiBarrelEtaVec = {}; - std::vector<int> roiBarrelThrVec = {}; - std::vector<const xAOD::MuonRoI*> roisBarrel; - - roiEtaVec.reserve(muonRoIs->size()); - roiBarrelEtaVec.reserve(muonRoIs->size()); - roiBarrelThrVec.reserve(muonRoIs->size()); - roisBarrel.reserve(muonRoIs->size()); - for(const xAOD::MuonRoI *roi : *rois) { - roiEtaVec.push_back(roi->eta()); - if(roi->getSource() != xAOD::MuonRoI::RoISource::Barrel) { - continue; - } - - roiBarrelEtaVec.push_back(roi->eta()); - roiBarrelThrVec.push_back(roi->getThrNumber()); - roisBarrel.push_back(roi); - } - - auto roiEtaCollection = Collection("roiEta", roiEtaVec); - auto roiBarrelEtaCollection = Collection("roiBarrelEta", roiBarrelEtaVec); - auto roiBarrelThrCollection = Collection("roiBarrelThr", roiBarrelThrVec); - fill(tool, roiEtaCollection); - fill(tool, roiBarrelEtaCollection); - fill(tool, roiBarrelThrCollection); - - // - // match muon and roi - // - muPtDenVec.reserve(muons->size()); - for(const auto muon : *muons) { - - double pt = muon->pt(); - double eta = muon->eta(); - double phi = muon->phi(); - - xAOD::Muon::Quality quality = muon->quality(); - - if(std::abs(pt) < m_minPt || std::abs(eta) < m_minEta || std::abs(eta) > m_maxEta) { - continue; - } - nmuon_barrel ++; - - if(!(quality <= m_quality)) { - continue; - } - nmuon_barrel_midium ++; - - // fill numerator - auto i_pt = Scalar<double>("muPt", pt); - auto i_eta = Scalar<double>("muEta", eta); - auto i_etaDen = Scalar<double>("muEtaDen", eta); - auto i_phi = Scalar<double>("muPhi", phi); - auto i_phiDen = Scalar<double>("muPhiDen", phi); - auto i_passTrigger = Scalar<bool>("passTrigger", false); - - for(const xAOD::MuonRoI *roi : *rois) { - - const double dphi = TVector2::Phi_mpi_pi(roi->phi() - phi); - const double deta = roi->eta() - eta; - const double dr = std::sqrt(dphi*dphi + deta*deta); - - if(dr > m_l1trigMatchWindow) { - continue; - } - - int thr = roi->getThrNumber(); - for (int i_thr=1;i_thr<7;i_thr++){ - if (i_thr <= thr){ - i_passTrigger = true; - } - else { - i_passTrigger = false; - } - - fill(m_tools[m_TriggerThrGroup.at(std::to_string(i_thr))], i_pt, i_eta, i_phi, i_passTrigger); - } - } - - // - // fill denominator - // - muPtDenVec .push_back(muon->pt()); - fill(tool, i_etaDen, i_phiDen); - } - - auto Nmuon = Scalar<int>("nMu", nmuon); - auto Nmuon_barrel = Scalar<int>("nMuBarrel", nmuon_barrel); - auto Nmuon_barrel_midium = Scalar<int>("nMuBarrel_medium", nmuon_barrel_midium); - - auto muPtCollection = Collection("muPtDen", muPtDenVec); - - // - // Fill histograms - // - fill(tool, Nmuon, Nmuon_barrel, Nmuon_barrel_midium); - fill(tool, muPtFullCollection); - fill(tool, muPtCollection); - } - - return StatusCode::SUCCESS; -} - diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCLv1AnaAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCLv1AnaAlg.h deleted file mode 100644 index e28a3b39e1a4f6139e7b92e7b95632ee07ffe690..0000000000000000000000000000000000000000 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCLv1AnaAlg.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef RPCMONITORDQ_RPCLV1ANAALG_H -#define RPCMONITORDQ_RPCLV1ANAALG_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 RPCLv1AnaAlg : public AthMonitorAlgorithm -{ - - public: - - RPCLv1AnaAlg(const std::string& name, ISvcLocator* svcLocator); - virtual ~RPCLv1AnaAlg(); - virtual StatusCode initialize() override; - virtual StatusCode fillHistograms( const EventContext& ctx ) const override; - - private: - DoubleProperty m_l1trigMatchWindow{this,"L1TrigMatchingWindow",0.3,"Window size in R for L1 trigger matching"}; - StringProperty m_packageName{this,"PackageName", "RPCLv1AnaAlg","group name for histograming"}; - - 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, "MuonRoIContainerName", "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}; - - std::map<std::string,int> m_TriggerThrGroup; - -}; - - -#endif diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.cxx index b5f4c270e08a5d37e332617f938703d9b7edf615..c201f76156cf1c857a7605ca26a7fb4dd9f52384 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.cxx @@ -17,6 +17,7 @@ #include "MuonReadoutGeometry/RpcReadoutElement.h" #include "MuonReadoutGeometry/RpcDetectorElement.h" #include "PathResolver/PathResolver.h" +#include "xAODTracking/TrackParticlexAODHelpers.h" // Boost package to read XML #include <boost/property_tree/ptree.hpp> @@ -47,15 +48,19 @@ StatusCode RpcTrackAnaAlg::initialize () ATH_CHECK( m_MuonRoIContainerKey.initialize(SG::AllowEmpty) ); ATH_CHECK( m_MuonContainerKey.initialize() ); ATH_CHECK( m_rpcPrdKey.initialize() ); + ATH_CHECK( m_PrimaryVertexContainerKey.initialize(SG::AllowEmpty)); ATH_CHECK( readElIndexFromXML() ); ATH_CHECK( initRpcPanel() ); ATH_CHECK( initTrigTag() ); - std::vector<std::string> sectorStr = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"}; + std::vector<std::string> sectorStr = {"sector1", "sector2", "sector3", "sector4", "sector5", "sector6", "sector7", "sector8", "sector9", "sector10", "sector11", "sector12", "sector13", "sector14", "sector15", "sector16"}; m_SectorGroup = Monitored::buildToolMap<int>(m_tools, "RpcTrackAnaAlg", sectorStr); + std::vector<std::string> triggerThrs = {"thr1", "thr2", "thr3", "thr4", "thr5", "thr6"}; + m_TriggerThrGroup = Monitored::buildToolMap<int>(m_tools, "RpcTrackAnaAlg", triggerThrs); + ATH_MSG_INFO(" initialize extrapolator "); ATH_CHECK(m_extrapolator.retrieve()); @@ -300,16 +305,34 @@ StatusCode RpcTrackAnaAlg::fillMuonExtrapolateEff(const EventContext& ctx) const using namespace Monitored; auto tool = getGroup(m_packageName); - if (!m_MuonRoIContainerKey.empty()) { - /* raw LVL1MuonRoIs */ - SG::ReadHandle<xAOD::MuonRoIContainer > muonRoIs( m_MuonRoIContainerKey, ctx); - - if(!muonRoIs.isValid()){ - ATH_MSG_ERROR("evtStore() does not contain muon L1 ROI Collection with name "<< m_MuonRoIContainerKey); - return StatusCode::FAILURE; + // + // read PrimaryVertex Z + // + const xAOD::Vertex* primVertex = nullptr; + if(!m_PrimaryVertexContainerKey.empty()){ + SG::ReadHandle <xAOD::VertexContainer> primVtxContainer(m_PrimaryVertexContainerKey, ctx); + if(primVtxContainer.isValid()){ + for(const auto vtx : *primVtxContainer){ + if(vtx->vertexType() == xAOD::VxType::VertexType::PriVtx){ + primVertex = vtx; + break; + } + } } } + double primaryVertexZ = (primVertex!=nullptr)?(primVertex->z()):(-999); + + // + // read beam position sigma from eventinfo + // + SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo, ctx); + const double beamPosSigmaX = eventInfo->beamPosSigmaX(); + const double beamPosSigmaY = eventInfo->beamPosSigmaY(); + const double beamPosSigmaXY = eventInfo->beamPosSigmaXY(); + // + // read muon + // SG::ReadHandle<xAOD::MuonContainer> muons(m_MuonContainerKey, ctx); ATH_MSG_DEBUG(" muons size = "<< muons->size()); @@ -318,80 +341,222 @@ StatusCode RpcTrackAnaAlg::fillMuonExtrapolateEff(const EventContext& ctx) const return StatusCode::FAILURE; } - std::vector<MyMuon> mymuons; - + // + // select out tag and probe muons + // + std::vector<std::shared_ptr<MyMuon>> tagmuons; + std::vector<std::shared_ptr<MyMuon>> probemuons; for(const xAOD::Muon* muon : *muons){ - // if(muon->muonType()!=xAOD::Muon::Combined)continue; - // if(!(muon->quality() <= xAOD::Muon::Medium))continue; - if(!(muon->quality() <= xAOD::Muon::Loose))continue; - if(!(muon->pt() > m_minPt)) continue; - - MyMuon mymuon; - /* fill basic info */ - mymuon.muon = muon; - mymuon.fourvec.SetPtEtaPhiM(muon->pt(),muon->eta(),muon->phi(),m_muonMass.value()); - /* fill tag of tag-and-probe info */ - mymuon.tagged = triggerMatching(muon,m_trigTagDefs)==StatusCode::SUCCESS; - //cppcheck-suppress uninitvar - mymuons.push_back( mymuon ); + if(std::abs(muon->eta()) > m_maxEta) continue; + + auto mymuon = std::make_shared<MyMuon>(); + mymuon->muon = muon; + mymuon->fourvec.SetPtEtaPhiM(muon->pt(),muon->eta(),muon->phi(),m_muonMass.value()); + mymuon->tagged = triggerMatching(muon,m_trigTagDefs)==StatusCode::SUCCESS; + + // muon quality + if(muon->quality() > xAOD::Muon::Medium) continue; + + // + // calculate muon z0sin(\theta) and d0significance + auto track = muon->primaryTrackParticle(); + const double z0 = track->z0() + track->vz() - primaryVertexZ; + + double z0sin = z0*std::sin(track->theta()); + double d0sig = xAOD::TrackingHelpers::d0significance( track, beamPosSigmaX, beamPosSigmaY, beamPosSigmaXY ); + + // select probe muons + if (std::abs(z0sin) < 0.5 && std::abs(d0sig) < 3.0 ){ + mymuon->tagProbeOK = true; + } + probemuons.push_back( mymuon ); + + // select tag muons + if (muon->pt() > 27.0e3 && std::abs(z0sin) < 1.0 && std::abs(d0sig) < 5.0 ){ + tagmuons.push_back( mymuon ); + } } + // + // Z tag & probe + // + for (auto tag_muon: tagmuons){ + if ( !(tag_muon->tagged) ) continue; + + for (auto probe_muon: probemuons){ + if (tag_muon->muon == probe_muon->muon) continue; + + // probe muon + if (!probe_muon->tagProbeOK ) continue; + + // Opposite charge + if(tag_muon->muon->charge() == probe_muon->muon->charge() ) continue; + + // Z mass window + float dimuon_mass = (tag_muon->fourvec + probe_muon->fourvec).M(); + if(dimuon_mass<m_zMass_lowLimit || dimuon_mass>m_zMass_upLimit) continue; + + // angular separation + float dr = (tag_muon->fourvec).DeltaR( probe_muon->fourvec ); + if( dr < m_isolationWindow) continue; + + probe_muon->tagProbeAndZmumuOK = true; + } + } + + // + // read rois: raw LVL1MuonRoIs + // + std::vector<const xAOD::MuonRoI*> roisBarrel; + if (!m_MuonRoIContainerKey.empty()) { + SG::ReadHandle<xAOD::MuonRoIContainer> muonRoIs(m_MuonRoIContainerKey, ctx); + + if(!muonRoIs.isValid()){ + ATH_MSG_ERROR("evtStore() does not contain muon L1 ROI Collection with name "<< m_MuonRoIContainerKey); + return StatusCode::FAILURE; + } + const xAOD::MuonRoIContainer *rois = muonRoIs.cptr(); + + std::vector<double> roiEtaVec = {}; + std::vector<double> roiBarrelEtaVec = {}; + std::vector<int> roiBarrelThrVec = {}; + + roiEtaVec.reserve(muonRoIs->size()); + roiBarrelEtaVec.reserve(muonRoIs->size()); + roiBarrelThrVec.reserve(muonRoIs->size()); + roisBarrel.reserve(muonRoIs->size()); + for(const xAOD::MuonRoI *roi : *rois) { + roiEtaVec.push_back(roi->eta()); + if(roi->getSource() != xAOD::MuonRoI::RoISource::Barrel) continue; + + roiBarrelEtaVec.push_back(roi->eta()); + roiBarrelThrVec.push_back(roi->getThrNumber()); + roisBarrel.push_back(roi); + } + + auto roiEtaCollection = Collection("roiEta", roiEtaVec); + auto roiBarrelEtaCollection = Collection("roiBarrelEta", roiBarrelEtaVec); + auto roiBarrelThrCollection = Collection("roiBarrelThr", roiBarrelThrVec); + fill(tool, roiEtaCollection); + fill(tool, roiBarrelEtaCollection); + fill(tool, roiBarrelThrCollection); + } + + // + // Fill Lv1 trigger efficiency + // Fill muon detection efficiency auto i_pt_allMu = Scalar<double>("muPt_allMu", 0.); auto i_eta_allMu = Scalar<double>("muEta_allMu", 0.); auto i_phi_allMu = Scalar<double>("muPhi_allMu", 0.); auto i_pt_zMu = Scalar<double>("muPt_MuonFromZ", 0.); auto i_eta_zMu = Scalar<double>("muEta_MuonFromZ", 0.); auto i_phi_zMu = Scalar<double>("muPhi_MuonFromZ", 0.); + auto i_eta_zMu_p = Scalar<double>("muEta_p_MuonFromZ", 0.); // kine variable at the plateau of pt turn-on curve + auto i_phi_zMu_p = Scalar<double>("muPhi_p_MuonFromZ", 0.);// kine variable at the plateau of pt turn-on curve + std::vector<GasGapResult> results; - std::vector<MyMuon>::iterator mu1_it = mymuons.begin(); - std::vector<MyMuon>::iterator mu1_end = mymuons.end(); - for(; mu1_it!=mu1_end; ++mu1_it){ - std::vector<MyMuon>::iterator mu2_it = mu1_it; - std::vector<MyMuon>::iterator mu2_end = mu1_end; - - if (!(mu1_it->isolated && mu1_it->isZmumu)){ - for(++mu2_it; mu2_it!=mu2_end; ++mu2_it){ - - float dr = (mu2_it->fourvec).DeltaR( mu1_it->fourvec ); - if( dr > m_isolationWindow.value() ){ - mu1_it->isolated = true; - mu2_it->isolated = true; - } + int nmuon = 0; + int nmuon_barrel = 0; + for (auto probe_muon: probemuons){ + nmuon ++; + double pt = probe_muon->muon->pt(); + double eta = probe_muon->muon->eta(); + double phi = probe_muon->muon->phi(); + + // barrel muon + if(std::abs(eta) < m_barrelMinEta || std::abs(eta) > m_barrelMaxEta) continue; + nmuon_barrel ++; + + // has MuonSpectrometerTrackParticle + const xAOD::TrackParticle* track = probe_muon->muon->trackParticle(xAOD::Muon::MuonSpectrometerTrackParticle); + if(track) { + results.clear(); + + ATH_CHECK(extrapolate2RPC(track, Trk::anyDirection, results, BI)); + ATH_CHECK(readHitsPerGasgap(ctx, results, AllMuon) ); + } + + // fill kine variables for probe muons + i_pt_allMu = pt; + i_eta_allMu = eta; + i_phi_allMu = phi; + fill(tool, i_pt_allMu, i_eta_allMu, i_phi_allMu); - // Z Muon - if( mu1_it->muon->charge() == mu2_it->muon->charge() ) continue; + // + // Probe muons with Z tag&probe method + // 1) Plot L1 trigger efficiency use probe muons + // 2) Plot muon detection efficiency use probe muons + if ( probe_muon->tagProbeAndZmumuOK ) { - double dimuon_mass = (mu2_it->fourvec + mu1_it->fourvec).M(); - if(dimuon_mass>m_zMass_lowLimit && dimuon_mass<m_zMass_upLimit) { - mu1_it->isZmumu=true; - mu2_it->isZmumu=true; + // + // do match muon with ROI + std::vector<bool> isMatcheds(6, 0); + for(const xAOD::MuonRoI *roi : roisBarrel) { + const double dphi = TVector2::Phi_mpi_pi(roi->phi() - phi); + const double deta = roi->eta() - eta; + const double dr = std::sqrt(dphi*dphi + deta*deta); + + if(dr > m_l1trigMatchWindow) continue; + + int thr = roi->getThrNumber(); + for (int i_thr=1;i_thr<7;i_thr++){ + if (i_thr <= thr){ + isMatcheds[i_thr-1] = true; + } } } - } - const xAOD::TrackParticle* track = mu1_it->muon->trackParticle(xAOD::Muon::MuonSpectrometerTrackParticle); - if(!track) continue; + // + // fill L1 trigger Efficiency + auto i_pt = Scalar<double>("muPt_l1", pt); + auto i_eta = Scalar<double>("muEta_l1", eta); + auto i_phi = Scalar<double>("muPhi_l1", phi); + auto i_passTrigger = Scalar<bool>("passTrigger", false); + auto i_passTrigger_1 = Scalar<bool>("passTrigger_plateau", false); + + for (int i_thr=1;i_thr<7;i_thr++){ + i_passTrigger = isMatcheds[i_thr-1]; + i_passTrigger_1 = isMatcheds[i_thr-1]; + + // plot L1 trigger pt turn-on curve + fill(m_tools[m_TriggerThrGroup.at("thr"+std::to_string(i_thr))], i_pt, i_passTrigger); - results.clear(); + // plot L1 trigger efficiency on the plateau of pt turn-on curve + if(std::abs(pt) > m_minPt ) { + fill(m_tools[m_TriggerThrGroup.at("thr"+std::to_string(i_thr))], i_eta, i_phi, i_passTrigger_1); + } + } + + // + // muon track + // fill muon detection Efficiency + // + if(track) { + ATH_CHECK(readHitsPerGasgap(ctx, results, ZCand) ); + } - ATH_CHECK(extrapolate2RPC(track, Trk::anyDirection, results, BI)); - ATH_CHECK(readHitsPerGasgap(ctx, results, AllMuon) ); + // fill kine variables for probe muons in ZTP + i_pt_zMu = pt; + i_eta_zMu = eta; + i_phi_zMu = phi; + fill(tool, i_pt_zMu, i_eta_zMu, i_phi_zMu); - i_pt_allMu = mu1_it->muon->pt(); - i_eta_allMu = mu1_it->muon->eta(); - i_phi_allMu = mu1_it->muon->phi(); - fill(tool, i_pt_allMu, i_eta_allMu, i_phi_allMu); + if(std::abs(pt) > m_minPt ) { + i_eta_zMu_p = eta; + i_phi_zMu_p = phi; + fill(tool, i_eta_zMu_p, i_phi_zMu_p); + } + } // tagProbeAndZmumuOK + } // probemuons - if ( mu1_it->isolated && mu1_it->isZmumu ) { - ATH_CHECK(readHitsPerGasgap(ctx, results, ZCand) ); + auto Nmuon = Scalar<int>("nMu", nmuon); + auto Nmuon_barrel = Scalar<int>("nMuBarrel", nmuon_barrel); - i_pt_zMu = mu1_it->muon->pt(); - i_eta_zMu = mu1_it->muon->eta(); - i_phi_zMu = mu1_it->muon->phi(); - fill(tool, i_pt_zMu, i_eta_zMu, i_phi_zMu); - } - } + // + // Fill histograms + // + fill(tool, Nmuon, Nmuon_barrel); return StatusCode::SUCCESS; } @@ -506,7 +671,7 @@ StatusCode RpcTrackAnaAlg::triggerMatching(const xAOD::Muon* offline_muon, const if( !getTrigDecisionTool()->isPassed( tagTrig.eventTrig.Data() ) ) continue; ATH_MSG_DEBUG("tagTrig.eventTrig = "<< tagTrig.eventTrig << "; tagTrig.tagTrig = "<< tagTrig.tagTrig ); - ATH_MSG_DEBUG("m_MuonEFContainerName.value() = "<< m_MuonEFContainerName.value()); + // ATH_MSG_DEBUG("m_MuonEFContainerName.value() = "<< m_MuonEFContainerName.value()); std::vector< TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> > features = getTrigDecisionTool()->features<xAOD::MuonContainer>( tagTrig.tagTrig.Data() ,TrigDefs::Physics); @@ -652,11 +817,11 @@ RpcTrackAnaAlg::computeTrackIntersectionWithGasGap(ExResult & res } else if (track_particle->track()) { detParameters = m_extrapolator->extrapolateTrack(ctx, - *(track_particle->track()), - gapSurface, - result.direction, - true, - Trk::muon); + *(track_particle->track()), + gapSurface, + result.direction, + true, + Trk::muon); } else { return detParameters; @@ -905,7 +1070,7 @@ StatusCode RpcTrackAnaAlg::readHitsPerGasgap(const EventContext& ctx, std::vecto v_PRDHit_TrackMatched.push_back(std::make_pair(exr, rpcData)); i_hitTime_sec = rpcData->time(); - fill(m_tools[m_SectorGroup.at(std::to_string(std::abs(sector)))], i_hitTime_sec); + fill(m_tools[m_SectorGroup.at("sector"+std::to_string(std::abs(sector)))], i_hitTime_sec); } } } @@ -976,7 +1141,7 @@ StatusCode RpcTrackAnaAlg::readHitsPerGasgap(const EventContext& ctx, std::vecto const int measuresPhi = rpcIdHelper.measuresPhi(id); isOutTime = false; - if(fabs(i_hit.second->time()) > m_outtime){ + if(std::abs(i_hit.second->time()) > m_outtime){ isOutTime = true; } @@ -996,7 +1161,7 @@ StatusCode RpcTrackAnaAlg::readHitsPerGasgap(const EventContext& ctx, std::vecto int i_panel_phi = gap->RpcPanel_eta_phi.second->panel_index; i_panelIndex = i_panel_phi; fill(tool, i_panelIndex, isOutTime_prd); - if (fabs(trackPos_localY-hitPos_local.y()) < m_diffHitTrackPostion){ + if (std::abs(trackPos_localY-hitPos_local.y()) < m_diffHitTrackPostion){ i_panelIndex_onTrack = i_panel_phi; fill(tool, i_panelIndex_onTrack, isOutTime_onTrack); } @@ -1005,7 +1170,7 @@ StatusCode RpcTrackAnaAlg::readHitsPerGasgap(const EventContext& ctx, std::vecto int i_panel_eta = gap->RpcPanel_eta_phi.first->panel_index; i_panelIndex = i_panel_eta; fill(tool, i_panelIndex, isOutTime_prd); - if (fabs(trackPos_localZ-hitPos_local.z()) < m_diffHitTrackPostion){ + if (std::abs(trackPos_localZ-hitPos_local.z()) < m_diffHitTrackPostion){ i_panelIndex_onTrack = i_panel_eta; fill(tool, i_panelIndex_onTrack, isOutTime_onTrack); } @@ -1063,7 +1228,7 @@ StatusCode RpcTrackAnaAlg::fillClusterSize(std::vector<const Muon::RpcPrepData*> fill(tool, i_panelIndex, i_clusterSize); auto i_cs_sec = Scalar<int>("cs_sec", cluster_size); - fill(m_tools[m_SectorGroup.at(std::to_string(std::abs(phiSector)))], i_cs_sec); + fill(m_tools[m_SectorGroup.at("sector"+std::to_string(std::abs(phiSector)))], i_cs_sec); if (isPhi == 1) { auto i_clusterSize_view = Scalar<int>("clusterSize_phi", cluster_size); @@ -1086,7 +1251,7 @@ bool RpcTrackAnaAlg::IsNearbyHit(const std::vector<const Muon::RpcPrepData*> &cl // Check whether this hit is close to any hits in the cluster for(const Muon::RpcPrepData* it_hit : cluster_hits) { if( abs(rpcIdHelper.strip(it_hit->identify()) - rpcIdHelper.strip(hit->identify())) < 2 && - fabs(it_hit->time() - hit->time()) < 6.5) { + std::abs(it_hit->time() - hit->time()) < 6.5) { return true; } } diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.h index fc0c31252788efd9da63eebaaf3c0277b99fa9a3..ef094750827f5a406d492c8920ca6cb78f53d486 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcTrackAnaAlg.h @@ -24,6 +24,7 @@ #include "MuonIdHelpers/IMuonIdHelperSvc.h" #include "xAODTrigger/MuonRoIContainer.h" #include "MuonTrigCoinData/RpcCoinDataContainer.h" +#include "xAODTracking/VertexContainer.h" #include "MuonReadoutGeometry/MuonDetectorManager.h" #include "MuonPrepRawData/RpcPrepDataContainer.h" #include "TrkExInterfaces/IExtrapolator.h" @@ -88,21 +89,27 @@ class RpcTrackAnaAlg : public AthMonitorAlgorithm StringProperty m_elementsFileName{this,"ElementsFileName", "Element.xml", "Elements xml file"}; - StringProperty m_trigTagList{this,"TagTrigList","HLT_mu26_ivarmedium_L1MU20","list of triggers to be used for trigger matching"}; + StringProperty m_trigTagList{this,"TagTrigList","HLT_mu_ivarmedium;HLT_mu50","list of triggers to be used for trigger matching"}; DoubleProperty m_trigMatchWindow{this,"TrigMatchingWindow",0.005,"Window size in R for trigger matching"}; BooleanProperty m_TagAndProbe{this,"TagAndProbe",false,"switch to perform tag-and-probe method"}; BooleanProperty m_TagAndProbeZmumu{this,"TagAndProbeZmumu",false,"switch to perform tag-and-probe method Z->mumu"}; - DoubleProperty m_minPt{this,"minPt",2.5e3,"minmum pT of muon"}; + // cuts for muons + DoubleProperty m_minPt{this,"minPt",25.0e3,"minmum pT of muon"}; + DoubleProperty m_maxEta{this,"maxEta",2.5,"max eta absolute value of muon"}; + + // cuts for barrel muons + DoubleProperty m_barrelMinPt {this, "barrelMinPt", 2.0e3}; + DoubleProperty m_barrelMinEta{this, "barrelMinEta", 0.1}; + DoubleProperty m_barrelMaxEta{this, "barrelMaxEta", 1.05}; + DoubleProperty m_muonMass{this,"MuonMass",105.6583755,"muon invariant mass in MeV"}; - DoubleProperty m_zMass{this,"ZMass",91187.6,"muon invariant mass in MeV"}; - DoubleProperty m_zMassWindow{this,"ZMassWindow",10000,"muon invariant mass half-window in MeV"}; DoubleProperty m_zMass_lowLimit{this,"zMass_lowLimit",50000.,"2 muon invariant mass low limit in Zmumu event"}; DoubleProperty m_zMass_upLimit{this,"zMass_upLimit", 150000.,"2 muon invariant mass up limit in Zmumu event"}; DoubleProperty m_isolationWindow{this,"IsolationWindow",0.1,"Window size in R for isolation with other muons"}; DoubleProperty m_l1trigMatchWindow{this,"L1TrigMatchingWindow",0.3,"Window size in R for L1 trigger matching"}; - StringProperty m_MuonEFContainerName{this,"MuonEFContainerName","HLT_MuonsCBOutsideIn","HLT RoI-based muon track container"}; + // StringProperty m_MuonEFContainerName{this,"MuonEFContainerName","HLT_MuonsCBOutsideIn","HLT RoI-based muon track container"}; DoubleProperty m_minDRTrackToGasGap{this, "minDRTrackToGasGap", 0.02, "minimum of DR between track and gasgap"}; DoubleProperty m_boundsToleranceReadoutElement{this, "boundsToleranceReadoutElement", 100.0, "boundsToleranceReadoutElement"}; @@ -122,6 +129,7 @@ class RpcTrackAnaAlg : public AthMonitorAlgorithm SG::ReadHandleKey<xAOD::MuonRoIContainer> m_MuonRoIContainerKey {this, "MuonRoIContainerName", "LVL1MuonRoIs", "Key for L1 ROIs" }; SG::ReadHandleKey<xAOD::MuonContainer> m_MuonContainerKey { this, "MuonContainerKey", "Muons", "Key for Offline muon track Containers" }; SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_rpcPrdKey {this,"RpcPrepDataContainer","RPC_Measurements","RPC PRDs"}; + SG::ReadHandleKey<xAOD::VertexContainer> m_PrimaryVertexContainerKey{this,"PrimaryVertexContainerName","PrimaryVertices","Primary Vertex Container"}; RpcPanelMap m_rpcPanelMap; @@ -134,6 +142,7 @@ class RpcTrackAnaAlg : public AthMonitorAlgorithm std::map<std::string, int> m_elementIndex; std::map<std::string,int> m_SectorGroup; + std::map<std::string,int> m_TriggerThrGroup; }; #endif 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 0ecbaca4f785adccdac8c9d089cd65b27bd1acf7..8cefc56d7bb2cd54a585d569b79e509bf3f606f8 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/components/RpcRawDataMonitoring_entries.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/components/RpcRawDataMonitoring_entries.cxx @@ -2,11 +2,9 @@ #include "../RpcLv1RawDataSectorLogic.h" #include "../RpcLv1RawDataEfficiency.h" #include "../RpcTrackAnaAlg.h" -#include "../RPCLv1AnaAlg.h" DECLARE_COMPONENT( RpcLv1RawDataValAlg ) DECLARE_COMPONENT( RpcLv1RawDataSectorLogic ) DECLARE_COMPONENT( RpcLv1RawDataEfficiency ) -DECLARE_COMPONENT( RpcTrackAnaAlg ) -DECLARE_COMPONENT( RPCLv1AnaAlg ) +DECLARE_COMPONENT( RpcTrackAnaAlg ) \ No newline at end of file