6 import RpcRawDataMonitoring.RPCRawDataMonUtils
as RPCRawDataMonUtils
7 import RpcRawDataMonitoring.CoreClass
as CoreClass
8 import RpcRawDataMonitoring.GetLBInfoFromCOOL
as GetLBInfoFromCOOL
10 from AthenaCommon.Utils.unixtools
import find_datafile
14 import xml.dom.minidom
as Dom
20 if not os.path.isfile(xml_file):
21 print (
"ERROR: can NOT find xml file: %s!" %xml_file)
24 dom = Dom.parse(xml_file)
25 root_node = dom.documentElement
26 ele_nodes = root_node.childNodes
30 BMBO_StationNames = {2, 3, 4, 5, 8, 9, 10, 53}
31 for i_node
in ele_nodes:
32 if i_node.nodeType != 1:
36 ele_index =
int(i_node.getAttribute(
"index"))
38 panel_property[
"stationName"] =
int(i_node.getAttribute(
"stationName"))
39 panel_property[
"stationEta" ] =
int(i_node.getAttribute(
"stationEta"))
40 panel_property[
"stationPhi" ] =
int(i_node.getAttribute(
"stationPhi"))
41 panel_property[
"doubletR" ] =
int(i_node.getAttribute(
"doubletR"))
42 panel_property[
"doubletZ" ] =
int(i_node.getAttribute(
"doubletZ"))
44 if panel_property[
"stationName"]
in BMBO_StationNames:
50 for gasgap
in range(1, ngasgap+1):
51 for measPhi
in [0, 1]:
52 panel_property[
"doubletPhi"] = dbPhi
53 panel_property[
"gasGap"] = gasgap
54 panel_property[
"measPhi"] = measPhi
56 panel_index = (ele_index-1)*8 + (dbPhi - 1)*4 + (gasgap - 1)*2 + measPhi
59 if not (panel_index
in Dic_panels):
60 Dic_panels[panel_index] = i_panel
62 print (
"ERROR: duplicated panel index!!!")
64 print (
"RPCPostProcessing::readElementFromXML::INFO: count of read panels = %d" %(len(Dic_panels)))
70 xbins = h_run.GetNbinsX()
73 for i_bin
in range(1, xbins+1):
74 if h_run.GetBinContent(i_bin) > 0:
75 runs.append(
int(h_run.GetBinLowEdge(i_bin))+1)
81 h_NEvt_LB = inputs[0][1][0].Clone()
82 h_run = inputs[0][1][1].Clone()
87 g_name =
'NEvent_VS_Lumi'
88 g_title =
'NEvent VS Lumi'
89 g_Xtitle =
'Inst Luminosity [10^{34} cm^{-2}s^{-1}]'
96 if Dic_LBLumi
is not None:
97 print (
"len(Dic_LBLumi) = ", len(Dic_LBLumi))
99 for LB, lbInfo
in Dic_LBLumi.items():
100 if lbInfo[
'AtlasPhysics'] ==
'false' or float(lbInfo[
'Duration'])<50.:
103 hit_content = h_NEvt_LB.GetBinContent(LB)
104 hit_err = h_NEvt_LB.GetBinError(LB)
106 x.append(
float(lbInfo[
'InstLumi']) )
107 y.append( hit_content )
108 y_err.append( hit_err )
118 h_hit_panels = inputs[0][1][0].Clone()
119 h_NEvt_LB = inputs[0][1][1].Clone()
120 h_run = inputs[0][1][2].Clone()
124 print (
"make_hit_rate::WARNING - Input file contain data in ", len(runs),
" **runs**, which should only include 1-run and full data !!!")
131 if Dic_LBLumi
is not None:
132 print (
"len(Dic_LBLumi) = ", len(Dic_LBLumi))
139 draw_occu.SetPanelDic(DicPanels)
140 draw_occu.SetLumiInfoDic(Dic_LBLumi)
141 draw_occu.doNEvtScale(h_NEvt_LB)
143 h_name =
"NPRDHit_Panels_All"
148 list_hist_subDetector = []
149 for i_var
in [
"p0",
"p1",
"chi2",
"predRate",
"meanRate"]:
153 list_hist1D_secLayer = draw_occu.GetHist1D_ySectorsAndLayers([h_name, i_var])
158 list_hist1D_panels = draw_occu.GetHist1D_yPanels([h_name, i_var])
160 list_hist_all += list_hist1D_secLayer+list_hist1D_panels
165 list_summary_allSectorsAndLayers = draw_occu.GetSummary_allSectorsAndLayers([h_name, i_var])
170 list_hist2d_EtaPhi_allLayer = draw_occu.GetHist2D_EtaPhi_allLayer([h_name, i_var])
172 list_hist_layer += list_summary_allSectorsAndLayers+list_hist2d_EtaPhi_allLayer
177 if i_var
in [
"p0",
"chi2",
"predRate"]:
178 list_summary_eachSectorsAndLayers = draw_occu.GetSummary_eachSectorsAndLayers([h_name, i_var])
180 list_hist_subDetector += list_summary_eachSectorsAndLayers
182 getHistNames(list_hist_all,
"Muon/MuonRawDataMonitoring/RPC/RpcOccupancy/HitRate_vs_InstLumi", dic_hists)
183 getHistNames(list_hist_layer,
"Muon/MuonRawDataMonitoring/RPC/RpcOccupancy/HitRate_vs_InstLumi/Layers", dic_hists)
184 getHistNames(list_hist_subDetector,
"Muon/MuonRawDataMonitoring/RPC/RpcOccupancy/HitRate_vs_InstLumi/SubDetector", dic_hists)
190 hist_2dhits = inputs[0][1][0].Clone()
191 hist_projY = hist_2dhits.ProjectionY(
"NPRDHit_Panels_All_py")
195 draw_hits.SetPanelDic(DicPanels)
197 h_name =
"NPRDHit_Panels_All_py"
201 config = [h_name, variable]
207 list_hist2d_EtaPhi_allLayer = draw_hits.GetHist2D_EtaPhi_allLayer(config, doSetZRange =
False)
208 getHistNames(list_hist2d_EtaPhi_allLayer,
"Muon/MuonRawDataMonitoring/RPC/RpcOccupancy/Hits", dic_histos)
215 hist = inputs[0][1][0].Clone()
218 print (
"make_hitMulti - hist = ", hist)
221 draw_hitmulti.SetPanelDic(DicPanels)
225 h_name =
"HitMultiplicity_Panels"
226 variable =
"hitMultiplicity"
231 list_hist1D_secLayer_hitMu = draw_hitmulti.GetHist1D_ySectorsAndLayers([h_name, variable])
236 list_hist1D_panels_hitMu = draw_hitmulti.GetHist1D_yPanels([h_name, variable])
240 h2_CS =
"ClusterSize_Panels"
241 variable =
"averageClusterSize"
242 hist_clus = inputs[0][1][1].Clone()
244 draw_clus.SetPanelDic(DicPanels)
249 list_hist1D_secLayer_cluster = draw_hitmulti.GetHist1D_ySectorsAndLayers([h2_CS, variable])
254 list_hist1D_panels_cluster = draw_hitmulti.GetHist1D_yPanels([h2_CS, variable])
256 return list_hist1D_secLayer_hitMu+list_hist1D_panels_hitMu+list_hist1D_secLayer_cluster+list_hist1D_panels_cluster
260 hist = inputs[0][1][0].Clone()
264 draw_eff.SetPanelDic(DicPanels)
266 h_name =
"Detection_Efficiency_MuonFromZ"
270 config = [h_name, variable]
276 list_summary_allSectorsAndLayers = draw_eff.GetSummary_allSectorsAndLayers(config)
277 getHistNames(list_summary_allSectorsAndLayers,
"Muon/MuonRawDataMonitoring/RPC/TrackMatch/MuonDetectionEff", dic_histos)
282 list_summary_eachSectorsAndLayers= draw_eff.GetSummary_eachSectorsAndLayers(config)
283 getHistNames(list_summary_eachSectorsAndLayers,
"Muon/MuonRawDataMonitoring/RPC/TrackMatch/MuonDetectionEff/SubDetector", dic_histos)
288 list_hist2d_EtaPhi_allLayer = draw_eff.GetHist2D_EtaPhi_allLayer(config)
289 getHistNames(list_hist2d_EtaPhi_allLayer,
"Muon/MuonRawDataMonitoring/RPC/TrackMatch/MuonDetectionEff", dic_histos)
294 list_hist1D_secLayer = draw_eff.GetHist1D_ySectorsAndLayers(config)
295 getHistNames(list_hist1D_secLayer,
"Muon/MuonRawDataMonitoring/RPC/TrackMatch/MuonDetectionEff", dic_histos)
300 list_hist1D_panels = draw_eff.GetHist1D_yPanels(config)
301 getHistNames(list_hist1D_panels,
"Muon/MuonRawDataMonitoring/RPC/TrackMatch/MuonDetectionEff", dic_histos)
307 hist_eff = inputs[0][1][0].Clone()
314 hist_num = hist_eff.GetPassedHistogram()
316 draw_hits.SetPanelDic(DicPanels)
319 h_name =
"Muon_Z_ex2RpcPanelWithHit"
320 variable =
"muon_Z_num"
321 config = [h_name, variable]
324 list_hist2d_EtaPhi_allLayer = draw_hits.GetHist2D_EtaPhi_allLayer(config, doSetZRange =
False)
325 getHistNames(list_hist2d_EtaPhi_allLayer,
"Muon/MuonRawDataMonitoring/RPC/TrackMatch/NMuon", dic_histos)
330 hist_num = hist_eff.GetTotalHistogram()
332 draw_hits.SetPanelDic(DicPanels)
335 h_name =
"Muon_Z_ex2RpcPanel"
336 variable =
"muon_Z_den"
337 config = [h_name, variable]
340 list_hist2d_EtaPhi_allLayer = draw_hits.GetHist2D_EtaPhi_allLayer(config, doSetZRange =
False)
341 getHistNames(list_hist2d_EtaPhi_allLayer,
"Muon/MuonRawDataMonitoring/RPC/TrackMatch/NMuon", dic_histos)
347 hist_eff = inputs[0][1][0].Clone()
354 hist_num = hist_eff.GetPassedHistogram()
356 draw_hits.SetPanelDic(DicPanels)
359 h_name =
"Muon_all_ex2RpcPanelWithHit"
360 variable =
"muon_all_num"
361 config = [h_name, variable]
364 list_hist2d_EtaPhi_allLayer = draw_hits.GetHist2D_EtaPhi_allLayer(config, doSetZRange =
False)
365 getHistNames(list_hist2d_EtaPhi_allLayer,
"Muon/MuonRawDataMonitoring/RPC/TrackMatch/NMuon", dic_histos)
370 hist_num = hist_eff.GetTotalHistogram()
372 draw_hits.SetPanelDic(DicPanels)
375 h_name =
"Muon_all_ex2RpcPanel"
376 variable =
"muon_all_den"
377 config = [h_name, variable]
380 list_hist2d_EtaPhi_allLayer = draw_hits.GetHist2D_EtaPhi_allLayer(config, doSetZRange =
False)
381 getHistNames(list_hist2d_EtaPhi_allLayer,
"Muon/MuonRawDataMonitoring/RPC/TrackMatch/NMuon", dic_histos)
393 hist = inputs[0][1][0].Clone()
395 draw_histFrac.SetPanelDic(DicPanels)
397 h_name =
"OuttimeHitFraction_PRDHit"
398 var =
"outTimeHitFrac"
399 config = [h_name, var]
404 list_hist1D_secLayer_hitFrac = draw_histFrac.GetHist1D_ySectorsAndLayers(config)
409 list_hist1D_panels_hitFrac = draw_histFrac.GetHist1D_yPanels(config)
414 hist_onTrack = inputs[0][1][1].Clone()
416 draw_histFrac_onTrack.SetPanelDic(DicPanels)
418 h_name =
"OuttimeHitFraction_PRDHit_onTrack"
419 var =
"outTimeHitFrac_onTrack"
420 config = [h_name, var]
425 list_hist1D_secLayer_hitFracOnTrack = draw_histFrac_onTrack.GetHist1D_ySectorsAndLayers(config)
430 list_hist1D_panels_hitFracOnTrack = draw_histFrac_onTrack.GetHist1D_yPanels(config)
432 return list_hist1D_secLayer_hitFrac+list_hist1D_panels_hitFrac+list_hist1D_secLayer_hitFracOnTrack+list_hist1D_panels_hitFracOnTrack
437 for i_hist
in hist_list:
438 i_name =
"%s/%s" %(prefix, i_hist.GetName())
439 dic_hist[i_name] = i_hist
443 if __name__ ==
'__main__':
444 print (
"RPCPostProcessing: Hello, World !")