6 '''@file ZdcMonitorAlgorithm.py
9 @brief python configuration for ZDC monitoring under the Run III DQ framework
10 will be run in the ZDC calibration stream & physics MinBias stream
11 see https://acode-browser1.usatlas.bnl.gov/lxr/source/athenAControl/AthenaMonitoring/python/ExampleMonitorAlgorithm.py
12 for details of structure of monitoring-configuration files
13 @reference https://twiki.cern.ch/twiki/bin/view/Atlas/DQRun3FrameworkTutorial
18 module_FPGA_max_ADC = 4096
22 log_min = np.log10(min_value)
23 log_max = np.log10(max_value)
24 log_bin_edges = np.linspace(log_min, log_max, num_bins + 1)
25 bin_edges = [10 ** edge
for edge
in log_bin_edges]
32 min1, max1, step1 = 0.0005 - 0.000001, 0.0025 - 0.000001, 0.00005
33 min2, max2, step2 = 0.0025 - 0.000001, 0.01 - 0.000001, 0.00025
34 min3, max3, step3 = 0.01 - 0.000001, 0.3 - 0.000001, 0.0025
35 min4, max4, step4 = 0.3 - 0.000001, 0.675 - 0.000001, 0.0125
36 min5, max5, step5 = 0.675 - 0.000001, 2.500001, 0.025
39 range1 = np.arange(min1, max1, step1)
40 range2 = np.arange(min2, max2, step2)
41 range3 = np.arange(min3, max3, step3)
42 range4 = np.arange(min4, max4, step4)
43 range5 = np.arange(min5, max5, step5)
46 vinj_bins_array = np.concatenate((np.array([0.]), range1, range2, range3, range4, range5))
48 return vinj_bins_array.tolist()
53 min1, max1, step1 = 0, 280, 4
54 min2, max2, step2 = 280, module_FPGA_max_ADC+1, 8
57 range1 = np.arange(min1, max1, step1)
58 range2 = np.arange(min2, max2, step2)
61 hg_amp_inj_bins_array = np.concatenate((range1, range2))
63 return hg_amp_inj_bins_array.tolist()
68 min1, max1, step1 = 0, 28, 0.4
69 min2, max2, step2 = 28, 800, 0.8
70 min3, max3, step3 = 800, module_FPGA_max_ADC+1, 8
74 range1 = np.arange(min1, max1, step1)
75 range2 = np.arange(min2, max2, step2)
76 range3 = np.arange(min3, max3, step3)
79 lg_amp_inj_bins_array = np.concatenate((range1, range2, range3))
81 return lg_amp_inj_bins_array.tolist()
85 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
88 from AthenaMonitoring
import AthMonitorCfgHelper
89 helper = AthMonitorCfgHelper(inputFlags,
'ZdcAthMonitorCfg')
91 from AthenaConfiguration.ComponentFactory
import CompFactory
92 zdcMonAlg = helper.addAlgorithm(CompFactory.ZdcMonitorAlgorithm,
'ZdcMonAlg')
94 from ZdcRec.ZdcRecConfig
import SetConfigTag
96 print (
'ZdcMonitorAlgorithm.py: Running with config tag ', config)
99 zdcMonAlg.EnableZDCSingleSideTriggers = inputFlags.DQ.useTrigger
and inputFlags.Input.TriggerStream ==
'calibration_ZDCCalib'
100 zdcMonAlg.CalInfoOn =
'physics_' in inputFlags.Input.TriggerStream
or inputFlags.Input.TriggerStream ==
'express_express'
101 zdcMonAlg.EnableUCCTriggers = inputFlags.DQ.useTrigger
and inputFlags.Input.TriggerStream ==
'physics_UCC'
102 zdcMonAlg.IsOnline = inputFlags.Common.isOnline
103 zdcMonAlg.IsInjectedPulse = inputFlags.Input.TriggerStream ==
'calibration_ZDCInjCalib' or inputFlags.Input.TriggerStream ==
'calibration_DcmDummyProcessor'
104 zdcMonAlg.IsStandalone = inputFlags.Input.TriggerStream ==
'calibration_DcmDummyProcessor'
105 zdcMonAlg.IsCommRun =
'comm' in inputFlags.Input.ProjectName
107 if zdcMonAlg.IsInjectedPulse
and not zdcMonAlg.IsCommRun:
108 from AthenaMonitoring.AtlasReadyFilterConfig
import AtlasReadyFilterCfg
111 zdcMonAlg.IsPEBStream =
'calibration_' in inputFlags.Input.TriggerStream
112 zdcMonAlg.IsPPMode =
'pp' in config
113 zdcMonAlg.IspOMode =
'pO' in config
114 zdcMonAlg.IsOOMode =
'OO' in config
115 zdcMonAlg.EnableOOpOTriggers = (zdcMonAlg.IspOMode
or zdcMonAlg.IsOOMode)
and inputFlags.DQ.useTrigger
and (
'physics_' in inputFlags.Input.TriggerStream
or inputFlags.Input.TriggerStream ==
'calibration_ZDCCalib')
117 phys_stream_trig_map = {
118 "physics_MinBias": [
'HLT_mb_sptrk_L1TRT_FILLED',
'HLT_mb_sptrk_L1jTE10',
'HLT_mb_sptrk_L1ZDC_OR',
'HLT_mb_sptrk_L1ZDC_LOR',
'HLT_noalg_L1ZDC_OR_EMPTY',
'HLT_noalg_L1ZDC_OR_UNPAIRED_NONISO',
'HLT_noalg_L1ZDC_LOR_EMPTY',
'HLT_noalg_L1ZDC_LOR_UNPAIRED_NONISO'],
119 "physics_UPC": [
"L1_ZDC_XOR_jTE10_VjTE200",
"L1_TRT_VjTE50",
"L1_1ZDC_NZDC_jTE10_VjTE200",
"L1_5ZDC_A_5ZDC_C_jTE5_VjTE200",
"HLT_noalg_L1TRT_VjTE50"],
120 "physics_PC": [
"HLT_mb_sptrk_L1ZDC_A_C_VTE50",
"L1_ZDC_A_C_VTE50",
"HLT_noalg_pc_L1TE50_VTE600.0ETA49",
"L1_TE50_VTE600.0ETA49"],
121 "physics_Standby": [
"HLT_noalg_L1Standby"]
124 OOpOTriggerChains = phys_stream_trig_map.get(inputFlags.Input.TriggerStream, [])
126 OOpOCTPIDtoL1TriggerStreamMap = {
127 "calibration_ZDCCalib": {
143 OOpOCTPIDtoL1TriggerMap = OOpOCTPIDtoL1TriggerStreamMap.get(inputFlags.Input.TriggerStream, {})
144 OOpOL1TriggerChainsFromCTP =
list(OOpOCTPIDtoL1TriggerMap.values())
145 OOpOTriggerChains += OOpOL1TriggerChainsFromCTP
147 zdcMonAlg.OOpOTriggers = OOpOTriggerChains
148 zdcMonAlg.OOpOL1TriggerFromCTPIDMap = OOpOCTPIDtoL1TriggerMap
150 zdcMonAlg.RunNumber = inputFlags.Input.RunNumbers[0]
if len(inputFlags.Input.RunNumbers) > 0
else 0
151 if (len(inputFlags.Input.RunNumbers) == 0):
152 print (
'ZdcMonitorAlgorithm.py: WARNING the list in the input flag Input.RunNumbers is empty - run number not set! Likely to use default pulser setting')
153 elif (len(inputFlags.Input.RunNumbers) > 1):
154 print (
'ZdcMonitorAlgorithm.py: WARNING the list in the input flag Input.RunNumbers has more than one element - retrieving pulser-setting configuration using the first run number! May cause misconfiguration for the other run numbers')
156 zdcMonAlg.EnableZDC = inputFlags.Detector.EnableZDC_ZDC
157 zdcMonAlg.EnableZDCPhysics = zdcMonAlg.EnableZDC
and not zdcMonAlg.IsInjectedPulse
158 zdcMonAlg.EnableRPD = inputFlags.Detector.EnableZDC_RPD
and not zdcMonAlg.IsInjectedPulse
159 zdcMonAlg.EnableRPDAmp = zdcMonAlg.EnableRPD
160 zdcMonAlg.EnableCentroid = zdcMonAlg.EnableRPD
162 print (
"ZdcMonitorAlgorithm.py: IsInjectedPulse? ",zdcMonAlg.IsInjectedPulse)
163 print (
"ZdcMonitorAlgorithm.py: IsPPMode? ",zdcMonAlg.IsPPMode)
164 print (
"ZdcMonitorAlgorithm.py: IspOMode? ",zdcMonAlg.IspOMode)
165 print (
"ZdcMonitorAlgorithm.py: IsOOMode? ",zdcMonAlg.IsOOMode)
166 print (
"ZdcMonitorAlgorithm.py: EnableOOpOTriggers? ",zdcMonAlg.EnableOOpOTriggers)
172 lumi_block_max = 2000
173 n_lumi_block_bins_coarse = 400
175 n_energy_bins_default = 200
177 n_time_centroid_bins_default = 100
178 n_module_amp_coarse_bins = 100
179 n_module_amp_fine_bins = 200
180 n_mod_fraction_bins_default = 100
182 n_HG_LG_amp_ratio_bins = 120
183 n_HG_LG_time_diff_bins = 50
185 module_chisq_min = 0.1
186 module_chisq_max = 800000
187 module_chisq_nbins = 80
188 module_chisq_over_amp_min = 0.01
189 module_chisq_over_amp_max = 3000
190 module_chisq_over_amp_nbins = 80
191 module_chisq_over_amp_linear_max = 50
192 module_chisq_over_amp_linear_nbins = 200
197 zdcMonAlg.ZDCModuleChisqHistMinValue = module_chisq_min
198 zdcMonAlg.ZDCModuleChisqHistMaxvalue = module_chisq_max
199 zdcMonAlg.ZDCModuleChisqHistNumBins = module_chisq_nbins
200 zdcMonAlg.ZDCModuleChisqOverAmpHistMinValue = module_chisq_over_amp_min
201 zdcMonAlg.ZDCModuleChisqOverAmpHistMaxvalue = module_chisq_over_amp_max
202 zdcMonAlg.ZDCModuleChisqOverAmpHistNumBins = module_chisq_over_amp_nbins
204 zdcMonAlg.EnergyCutForModuleFractMonitor = 400
if zdcMonAlg.IsPPMode
or zdcMonAlg.IspOMode
or zdcMonAlg.IsOOMode
else 13400
205 zdcMonAlg.triggerSideA =
"L1_ZDC_PP_A" if zdcMonAlg.IsPPMode
else "L1_ZDC_A"
206 zdcMonAlg.triggerSideC =
"L1_ZDC_PP_C" if zdcMonAlg.IsPPMode
else "L1_ZDC_C"
208 if (zdcMonAlg.IsInjectedPulse):
209 from ZdcMonitoring.ZdcInjPulserVoltageReader
import load_voltage_steps
210 voltage_values_list = []
211 voltage_strs_list = []
214 if len(voltage_values_list) == 0:
215 voltage_values_list = [0.]
216 voltage_strs_list = [
"0.00000"]
218 zdcMonAlg.InjPulseVoltageSteps = voltage_values_list
219 zdcMonAlg.InjPulseVoltageStepsStr = voltage_strs_list
222 amp_LG_refit_max_ADC = module_FPGA_max_ADC
224 fCal_single_side_min = -0.2
225 fCal_single_side_max = 2.8
228 fCal_single_side_nbins = 240
231 total_Et_sum_min = -0.5
232 total_Et_sum_max = 5.5
233 total_Et_sum_nbins = 240
235 uncalib_sum_zoomin_nbins = 100
236 energy_sum_zoomin_nbins = 200
237 energy_sum_1n_nbins = 350
238 energy_sum_1n_xmin = 1000.
239 energy_sum_1n_xmax = 4500.
242 if "PbPb" in config
or "Injector" in config:
243 print (
"looking at pbpb / injected-pulse data")
244 energy_sum_xmax = 200000.0
245 energy_sum_two_sides_xmax_TeV = 400.0
246 energy_sum_single_side_xmax_TeV = 200.0
247 energy_sum_zoomin_xmax = 13000.0
248 uncalib_amp_sum_zoomin_xmax = 7200.0
249 time_in_data_buffer = 75.
254 zdc_amp_sum_xmax = 163840.0
255 rpd_channel_amp_min = - 2000.
256 rpd_amp_sum_xmax = 245760.0
257 rpd_max_adc_sum_xmax = 40960.0
258 rpd_sum_adc_max = 25000.
260 module_calib_amp_xmax = 100000.0
261 module_amp_1Nmonitor_xmax = 1250.0
262 module_calib_amp_1Nmonitor_xmax = 3400.0
264 elif config ==
"LHCf2022":
265 print (
"looking at 2022 lhcf data")
266 energy_sum_xmax = 3000
267 energy_sum_two_sides_xmax_TeV = 10.0
268 energy_sum_single_side_xmax_TeV = 5.0
269 energy_sum_zoomin_xmax = 3000
270 uncalib_amp_sum_zoomin_xmax = module_FPGA_max_ADC
271 time_in_data_buffer = 75.
272 x_centroid_min = -500
276 zdc_amp_sum_xmax = 3000
277 rpd_channel_amp_min = - 200.
278 rpd_amp_sum_xmax = 3000
279 rpd_max_adc_sum_xmax = 3000
280 rpd_sum_adc_max = 5000
282 module_calib_amp_xmax = 5000
283 module_amp_1Nmonitor_xmax = 2000
284 module_calib_amp_1Nmonitor_xmax = 5000
286 elif zdcMonAlg.IsPPMode:
287 print (
"looking at pp data")
288 energy_sum_xmax = 5000
289 energy_sum_two_sides_xmax_TeV = 10.0
290 energy_sum_single_side_xmax_TeV = 5.0
291 energy_sum_zoomin_xmax = 5000
292 uncalib_amp_sum_zoomin_xmax = module_FPGA_max_ADC
293 time_in_data_buffer = 75.
298 zdc_amp_sum_xmax = 5000
299 rpd_channel_amp_min = - 200.
300 rpd_amp_sum_xmax = 5000
301 rpd_max_adc_sum_xmax = 5000
302 rpd_sum_adc_max = 5000.
304 module_calib_amp_xmax = 5000
305 module_amp_1Nmonitor_xmax = 2000
306 module_calib_amp_1Nmonitor_xmax = 5000
307 elif zdcMonAlg.IsOOMode:
308 print (
"looking at OO data")
309 energy_sum_xmax = 10000.
310 energy_sum_two_sides_xmax_TeV = 40.
311 energy_sum_single_side_xmax_TeV = 20.0
312 energy_sum_zoomin_xmax = 13000.0
313 uncalib_amp_sum_zoomin_xmax = 7200.0
314 time_in_data_buffer = 75.
319 zdc_amp_sum_xmax = 50000.0
320 rpd_channel_amp_min = - 2000.
321 rpd_amp_sum_xmax = 245760.0
322 rpd_max_adc_sum_xmax = 40960.0
323 rpd_sum_adc_max = 25000.
325 module_calib_amp_xmax = 13400.0
326 module_amp_1Nmonitor_xmax = 1250.0
327 module_calib_amp_1Nmonitor_xmax = 3400.0
328 fCal_single_side_min = -0.02
329 fCal_single_side_max = 0.43
332 fCal_single_side_nbins = 90
334 total_Et_sum_min = -0.1
335 total_Et_sum_max = 1.5
336 total_Et_sum_nbins = 160
338 elif zdcMonAlg.IspOMode:
339 print (
"looking at pO data")
340 energy_sum_xmax = 30000.
341 energy_sum_two_sides_xmax_TeV = 40.
342 energy_sum_single_side_xmax_TeV = 20.0
343 energy_sum_zoomin_xmax = 13000.0
344 uncalib_amp_sum_zoomin_xmax = 7200.0
345 time_in_data_buffer = 75.
350 zdc_amp_sum_xmax = 50000.0
351 rpd_channel_amp_min = - 2000.
352 rpd_amp_sum_xmax = 245760.0
353 rpd_max_adc_sum_xmax = 40960.0
354 rpd_sum_adc_max = 25000.
356 module_calib_amp_xmax = 13400.0
357 module_amp_1Nmonitor_xmax = 1250.0
358 module_calib_amp_1Nmonitor_xmax = 3400.0
359 fCal_single_side_min = -0.05
360 fCal_single_side_max = 0.2
363 fCal_single_side_nbins = 100
365 total_Et_sum_min = -0.1
366 total_Et_sum_max = 0.5
367 total_Et_sum_nbins = 120
370 print(
"ZdcMonitorAlgorithm ERROR: Invalid configuration! Config tag is", config)
374 lg_max_ADC = module_FPGA_max_ADC * lg_gain_factor
375 module_amp_xmax = lg_max_ADC
377 hg_lg_amp_ratio_min_nominal = 0.6
378 hg_lg_amp_ratio_min_tight = 0.9
379 hg_lg_amp_ratio_max_nominal = 1.4
380 hg_lg_amp_ratio_max_tight = 1.2
383 rpd_sub_amp_min = - module_amp_xmax / 4.
384 rpd_sub_amp_max = module_amp_xmax / 2.
385 n_rpd_amp_bins_full_range =
int((abs(rpd_channel_amp_min) + rpd_sum_adc_max) / rpd_sum_adc_max * n_energy_bins_default)
386 n_rpd_sub_amp_bins =
int((abs(rpd_sub_amp_min) + rpd_sub_amp_max) / rpd_sub_amp_max * n_energy_bins_default)
393 genZdcMonTool = helper.addGroup(zdcMonAlg,
'genZdcMonTool', topPath =
'ZDC')
395 nDecodingErrorBits = 3
397 genZdcMonTool.defineHistogram(
'decodingErrorBits',title=
';;Events',
398 path=
'/EXPERT/Global/DecodingErrors',
400 xbins=nDecodingErrorBits,xmin=0.0,xmax=nDecodingErrorBits,
401 xlabels=[
'No Decoding Error',
'ZDC Decoding Error',
'RPD Decoding Error'])
405 genZdcMonTool.defineHistogram(
'uccTrigBits',title=
';;Events',
406 path=
'/EXPERT/Global/UCCTrigs',
408 xbins=nUCCTrigBits,xmin=0.0,xmax=nUCCTrigBits,
409 xlabels=[
'UCC Trig Enabled',
'Pass HELT50',
'Pass HELT35',
'Pass HELT25',
'Pass HELT20',
'Pass HELT15',
'UCC Trig Disabled'])
411 if zdcMonAlg.EnableOOpOTriggers:
412 OOpOTriggerLabels = [
'OOpO Trig Enabled'] + OOpOTriggerChains + [
'OOpO Trig Disabled']
414 nOOpOTrigBits = len(OOpOTriggerLabels)
416 genZdcMonTool.defineHistogram(
'OOpOTrigBits',title=
';;Events',
417 path=
'/EXPERT/Global/OOpOTrigs',
419 xbins=nOOpOTrigBits,xmin=0.0,xmax=nOOpOTrigBits,
420 xlabels=OOpOTriggerLabels)
422 if (zdcMonAlg.EnableCentroid):
423 genZdcMonTool.defineHistogram(
'rpdCosDeltaReactionPlaneAngle', title=
';Cos (#Delta #phi_{AorC});Events',
424 path=
'/EXPERT/Global/ReactionPlane',
425 cutmask=
'bothHasCentroid',
426 xbins=n_time_centroid_bins_default,xmin=-1,xmax=1)
427 if (
not zdcMonAlg.IsOnline):
428 genZdcMonTool.defineHistogram(
'rpdCosDeltaReactionPlaneAngle;rpdCosDeltaReactionPlaneAngle_requireValid', title=
';Cos (#Delta #phi_{AorC});Events',
429 path=
'/EXPERT/Global/ReactionPlane',
430 cutmask=
'bothReactionPlaneAngleValid',
431 xbins=n_time_centroid_bins_default,xmin=-1,xmax=1)
433 if (zdcMonAlg.EnableZDCPhysics):
434 genZdcMonTool.defineHistogram(
'zdcEnergySumA, zdcEnergySumC', type=
'TH2F', title=
';E_{ZDC,A} [GeV];E_{ZDC,C} [GeV]',
435 path=
'/EXPERT/Global/SideACCorr',
436 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
437 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_xmax)
438 if (zdcMonAlg.IspOMode
or zdcMonAlg.IsOOMode):
439 genZdcMonTool.defineHistogram(
'zdcEnergySumA, zdcEnergySumC;zdcEnergySumC_vs_zdcEnergySumA_zoomin', type=
'TH2F', title=
';E_{ZDC,A} [GeV];E_{ZDC,C} [GeV]',
440 path=
'/EXPERT/Global/SideACCorr',
441 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=energy_sum_zoomin_xmax,
442 ybins=energy_sum_zoomin_nbins,ymin=0.0,ymax=energy_sum_zoomin_xmax)
443 genZdcMonTool.defineHistogram(
'zdcUncalibSumA, zdcUncalibSumC;zdcUncalibSumC_vs_zdcUncalibSumA_zoomin', type=
'TH2F', title=
';Amp Sum SideA [ADC];Amp Sum SideC [ADC]',
444 path=
'/EXPERT/Global/SideACCorr',
445 xbins=uncalib_sum_zoomin_nbins,xmin=0.0,xmax=uncalib_amp_sum_zoomin_xmax,
446 ybins=uncalib_sum_zoomin_nbins,ymin=0.0,ymax=uncalib_amp_sum_zoomin_xmax)
448 if (zdcMonAlg.EnableOOpOTriggers):
449 for oo_po_trig
in OOpOTriggerChains:
450 genZdcMonTool.defineHistogram(
'zdcEnergySumA, zdcEnergySumC;zdcEnergySumC_vs_zdcEnergySumA_pass'+oo_po_trig, type=
'TH2F', title=
';E_{ZDC,A} [GeV];E_{ZDC,C} [GeV]',
451 path=
'/EXPERT/Global/SideACCorr',
452 cutmask=
'pass'+oo_po_trig,
453 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
454 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_xmax)
455 genZdcMonTool.defineHistogram(
'zdcEnergySumA, zdcEnergySumC;zdcEnergySumC_vs_zdcEnergySumA_zoomin_pass'+oo_po_trig, type=
'TH2F', title=
';E_{ZDC,A} [GeV];E_{ZDC,C} [GeV]',
456 path=
'/EXPERT/Global/SideACCorr',
457 cutmask=
'pass'+oo_po_trig,
458 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=energy_sum_zoomin_xmax,
459 ybins=energy_sum_zoomin_nbins,ymin=0.0,ymax=energy_sum_zoomin_xmax)
460 genZdcMonTool.defineHistogram(
'zdcUncalibSumA, zdcUncalibSumC;zdcUncalibSumC_vs_zdcUncalibSumA_zoomin_pass'+oo_po_trig, type=
'TH2F', title=
';Amp Sum SideA [ADC];Amp Sum SideC [ADC]',
461 path=
'/EXPERT/Global/SideACCorr',
462 cutmask=
'pass'+oo_po_trig,
463 xbins=uncalib_sum_zoomin_nbins,xmin=0.0,xmax=uncalib_amp_sum_zoomin_xmax,
464 ybins=uncalib_sum_zoomin_nbins,ymin=0.0,ymax=uncalib_amp_sum_zoomin_xmax)
470 if (zdcMonAlg.CalInfoOn):
471 genZdcMonTool.defineHistogram(
'fcalEtA, fcalEtC', type=
'TH2F', title=
';E_{FCal, A} [GeV];E_{FCal, C} [GeV]',
472 path=
'/EXPERT/Global/SideACCorr',
473 xbins=fCal_single_side_nbins,xmin=fCal_single_side_min,xmax=fCal_single_side_max,
474 ybins=fCal_single_side_nbins,ymin=fCal_single_side_min,ymax=fCal_single_side_max)
476 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
477 path =
'/EXPERT/Global/ZDCFcalCorr',
479 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
480 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
482 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Hadronic Energy [TeV]',
483 path =
'/EXPERT/Global/ZDCHEFcalCorr',
485 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
486 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
488 genZdcMonTool.defineHistogram(
'totalEt24, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_totalEt', type=
'TH2F', title=
';Total Et |#eta| < 2.4 [TeV];ZDC Energy [TeV]',
489 path =
'/EXPERT/Global/ZDCTotalEtCorr',
491 xbins=total_Et_sum_nbins,xmin=total_Et_sum_min,xmax=total_Et_sum_max,
492 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
495 if (zdcMonAlg.EnableOOpOTriggers):
496 for oo_po_trig
in OOpOTriggerChains:
497 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt_pass'+oo_po_trig, type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
498 path =
'/EXPERT/Global/ZDCFcalCorr',
499 cutmask=
'pass'+oo_po_trig,
500 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
501 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
502 genZdcMonTool.defineHistogram(
'totalEt24, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_totalEt_pass'+oo_po_trig, type=
'TH2F', title=
';Total Et |#eta| < 2.4 [TeV];ZDC Energy [TeV]',
503 path =
'/EXPERT/Global/ZDCTotalEtCorr',
504 cutmask=
'pass'+oo_po_trig,
505 xbins=total_Et_sum_nbins,xmin=total_Et_sum_min,xmax=total_Et_sum_max,
506 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
509 if (zdcMonAlg.EnableUCCTriggers):
510 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt_passUCCTrig_HELT15', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
511 path =
'/EXPERT/Global/ZDCFcalCorr',
512 cutmask =
'passUCCTrig_HELT15',
514 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
515 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
516 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt_passUCCTrig_HELT20', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
517 path =
'/EXPERT/Global/ZDCFcalCorr',
518 cutmask =
'passUCCTrig_HELT20',
520 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
521 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
522 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt_passUCCTrig_HELT25', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
523 path =
'/EXPERT/Global/ZDCFcalCorr',
524 cutmask =
'passUCCTrig_HELT25',
526 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
527 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
528 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt_passUCCTrig_HELT35', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
529 path =
'/EXPERT/Global/ZDCFcalCorr',
530 cutmask =
'passUCCTrig_HELT35',
532 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
533 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
534 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt_passUCCTrig_HELT50', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
535 path =
'/EXPERT/Global/ZDCFcalCorr',
536 cutmask =
'passUCCTrig_HELT50',
538 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
539 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
541 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt_passUCCTrig_HELT15', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Hadronic Energy [TeV]',
542 path =
'/EXPERT/Global/ZDCHEFcalCorr',
543 cutmask =
'passUCCTrig_HELT15',
545 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
546 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
547 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt_passUCCTrig_HELT20', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Hadronic Energy [TeV]',
548 path =
'/EXPERT/Global/ZDCHEFcalCorr',
549 cutmask =
'passUCCTrig_HELT20',
551 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
552 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
553 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt_passUCCTrig_HELT25', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Hadronic Energy [TeV]',
554 path =
'/EXPERT/Global/ZDCHEFcalCorr',
555 cutmask =
'passUCCTrig_HELT25',
557 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
558 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
559 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt_passUCCTrig_HELT35', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Hadronic Energy [TeV]',
560 path =
'/EXPERT/Global/ZDCHEFcalCorr',
561 cutmask =
'passUCCTrig_HELT35',
563 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
564 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
565 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt_passUCCTrig_HELT50', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Hadronic Energy [TeV]',
566 path =
'/EXPERT/Global/ZDCHEFcalCorr',
567 cutmask =
'passUCCTrig_HELT50',
569 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
570 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
574 modules = [
"0",
"1",
"2",
"3"]
575 channels = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15"]
579 nRpdCentroidStatusBits = 21
585 if (zdcMonAlg.EnableZDCPhysics
or zdcMonAlg.EnableRPDAmp
or zdcMonAlg.EnableCentroid):
587 zdcSideMonToolArr = helper.addArray([sides],zdcMonAlg,
'ZdcSideMonitor', topPath =
'ZDC')
592 if (zdcMonAlg.EnableZDCPhysics):
593 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum',title=
'ZDC Side {0} Energy Sum;Side {0} Energy [GeV];Events',
594 path =
'/EXPERT/ZDC/PerArm/Energy',
595 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax)
598 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum;zdcEnergySum_zoomin_noTrigSelec',title=
'ZDC Side {0} Energy Sum (1-to-4n, no trigger selection);Side {0} Energy[GeV];Events',
599 path =
'/SHIFT/ZDC/PerArm/Energy',
601 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=energy_sum_zoomin_xmax)
602 if (zdcMonAlg.EnableOOpOTriggers):
603 for oo_po_trig
in OOpOTriggerChains:
604 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum;zdcEnergySum_zoomin_pass'+oo_po_trig,title=
'ZDC Side {0} Energy Sum (1-to-4n, no trigger selection);Side {0} Energy[GeV];Events',
605 path =
'/SHIFT/ZDC/PerArm/Energy',
606 cutmask=
'pass'+oo_po_trig,
608 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=energy_sum_zoomin_xmax)
610 if (zdcMonAlg.EnableZDCSingleSideTriggers):
611 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum;zdcEnergySum_zoomin_wTrigSelec',title=
'ZDC Side {0} Energy Sum (1-to-4n, require opposite-side trigger);Side {0} Energy[GeV];Events',
612 path =
'/SHIFT/ZDC/PerArm/Energy',
614 cutmask =
'passTrigOppSide',
615 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=energy_sum_zoomin_xmax)
618 zdcSideMonToolArr.defineHistogram(
'zdcUncalibSum;zdcUncalibSum_zoomin_noTrigSelec',title=
'ZDC Side {0} Uncalibrated Amplitude Sum (1-to-4n, no trigger selection);Side {0} Amp Sum [ADC];Events',
619 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
620 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=uncalib_amp_sum_zoomin_xmax)
622 if (zdcMonAlg.EnableZDCSingleSideTriggers):
623 zdcSideMonToolArr.defineHistogram(
'zdcUncalibSum;zdcUncalibSum_zoomin_wTrigSelec',title=
'ZDC Side {0} Uncalibrated Amplitude Sum (1-to-4n, require opposite-side trigger);Side {0} Amp Sum [ADC];Events',
624 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
625 cutmask =
'passTrigOppSide',
626 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=uncalib_amp_sum_zoomin_xmax)
629 zdcSideMonToolArr.defineHistogram(
'zdcUncalibSum',title=
'ZDC Side {0} Uncalibrated Sum;[ADC];Events',
630 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
631 xbins=n_energy_bins_default,xmin=0.0,xmax=zdc_amp_sum_xmax)
634 if (
not zdcMonAlg.IsOnline):
635 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcEnergySum;zdcEnergySum_vs_lb_noTrig', type=
'TH2F', title=
';lumi block;Side {0} Energy [GeV]',
636 path =
'/EXPERT/ZDC/PerArm/Energy',
637 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
638 ybins=energy_sum_zoomin_nbins,ymin=0.0,ymax=energy_sum_zoomin_xmax)
639 if (zdcMonAlg.EnableZDCSingleSideTriggers):
640 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcEnergySum;zdcEnergySum_vs_lb_wTrig', type=
'TH2F', title=
';lumi block;Side {0} Energy [GeV]',
641 path =
'/EXPERT/ZDC/PerArm/Energy',
642 cutmask =
'passTrigOppSide',
643 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
644 ybins=energy_sum_zoomin_nbins,ymin=0.0,ymax=energy_sum_zoomin_xmax)
646 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum;zdcEnergySum_1n_noTrigSelec',title=
'ZDC Side {0} Energy Sum (1n range, no trigger selection);Side {0} Energy[GeV];Events',
647 path =
'/SHIFT/ZDC/PerArm/Energy',
649 xbins=energy_sum_1n_nbins,xmin=energy_sum_1n_xmin,xmax=energy_sum_1n_xmax)
651 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcEnergySum;zdcEnergySum_1n_vs_lb_noTrig', type=
'TH2F', title=
';lumi block;Side {0} Energy (1n range) [GeV]',
652 path =
'/EXPERT/ZDC/PerArm/Energy',
653 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
654 ybins=energy_sum_1n_nbins,ymin=energy_sum_1n_xmin,ymax=energy_sum_1n_xmax)
656 if (
not zdcMonAlg.IsOnline):
657 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcUncalibSum;zdcUncalibSum_vs_lb_noTrig', type=
'TH2F', title=
';lumi block;ZDC Side {0} Uncalibrated Sum [ADC]',
658 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
659 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
660 ybins=n_energy_bins_default,ymin=0.0,ymax=uncalib_amp_sum_zoomin_xmax)
661 if (zdcMonAlg.EnableZDCSingleSideTriggers):
662 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcUncalibSum;zdcUncalibSum_vs_lb_wTrig', type=
'TH2F', title=
';lumi block;ZDC Side {0} Uncalibrated Sum [ADC]',
663 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
664 cutmask =
'passTrigOppSide',
665 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
666 ybins=n_energy_bins_default,ymin=0.0,ymax=uncalib_amp_sum_zoomin_xmax)
669 if (
not zdcMonAlg.IsOnline):
670 zdcSideMonToolArr.defineHistogram(
'bcid, zdcEnergySum;zdcEnergySum_vs_bcid_noTrig', type=
'TH2F', title=
';BCID;Side {0} Energy [GeV]',
671 path =
'/EXPERT/ZDC/PerArm/Energy',
672 xbins=bcid_max,xmin=0.0,xmax=bcid_max,
673 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_zoomin_xmax)
674 if (zdcMonAlg.EnableZDCSingleSideTriggers):
675 zdcSideMonToolArr.defineHistogram(
'bcid, zdcEnergySum;zdcEnergySum_vs_bcid_wTrig', type=
'TH2F', title=
';BCID;Side {0} Energy [GeV]',
676 path =
'/EXPERT/ZDC/PerArm/Energy',
677 cutmask =
'passTrigOppSide',
678 xbins=bcid_max,xmin=0.0,xmax=bcid_max,
679 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_zoomin_xmax)
681 if (zdcMonAlg.CalInfoOn):
682 zdcSideMonToolArr.defineHistogram(
'fCalEt, zdcEnergySumTeV;zdcEnergySum_vs_fCalEt_single_side', type=
'TH2F', title=
';Side {0} FCal Energy [TeV];Side {0} ZDC Energy [TeV]',
683 path =
'/EXPERT/ZDC/PerArm/ZDCFcalCorr',
685 xbins=fCal_single_side_nbins,xmin=fCal_single_side_min,xmax=fCal_single_side_max,
686 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_single_side_xmax_TeV)
691 zdcSideMonToolArr.defineHistogram(
'zdcAvgTime',title=
'ZDC Side Average Time;t[ns];Events',
692 path =
'/EXPERT/ZDC/PerArm/AvgTime',
693 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
695 if (
not zdcMonAlg.IsOnline):
696 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcAvgTime;zdcAvgTime_vs_lb', type=
'TH2F', title=
';ZDC Side Average Time versus Lumi block;lumi block;t[ns]',
697 path =
'/EXPERT/ZDC/PerArm/AvgTime',
698 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
699 ybins=n_time_centroid_bins_default,ymin=-10.0,ymax=10.0)
703 zdcSideMonToolArr.defineHistogram(
'centroidStatusBits',title=
';;Events',
704 path=
'/EXPERT/RPD/PerArm/Centroid',
705 xbins=nRpdCentroidStatusBits,xmin=0.0,xmax=nRpdCentroidStatusBits,
707 xlabels=[
'ValidBit',
'HasCentroidBit',
'ZDCInvalidBit',
'InsufficientZDCEnergyBit',
'ExcessiveZDCEnergyBit',
'EMInvalidBit',
'InsufficientEMEnergyBit',
'ExcessiveEMEnergyBit',
'RPDInvalidBit',
'PileupBit',
'ExcessivePileupBit',
'ZeroSumBit',
'ExcessiveSubtrUnderflowBit',
'Row0ValidBit',
'Row1ValidBit',
'Row2ValidBit',
'Row3ValidBit',
'Col0ValidBit',
'Col1ValidBit',
'Col2ValidBit',
'Col3ValidBit'])
709 zdcSideMonToolArr.defineHistogram(
'centroidValidBitFloat;centroidValidBit_RequireMinZDCEnergy',title=
'Centroid valid bit;;Events',
710 path=
'/SHIFT/RPD/PerArm/Centroid',
712 cutmask=
'passMinZDCEnergyCutForCentroidValidEvaluation',
713 xbins=2,xmin=0,xmax=2,
714 xlabels=[
'Valid',
'Invalid'])
717 zdcSideMonToolArr.defineHistogram(
'xCentroid',title=
';Centroid x position [mm];Events',
718 path=
'/SHIFT/RPD/PerArm/Centroid',
720 cutmask=
'centroidValid',
721 xbins=n_time_centroid_bins_default,xmin=x_centroid_min,xmax=x_centroid_max)
723 zdcSideMonToolArr.defineHistogram(
'yCentroid',title=
';Centroid y position [mm];Events',
724 path=
'/SHIFT/RPD/PerArm/Centroid',
726 cutmask=
'centroidValid',
727 xbins=n_time_centroid_bins_default*2,xmin=y_centroid_min,xmax=y_centroid_max)
729 zdcSideMonToolArr.defineHistogram(
'xCentroid, yCentroid',type=
'TH2F',title=
';Centroid x position [mm];Centroid y position [mm]',
730 path=
'/EXPERT/RPD/PerArm/Centroid',
731 cutmask=
'centroidValid',
732 xbins=n_time_centroid_bins_default,xmin=x_centroid_min,xmax=x_centroid_max,
733 ybins=n_time_centroid_bins_default*2,ymin=y_centroid_min,ymax=y_centroid_max)
735 zdcSideMonToolArr.defineHistogram(
'ReactionPlaneAngle',title=
';Reaction Plane Angle;Events',
736 path=
'/EXPERT/RPD/PerArm/ReactionPlane',
737 cutmask=
'centroidValid',
738 xbins=64,xmin=-3.141593,xmax=3.141593)
742 if (
not zdcMonAlg.IsOnline):
743 zdcSideMonToolArr.defineHistogram(
'xCentroid, yCentroid;yCentroid_vs_xCentroid_requireOnlyHasCentroidBit',type=
'TH2F',title=
';Centroid x position [mm];Centroid y position [mm]',
744 path=
'/EXPERT/RPD/PerArm/Centroid',
745 xbins=n_time_centroid_bins_default,xmin=x_centroid_min,xmax=x_centroid_max,
746 ybins=n_time_centroid_bins_default,ymin=y_centroid_min,ymax=y_centroid_max)
747 zdcSideMonToolArr.defineHistogram(
'ReactionPlaneAngle;ReactionPlaneAngle_requireOnlyHasCentroidBit',title=
';Reaction Plane Angle;Events',
748 path=
'/EXPERT/RPD/PerArm/ReactionPlane',
749 xbins=64,xmin=-3.141593,xmax=3.141593)
753 if (
not zdcMonAlg.IsOnline):
754 zdcSideMonToolArr.defineHistogram(
'lumiBlock, xCentroid;xCentroid_vs_lb_requireOnlyHasCentroidBit', type=
'TH2F', title=
';lumi block;Centroid x position [mm]',
755 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
756 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
757 ybins=n_time_centroid_bins_default,ymin=x_centroid_min,ymax=x_centroid_max)
758 zdcSideMonToolArr.defineHistogram(
'lumiBlock, yCentroid;yCentroid_vs_lb_requireOnlyHasCentroidBit', type=
'TH2F', title=
';lumi block;Centroid y position [mm]',
759 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
760 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
761 ybins=n_time_centroid_bins_default,ymin=y_centroid_min,ymax=y_centroid_max)
763 zdcSideMonToolArr.defineHistogram(
'lumiBlock, xCentroid;xCentroid_vs_lb', type=
'TH2F', title=
';lumi block;Centroid x position [mm]',
764 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
765 cutmask=
'centroidValid',
766 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
767 ybins=n_time_centroid_bins_default,ymin=x_centroid_min,ymax=x_centroid_max)
768 zdcSideMonToolArr.defineHistogram(
'lumiBlock, yCentroid;yCentroid_vs_lb', type=
'TH2F', title=
';lumi block;Centroid y position [mm]',
769 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
770 cutmask=
'centroidValid',
771 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
772 ybins=n_time_centroid_bins_default,ymin=y_centroid_min,ymax=y_centroid_max)
775 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum, rpdMaxADCSum', type=
'TH2F', title=
';E ZDC side [TeV];RPD Max ADC Sum (AorC) [ADC counts]',
776 path=
'/EXPERT/ZdcRpdPerSideCorr',
777 cutmask=
'RPDSideValid',
778 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
779 ybins=n_energy_bins_default,ymin=0.0,ymax=rpd_max_adc_sum_xmax)
780 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum, rpdAmplitudeCalibSum', type=
'TH2F', title=
';E ZDC side [GeV];RPD Calib Amp Sum (AorC) [ADC counts]',
781 path=
'/EXPERT/ZdcRpdPerSideCorr',
782 cutmask=
'RPDSideValid',
783 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
784 ybins=n_energy_bins_default,ymin=0.0,ymax=rpd_amp_sum_xmax)
785 zdcSideMonToolArr.defineHistogram(
'zdcEMModuleEnergy, rpdAmplitudeCalibSum', type=
'TH2F', title=
';E EM module AorC [GeV];RPD Calib Amp Sum (AorC) [ADC counts]',
786 path=
'/EXPERT/ZdcRpdPerSideCorr',
787 cutmask=
'RPDSideValid',
788 xbins=n_energy_bins_default,xmin=0.0,xmax=module_calib_amp_xmax / 2.,
789 ybins=n_energy_bins_default,ymin=0.0,ymax=rpd_amp_sum_xmax)
796 zdcModuleMonToolArr = helper.addArray([sides,modules],zdcMonAlg,
'ZdcModuleMonitor', topPath =
'ZDC')
800 zdcModuleMonToolArr.defineHistogram(
'zdcStatusBits',title=
';;Events',
801 path=
'/SHIFT/ZDC/ZdcModule/ModuleStatusBits',
802 opt=
'kAlwaysCreate kVec',
803 xbins=nZdcStatusBits,xmin=0.0,xmax=nZdcStatusBits,
804 xlabels=[
'PulseBit',
'LowGainBit',
'FailBit',
'HGOverflowBit',
'HGUnderflowBit',
'PSHGOverUnderflowBit',
'LGOverflowBit',
'LGUnderflowBit',
'PrePulseBit',
'PostPulseBit',
'FitFailedBit',
'BadChisqBit',
'BadT0Bit',
'ExcludeEarlyLGBit',
'ExcludeLateLGBit',
'preExpTailBit',
'FitMinAmpBit',
'RepassPulseBit'])
808 if (zdcMonAlg.IsInjectedPulse
and zdcMonAlg.IsOnline):
809 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp',title=
';Module Amplitude [ADC Counts];Events',
810 cutmask=
'zdcInjInputVoltagePassMinThrsh',
811 path=
'/SHIFT/ZDC/ZdcModule/ModuleAmp',
813 xbins=n_fpga_bins * 2,xmin=0.0,xmax=module_amp_xmax)
815 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp',title=
';Module Amplitude [ADC Counts];Events',
816 path=
'/SHIFT/ZDC/ZdcModule/ModuleAmp',
818 xbins=n_fpga_bins * 2,xmin=0.0,xmax=module_amp_xmax)
820 zdcModuleMonToolArr.defineHistogram(
'zdcModuleMaxADC',title=
';Module Max ADC;Events',
821 path=
'/EXPERT/ZDC/ZdcModule/ModuleMaxADC',
822 xbins=n_fpga_bins,xmin=0.0,xmax=module_amp_xmax)
825 if (
not zdcMonAlg.IsPPMode):
826 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp;zdcModuleAmp_HG',title=
';Module Amplitude HG [ADC Counts];Events',
827 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
828 cutmask=
'zdcModuleHG',
829 xbins=n_fpga_bins,xmin=0.0,xmax=module_FPGA_max_ADC)
831 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp;zdcModuleAmp_LG',title=
';Module Amplitude LG [ADC Counts];Events',
832 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
833 cutmask=
'zdcModuleLG',
834 xbins=n_fpga_bins,xmin=0.0,xmax=module_amp_xmax)
836 if (zdcMonAlg.IsInjectedPulse):
837 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmpLGRefit',title=
';LG-Refit Amplitude [ADC Counts];Events',
838 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
839 cutmask=
'zdcModuleHG',
840 xbins=n_fpga_bins,xmin=0.0,xmax=amp_LG_refit_max_ADC)
842 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
843 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp;zdcModuleAmp_halfrange',title=
';Module Amplitude [ADC Counts];Events',
844 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
845 xbins=n_fpga_bins,xmin=0.0,xmax=module_amp_xmax / 2.)
849 if (
not zdcMonAlg.IsOnline):
850 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp,zdcModuleAmpToMaxADCRatio;zdcModuleAmpToMaxADCRatio_vs_zdcModuleMaxADC_HG',type=
'TH2F',title=
';Module Max ADC HG [ADC];Avg Amp/Max ADC',
851 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpToMaxADCRatio',
852 cutmask=
'zdcModuleHG',
853 xbins=n_fpga_bins,xmin=0.0,xmax=module_FPGA_max_ADC,
854 ybins=100,ymin=0.0,ymax=2.)
856 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp,zdcModuleAmpToMaxADCRatio;zdcModuleAmpToMaxADCRatio_vs_zdcModuleMaxADC_LG',type=
'TH2F',title=
';Module Max ADC LG [ADC];Avg Amp/Max ADC',
857 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpToMaxADCRatio',
858 cutmask=
'zdcModuleLG',
859 xbins=n_fpga_bins,xmin=0.0,xmax=module_amp_xmax,
860 ybins=100,ymin=0.0,ymax=2.)
864 if (zdcMonAlg.IsInjectedPulse):
865 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract',title=
';Module Amplitude Fraction;Events',
866 cutmask=
'zdcModuleMaskCurSide',
867 path=
'/SHIFT/ZDC/ZdcModule/ModuleFraction',
869 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
871 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract;zdcModuleFract_above_cut',title=
';Module Amplitude Fraction;Events',
872 path=
'/SHIFT/ZDC/ZdcModule/ModuleFraction',
874 cutmask=
'zdcEnergyAboveModuleFractCut',
875 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
876 zdcModuleMonToolArr.defineHistogram(
'zdcEnergySumCurrentSide, zdcModuleFract;zdcModuleFract_vs_zdcEnergySum_fullrange', type=
'TH2F', title=
';ZDC Energy Sum Current Side [GeV];Module Amplitude Fraction',
877 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionVsEnergy',
878 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
879 ybins=n_mod_fraction_bins_default,ymin=0.0,ymax=1.)
880 zdcModuleMonToolArr.defineHistogram(
'zdcEnergySumCurrentSide, zdcModuleFract;zdcModuleFract_vs_zdcEnergySum_profile', type=
'TProfile', title=
';ZDC Energy Sum Current Side [GeV];Module Amplitude Fraction',
881 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionVsEnergy',
882 cutmask=
'zdcModuleFractionValid',
883 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax)
884 zdcModuleMonToolArr.defineHistogram(
'zdcEnergySumCurrentSide, zdcModuleFract;zdcModuleFract_vs_zdcEnergySum_zoomedin', type=
'TH2F', title=
';Amplitude Sum Current Side [ADC Counts];Module Amplitude Fraction',
885 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionVsEnergy',
886 xbins=n_energy_bins_default,xmin=0.0,xmax=10000,
887 ybins=n_mod_fraction_bins_default,ymin=0.0,ymax=1.)
888 if (
not zdcMonAlg.IsOnline):
889 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract',title=
';Module Amplitude Fraction;Events',
890 path=
'/EXPERT/ZDC/ZdcModule/ModuleFraction',
891 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
892 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract;zdcModuleFract_above20N',title=
';Module Amplitude Fraction;Events',
893 path=
'/EXPERT/ZDC/ZdcModule/ModuleFraction',
894 cutmask=
'zdcAbove20NCurrentSide',
895 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
897 if (
not zdcMonAlg.IsInjectedPulse):
898 zdcModuleMonToolArr.defineHistogram(
'zdcModuleCalibAmp',title=
';Module Calibrated Amplitude [GeV];Events',
899 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmp',
900 xbins=2*n_energy_bins_default,xmin=0.0,xmax=module_calib_amp_xmax)
902 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
903 zdcModuleMonToolArr.defineHistogram(
'zdcModuleCalibAmp;zdcModuleCalibAmp_halfrange',title=
';Module Calibrated Amplitude [GeV];Events',
904 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmp',
905 xbins=2*n_energy_bins_default,xmin=0.0,xmax=module_calib_amp_xmax / 2.)
908 if (zdcMonAlg.IsInjectedPulse):
910 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleFitAmp;zdcModuleAmpHG_vs_injectedPulseInputVoltage', type=
'TH2F', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
911 cutmask=
'zdcHGInjPulseValid',
912 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpHGVsInputVoltage',
916 if (zdcMonAlg.IsOnline):
917 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleFitAmp;zdcModuleAmpHG_vs_injectedPulseInputVoltage_profile', type=
'TProfile', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
918 cutmask=
'zdcHGInjPulseValid',
919 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpHGVsInputVoltage',
922 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleMaxADCHG', type=
'TH2F', title=
';Pulse amp [V];Max ADC HG',
923 cutmask=
'zdcHGInjPulseValid',
924 path=
'/EXPERT/ZDC/ZdcModule/ModuleMaxADCHGVsInputVoltage',
929 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleLGFitAmp;zdcModuleAmpLG_vs_injectedPulseInputVoltage', type=
'TH2F', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
930 cutmask=
'zdcLGInjPulseValid',
931 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpLGVsInputVoltage',
935 if (zdcMonAlg.IsOnline):
936 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleLGFitAmp;zdcModuleAmpLG_vs_injectedPulseInputVoltage_profile', type=
'TProfile', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
937 cutmask=
'zdcLGInjPulseValid',
938 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpLGVsInputVoltage',
941 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleMaxADCLG;zdcModuleMaxADCLG_vs_injectedPulseInputVoltage', type=
'TH2F', title=
';Pulse amp [V];Max ADC LG',
942 cutmask=
'zdcLGInjPulseValid',
943 path=
'/EXPERT/ZDC/ZdcModule/ModuleMaxADCLGVsInputVoltage',
948 if (
not zdcMonAlg.IsOnline):
949 zdcModuleMonToolArr.defineHistogram(
'VoltageIndex, zdcModuleFitAmp', type=
'TH2F', title=
';;Signal Fit Amp [ADC Counts]',
950 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpHGVsInputVoltageStr',
951 cutmask=
'zdcHGInjPulseValid',
952 xbins=len(voltage_strs_list),xmin=0.0,xmax=len(voltage_strs_list),
954 xlabels=voltage_strs_list)
956 zdcModuleMonToolArr.defineHistogram(
'VoltageIndex, zdcModuleLGFitAmp', type=
'TH2F', title=
';;Signal Fit Amp [ADC Counts]',
957 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpLGVsInputVoltageStr',
958 cutmask=
'zdcLGInjPulseValid',
959 xbins=len(voltage_strs_list),xmin=0.0,xmax=len(voltage_strs_list),
961 xlabels=voltage_strs_list)
966 if (
not zdcMonAlg.IsOnline):
967 zdcModuleSingleVoltageResponseArr = helper.addArray([sides,modules,voltage_strs_list],zdcMonAlg,
'LucrodResponseSingleVoltageMonitor', topPath =
'ZDC/EXPERT/ZDC/ZdcModule/LucrodResponseSingleVoltage')
968 zdcModuleSingleVoltageResponseArr.defineHistogram(
'zdcModuleFitAmp;zdcModuleAmpHG_fixed_vInj', type=
'TH1F', title=
';Signal Fit Amp [ADC Counts];Events',
969 cutmask=
'zdcHGInjPulseValid',
972 zdcModuleSingleVoltageResponseArr.defineHistogram(
'zdcModuleLGFitAmp;zdcModuleAmpLG_fixed_vInj', type=
'TH1F', title=
';Signal Fit Amp [ADC Counts];Events',
973 cutmask=
'zdcLGInjPulseValid',
978 zdcModuleMonToolArr.defineHistogram(
'zdcModuleTime',title=
';Module Time [ns];Events',
979 path=
'/SHIFT/ZDC/ZdcModule/ModuleTime',
981 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
983 if (
not zdcMonAlg.IsPPMode):
984 zdcModuleMonToolArr.defineHistogram(
'zdcModuleTime;zdcModuleTime_LG',title=
';Module Time [ns];Events',
985 path=
'/SHIFT/ZDC/ZdcModule/ModuleTime',
987 cutmask=
'zdcModuleLG',
988 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
990 zdcModuleMonToolArr.defineHistogram(
'zdcModuleTime;zdcModuleTime_HG',title=
';Module Time [ns];Events',
991 path=
'/SHIFT/ZDC/ZdcModule/ModuleTime',
993 cutmask=
'zdcModuleHG',
994 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
996 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFitT0',title=
';Module FitT0 [ns];Events',
997 path=
'/EXPERT/ZDC/ZdcModule/ModuleFitT0',
998 xbins=200,xmin=0.0,xmax=time_in_data_buffer)
1000 if (
not zdcMonAlg.IsPPMode):
1001 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFitT0;zdcModuleFitT0_LG',title=
';Module FitT0 LG [ns];Events',
1002 path=
'/EXPERT/ZDC/ZdcModule/ModuleFitT0',
1003 cutmask=
'zdcModuleLG',
1004 xbins=n_time_centroid_bins_default,xmin=0.0,xmax=time_in_data_buffer)
1006 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFitT0;zdcModuleFitT0_HG',title=
';Module FitT0 HG [ns];Events',
1007 path=
'/EXPERT/ZDC/ZdcModule/ModuleFitT0',
1008 cutmask=
'zdcModuleHG',
1009 xbins=n_time_centroid_bins_default,xmin=0.0,xmax=time_in_data_buffer)
1012 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
1013 zdcModuleMonToolArr.defineHistogram(
'zdcModuleCalibTime',title=
';Module Calibrated Time [ns];Events',
1014 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibTime',
1015 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
1019 zdcModuleMonToolArr.defineHistogram(
'zdcModuleChisq',title=
';Module Chi-square;Events',
1020 path=
'/EXPERT/ZDC/ZdcModule/ModuleChisq',
1021 weight=
'zdcModuleChisqEventWeight',
1022 xbins=
create_log_bins(module_chisq_min, module_chisq_max, module_chisq_nbins))
1023 zdcModuleMonToolArr.defineHistogram(
'zdcModuleChisqOverAmp',title=
';Module Chi-square / Amplitude;Events',
1024 path=
'/SHIFT/ZDC/ZdcModule/ModuleChisq',
1025 opt=
'kAlwaysCreate',
1026 weight=
'zdcModuleChisqOverAmpEventWeight',
1027 xbins=
create_log_bins(module_chisq_over_amp_min, module_chisq_over_amp_max, module_chisq_over_amp_nbins))
1028 zdcModuleMonToolArr.defineHistogram(
'zdcModuleChisqOverAmp;zdcModuleChisqOverAmp_linear',title=
';Module Chi-square / Amplitude;Events',
1029 path=
'/SHIFT/ZDC/ZdcModule/ModuleChisq',
1030 opt=
'kAlwaysCreate',
1031 xbins=module_chisq_over_amp_linear_nbins,xmin=0.,xmax=module_chisq_over_amp_linear_max)
1033 if (
not zdcMonAlg.IsOnline):
1034 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleChisqOverAmp',type=
'TH2F',title=
';Module Amplitude [ADC Counts];Module Chi-square / Amplitude',
1035 path=
'/EXPERT/ZDC/ZdcModule/ModuleChisq',
1036 weight=
'zdcModuleChisqOverAmpEventWeight',
1037 xbins=n_energy_bins_default,xmin=0.0,xmax=module_amp_xmax / 2.,
1038 ybins=
create_log_bins(module_chisq_over_amp_min, module_chisq_over_amp_max, module_chisq_over_amp_nbins))
1042 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGAmpRatio',title=
';HG-to-LG Amplitude Raio;Events',
1043 path=
'/SHIFT/ZDC/ZdcModule/ModuleHGLGCompr',
1044 opt=
'kAlwaysCreate',
1045 cutmask=
'zdcModuleHG',
1046 xbins=n_HG_LG_amp_ratio_bins,xmin=hg_lg_amp_ratio_min_nominal,xmax=hg_lg_amp_ratio_max_nominal)
1048 if (
not zdcMonAlg.IsInjectedPulse):
1049 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGAmpRatioNoNonlinCorr',title=
';HG-to-LG Amplitude Raio;Events',
1050 path=
'/SHIFT/ZDC/ZdcModule/ModuleHGLGComprNoNonlinCorr',
1051 opt=
'kAlwaysCreate',
1052 cutmask=
'zdcModuleHG',
1053 xbins=n_HG_LG_amp_ratio_bins,xmin=hg_lg_amp_ratio_min_nominal,xmax=hg_lg_amp_ratio_max_nominal)
1055 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleHGtoLGAmpRatio', type=
'TH2F', title=
';ZDC HG Amplitude [ADC Counts];HG-to-LG Amplitude Raio;Events',
1056 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
1057 cutmask=
'zdcModuleHG',
1058 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=module_FPGA_max_ADC,
1059 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_nominal,ymax=hg_lg_amp_ratio_max_nominal)
1061 if (
not zdcMonAlg.IsInjectedPulse):
1062 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleHGtoLGAmpRatioNoNonlinCorr', type=
'TH2F', title=
';ZDC HG Amplitude [ADC Counts];HG-to-LG Amplitude Raio;Events',
1063 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGComprNoNonlinCorr',
1064 cutmask=
'zdcModuleHG',
1065 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=module_FPGA_max_ADC,
1066 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_nominal,ymax=hg_lg_amp_ratio_max_nominal)
1068 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleHGtoLGAmpRatio;zdcModuleHGtoLGAmpRatio_vs_zdcModuleAmp_profile', type=
'TProfile', title=
';ZDC HG Amplitude [ADC Counts];Average HG-to-LG Amplitude Raio;Events',
1069 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
1070 cutmask=
'zdcModuleHG',
1071 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=module_FPGA_max_ADC)
1073 if (
not zdcMonAlg.IsOnline):
1074 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmpLGRefit, zdcModuleHGtoLGAmpRatio', type=
'TH2F', title=
';ZDC LG-Refit Amplitude [ADC Counts];HG-to-LG Amplitude Raio;Events',
1075 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
1076 cutmask=
'zdcModuleHG',
1077 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=amp_LG_refit_max_ADC,
1078 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_nominal,ymax=hg_lg_amp_ratio_max_nominal)
1079 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmpLGRefit, zdcModuleHGtoLGAmpRatio;zdcModuleHGtoLGAmpRatio_vs_zdcModuleAmpLGRefit_profile', type=
'TProfile', title=
';ZDC LG-Refit Amplitude [ADC Counts];Average HG-to-LG Amplitude Raio;Events',
1080 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
1081 cutmask=
'zdcModuleHG',
1082 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=amp_LG_refit_max_ADC)
1084 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGT0Diff',title=
';HG-LG T0 Difference [ns];Events',
1085 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
1086 cutmask=
'zdcModuleHG',
1087 xbins=n_HG_LG_time_diff_bins,xmin=-10.0,xmax=10.0)
1089 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGT0Diff, zdcModuleHGtoLGAmpRatio', type=
'TH2F', title=
';HG-LG T0 Difference [ns];HG-to-LG Amplitude Raio;Events',
1090 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
1091 cutmask=
'zdcModuleHG',
1092 xbins=n_HG_LG_time_diff_bins,xmin=2.0,xmax=4.0,
1093 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_tight,ymax=hg_lg_amp_ratio_max_tight)
1099 if (
not zdcMonAlg.IsInjectedPulse):
1100 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleCalibAmp;zdcModuleCalibAmp_vs_lb', type=
'TH2F', title=
';lumi block;Module Calib Amplitude',
1101 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmpLBdep',
1102 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
1103 ybins=n_module_amp_coarse_bins, ymin=0.0, ymax=module_calib_amp_1Nmonitor_xmax)
1104 if (
not zdcMonAlg.IsOnline):
1105 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleAmp;zdcModuleAmp_vs_lb', type=
'TH2F', title=
';lumi block;Module Amplitude [ADC counts]',
1106 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpLBdep',
1107 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
1108 ybins=n_module_amp_coarse_bins, ymin=0.0, ymax=module_amp_1Nmonitor_xmax)
1109 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleFract;zdcModuleFract_above20N_vs_lb', type=
'TH2F',title=
';lumi block;Module Amplitude Fraction',
1110 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionLBdep',
1111 cutmask=
'zdcAbove20NCurrentSide',
1112 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
1113 ybins=n_mod_fraction_bins_default,ymin=0.0,ymax=1.)
1115 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
1116 zdcModuleMonToolArr.defineHistogram(
'bcid, zdcModuleCalibAmp', type=
'TH2F', title=
';BCID;Module Calib Amplitude',
1117 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmpBCIDdep',
1118 xbins=bcid_max,xmin=0.0,xmax=bcid_max,
1119 ybins=n_module_amp_coarse_bins, ymin=0.0, ymax=module_calib_amp_1Nmonitor_xmax)
1122 if (
not zdcMonAlg.IsOnline):
1123 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
1124 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
1125 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
1126 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
1127 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_LG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
1128 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
1129 cutmask=
'zdcModuleLG',
1130 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
1131 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
1132 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_HG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
1133 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
1134 cutmask=
'zdcModuleHG',
1135 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
1136 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
1137 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleCalibTime;zdcModuleCalibTime_LG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
1138 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
1139 cutmask=
'zdcModuleLG',
1140 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
1141 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
1142 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleCalibTime;zdcModuleCalibTime_HG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
1143 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
1144 cutmask=
'zdcModuleHG',
1145 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
1146 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
1148 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_LG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
1149 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
1150 cutmask=
'zdcModuleLG',
1151 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
1152 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
1153 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_HG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
1154 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
1155 cutmask=
'zdcModuleHG',
1156 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
1157 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
1159 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_LG_vs_lb_profile', type=
'TProfile', title=
';lumi block;Module Time [ns]',
1160 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
1161 cutmask=
'zdcModuleLGTimeValid',
1162 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max)
1163 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_HG_vs_lb_profile', type=
'TProfile', title=
';lumi block;Module Time [ns]',
1164 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
1165 cutmask=
'zdcModuleHGTimeValid',
1166 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max)
1172 if (zdcMonAlg.EnableRPDAmp):
1174 rpdChannelMonToolArr = helper.addArray([sides,channels],zdcMonAlg,
'RpdChannelMonitor', topPath =
'ZDC')
1177 rpdChannelMonToolArr.defineHistogram(
'RPDChannelAmplitudeCalib', title=
';RPD Channel Calibrated Amplitude;Events',
1178 path=
'/SHIFT/RPD/RPDChannel/CalibAmp',
1179 opt=
'kAlwaysCreate',
1180 cutmask=
'RPDChannelValid',
1181 xbins=n_rpd_amp_bins_full_range,xmin=rpd_channel_amp_min,xmax=rpd_sum_adc_max)
1182 rpdChannelMonToolArr.defineHistogram(
'RPDChannelMaxADC', title=
';Max ADC [ADC Counts];Events',
1183 path=
'/EXPERT/RPD/RPDChannel/MaxADC',
1184 cutmask=
'RPDChannelValid',
1185 xbins=n_energy_bins_default,xmin=0.0,xmax=module_FPGA_max_ADC)
1187 if (
not zdcMonAlg.IsOnline):
1188 rpdChannelMonToolArr.defineHistogram(
'RPDChannelSubAmp', title=
';RPD Channel Subtracted Amplitude;Events',
1189 path=
'/EXPERT/RPD/RPDChannel/SubAmp',
1190 cutmask=
'RPDChannelCentroidValid',
1191 xbins=n_rpd_sub_amp_bins,xmin=rpd_sub_amp_min,xmax=rpd_sub_amp_max)
1194 if (
not zdcMonAlg.IsOnline):
1195 rpdChannelMonToolArr.defineHistogram(
'RPDChannelAmplitudeCalib,RPDChannelMaxADC', type=
'TH2F', title=
';Sum ADC [ADC Counts];Max ADC [ADC Counts]',
1196 path=
'/EXPERT/RPD/RPDChannel/MaxADCVsSumADC',
1197 cutmask=
'RPDChannelValid',
1198 xbins=n_rpd_amp_bins_full_range,xmin=rpd_channel_amp_min,xmax=rpd_sum_adc_max,
1199 ybins=n_energy_bins_default,ymin=0.0,ymax=module_FPGA_max_ADC)
1201 rpdChannelMonToolArr.defineHistogram(
'RPDChannelMaxSample', title=
';Max Sample;Events',
1202 path=
'/EXPERT/RPD/RPDChannel/MaxSample',
1203 cutmask=
'RPDChannelValid',
1204 xbins=24,xmin=0.0,xmax=24.)
1208 rpdChannelMonToolArr.defineHistogram(
'RPDStatusBits',title=
';;Events',
1209 path=
'/EXPERT/RPD/RPDChannel/StatusBits',
1210 xbins=nRpdStatusBits,xmin=0,xmax=nRpdStatusBits,
1212 xlabels=[
'ValidBit',
'OutOfTimePileupBit',
'OverflowBit',
'PrePulseBit',
'PostPulseBit',
'NoPulseBit',
'BadAvgBaselineSubtrBit',
'InsufficientPileupFitPointsBit',
'PileupStretchedExpFitFailBit',
'PileupStretchedExpGrowthBit',
'PileupBadStretchedExpSubtrBit',
'PileupExpFitFailBit',
'PileupExpGrowthBit',
'PileupBadExpSubtrBit',
'PileupStretchedExpPulseLike'])
1214 rpdChannelMonToolArr.defineHistogram(
'RPDChannelValidBitFloat;RPDChannelValidBit',title=
'RPD Channel valid bit;;Events',
1215 path=
'/SHIFT/RPD/RPDChannel/StatusBits',
1216 opt=
'kAlwaysCreate',
1217 xbins=2,xmin=0,xmax=2,
1218 xlabels=[
'Valid',
'Invalid'])
1221 if (
not zdcMonAlg.IsOnline):
1222 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelAmplitudeCalib;RPDChannelAmplitudeCalib_vs_lb', type=
'TH2F', title=
';lumi block;RPD Channel Calibrated Amplitude',
1223 path=
'/EXPERT/RPD/RPDChannel/CalibAmpLBdep',
1224 cutmask=
'RPDChannelValid',
1225 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
1226 ybins=n_rpd_amp_bins_full_range,ymin=rpd_channel_amp_min,ymax=rpd_sum_adc_max)
1227 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelMaxADC;RPDChannelMaxADC_vs_lb', type=
'TH2F', title=
';lumi block;Max ADC [ADC Counts]',
1228 path=
'/EXPERT/RPD/RPDChannel/MaxADCLBdep',
1229 cutmask=
'RPDChannelValid',
1230 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
1231 ybins=n_energy_bins_default,ymin=0.0,ymax=module_FPGA_max_ADC)
1233 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelAmplitudeCalib;RPDChannelAmplitudeCalib_vs_lb', type=
'TH2F', title=
';lumi block;RPD Channel Calibrated Amplitude',
1234 path=
'/EXPERT/RPD/RPDChannel/CalibAmpLBdep',
1235 cutmask=
'RPDChannelValid',
1236 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
1237 ybins=n_rpd_amp_bins_full_range,ymin=rpd_channel_amp_min,ymax=rpd_sum_adc_max)
1238 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelMaxADC;RPDChannelMaxADC_vs_lb', type=
'TH2F', title=
';lumi block;Max ADC [ADC Counts]',
1239 path=
'/EXPERT/RPD/RPDChannel/MaxADCLBdep',
1240 cutmask=
'RPDChannelValid',
1241 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
1242 ybins=n_energy_bins_default,ymin=0.0,ymax=module_FPGA_max_ADC)
1249 acc = helper.result()
1253 if __name__==
'__main__':
1255 from AthenaCommon.Logging
import log
1257 log.setLevel(WARNING)
1260 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
1263 inputfile =
'AOD.pool.root'
1264 flags.Input.Files = [directory+inputfile]
1266 parser = flags.getArgumentParser()
1267 parser.add_argument(
'--datasetTag',default=
"HI2023",help=
"dataset tag")
1268 parser.add_argument(
'--runNumber',default=
None,help=
"specify to select a run number")
1269 parser.add_argument(
'--streamTag',default=
"ZDCCalib",help=
"ZDCCalib or MinBias")
1270 parser.add_argument(
'--outputHISTFile',default=
None,help=
"specify output HIST file name")
1271 args = flags.fillFromArgs(parser=parser)
1273 flags.DQ.useTrigger =
False if flags.Input.isMC
else True
1274 if args.runNumber
is not None:
1275 flags.Output.HISTFileName = f
'ZdcMonitorOutput_{args.datasetTag}_{args.streamTag}_{args.runNumber}.root'
1277 flags.Output.HISTFileName = f
'ZdcMonitorOutput_{args.datasetTag}_{args.streamTag}.root'
1279 if args.outputHISTFile
is not None:
1280 flags.Output.HISTFileName = f
'{args.outputHISTFile}'
1283 print(
'Output', flags.Output.HISTFileName)
1285 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
1286 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
1291 cfg.merge(zdcMonitorAcc)
1297 cfg.printConfig(withDetails=
False)