5 from AthenaConfiguration.ComponentFactory
import CompFactory
6 from MMRawDataMonitoring.MMMonUtils
import getMMLabel, getMMLabelY
9 '''Function to configures some algorithms in the monitoring system.'''
14 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
17 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
24 from AthenaMonitoring
import AthMonitorCfgHelper
25 helper = AthMonitorCfgHelper(inputFlags,
'MMAthMonitorCfg')
29 mmMonAlg = helper.addAlgorithm(CompFactory.MMRawDataMonAlg,
'MMMonAlg')
30 mmMonAlg.DoMMESD =
True
31 mmMonAlg.do_stereoCorrection=
False
33 mmMonAlg.doDetailedHists =
False
35 mmGroup = helper.addGroup(mmMonAlg,
'mmMonitor',
'Muon/MuonRawDataMonitoring/MM/')
37 side = [
"CSide",
"ASide"]
41 mmTriggerGroup=helper.addGroup(mmMonAlg,
"mmTrigger",
"Muon/MuonRawDataMonitoring/MM")
42 mmTriggerGroup.defineHistogram(
'lb_tri,trig_sector;trigger_sector_vs_lumiblock', type=
'TH2F', title=
'TriggerSector_vs_lumiblock; lb; sector', path=
'MMTrigger', xbins=100, xmin=-0.5, xmax=99.5, ybins=33, ymin=-16.5, ymax=16.5, opt=
'kAddBinsDynamically,kAlwaysCreate')
43 mmTriggerGroup.defineHistogram(
'trig_sector,art_channel;art_channel_vs_sector', type=
'TH2F', title=
'ART_channels; sector; art_channel', path=
'MMTrigger', xbins=33, xmin=-16.5, xmax=16.5, ybins=8192, ymin=0, ymax=8192,opt=
'kAlwaysCreate')
45 mmTriggerGroup.defineHistogram(
'art_sector_layer,art_channel;art_channel_vs_layer', type=
'TH2F', title=
'ART_channels_vs_layer; ; art_channel', path=
'MMTrigger', xbins=257, xmin=-128, xmax=129, ybins=8192, ymin=0, ymax=8192, xlabels=layerLabelx,opt=
'kAlwaysCreate')
46 mmTriggerGroup.defineHistogram(
'trig_sector,art_deltaBC;art_bcid_vs_sector', type=
'TH2F', title=
'ART_BCID_vs_sector; sector_layer; art_deltaBCID', path=
'MMTrigger', xbins=33, xmin=-16.5, xmax=16.5, ybins=40, ymin=-20, ymax=20,opt=
'kAlwaysCreate')
47 mmTriggerGroup.defineHistogram(
'art_sector_layer,art_deltaBC;art_layer_vs_Dbcid', type=
'TH2F', title=
'ART_BCID_vs_layer; sector_layer; art_deltaBCID', path=
'MMTrigger', xbins=260, xmin=-130, xmax=130, ybins=40, ymin=-20, ymax=20, xlabels=layerLabelx,opt=
'kAlwaysCreate')
48 mmTriggerGroup.defineHistogram(
'lb_tri,art_sector_layer;art_layer_vs_lumiblock', type=
'TH2F', title=
'ART_layer_vs_lumiblock; lb; ', path=
'MMTrigger', xbins=100, xmin=-0.5, xmax=99.5, ybins=260, ymin=-130, ymax=130,opt=
'kAddBinsDynamically,kAlwaysCreate', ylabels=layerLabelx)
49 mmTriggerGroup.defineHistogram(
'art_bc,bcid;art_bcid_vs_bc', type=
'TH2F', title=
'ART_BCID; art_bcid; BCID', path=
'MMTrigger', xbins=5000, xmin=0, xmax=5000, ybins=5000, ymin=0, ymax=5000,opt=
'kAlwaysCreate')
50 mmTriggerGroup.defineHistogram(
'art_deltaBC,bcid;art_Dbcid_vs_bc', type=
'TH2F', title=
'ART_BCID; art_Dbcid; BCID', path=
'MMTrigger', xbins=5000, xmin=-2500, xmax=2500, ybins=5000, ymin=0, ymax=5000,opt=
'kAlwaysCreate')
52 mmTriggerGroup_roi=helper.addGroup(mmMonAlg,
"mmTrigger_roi",
"Muon/MuonRawDataMonitoring/MM")
53 mmTriggerGroup_roi.defineHistogram(
'deltaBC;Delta_BC', type=
'TH1F', title=
'Delta_BC; deltaBC; events', path=
'MMTrigger', xbins=40, xmin=-20, xmax=20,opt=
'kAlwaysCreate')
54 mmTriggerGroup_roi.defineHistogram(
'phiid;phi', type=
'TH1F', title=
'phi; phi; events', path=
'MMTrigger', xbins=70, xmin=-35, xmax=35,opt=
'kAlwaysCreate')
56 mmTriggerGroup_roi.defineHistogram(
'trig_sector,phi_mu;sector_vs_phimu', type=
'TH2F', title=
'sector_vs_phimu; sector; phimu ', path=
'MMTrigger', xbins=40, xmin=-20, xmax=20, ybins=100, ymin=-3.2, ymax=3.2,opt=
'kAlwaysCreate')
57 mmTriggerGroup_roi.defineHistogram(
'phi_roi,phi_mu;phiroi_vs_phimu', type=
'TH2F', title=
'phiroi_vs_phimu; phi_roi; phimu ', path=
'MMTrigger', xbins=100, xmin=-3.2, xmax=3.2, ybins=100, ymin=-3.2, ymax=3.2,opt=
'kAlwaysCreate')
58 mmTriggerGroup_roi.defineHistogram(
'eta_roi,eta_mu;etaroi_vs_etamu', type=
'TH2F', title=
'etaroi_vs_etamu; eta_roi; etamu ', path=
'MMTrigger', xbins=100, xmin=-3., xmax=3., ybins=100, ymin=-3., ymax=3.,opt=
'kAlwaysCreate')
59 mmTriggerGroup_roi.defineHistogram(
'x_roi_sideA,y_roi_sideA;roi_x_vs_y_sideA', type=
'TH2F', title=
'roix_vs_roiy_sideA; x_roi; y_roi ', path=
'MMTrigger', xbins=200, xmin=-5000., xmax=5000., ybins=200, ymin=-5000., ymax=5000.,opt=
'kAlwaysCreate')
60 mmTriggerGroup_roi.defineHistogram(
'x_roi_sideC,y_roi_sideC;roi_x_vs_y_sideC', type=
'TH2F', title=
'roix_vs_roiy_sideC; x_roi; y_roi ', path=
'MMTrigger', xbins=200, xmin=-5000., xmax=5000., ybins=200, ymin=-5000., ymax=5000.,opt=
'kAlwaysCreate')
61 mmTriggerGroup_roi.defineHistogram(
'lb_tri,trig_sector;sector_roi_vs_lb', type=
'TH2F', title=
'sector_roi_vs_lb; lb; sector_roi ', path=
'MMTrigger', xbins=100, xmin=-0.5, xmax=99.5, ybins=33, ymin=-16.5, ymax=16.5, opt=
'kAddBinsDynamically,kAlwaysCreate')
62 mmTriggerGroup_roi.defineHistogram(
'trig_sector,deltaBC;deltaBC_vs_sector_roi', type=
'TH2F', title=
'deltaBC_vs_sector_ROI; sector; dBC_roi ', path=
'MMTrigger', xbins=33, xmin=-16.5, xmax=16.5, ybins=40, ymin=-20, ymax=20,opt=
'kAlwaysCreate')
63 mmTriggerGroup_roi.defineHistogram(
'trig_sector,nROIPerBC;nROIPerBC_vs_sector', type=
'TH2F', title=
'N ROI per BC per Sector; sector; nROIPerBC ', path=
'MMTrigger', xbins=33, xmin=-16.5, xmax=16.5, ybins=10, ymin=0, ymax=10, opt=
'kAlwaysCreate')
66 for phi
in range(1, phimax+1):
67 title_ROI=f
'rID_vs_phiID ROI {iside} Sector {phi}; PhiID ; RID'
68 var=f
'phiid_{iside}_s{phi},rid_{iside}_s{phi};rID_vs_phiID_ROI_{iside}_Sector{phi}'
69 mmTriggerGroup_roi.defineHistogram(var, type=
'TH2F', title=title_ROI, path=
'MMTrigger/ROIPerSector', xbins=70, xmin=-35, xmax=35, ybins=255, ymin=0, ymax=255,opt=
'kAlwaysCreate')
70 title_art_dbc=f
'ART_DeltaBC vs lumiblock {iside} Sector {phi}; lb ; DeltaBC'
71 var_dbc_art=f
'lb_tri,art_deltaBC_{iside}_s{phi};art_DeltaBC_vs_lb_art_{iside}_Sector{phi}'
72 mmTriggerGroup.defineHistogram(var_dbc_art, type=
'TH2F', title=title_art_dbc, path=
'MMTrigger/BCvsLBPerSector', xbins=100, xmin=-0.5, xmax=99.5, ybins=40, ymin=-20, ymax=20, opt=
'kAddBinsDynamically,kAlwaysCreate')
73 title_roi_dbc=f
'ROI DeltaBC vs lumiblock {iside} Sector {phi}; lb ; DeltaBC'
74 var_dbc_roi=f
'lb_tri,deltaBC_{iside}_s{phi};DeltaBC_vs_lb_ROI_{iside}_Sector{phi}'
75 mmTriggerGroup_roi.defineHistogram(var_dbc_roi, type=
'TH2F', title=title_roi_dbc, path=
'MMTrigger/BCvsLBPerSector', xbins=100, xmin=-0.5, xmax=99.5, ybins=40, ymin=-20, ymax=20, opt=
'kAddBinsDynamically,kAlwaysCreate')
79 mmGroup.defineHistogram(
'nseg;nseg', type=
'TH1F', title=
'Number_of_segments; Number_of_segments; Number of Entries', path=
'Overview', xbins=100, xmin=0, xmax=100., opt=
'kAlwaysCreate')
80 mmGroup.defineHistogram(
'ntrk;ntrk', type=
'TH1F', title=
'Number_of_tracks; Number_of_tracks; Number of Entries', path=
'Overview', xbins=100, xmin=0, xmax=100., opt=
'kAlwaysCreate')
81 mmGroup.defineHistogram(
'pt_trk;pt', type=
'TH1F', title=
'pt; pt[GeV]; Number of Entries', path=
'Overview', xbins=200, xmin=0, xmax=400., opt=
'kAlwaysCreate')
82 mmGroup.defineHistogram(
'residual;Residuals', type=
'TH1F', title=
'Residuals; res[mm]; Number of Entries', path=
'Overview', xbins=200, xmin=-10, xmax=10., opt=
'kAlwaysCreate')
83 mmGroup.defineHistogram(
'residual,eta_trk;Res_vs_eta', type=
'TH2F', title=
"Residuals vs Eta; Residuals [mm]; Eta;", path=
'Overview',xbins=100, xmin=-10, xmax=10., ybins=100, ymin=-3.,ymax=3., opt=
'kAlwaysCreate')
84 mmGroup.defineHistogram(
'residual,phi_trk;Res_vs_phi', type=
'TH2F', title=
"Residuals vs Eta; Residuals [mm]; Phi;", path=
'Overview',xbins=100, xmin=-10, xmax=10., ybins=16, ymin=-3.14,ymax=3.14, opt=
'kAlwaysCreate')
85 mmGroup.defineHistogram(
'residual,stPhi_mon;Res_vs_stPhi', type=
'TH2F', title=
"Residuals vs station Phi; Res; stPhi;", path=
'Overview', xbins=100, xmin=-10, xmax=10., ybins=16, ymin=.5,ymax=16.5, opt=
'kAlwaysCreate')
86 mmGroup.defineHistogram(
'charge_all;Charge', type=
'TH1F', title=
'Charge; Charge[fC]; Number of Entries', path=
'Overview', xbins=200, xmin=0., xmax=800., opt=
'kAlwaysCreate')
87 mmGroup.defineHistogram(
'x_mon, y_mon;Posy_vs_Posx', type=
'TH2F', title=
"Posy vs Posx; MM-GlobalX [mm]; MM-GlobalY [mm];", path=
'Overview', xbins=500, xmin=-5000, xmax=5000., ybins=500, ymin=-5000., ymax=5000., opt=
'kAlwaysCreate')
88 mmGroup.defineHistogram(
'R_mon, z_mon;Posz_vs_R', type=
'TH2F', title=
"Posz vs R; MM-GlobalR [mm]; MM-GlobalZ [mm];", path=
'Overview', xbins=500, xmin=0, xmax=5000., ybins=1000, ymin=-8000 ,ymax=8000, opt=
'kAlwaysCreate')
89 mmGroup.defineHistogram(
'numberofstrips_percluster;Nstrips_percluster', type=
'TH1F', title=
'Number of strips per cluster; Number of strips; Number of Entries', path=
'Overview', xbins=20, xmin=0., xmax=20., opt=
'kAlwaysCreate')
90 mmGroup.defineHistogram(
'strip_times;strip_time', type=
'TH1F', title=
'strip time; time [ns]; Number of Entries', path=
'Overview', xbins=800, xmin=-100., xmax=700., opt=
'kAlwaysCreate')
91 mmGroup.defineHistogram(
'cluster_times;cluster_time', type=
'TH1F', title=
'cluster time; time [ns]; Number of Entries', path=
'Overview', xbins=700, xmin=-200., xmax=500., opt=
'kAlwaysCreate')
92 mmGroup.defineHistogram(
'statEta_strip, strip_number;Strip_Number_vs_StationEta', type=
'TH2F', title=
'Strip Numbers vs Station Eta; ; Strip Number;', path=
'Overview', xbins=5, xmin=-2, xmax=3., xlabels=[
'#eta-2',
'#eta-1',
'',
'#eta1',
'#eta2'], ybins=5120, ymin=0., ymax=5120., opt=
'kAlwaysCreate')
93 mmGroup.defineHistogram(
'nstrips_ontrack;Nstrips_percluster_ontrack', type=
'TH1F', title=
'Number of strips per cluster on track; Number of strips; Number of Entries', path=
'Overview', xbins=20, xmin=0., xmax=20., opt=
'kAlwaysCreate')
94 mmGroup.defineHistogram(
'charge_ontrack;Charge_ontrack', type=
'TH1F', title=
'Charge on track; Charge [fC]; Number of Entries', path=
'Overview', xbins=200, xmin=0, xmax=800., opt=
'kAlwaysCreate')
95 mmGroup.defineHistogram(
'strip_time_on_track', type=
'TH1F', title=
'strip time on track; time [ns]; Number of Entries', path=
'Overview', xbins=800, xmin=-100., xmax=700., opt=
'kAlwaysCreate')
96 mmGroup.defineHistogram(
'cluster_time_on_track', type=
'TH1F', title=
'cluster time on track; time [ns]; Number of Entries', path=
'Overview', xbins=700, xmin=-200, xmax=500., opt=
'kAlwaysCreate')
100 mmGroup.defineHistogram(
'cluster_size_onseg;Nstrips_percluster_onseg', type=
'TH1F', title=
'Number of strips per cluster on segments; Number of strips; Number of Entries', path=
'Overview', xbins=20, xmin=0., xmax=20., opt=
'kAlwaysCreate')
101 mmGroup.defineHistogram(
'charge_onseg;Charge_onseg', type=
'TH1F', title=
'Charge on segments; Charge[fC]; Number of Entries', path=
'Overview', xbins=200, xmin=0., xmax=800., opt=
'kAlwaysCreate')
102 mmGroup.defineHistogram(
'strp_time_onseg;strip_time_onseg', type=
'TH1F', title=
'strip time on segments; time [ns]; Number of Entries', path=
'Overview', xbins=800, xmin=-100, xmax=700., opt=
'kAlwaysCreate')
106 mmGroup.defineHistogram(
'sector_CSide,stationPhi_CSide;Occupancy_CSide_PCB', type=
'TH2F', title=
'Occupancy EC; ; Sector;', path=
'Occupancy', xbins=64, xmin=0, xmax=128., ybins=16, ymin=.5, ymax=16.5, xlabels=occLabelx, opt=
'kAlwaysCreate')
107 mmGroup.defineHistogram(
'sector_ASide,stationPhi_ASide;Occupancy_ASide_PCB', type=
'TH2F', title=
'Occupancy EA; ; Sector;', path=
'Occupancy', xbins=64, xmin=0, xmax=128., ybins=16, ymin=.5, ymax=16.5, xlabels=occLabelx, opt=
'kAlwaysCreate')
108 mmGroup.defineHistogram(
'sector_CSide_ontrack,stationPhi_CSide_ontrack;Occupancy_CSide_PCB_ontrack', type=
'TH2F', title=
'Occupancy EC ontrack; ; Sector;', path=
'Occupancy', xbins=64, xmin=0, xmax=128., ybins=16, ymin=.5, ymax=16.5, xlabels=occLabelx, opt=
'kAlwaysCreate')
109 mmGroup.defineHistogram(
'sector_ASide_ontrack,stationPhi_ASide_ontrack;Occupancy_ASide_PCB_ontrack', type=
'TH2F', title=
'Occupancy EA ontrack; ; Sector;', path=
'Occupancy', xbins=64, xmin=0, xmax=128., ybins=16, ymin=.5, ymax=16.5, xlabels=occLabelx, opt=
'kAlwaysCreate')
110 mmGroup.defineHistogram(
'sector_CSide_onseg,stationPhi_CSide_onseg;Occupancy_CSide_PCB_onseg', type=
'TH2F', title=
'Occupancy EC onseg; ; Sector;', path=
'Occupancy', xbins=64, xmin=0, xmax=128., ybins=16, ymin=.5, ymax=16.5, xlabels=occLabelx, opt=
'kAlwaysCreate')
111 mmGroup.defineHistogram(
'sector_ASide_onseg,stationPhi_ASide_onseg;Occupancy_ASide_PCB_onseg', type=
'TH2F', title=
'Occupancy EA onseg; ; Sector;', path=
'Occupancy', xbins=64, xmin=0, xmax=128., ybins=16, ymin=.5, ymax=16.5, xlabels=occLabelx, opt=
'kAlwaysCreate')
115 etasector = [
"1",
"2"]
119 thisLabelx11,thisLabely11=
getMMLabel(
"x_lab_occ_ASide",
"y_lab_occ_ASide")
121 thisLabelx11,thisLabely11=
getMMLabel(
"x_lab_occ_CSide",
"y_lab_occ_CSide")
123 MM_SideGroup=
"MM_sideGroup{0}".
format(iside)
124 mmSideGroup=helper.addGroup(mmMonAlg, MM_SideGroup,
"Muon/MuonRawDataMonitoring/MM/"+iside)
132 for eta
in etasector:
133 var_layer=f
'hitcut,{iside}_eta{eta}'
134 title_eff_layer=f
'Efficiency_per_layer_Eta{eta}_{iside}; layer Sector = int(layer/8) ; Efficiency;'
136 mmSideGroup.defineHistogram(var_layer, type=
'TEfficiency', title=title_eff_layer, path=
'Efficiency_perLayer', xbins=128, xmin=0, xmax=128, opt=
'kAlwaysCreate')
138 for phi
in range(1, phimax+1):
139 title_MMSummary=f
'Number of strips per cluster E{iside} stPhi {phi}; ; Strip Number'
140 var=f
'sector_strip_{iside}_phi{phi},strip_number_{iside}_phi{phi};Strip_number_pergap_{iside}_stPhi{phi}'
141 mmSideGroup.defineHistogram(var, type=
'TH2F', title=title_MMSummary, path=
'Number_of_strips_percluster_perPhiSector', xbins=16, xmin=0, xmax=16, xlabels=thisLabelx11, ybins=5120, ymin=0., ymax=5120., opt=
'kAlwaysCreate')
144 mmSideGroup.defineHistogram(f
'lb_mon,sector_lb_{iside}_phi{phi};Occupancy_lb_{iside}_phi{phi}', type=
'TH2F', title=f
'Occupancy wrt lb sector {phi}; LB; PCB FEB', path=
'Occupancy', xbins=100, xmin=-0.5, xmax=99.5, opt=
'kAddBinsDynamically,kAlwaysCreate', ybins=128, ymin=0., ymax=128, ylabels=thisLabely, merge=
'merge')
145 mmSideGroup.defineHistogram(f
'lb_ontrack,sector_lb_{iside}_phi{phi}_ontrack;Occupancy_lb_{iside}_phi{phi}_ontrack', type=
'TH2F', title=f
'Occupancy wrt lb sector {phi} ontrack ; LB; PCB FEB', path=
'Occupancy', xbins=100, xmin=-0.5, xmax=99.5, opt=
'kAddBinsDynamically,kAlwaysCreate', ybins=128, ymin=0., ymax=128, ylabels=thisLabely, merge=
'merge')
146 mmSideGroup.defineHistogram(f
'lb_onseg,sector_lb_{iside}_phi{phi}_onseg;Occupancy_lb_{iside}_phi{phi}_onseg', type=
'TH2F', title=f
'Occupancy wrt lb sector {phi} onSegms; LB; PCB FEB', path=
'Segments/Occupancy', xbins=100, xmin=-0.5, xmax=99.5, opt=
'kAddBinsDynamically,kAlwaysCreate', ybins=128, ymin=0., ymax=128, ylabels=thisLabely, merge=
'merge')
148 for multi
in range(multipletmin, multipletmax+1):
149 for gas_gap
in range(1,5):
153 if mmMonAlg.doDetailedHists:
154 title_MMSummary_charge=f
'Charge {iside} stPhi{phi} multiplet{multi} layer{layer}; Charge [fC]; Number of Entries'
155 var1=f
'charge_perlayer_{iside}_phi{phi}_ml{multi}_gap{gas_gap};Charge_perlayer_{iside}_phi{phi}_ml{multi}_gap{gas_gap}'
156 mmSideGroup.defineHistogram(var1, type=
'TH1F', title=title_MMSummary_charge, path=
'Charge_perLayer', xbins=200, xmin=0., xmax=600., opt=
'kAlwaysCreate')
158 title_MMSummary_charge_ontrack=f
'Charge_ontrack_perlayer_{iside}_phi{phi}_ml{multi}_gap{gas_gap}; Charge [fC]; Number of Entries'
159 var2=f
'charge_perlayer_ontrack_{iside}_phi{phi}_ml{multi}_gap{gas_gap};Charge_ontrack_perlayer_{iside}_phi{phi}_ml{multi}_gap{gas_gap}'
160 mmSideGroup.defineHistogram(var2, type=
'TH1F', title=title_MMSummary_charge_ontrack, path=
'Charge_perLayer', xbins=200, xmin=0., xmax=600., opt=
'kAlwaysCreate')
162 title_cl_size_layer=f
'Cluster size {iside} phi{phi} mult{multi} layer{layer}; cluster size; Entries'
163 var_clus_size_layer=f
'cluster_size_perlayer_{iside}_phi{phi}_ml{multi}_gap{gas_gap};Cluster_size_{iside}_phi{phi}_ml{multi}_gap{gas_gap}'
164 mmSideGroup.defineHistogram(var_clus_size_layer, type=
'TH1F', title=title_cl_size_layer, path=
"Cluster_size_perLayer", xbins=20, xmin=0, xmax=20, opt=
'kAlwaysCreate')
165 title2_cl_size_layer=f
'Cluster size ontrack {iside} phi{phi} mult{multi} layer{layer}; cluster size; Entries'
166 var2_clus_size_layer=f
'cluster_size_perlayer_ontrack_{iside}_phi{phi}_ml{multi}_gap{gas_gap};Cluster_size_ontrack_{iside}_phi{phi}_ml{multi}_gap{gas_gap}'
167 mmSideGroup.defineHistogram(var2_clus_size_layer, type=
'TH1F', title=title2_cl_size_layer, path=
"Cluster_size_perLayer", xbins=20, xmin=0, xmax=20, opt=
'kAlwaysCreate')
169 var_residual_layer=f
'residuals_{iside}_phi{phi}_layer{layer}'
170 title_residual_layer =f
'residuals{iside} stPhi{phi} layer{layer}; res [mm]; Number of Entries'
171 mmSideGroup.defineHistogram(var_residual_layer, type=
'TH1F', title=title_residual_layer, path=
'Residuals_perLayer', xbins=200, xmin=-10, xmax=10, opt=
'kAlwaysCreate')
174 for eta
in etasector:
179 for gas_gap
in range(1,5):
181 if mmMonAlg.doDetailedHists:
182 title_eff=f
'Efficiency_per_PCB_Eta{eta}_{iside}_phi{phi-1}_multiplet{multi}_gas_gap{gas_gap}; pcb; Efficiency Eta{eta}'
183 var_pcb=f
'hitcut,pcb_eta{eta}_{iside}_phi{phi-1}_multiplet{multi}_gas_gap{gas_gap}'
184 mmSideGroup.defineHistogram(var_pcb, type=
'TEfficiency', title=title_eff, path=
'Efficiency', xbins=maxpcb, xmin=0, xmax=maxpcb, opt=
'kAlwaysCreate')
186 var_residual=f
'residuals_{iside}_phi{phi}_stationEta{eta}_multiplet{multi}_gas_gap{gas_gap}'
187 title_residual =f
'residuals{iside} stPhi{phi} stEta{eta} multiplet{multi} gap{gas_gap}; res [mm]; Number of Entries'
188 mmSideGroup.defineHistogram(var_residual, type=
'TH1F', title=title_residual, path=
'Residuals', xbins=200, xmin=-10, xmax=10, opt=
'kAlwaysCreate')
190 var_clus_size=f
'pcb_mon_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},cluster_size_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Cluster_size_vs_PCB_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
191 title_cl_size=f
'Cluster size {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap}; PCB; cluster size'
192 mmSideGroup.defineHistogram(var_clus_size, type=
'TH2F', title=title_cl_size, path=
"Cluster_size_perPCB", xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=20, ymin=0, ymax=20, opt=
'kAlwaysCreate')
194 var_strip_time=f
'pcb_strip_mon_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},strp_time_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Strip_time_vs_PCB_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
195 var_clus_time=f
'pcb_mon_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},cluster_time_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Cluster_time_vs_PCB_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
196 title_strp_time=f
'Strip time {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap}; PCB; strip time [ns]'
197 title_clus_time=f
'Cluster time {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap}; PCB; cluster time [ns]'
198 mmSideGroup.defineHistogram(var_strip_time, type=
'TH2F', title=title_strp_time, path=
'Strip_time_perPCB', xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=800, ymin=-100, ymax=700, opt=
'kAlwaysCreate')
199 mmSideGroup.defineHistogram(var_clus_time, type=
'TH2F', title=title_clus_time, path=
'Cluster_time_perPCB', xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=700, ymin=-200, ymax=500, opt=
'kAlwaysCreate')
201 var_charge_perPCB=f
'pcb_mon_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},charge_perPCB_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Charge_vs_PCB_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
202 title_charge_perPCB=f
'Charge {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap}; PCB; charge [fC]'
203 mmSideGroup.defineHistogram(var_charge_perPCB, type=
'TH2F', title=title_charge_perPCB, path=
'Charge_perPCB', xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=200, ymin=0, ymax=800, opt=
'kAlwaysCreate')
205 var_clus_size_ontrack=f
'pcb_mon_ontrack_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},cluster_size_ontrack_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Cluster_size_vs_PCB_ontrack_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
206 title_clus_size_ontrack=f
'Cluster size {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap} on track; PCB; cluster size'
207 mmSideGroup.defineHistogram(var_clus_size_ontrack, type=
'TH2F', title=title_clus_size_ontrack, path=
'Cluster_size_ontrack', xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=20, ymin=0, ymax=20, opt=
'kAlwaysCreate')
209 var_strip_time_ontrack=f
'pcb_strip_mon_ontrack_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},strp_time_ontrack_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Strip_time_ontrack_vs_PCB_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
210 var_clus_time_ontrack=f
'pcb_mon_ontrack_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},cluster_time_ontrack_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Cluster_time_ontrack_vs_PCB_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
211 title_strp_time_ontrack=f
'Strip time {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap} on track; PCB; strip time [ns]'
212 title_clus_time_ontrack=f
'Cluster time {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap} on track; PCB; cluster time [ns]'
213 mmSideGroup.defineHistogram(var_strip_time_ontrack, type=
'TH2F', title=title_strp_time_ontrack, path=
'Strip_time_ontrack', xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=800, ymin=-100, ymax=700, opt=
'kAlwaysCreate')
214 mmSideGroup.defineHistogram(var_clus_time_ontrack, type=
'TH2F', title=title_clus_time_ontrack, path=
'Cluster_time_ontrack', xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=700, ymin=-200, ymax=500, opt=
'kAlwaysCreate')
216 var_charge_perPCB_ontrack=f
'pcb_mon_ontrack_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},charge_perPCB_ontrack_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Charge_vs_PCB_ontrack_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
217 title_charge_perPCB_ontrack=f
'Charge {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap} on track; PCB; charge [fC]'
218 mmSideGroup.defineHistogram(var_charge_perPCB_ontrack, type=
'TH2F', title=title_charge_perPCB_ontrack, path=
'Charge_ontrack', xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=200, ymin=0, ymax=800, opt=
'kAlwaysCreate')
220 var_clus_size_onseg=f
'pcb_mon_onseg_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},cluster_size_onseg_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Cluster_size_vs_PCB_onseg_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
221 title_clus_size_onseg=f
'Cluster size {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap} on segms; PCB; cluster size'
222 mmSideGroup.defineHistogram(var_clus_size_onseg, type=
'TH2F', title=title_clus_size_onseg, path=
'Segments/Cluster_size_onseg', xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=20, ymin=0, ymax=20, opt=
'kAlwaysCreate')
223 var_strip_time_onseg=f
'pcb_strip_mon_onseg_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},strp_time_onseg_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Strip_time_onseg_vs_PCB_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
224 title_strp_time_onseg=f
'Strip time {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap} on segms; PCB; strip time [ns]'
225 mmSideGroup.defineHistogram(var_strip_time_onseg, type=
'TH2F', title=title_strp_time_onseg, path=
'Segments/Strip_time_onseg', xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=800, ymin=-100, ymax=700, opt=
'kAlwaysCreate')
226 title_clus_time_onseg=f
'Cluster time {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap} on segms; PCB; cluster time [ns]'
227 var_clus_time_onseg=f
'pcb_mon_onseg_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},cluster_time_onseg_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Cluster_time_onseg_vs_PCB_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
228 mmSideGroup.defineHistogram(var_clus_time_onseg, type=
'TH2F', title=title_clus_time_onseg, path=
'Segments/Cluster_time_onseg', xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=700, ymin=-200, ymax=500, opt=
'kAlwaysCreate')
229 var_charge_perPCB_onseg=f
'pcb_mon_onseg_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap},charge_perPCB_onseg_{iside}_phi{phi}_eta{eta}_ml{multi}_gap{gas_gap};Charge_vs_PCB_onseg_{iside}_eta{eta}_phi{phi}_ml{multi}_gap{gas_gap}'
230 title_charge_perPCB_onseg=f
'Charge {iside} eta{eta} phi{phi} mult{multi} gasgap{gas_gap} on seg; PCB; charge [fC]'
231 mmSideGroup.defineHistogram(var_charge_perPCB_onseg, type=
'TH2F', title=title_charge_perPCB_onseg, path=
'Segments/Charge_onseg', xbins=maxpcb, xmin=.5, xmax=maxpcb+.5, ybins=200, ymin=0, ymax=800, opt=
'kAlwaysCreate')
234 for gas1
in range(1, 5):
235 for multi1
in range(1, 3):
236 title_ontrack=f
'Posy vs Posx E{iside} multiplet{multi1} gap{gas1} ontrack; MM-GlobalX [mm]; MM-GlobalY [mm]'
237 var_ontrack=f
'x_{iside}_multiplet{multi1}_gas_gap_{gas1}_ontrack,y_{iside}_multiplet{multi1}_gas_gap_{gas1}_ontrack;Posy_vs_Posx_{iside}_multiplet{multi1}_gas_gap_{gas1}_ontrack'
238 mmSideGroup.defineHistogram(var_ontrack, type=
'TH2F', title=title_ontrack, path=
'PosY_vs_Posx_perLayer_ontrack',xbins=500, xmin=-5000, xmax=5000., ybins=500, ymin=-5000.,ymax=5000., opt=
'kAlwaysCreate')
240 acc = helper.result()
244 if __name__==
'__main__':
248 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
252 "/eos/atlas/atlastier0/rucio/data23_hi/express_express/00463414/data23_hi.00463414.express_express.recon.ESD.x798/data23_hi.00463414.express_express.recon.ESD.x798._lb0501._SFO-ALL._0001.1",
254 flags.Output.HISTFileName =
'monitor.root'
256 flags.Detector.GeometryMM=
True
257 flags.DQ.useTrigger=
False
258 flags.Input.isMC =
False
259 if not flags.Input.isMC:
260 flags.IOVDb.GlobalTag =
"CONDBR2-BLKPA-2022-10"
266 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
267 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
272 mmMonitorAcc.OutputLevel=DEBUG
273 cfg.merge(mmMonitorAcc)