6 from AthenaMonitoring.AthMonitorCfgHelper
import AthMonitorCfgHelper
7 helper = AthMonitorCfgHelper(flags,
'LArRODMonAlgCfg')
9 from AthenaConfiguration.ComponentFactory
import CompFactory
14 return helper.result()
19 larRODMonAlg = helper.addAlgorithm(algoinstance,
'larRODMonAlg')
21 from LArMonitoring.GlobalVariables
import lArDQGlobals
26 for i
in range(0,len(lArDQGlobals.FEB_Slot)):
27 nslots.append(lArDQGlobals.FEB_Slot[lArDQGlobals.Partitions[i]][1])
29 larRODMonAlg.MonGroup=GroupName
30 larRODMonAlg.LArRODSubDetNames=lArDQGlobals.SubDet
31 larRODMonAlg.LArRODPartitionNames=lArDQGlobals.Partitions
32 larRODMonAlg.LArRODNslots=nslots
34 larRODMonAlg.ADCthreshold = 0
35 larRODMonAlg.peakTimeCut = 5.
36 larRODMonAlg.SkipNullQT=
True
40 larRODMonAlg.DoCellsDump=
True
43 larRODMonAlg.DoDspTestDump=
True
45 if flags.Common.isOnline:
46 larRODMonAlg.MaxEvDump=100
50 larRODMonAlg.ProblemsToMask=[
"highNoiseHG",
"highNoiseMG",
"highNoiseLG",
"deadReadout",
"deadPhys",
"almostDead",
"short",
"sporadicBurstNoise"]
52 Group = helper.addGroup(
60 summary_hist_path=
'Summary/'
62 Group.defineHistogram(
'partition,gain;Summary_E',
63 title=
'Summary of errors on Energy per partition and per gain',
65 path=summary_hist_path,
67 xbins=lArDQGlobals.N_Partitions, xmin=-0.5, xmax=lArDQGlobals.N_Partitions-0.5,
68 ybins=lArDQGlobals.N_Gains,ymin=-0.5,ymax=lArDQGlobals.N_Gains-0.5,
69 xlabels=lArDQGlobals.Partitions,ylabels=lArDQGlobals.Gains)
71 Group.defineHistogram(
'partition,gain;Summary_Q',
72 title=
'Summary of errors on Quality per partition and per gain',
74 path=summary_hist_path,
76 xbins=lArDQGlobals.N_Partitions, xmin=-0.5, xmax=lArDQGlobals.N_Partitions-0.5,
77 ybins=lArDQGlobals.N_Gains,ymin=-0.5,ymax=lArDQGlobals.N_Gains-0.5,
78 xlabels=lArDQGlobals.Partitions,ylabels=lArDQGlobals.Gains)
80 Group.defineHistogram(
'partition,gain;Summary_T',
81 title=
'Summary of errors on Time per partition and per gain',
83 path=summary_hist_path,
85 xbins=lArDQGlobals.N_Partitions, xmin=-0.5, xmax=lArDQGlobals.N_Partitions-0.5,
86 ybins=lArDQGlobals.N_Gains,ymin=-0.5,ymax=lArDQGlobals.N_Gains-0.5,
87 xlabels=lArDQGlobals.Partitions,ylabels=lArDQGlobals.Gains)
89 Group.defineHistogram(
'Ediff;E_all',
90 title=
'E_offline - E_online for all partitions;E_offline - E_online (MeV)',
92 path=summary_hist_path,
93 xbins=lArDQGlobals.DSPEnergy_Bins, xmin=lArDQGlobals.DSPEnergy_Min, xmax=lArDQGlobals.DSPEnergy_Max)
94 Group.defineHistogram(
'Tdiff;T_all',
95 title=
'T_offline - T_online for all partitions;T_offline - T_online (ps)',
97 path=summary_hist_path,
98 xbins=lArDQGlobals.DSPTime_Bins, xmin=lArDQGlobals.DSPTime_Min, xmax=lArDQGlobals.DSPTime_Max)
99 Group.defineHistogram(
'Qdiff;Q_all',
100 title=
'Q_offline - Q_online / sqrt(Q_offline) for all partitions;Q_offline - Q_online / sqrt(Q_offline) (ps)',
102 path=summary_hist_path,
103 xbins=lArDQGlobals.DSPQuality_Bins, xmin=lArDQGlobals.DSPQuality_Min, xmax=lArDQGlobals.DSPQuality_Max)
106 info_hist_path=
'Infos/'
107 cut =
"#delta ADC>"+
str(larRODMonAlg.ADCthreshold)+
" and |T_offline| < "+
str(larRODMonAlg.peakTimeCut)+
" ns"
108 Group.defineHistogram(
'LBN,partitionI;EErrorsPerLB',
109 title=
'Nb of errors in E per LB -' +cut+
';Luminosity Block;Partition',
113 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
114 ybins=lArDQGlobals.N_Partitions, ymin=-0.5, ymax=lArDQGlobals.N_Partitions-0.5,
115 ylabels = lArDQGlobals.Partitions
117 Group.defineHistogram(
'LBN,partitionI;TErrorsPerLB',
118 title=
'Nb of errors in T per LB - ' +cut+
';Luminosity Block;Partition',
122 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
123 ybins=lArDQGlobals.N_Partitions, ymin=-0.5, ymax=lArDQGlobals.N_Partitions-0.5,
124 ylabels = lArDQGlobals.Partitions
126 Group.defineHistogram(
'LBN,partitionI;QErrorsPerLB',
127 title=
'Nb of errors in Q per LB - ' +cut+
';Luminosity Block;Partition',
131 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
132 ybins=lArDQGlobals.N_Partitions, ymin=-0.5, ymax=lArDQGlobals.N_Partitions-0.5,
133 ylabels = lArDQGlobals.Partitions
137 dqmd_hist_path=
'/LAr/DSPMonitoring/DQMD/'
138 darray = helper.addArray([lArDQGlobals.Partitions],larRODMonAlg,
"RODMon",topPath=
'/')
139 darray.defineHistogram(
'Ediff,Erange;DE_ranges', title=
'E_offline - E_online for all ranges ; E_offline - E_online (MeV) ; Energy range',
140 type=
'TH2F', path=dqmd_hist_path,
141 xbins=lArDQGlobals.DSP1Energy_Bins, xmin=lArDQGlobals.DSP1Energy_Min, xmax=lArDQGlobals.DSP1Energy_Max,
142 ybins=lArDQGlobals.DSPRanges_Bins, ymin=lArDQGlobals.DSPRanges_Min, ymax=lArDQGlobals.DSPRanges_Max,
143 ylabels=lArDQGlobals.DSPRanges
145 Group.defineHistogram(
'Ediff,Erange;E_ranges_all', title=
'E_online - E_offline for all ranges ; E_offline - E_online (MeV) ; Energy range',
146 type=
'TH2F', path=
'DQMD/',
147 xbins=lArDQGlobals.DSP1Energy_Bins, xmin=lArDQGlobals.DSP1Energy_Min, xmax=lArDQGlobals.DSP1Energy_Max,
148 ybins=lArDQGlobals.DSPRanges_Bins, ymin=lArDQGlobals.DSPRanges_Min, ymax=lArDQGlobals.DSPRanges_Max,
149 ylabels=lArDQGlobals.DSPRanges
154 part_hist_path=
'/LAr/DSPMonitoring/perPartition/'
155 darray.defineHistogram(
'Ediff;DE', title=
'E_offline - E_online;E_offline - E_online (MeV)',
156 type=
'TH1F', path=part_hist_path,
157 xbins=lArDQGlobals.DSPEnergy_Bins, xmin=lArDQGlobals.DSPEnergy_Min, xmax=lArDQGlobals.DSPEnergy_Max)
158 darray.defineHistogram(
'Tdiff;DT', title=
'T_offline - T_online;T_offline - T_online (ps)',
159 type=
'TH1F', path=part_hist_path,
160 xbins=lArDQGlobals.DSPTime_Bins, xmin=lArDQGlobals.DSPTime_Min, xmax=lArDQGlobals.DSPTime_Max)
161 darray.defineHistogram(
'Qdiff;DQ', title=
'Q_offline - Q_online / sqrt(Q_offline);Q_offline - Q_online / sqrt(Q_offline)' ,
162 type=
'TH1F', path=part_hist_path,
163 xbins=lArDQGlobals.DSPTime_Bins, xmin=lArDQGlobals.DSPTime_Min, xmax=lArDQGlobals.DSPTime_Max)
165 darray.defineHistogram(
'slot,FT;RAW_Out_E_FT_vs_SLOT',title=
'# of cells with E_offline - E_online > numerical precision ; Slot ; Feedthrough',
166 type=
'TH2I', path=part_hist_path,
169 xbins=lArDQGlobals.FEB_Slot[
"EMECA"][1], xmin=lArDQGlobals.FEB_Slot[
"EMECA"][0]-0.5, xmax=lArDQGlobals.FEB_Slot[
"EMECA"][1]+0.5,
170 ybins=lArDQGlobals.FEB_Feedthrough[
"EMBA"][1]+1, ymin=lArDQGlobals.FEB_Feedthrough[
"EMBA"][0]-0.5, ymax=lArDQGlobals.FEB_Feedthrough[
"EMBA"][1]+0.5)
172 darray.defineHistogram(
'slot,FT;RAW_Out_T_FT_vs_SLOT',title=
'# of cells with T_offline - T_online > numerical precision ; Slot ; Feedthrough',
173 type=
'TH2I', path=part_hist_path,
176 xbins=lArDQGlobals.FEB_Slot[
"EMECA"][1], xmin=lArDQGlobals.FEB_Slot[
"EMECA"][0]-0.5, xmax=lArDQGlobals.FEB_Slot[
"EMECA"][1]+0.5,
177 ybins=lArDQGlobals.FEB_Feedthrough[
"EMBA"][1]+1, ymin=lArDQGlobals.FEB_Feedthrough[
"EMBA"][0]-0.5, ymax=lArDQGlobals.FEB_Feedthrough[
"EMBA"][1]+0.5)
179 darray.defineHistogram(
'slot,FT;RAW_Out_Q_FT_vs_SLOT',title=
'# of cells with Q_offline - Q_online > numerical precision ; Slot ; Feedthrough',
180 type=
'TH2I', path=part_hist_path,
183 xbins=lArDQGlobals.FEB_Slot[
"EMECA"][1], xmin=lArDQGlobals.FEB_Slot[
"EMECA"][0]-0.5, xmax=lArDQGlobals.FEB_Slot[
"EMECA"][1]+0.5,
184 ybins=lArDQGlobals.FEB_Feedthrough[
"EMBA"][1]+1, ymin=lArDQGlobals.FEB_Feedthrough[
"EMBA"][0]-0.5, ymax=lArDQGlobals.FEB_Feedthrough[
"EMBA"][1]+0.5)
186 darray.defineHistogram(
'Eoff,Eon;Eon_VS_Eoff', title=
'E_online VS E_offline;E_offline (MeV);E_online (MeV)',
187 type=
'TH2F', path=part_hist_path,
188 xbins=lArDQGlobals.DSPEonEoff_Bins, xmin=-lArDQGlobals.DSPEonEoff_Max, xmax=lArDQGlobals.DSPEonEoff_Max,
189 ybins=lArDQGlobals.DSPEonEoff_Bins, ymin=-lArDQGlobals.DSPEonEoff_Max, ymax=lArDQGlobals.DSPEonEoff_Max)
191 darray.defineHistogram(
'Toff,Ton;Ton_VS_Toff', title=
'T_online VS T_offline;T_offline (ps);T_online (ps)',
192 type=
'TH2F', path=part_hist_path,
193 xbins=lArDQGlobals.DSPTonToff_Bins, xmin=-lArDQGlobals.DSPTonToff_Max, xmax=lArDQGlobals.DSPTonToff_Max,
194 ybins=lArDQGlobals.DSPTonToff_Bins, ymin=-lArDQGlobals.DSPTonToff_Max, ymax=lArDQGlobals.DSPTonToff_Max)
196 darray.defineHistogram(
'Qoff,Qon;Qon_VS_Qoff', title=
'Q_online VS Q_offline;Q_offline ;Q_online ',
197 type=
'TH2F', path=part_hist_path,
198 xbins=lArDQGlobals.DSPQonQoff_Bins, xmin=-lArDQGlobals.DSPQonQoff_Max, xmax=lArDQGlobals.DSPQonQoff_Max,
199 ybins=lArDQGlobals.DSPQonQoff_Bins, ymin=-lArDQGlobals.DSPQonQoff_Max, ymax=lArDQGlobals.DSPQonQoff_Max)
201 darray.defineHistogram(
'Sweetc;Sweet_cells', title=
'Number of sweet Cells in LAr;Sweet cells per feb',
202 type=
'TH1F', path=part_hist_path,
203 xbins=lArDQGlobals.FEB_N_channels, xmin=lArDQGlobals.FEB_channels_Min, xmax=lArDQGlobals.FEB_channels_Max)
207 if __name__==
'__main__':
209 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
212 from AthenaCommon.Logging
import log
216 from LArMonitoring.LArMonConfigFlags
import addLArMonFlags
217 flags.addFlagsCategory(
"LArMon", addLArMonFlags)
219 from AthenaConfiguration.TestDefaults
import defaultTestFiles
220 flags.Input.Files = defaultTestFiles.RAW_RUN2
222 flags.Output.HISTFileName =
'LArRODMonOutput.root'
223 flags.DQ.enableLumiAccess =
False
224 flags.DQ.useTrigger =
False
228 from CaloRec.CaloRecoConfig
import CaloRecoCfg