89 from AthenaMonitoring
import AthMonitorCfgHelper
90 helper = AthMonitorCfgHelper(inputFlags,
'ZdcAthMonitorCfg')
92 from AthenaConfiguration.ComponentFactory
import CompFactory
93 zdcMonAlg = helper.addAlgorithm(CompFactory.ZdcMonitorAlgorithm,
'ZdcMonAlg')
95 from ZdcRec.ZdcRecConfig
import SetConfigTag
97 print (
'ZdcMonitorAlgorithm.py: Running with config tag ', config)
100 zdcMonAlg.EnableZDCSingleSideTriggers = inputFlags.DQ.useTrigger
and inputFlags.Input.TriggerStream ==
'calibration_ZDCCalib'
101 zdcMonAlg.CalInfoOn = inputFlags.Input.TriggerStream ==
'physics_MinBias' or inputFlags.Input.TriggerStream ==
'express_express' or inputFlags.Input.TriggerStream ==
'physics_UCC'
102 zdcMonAlg.EnableUCCTriggers = inputFlags.DQ.useTrigger
and inputFlags.Input.TriggerStream ==
'physics_UCC'
103 zdcMonAlg.IsOnline = inputFlags.Common.isOnline
104 zdcMonAlg.IsInjectedPulse = inputFlags.Input.TriggerStream ==
'calibration_ZDCInjCalib' or inputFlags.Input.TriggerStream ==
'calibration_DcmDummyProcessor'
105 zdcMonAlg.IsStandalone = inputFlags.Input.TriggerStream ==
'calibration_DcmDummyProcessor'
106 zdcMonAlg.IsPPMode =
'pp' in config
108 zdcMonAlg.RunNumber = inputFlags.Input.RunNumbers[0]
if len(inputFlags.Input.RunNumbers) > 0
else 0
109 if (len(inputFlags.Input.RunNumbers) == 0):
110 print (
'ZdcMonitorAlgorithm.py: WARNING the list in the input flag Input.RunNumbers is empty - run number not set! Likely to use default pulser setting')
111 elif (len(inputFlags.Input.RunNumbers) > 1):
112 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')
114 zdcMonAlg.EnableZDC = inputFlags.Detector.EnableZDC_ZDC
115 zdcMonAlg.EnableZDCPhysics = zdcMonAlg.EnableZDC
and not zdcMonAlg.IsInjectedPulse
116 zdcMonAlg.EnableRPD = inputFlags.Detector.EnableZDC_RPD
and not zdcMonAlg.IsInjectedPulse
117 zdcMonAlg.EnableRPDAmp = zdcMonAlg.EnableRPD
118 zdcMonAlg.EnableCentroid = zdcMonAlg.EnableRPD
120 print (
"ZdcMonitorAlgorithm.py: IsInjectedPulse? ",zdcMonAlg.IsInjectedPulse)
121 print (
"ZdcMonitorAlgorithm.py: IsPPMode? ",zdcMonAlg.IsPPMode)
127 lumi_block_max = 2000
128 n_lumi_block_bins_coarse = 400
130 n_energy_bins_default = 200
132 n_time_centroid_bins_default = 100
133 n_module_amp_coarse_bins = 100
134 n_module_amp_fine_bins = 200
135 n_mod_fraction_bins_default = 100
137 n_HG_LG_amp_ratio_bins = 120
138 n_HG_LG_time_diff_bins = 50
140 module_chisq_min = 0.1
141 module_chisq_max = 800000
142 module_chisq_nbins = 80
143 module_chisq_over_amp_min = 0.01
144 module_chisq_over_amp_max = 3000
145 module_chisq_over_amp_nbins = 80
146 module_chisq_over_amp_linear_max = 50
147 module_chisq_over_amp_linear_nbins = 200
152 zdcMonAlg.ZDCModuleChisqHistMinValue = module_chisq_min
153 zdcMonAlg.ZDCModuleChisqHistMaxvalue = module_chisq_max
154 zdcMonAlg.ZDCModuleChisqHistNumBins = module_chisq_nbins
155 zdcMonAlg.ZDCModuleChisqOverAmpHistMinValue = module_chisq_over_amp_min
156 zdcMonAlg.ZDCModuleChisqOverAmpHistMaxvalue = module_chisq_over_amp_max
157 zdcMonAlg.ZDCModuleChisqOverAmpHistNumBins = module_chisq_over_amp_nbins
159 zdcMonAlg.EnergyCutForModuleFractMonitor = 402
if zdcMonAlg.IsPPMode
else 13400
160 zdcMonAlg.triggerSideA =
"L1_ZDC_PP_A" if zdcMonAlg.IsPPMode
else "L1_ZDC_A"
161 zdcMonAlg.triggerSideC =
"L1_ZDC_PP_C" if zdcMonAlg.IsPPMode
else "L1_ZDC_C"
163 amp_LG_refit_max_ADC = module_FPGA_max_ADC
165 fCal_single_side_min = -0.2
166 fCal_single_side_max = 2.8
169 fCal_single_side_nbins = 240
172 energy_sum_zoomin_nbins = 200
173 energy_sum_1n_nbins = 350
174 energy_sum_1n_xmin = 1000.
175 energy_sum_1n_xmax = 4500.
177 if config ==
"LHCf2022":
178 print (
"looking at 2022 lhcf data")
179 energy_sum_xmax = 3000
180 energy_sum_two_sides_xmax_TeV = 10.0
181 energy_sum_single_side_xmax_TeV = 5.0
182 energy_sum_zoomin_xmax = 3000
183 uncalib_amp_sum_zoomin_xmax = module_FPGA_max_ADC
184 time_in_data_buffer = 75.
185 x_centroid_min = -500
189 zdc_amp_sum_xmax = 3000
190 rpd_channel_amp_min = - 200.
191 rpd_amp_sum_xmax = 3000
192 rpd_max_adc_sum_xmax = 3000
193 module_amp_xmax = 2000
194 rpd_sum_adc_max = 5000
195 module_calib_amp_xmax = 5000
196 module_amp_1Nmonitor_xmax = 2000
197 module_calib_amp_1Nmonitor_xmax = 5000
199 elif config ==
"pp2023" or config ==
"pp2024" or config ==
"Injectorpp2024":
200 print (
"looking at pp reference run")
201 energy_sum_xmax = 5000
202 energy_sum_two_sides_xmax_TeV = 10.0
203 energy_sum_single_side_xmax_TeV = 5.0
204 energy_sum_zoomin_xmax = 5000
205 uncalib_amp_sum_zoomin_xmax = module_FPGA_max_ADC
206 time_in_data_buffer = 75.
211 zdc_amp_sum_xmax = 5000
212 rpd_channel_amp_min = - 200.
213 rpd_amp_sum_xmax = 5000
214 rpd_max_adc_sum_xmax = 5000
215 module_amp_xmax = module_FPGA_max_ADC
216 rpd_sum_adc_max = 5000.
217 module_calib_amp_xmax = 5000
218 module_amp_1Nmonitor_xmax = 2000
219 module_calib_amp_1Nmonitor_xmax = 5000
221 elif config ==
"PbPb2023" or config ==
"PbPb2024" or config ==
"InjectorPbPb2024":
222 print (
"looking at pbpb run")
223 energy_sum_xmax = 200000.0
224 energy_sum_two_sides_xmax_TeV = 400.0
225 energy_sum_single_side_xmax_TeV = 200.0
226 energy_sum_zoomin_xmax = 13000.0
227 uncalib_amp_sum_zoomin_xmax = 7200.0
228 time_in_data_buffer = 75.
233 zdc_amp_sum_xmax = 163840.0
234 rpd_channel_amp_min = - 2000.
235 rpd_amp_sum_xmax = 245760.0
236 rpd_max_adc_sum_xmax = 40960.0
237 module_amp_xmax = nominal_lg_max_ADC
238 rpd_sum_adc_max = 25000.
239 module_calib_amp_xmax = 100000.0
240 module_amp_1Nmonitor_xmax = 1250.0
241 module_calib_amp_1Nmonitor_xmax = 3400.0
244 hg_lg_amp_ratio_min_nominal = 0.6
245 hg_lg_amp_ratio_min_tight = 0.9
246 hg_lg_amp_ratio_max_nominal = 1.4
247 hg_lg_amp_ratio_max_tight = 1.2
250 rpd_sub_amp_min = - module_amp_xmax / 4.
251 rpd_sub_amp_max = module_amp_xmax / 2.
252 n_rpd_amp_bins_full_range =
int((abs(rpd_channel_amp_min) + rpd_sum_adc_max) / rpd_sum_adc_max * n_energy_bins_default)
253 n_rpd_sub_amp_bins =
int((abs(rpd_sub_amp_min) + rpd_sub_amp_max) / rpd_sub_amp_max * n_energy_bins_default)
260 genZdcMonTool = helper.addGroup(zdcMonAlg,
'genZdcMonTool', topPath =
'ZDC')
262 nDecodingErrorBits = 3
265 genZdcMonTool.defineHistogram(
'decodingErrorBits',title=
';;Events',
266 path=
'/EXPERT/Global/DecodingErrors',
268 xbins=nDecodingErrorBits,xmin=0.0,xmax=nDecodingErrorBits,
269 xlabels=[
'No Decoding Error',
'ZDC Decoding Error',
'RPD Decoding Error'])
271 genZdcMonTool.defineHistogram(
'uccTrigBits',title=
';;Events',
272 path=
'/EXPERT/Global/UCCTrigs',
274 xbins=nUCCTrigBits,xmin=0.0,xmax=nUCCTrigBits,
275 xlabels=[
'UCC Trig Enabled',
'Pass HELT50',
'Pass HELT35',
'Pass HELT25',
'Pass HELT20',
'Pass HELT15',
'UCC Trig Disabled'])
277 if (zdcMonAlg.EnableCentroid):
278 genZdcMonTool.defineHistogram(
'rpdCosDeltaReactionPlaneAngle', title=
';Cos (#Delta #phi_{AorC});Events',
279 path=
'/EXPERT/Global/ReactionPlane',
280 cutmask=
'bothHasCentroid',
281 xbins=n_time_centroid_bins_default,xmin=-1,xmax=1)
282 if (
not zdcMonAlg.IsOnline):
283 genZdcMonTool.defineHistogram(
'rpdCosDeltaReactionPlaneAngle;rpdCosDeltaReactionPlaneAngle_requireValid', title=
';Cos (#Delta #phi_{AorC});Events',
284 path=
'/EXPERT/Global/ReactionPlane',
285 cutmask=
'bothReactionPlaneAngleValid',
286 xbins=n_time_centroid_bins_default,xmin=-1,xmax=1)
288 if (zdcMonAlg.EnableZDCPhysics):
289 genZdcMonTool.defineHistogram(
'zdcEnergySumA, zdcEnergySumC', type=
'TH2F', title=
';E_{ZDC,A} [GeV];E_{ZDC,C} [GeV]',
290 path=
'/EXPERT/Global/SideACCorr',
291 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
292 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_xmax)
296 if (zdcMonAlg.CalInfoOn):
297 genZdcMonTool.defineHistogram(
'fcalEtA, fcalEtC', type=
'TH2F', title=
';E_{FCal, A} [GeV];E_{FCal, C} [GeV]',
298 path=
'/EXPERT/Global/SideACCorr',
299 xbins=fCal_single_side_nbins,xmin=fCal_single_side_min,xmax=fCal_single_side_max,
300 ybins=fCal_single_side_nbins,ymin=fCal_single_side_min,ymax=fCal_single_side_max)
302 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
303 path =
'/EXPERT/Global/ZDCFcalCorr',
305 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
306 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
308 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
309 path =
'/EXPERT/Global/ZDCHEFcalCorr',
311 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
312 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
314 if (zdcMonAlg.EnableUCCTriggers):
315 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt_passUCCTrig_HELT15', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
316 path =
'/EXPERT/Global/ZDCFcalCorr',
317 cutmask =
'passUCCTrig_HELT15',
319 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
320 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
321 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt_passUCCTrig_HELT20', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
322 path =
'/EXPERT/Global/ZDCFcalCorr',
323 cutmask =
'passUCCTrig_HELT20',
325 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
326 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
327 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt_passUCCTrig_HELT25', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
328 path =
'/EXPERT/Global/ZDCFcalCorr',
329 cutmask =
'passUCCTrig_HELT25',
331 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
332 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
333 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt_passUCCTrig_HELT35', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
334 path =
'/EXPERT/Global/ZDCFcalCorr',
335 cutmask =
'passUCCTrig_HELT35',
337 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
338 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
339 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcEnergySumTwoSidesTeV;zdcEnergySum_vs_fCalEt_passUCCTrig_HELT50', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
340 path =
'/EXPERT/Global/ZDCFcalCorr',
341 cutmask =
'passUCCTrig_HELT50',
343 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
344 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
346 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt_passUCCTrig_HELT15', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
347 path =
'/EXPERT/Global/ZDCHEFcalCorr',
348 cutmask =
'passUCCTrig_HELT15',
350 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
351 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
352 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt_passUCCTrig_HELT20', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
353 path =
'/EXPERT/Global/ZDCHEFcalCorr',
354 cutmask =
'passUCCTrig_HELT20',
356 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
357 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
358 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt_passUCCTrig_HELT25', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
359 path =
'/EXPERT/Global/ZDCHEFcalCorr',
360 cutmask =
'passUCCTrig_HELT25',
362 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
363 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
364 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt_passUCCTrig_HELT35', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
365 path =
'/EXPERT/Global/ZDCHEFcalCorr',
366 cutmask =
'passUCCTrig_HELT35',
368 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
369 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
370 genZdcMonTool.defineHistogram(
'fcalEtSumTwoSides, zdcHadronicEnergySumTwoSidesTeV;zdcHadronicEnergySum_vs_fCalEt_passUCCTrig_HELT50', type=
'TH2F', title=
';FCal Energy [TeV];ZDC Energy [TeV]',
371 path =
'/EXPERT/Global/ZDCHEFcalCorr',
372 cutmask =
'passUCCTrig_HELT50',
374 xbins=fCal_sum_nbins,xmin=fCal_sum_min,xmax=fCal_sum_max,
375 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_two_sides_xmax_TeV)
379 modules = [
"0",
"1",
"2",
"3"]
380 channels = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15"]
384 nRpdCentroidStatusBits = 21
390 if (zdcMonAlg.EnableZDCPhysics
or zdcMonAlg.EnableRPDAmp
or zdcMonAlg.EnableCentroid):
392 zdcSideMonToolArr = helper.addArray([sides],zdcMonAlg,
'ZdcSideMonitor', topPath =
'ZDC')
397 if (zdcMonAlg.EnableZDCPhysics):
398 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum',title=
'ZDC Side {0} Energy Sum;Side {0} Energy [GeV];Events',
399 path =
'/EXPERT/ZDC/PerArm/Energy',
400 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax)
403 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum;zdcEnergySum_zoomin_noTrigSelec',title=
'ZDC Side {0} Energy Sum (1-to-4n, no trigger selection);Side {0} Energy[GeV];Events',
404 path =
'/SHIFT/ZDC/PerArm/Energy',
405 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=energy_sum_zoomin_xmax)
407 if (zdcMonAlg.EnableZDCSingleSideTriggers):
408 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum;zdcEnergySum_zoomin_wTrigSelec',title=
'ZDC Side {0} Energy Sum (1-to-4n, require opposite-side trigger);Side {0} Energy[GeV];Events',
409 path =
'/SHIFT/ZDC/PerArm/Energy',
410 cutmask =
'passTrigOppSide',
411 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=energy_sum_zoomin_xmax)
414 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',
415 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
416 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=uncalib_amp_sum_zoomin_xmax)
418 if (zdcMonAlg.EnableZDCSingleSideTriggers):
419 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',
420 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
421 cutmask =
'passTrigOppSide',
422 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=uncalib_amp_sum_zoomin_xmax)
425 zdcSideMonToolArr.defineHistogram(
'zdcUncalibSum',title=
'ZDC Side {0} Uncalibrated Sum;[ADC];Events',
426 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
427 xbins=n_energy_bins_default,xmin=0.0,xmax=zdc_amp_sum_xmax)
430 if (
not zdcMonAlg.IsOnline):
431 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcEnergySum;zdcEnergySum_vs_lb_noTrig', type=
'TH2F', title=
';lumi block;Side {0} Energy [GeV]',
432 path =
'/EXPERT/ZDC/PerArm/Energy',
433 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
434 ybins=energy_sum_zoomin_nbins,ymin=0.0,ymax=energy_sum_zoomin_xmax)
435 if (zdcMonAlg.EnableZDCSingleSideTriggers):
436 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcEnergySum;zdcEnergySum_vs_lb_wTrig', type=
'TH2F', title=
';lumi block;Side {0} Energy [GeV]',
437 path =
'/EXPERT/ZDC/PerArm/Energy',
438 cutmask =
'passTrigOppSide',
439 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
440 ybins=energy_sum_zoomin_nbins,ymin=0.0,ymax=energy_sum_zoomin_xmax)
442 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum;zdcEnergySum_1n_noTrigSelec',title=
'ZDC Side {0} Energy Sum (1n range, no trigger selection);Side {0} Energy[GeV];Events',
443 path =
'/SHIFT/ZDC/PerArm/Energy',
444 xbins=energy_sum_1n_nbins,xmin=energy_sum_1n_xmin,xmax=energy_sum_1n_xmax)
446 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcEnergySum;zdcEnergySum_1n_vs_lb_noTrig', type=
'TH2F', title=
';lumi block;Side {0} Energy (1n range) [GeV]',
447 path =
'/EXPERT/ZDC/PerArm/Energy',
448 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
449 ybins=energy_sum_1n_nbins,ymin=energy_sum_1n_xmin,ymax=energy_sum_1n_xmax)
451 if (
not zdcMonAlg.IsOnline):
452 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcUncalibSum;zdcUncalibSum_vs_lb_noTrig', type=
'TH2F', title=
';lumi block;ZDC Side {0} Uncalibrated Sum [ADC]',
453 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
454 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
455 ybins=n_energy_bins_default,ymin=0.0,ymax=uncalib_amp_sum_zoomin_xmax)
456 if (zdcMonAlg.EnableZDCSingleSideTriggers):
457 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcUncalibSum;zdcUncalibSum_vs_lb_wTrig', type=
'TH2F', title=
';lumi block;ZDC Side {0} Uncalibrated Sum [ADC]',
458 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
459 cutmask =
'passTrigOppSide',
460 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
461 ybins=n_energy_bins_default,ymin=0.0,ymax=uncalib_amp_sum_zoomin_xmax)
464 if (
not zdcMonAlg.IsOnline):
465 zdcSideMonToolArr.defineHistogram(
'bcid, zdcEnergySum;zdcEnergySum_vs_bcid_noTrig', type=
'TH2F', title=
';BCID;Side {0} Energy [GeV]',
466 path =
'/EXPERT/ZDC/PerArm/Energy',
467 xbins=bcid_max,xmin=0.0,xmax=bcid_max,
468 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_zoomin_xmax)
469 if (zdcMonAlg.EnableZDCSingleSideTriggers):
470 zdcSideMonToolArr.defineHistogram(
'bcid, zdcEnergySum;zdcEnergySum_vs_bcid_wTrig', type=
'TH2F', title=
';BCID;Side {0} Energy [GeV]',
471 path =
'/EXPERT/ZDC/PerArm/Energy',
472 cutmask =
'passTrigOppSide',
473 xbins=bcid_max,xmin=0.0,xmax=bcid_max,
474 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_zoomin_xmax)
476 if (zdcMonAlg.CalInfoOn):
477 zdcSideMonToolArr.defineHistogram(
'fCalEt, zdcEnergySumTeV;zdcEnergySum_vs_fCalEt_single_side', type=
'TH2F', title=
';Side {0} FCal Energy [TeV];Side {0} ZDC Energy [TeV]',
478 path =
'/EXPERT/ZDC/PerArm/ZDCFcalCorr',
480 xbins=fCal_single_side_nbins,xmin=fCal_single_side_min,xmax=fCal_single_side_max,
481 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_single_side_xmax_TeV)
486 zdcSideMonToolArr.defineHistogram(
'zdcAvgTime',title=
'ZDC Side Average Time;t[ns];Events',
487 path =
'/EXPERT/ZDC/PerArm/AvgTime',
488 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
490 if (
not zdcMonAlg.IsOnline):
491 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcAvgTime;zdcAvgTime_vs_lb', type=
'TH2F', title=
';ZDC Side Average Time versus Lumi block;lumi block;t[ns]',
492 path =
'/EXPERT/ZDC/PerArm/AvgTime',
493 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
494 ybins=n_time_centroid_bins_default,ymin=-10.0,ymax=10.0)
498 zdcSideMonToolArr.defineHistogram(
'centroidStatusBits',title=
';;Events',
499 path=
'/EXPERT/RPD/PerArm/Centroid',
500 xbins=nRpdCentroidStatusBits,xmin=0.0,xmax=nRpdCentroidStatusBits,opt=
'kVec',
501 xlabels=[
'ValidBit',
'HasCentroidBit',
'ZDCInvalidBit',
'InsufficientZDCEnergyBit',
'ExcessiveZDCEnergyBit',
'EMInvalidBit',
'InsufficientEMEnergyBit',
'ExcessiveEMEnergyBit',
'RPDInvalidBit',
'PileupBit',
'ExcessivePileupBit',
'ZeroSumBit',
'ExcessiveSubtrUnderflowBit',
'Row0ValidBit',
'Row1ValidBit',
'Row2ValidBit',
'Row3ValidBit',
'Col0ValidBit',
'Col1ValidBit',
'Col2ValidBit',
'Col3ValidBit'])
503 zdcSideMonToolArr.defineHistogram(
'centroidValidBitFloat;centroidValidBit_RequireMinZDCEnergy',title=
'Centroid valid bit;;Events',
504 path=
'/SHIFT/RPD/PerArm/Centroid',
505 cutmask=
'passMinZDCEnergyCutForCentroidValidEvaluation',
506 xbins=2,xmin=0,xmax=2,
507 xlabels=[
'Valid',
'Invalid'])
510 zdcSideMonToolArr.defineHistogram(
'xCentroid',title=
';Centroid x position [mm];Events',
511 path=
'/SHIFT/RPD/PerArm/Centroid',
512 cutmask=
'centroidValid',
513 xbins=n_time_centroid_bins_default,xmin=x_centroid_min,xmax=x_centroid_max)
515 zdcSideMonToolArr.defineHistogram(
'yCentroid',title=
';Centroid y position [mm];Events',
516 path=
'/SHIFT/RPD/PerArm/Centroid',
517 cutmask=
'centroidValid',
518 xbins=n_time_centroid_bins_default*2,xmin=y_centroid_min,xmax=y_centroid_max)
520 zdcSideMonToolArr.defineHistogram(
'xCentroid, yCentroid',type=
'TH2F',title=
';Centroid x position [mm];Centroid y position [mm]',
521 path=
'/EXPERT/RPD/PerArm/Centroid',
522 cutmask=
'centroidValid',
523 xbins=n_time_centroid_bins_default,xmin=x_centroid_min,xmax=x_centroid_max,
524 ybins=n_time_centroid_bins_default*2,ymin=y_centroid_min,ymax=y_centroid_max)
526 zdcSideMonToolArr.defineHistogram(
'ReactionPlaneAngle',title=
';Reaction Plane Angle;Events',
527 path=
'/EXPERT/RPD/PerArm/ReactionPlane',
528 cutmask=
'centroidValid',
529 xbins=64,xmin=-3.141593,xmax=3.141593)
533 if (
not zdcMonAlg.IsOnline):
534 zdcSideMonToolArr.defineHistogram(
'xCentroid, yCentroid;yCentroid_vs_xCentroid_requireOnlyHasCentroidBit',type=
'TH2F',title=
';Centroid x position [mm];Centroid y position [mm]',
535 path=
'/EXPERT/RPD/PerArm/Centroid',
536 xbins=n_time_centroid_bins_default,xmin=x_centroid_min,xmax=x_centroid_max,
537 ybins=n_time_centroid_bins_default,ymin=y_centroid_min,ymax=y_centroid_max)
538 zdcSideMonToolArr.defineHistogram(
'ReactionPlaneAngle;ReactionPlaneAngle_requireOnlyHasCentroidBit',title=
';Reaction Plane Angle;Events',
539 path=
'/EXPERT/RPD/PerArm/ReactionPlane',
540 xbins=64,xmin=-3.141593,xmax=3.141593)
544 if (
not zdcMonAlg.IsOnline):
545 zdcSideMonToolArr.defineHistogram(
'lumiBlock, xCentroid;xCentroid_vs_lb_requireOnlyHasCentroidBit', type=
'TH2F', title=
';lumi block;Centroid x position [mm]',
546 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
547 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
548 ybins=n_time_centroid_bins_default,ymin=x_centroid_min,ymax=x_centroid_max)
549 zdcSideMonToolArr.defineHistogram(
'lumiBlock, yCentroid;yCentroid_vs_lb_requireOnlyHasCentroidBit', type=
'TH2F', title=
';lumi block;Centroid y position [mm]',
550 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
551 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
552 ybins=n_time_centroid_bins_default,ymin=y_centroid_min,ymax=y_centroid_max)
554 zdcSideMonToolArr.defineHistogram(
'lumiBlock, xCentroid;xCentroid_vs_lb', type=
'TH2F', title=
';lumi block;Centroid x position [mm]',
555 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
556 cutmask=
'centroidValid',
557 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
558 ybins=n_time_centroid_bins_default,ymin=x_centroid_min,ymax=x_centroid_max)
559 zdcSideMonToolArr.defineHistogram(
'lumiBlock, yCentroid;yCentroid_vs_lb', type=
'TH2F', title=
';lumi block;Centroid y position [mm]',
560 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
561 cutmask=
'centroidValid',
562 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
563 ybins=n_time_centroid_bins_default,ymin=y_centroid_min,ymax=y_centroid_max)
566 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum, rpdMaxADCSum', type=
'TH2F', title=
';E ZDC side [TeV];RPD Max ADC Sum (AorC) [ADC counts]',
567 path=
'/EXPERT/ZdcRpdPerSideCorr',
568 cutmask=
'RPDSideValid',
569 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
570 ybins=n_energy_bins_default,ymin=0.0,ymax=rpd_max_adc_sum_xmax)
571 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum, rpdAmplitudeCalibSum', type=
'TH2F', title=
';E ZDC side [GeV];RPD Calib Amp Sum (AorC) [ADC counts]',
572 path=
'/EXPERT/ZdcRpdPerSideCorr',
573 cutmask=
'RPDSideValid',
574 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
575 ybins=n_energy_bins_default,ymin=0.0,ymax=rpd_amp_sum_xmax)
576 zdcSideMonToolArr.defineHistogram(
'zdcEMModuleEnergy, rpdAmplitudeCalibSum', type=
'TH2F', title=
';E EM module AorC [GeV];RPD Calib Amp Sum (AorC) [ADC counts]',
577 path=
'/EXPERT/ZdcRpdPerSideCorr',
578 cutmask=
'RPDSideValid',
579 xbins=n_energy_bins_default,xmin=0.0,xmax=module_calib_amp_xmax / 2.,
580 ybins=n_energy_bins_default,ymin=0.0,ymax=rpd_amp_sum_xmax)
587 zdcModuleMonToolArr = helper.addArray([sides,modules],zdcMonAlg,
'ZdcModuleMonitor', topPath =
'ZDC')
591 zdcModuleMonToolArr.defineHistogram(
'zdcStatusBits',title=
';;Events',
592 path=
'/SHIFT/ZDC/ZdcModule/ModuleStatusBits',
593 xbins=nZdcStatusBits,xmin=0.0,xmax=nZdcStatusBits,opt=
'kVec',
594 xlabels=[
'PulseBit',
'LowGainBit',
'FailBit',
'HGOverflowBit',
'HGUnderflowBit',
'PSHGOverUnderflowBit',
'LGOverflowBit',
'LGUnderflowBit',
'PrePulseBit',
'PostPulseBit',
'FitFailedBit',
'BadChisqBit',
'BadT0Bit',
'ExcludeEarlyLGBit',
'ExcludeLateLGBit',
'preExpTailBit',
'FitMinAmpBit',
'RepassPulseBit'])
598 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp',title=
';Module Amplitude [ADC Counts];Events',
599 path=
'/SHIFT/ZDC/ZdcModule/ModuleAmp',
600 xbins=n_fpga_bins * 2,xmin=0.0,xmax=module_amp_xmax)
602 zdcModuleMonToolArr.defineHistogram(
'zdcModuleMaxADC',title=
';Module Max ADC;Events',
603 path=
'/EXPERT/ZDC/ZdcModule/ModuleMaxADC',
604 xbins=n_fpga_bins,xmin=0.0,xmax=module_amp_xmax)
607 if (
not zdcMonAlg.IsPPMode):
608 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp;zdcModuleAmp_HG',title=
';Module Amplitude HG [ADC Counts];Events',
609 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
610 cutmask=
'zdcModuleHG',
611 xbins=n_fpga_bins,xmin=0.0,xmax=module_FPGA_max_ADC)
613 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp;zdcModuleAmp_LG',title=
';Module Amplitude LG [ADC Counts];Events',
614 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
615 cutmask=
'zdcModuleLG',
616 xbins=n_fpga_bins,xmin=0.0,xmax=module_amp_xmax)
618 if (zdcMonAlg.IsInjectedPulse):
619 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmpLGRefit',title=
';LG-Refit Amplitude [ADC Counts];Events',
620 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
621 cutmask=
'zdcModuleHG',
622 xbins=n_fpga_bins,xmin=0.0,xmax=amp_LG_refit_max_ADC)
624 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
625 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp;zdcModuleAmp_halfrange',title=
';Module Amplitude [ADC Counts];Events',
626 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
627 xbins=n_fpga_bins,xmin=0.0,xmax=module_amp_xmax / 2.)
630 if (zdcMonAlg.IsInjectedPulse
or not zdcMonAlg.IsOnline):
631 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp,zdcModuleAmpToMaxADCRatio;zdcModuleAmpToMaxADCRatio_vs_zdcModuleMaxADC_HG_profile',type=
'TProfile',title=
';Module Max ADC HG [ADC];Avg Amp/Max ADC',
632 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpToMaxADCRatio',
633 cutmask=
'zdcModuleHG',
634 xbins=n_fpga_bins,xmin=0.0,xmax=module_FPGA_max_ADC)
636 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp,zdcModuleAmpToMaxADCRatio;zdcModuleAmpToMaxADCRatio_vs_zdcModuleMaxADC_HG',type=
'TH2F',title=
';Module Max ADC HG [ADC];Avg Amp/Max ADC',
637 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpToMaxADCRatio',
638 cutmask=
'zdcModuleHG',
639 xbins=n_fpga_bins,xmin=0.0,xmax=module_FPGA_max_ADC,
640 ybins=100,ymin=0.0,ymax=2.)
642 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp,zdcModuleAmpToMaxADCRatio;zdcModuleAmpToMaxADCRatio_vs_zdcModuleMaxADC_LG_profile',type=
'TProfile',title=
';Module Max ADC LG [ADC];Avg Amp/Max ADC',
643 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpToMaxADCRatio',
644 cutmask=
'zdcModuleLG',
645 xbins=n_fpga_bins,xmin=0.0,xmax=nominal_lg_max_ADC)
647 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp,zdcModuleAmpToMaxADCRatio;zdcModuleAmpToMaxADCRatio_vs_zdcModuleMaxADC_LG',type=
'TH2F',title=
';Module Max ADC LG [ADC];Avg Amp/Max ADC',
648 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpToMaxADCRatio',
649 cutmask=
'zdcModuleLG',
650 xbins=n_fpga_bins,xmin=0.0,xmax=nominal_lg_max_ADC,
651 ybins=100,ymin=0.0,ymax=2./nominal_lg_gain_factor)
655 if (zdcMonAlg.IsInjectedPulse):
656 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract',title=
';Module Amplitude Fraction;Events',
657 path=
'/SHIFT/ZDC/ZdcModule/ModuleFraction',
658 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
660 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract;zdcModuleFract_above_cut',title=
';Module Amplitude Fraction;Events',
661 path=
'/SHIFT/ZDC/ZdcModule/ModuleFraction',
662 cutmask=
'zdcEnergyAboveModuleFractCut',
663 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
664 zdcModuleMonToolArr.defineHistogram(
'zdcEnergySumCurrentSide, zdcModuleFract;zdcModuleFract_vs_zdcEnergySum_fullrange', type=
'TH2F', title=
';ZDC Energy Sum Current Side [GeV];Module Amplitude Fraction',
665 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionVsEnergy',
666 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
667 ybins=n_mod_fraction_bins_default,ymin=0.0,ymax=1.)
668 zdcModuleMonToolArr.defineHistogram(
'zdcEnergySumCurrentSide, zdcModuleFract;zdcModuleFract_vs_zdcEnergySum_profile', type=
'TProfile', title=
';ZDC Energy Sum Current Side [GeV];Module Amplitude Fraction',
669 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionVsEnergy',
670 cutmask=
'zdcModuleFractionValid',
671 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax)
672 zdcModuleMonToolArr.defineHistogram(
'zdcEnergySumCurrentSide, zdcModuleFract;zdcModuleFract_vs_zdcEnergySum_zoomedin', type=
'TH2F', title=
';Amplitude Sum Current Side [ADC Counts];Module Amplitude Fraction',
673 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionVsEnergy',
674 xbins=n_energy_bins_default,xmin=0.0,xmax=10000,
675 ybins=n_mod_fraction_bins_default,ymin=0.0,ymax=1.)
676 if (
not zdcMonAlg.IsOnline):
677 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract',title=
';Module Amplitude Fraction;Events',
678 path=
'/EXPERT/ZDC/ZdcModule/ModuleFraction',
679 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
680 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract;zdcModuleFract_above20N',title=
';Module Amplitude Fraction;Events',
681 path=
'/EXPERT/ZDC/ZdcModule/ModuleFraction',
682 cutmask=
'zdcAbove20NCurrentSide',
683 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
685 if (
not zdcMonAlg.IsInjectedPulse):
686 zdcModuleMonToolArr.defineHistogram(
'zdcModuleCalibAmp',title=
';Module Calibrated Amplitude [GeV];Events',
687 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmp',
688 xbins=2*n_energy_bins_default,xmin=0.0,xmax=module_calib_amp_xmax)
690 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
691 zdcModuleMonToolArr.defineHistogram(
'zdcModuleCalibAmp;zdcModuleCalibAmp_halfrange',title=
';Module Calibrated Amplitude [GeV];Events',
692 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmp',
693 xbins=2*n_energy_bins_default,xmin=0.0,xmax=module_calib_amp_xmax / 2.)
696 if (zdcMonAlg.IsInjectedPulse):
698 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleFitAmp;zdcModuleAmpHG_vs_injectedPulseInputVoltage', type=
'TH2F', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
699 cutmask=
'zdcHGInjPulseValid',
700 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpHGVsInputVoltage',
704 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleFitAmp;zdcModuleAmpHG_vs_injectedPulseInputVoltage_profile', type=
'TProfile', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
705 cutmask=
'zdcHGInjPulseValid',
706 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpHGVsInputVoltage',
711 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleMaxADCHG', type=
'TH2F', title=
';Pulse amp [V];Max ADC HG',
712 cutmask=
'zdcHGInjPulseValid',
713 path=
'/EXPERT/ZDC/ZdcModule/ModuleMaxADCHGVsInputVoltage',
718 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleLGFitAmp;zdcModuleAmpLG_vs_injectedPulseInputVoltage', type=
'TH2F', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
719 cutmask=
'zdcLGInjPulseValid',
720 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpLGVsInputVoltage',
724 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleLGFitAmp;zdcModuleAmpLG_vs_injectedPulseInputVoltage_profile', type=
'TProfile', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
725 cutmask=
'zdcLGInjPulseValid',
726 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpLGVsInputVoltage',
731 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleMaxADCLG;zdcModuleMaxADCLG_vs_injectedPulseInputVoltage', type=
'TH2F', title=
';Pulse amp [V];Max ADC LG',
732 cutmask=
'zdcLGInjPulseValid',
733 path=
'/EXPERT/ZDC/ZdcModule/ModuleMaxADCLGVsInputVoltage',
739 zdcModuleMonToolArr.defineHistogram(
'zdcModuleTime',title=
';Module Time [ns];Events',
740 path=
'/SHIFT/ZDC/ZdcModule/ModuleTime',
741 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
743 if (
not zdcMonAlg.IsPPMode):
744 zdcModuleMonToolArr.defineHistogram(
'zdcModuleTime;zdcModuleTime_LG',title=
';Module Time [ns];Events',
745 path=
'/SHIFT/ZDC/ZdcModule/ModuleTime',
746 cutmask=
'zdcModuleLG',
747 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
749 zdcModuleMonToolArr.defineHistogram(
'zdcModuleTime;zdcModuleTime_HG',title=
';Module Time [ns];Events',
750 path=
'/SHIFT/ZDC/ZdcModule/ModuleTime',
751 cutmask=
'zdcModuleHG',
752 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
754 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFitT0',title=
';Module FitT0 [ns];Events',
755 path=
'/EXPERT/ZDC/ZdcModule/ModuleFitT0',
756 xbins=200,xmin=0.0,xmax=time_in_data_buffer)
758 if (
not zdcMonAlg.IsPPMode):
759 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFitT0;zdcModuleFitT0_LG',title=
';Module FitT0 LG [ns];Events',
760 path=
'/EXPERT/ZDC/ZdcModule/ModuleFitT0',
761 cutmask=
'zdcModuleLG',
762 xbins=n_time_centroid_bins_default,xmin=0.0,xmax=time_in_data_buffer)
764 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFitT0;zdcModuleFitT0_HG',title=
';Module FitT0 HG [ns];Events',
765 path=
'/EXPERT/ZDC/ZdcModule/ModuleFitT0',
766 cutmask=
'zdcModuleHG',
767 xbins=n_time_centroid_bins_default,xmin=0.0,xmax=time_in_data_buffer)
770 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
771 zdcModuleMonToolArr.defineHistogram(
'zdcModuleCalibTime',title=
';Module Calibrated Time [ns];Events',
772 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibTime',
773 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
777 zdcModuleMonToolArr.defineHistogram(
'zdcModuleChisq',title=
';Module Chi-square;Events',
778 path=
'/EXPERT/ZDC/ZdcModule/ModuleChisq',
779 weight=
'zdcModuleChisqEventWeight',
780 xbins=
create_log_bins(module_chisq_min, module_chisq_max, module_chisq_nbins))
781 zdcModuleMonToolArr.defineHistogram(
'zdcModuleChisqOverAmp',title=
';Module Chi-square / Amplitude;Events',
782 path=
'/SHIFT/ZDC/ZdcModule/ModuleChisq',
783 weight=
'zdcModuleChisqOverAmpEventWeight',
784 xbins=
create_log_bins(module_chisq_over_amp_min, module_chisq_over_amp_max, module_chisq_over_amp_nbins))
785 zdcModuleMonToolArr.defineHistogram(
'zdcModuleChisqOverAmp;zdcModuleChisqOverAmp_linear',title=
';Module Chi-square / Amplitude;Events',
786 path=
'/SHIFT/ZDC/ZdcModule/ModuleChisq',
787 xbins=module_chisq_over_amp_linear_nbins,xmin=0.,xmax=module_chisq_over_amp_linear_max)
789 if (
not zdcMonAlg.IsOnline):
790 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleChisqOverAmp',type=
'TH2F',title=
';Module Amplitude [ADC Counts];Module Chi-square / Amplitude',
791 path=
'/EXPERT/ZDC/ZdcModule/ModuleChisq',
792 weight=
'zdcModuleChisqOverAmpEventWeight',
793 xbins=n_energy_bins_default,xmin=0.0,xmax=module_amp_xmax / 2.,
794 ybins=
create_log_bins(module_chisq_over_amp_min, module_chisq_over_amp_max, module_chisq_over_amp_nbins))
798 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGAmpRatio',title=
';HG-to-LG Amplitude Raio;Events',
799 path=
'/SHIFT/ZDC/ZdcModule/ModuleHGLGCompr',
800 cutmask=
'zdcModuleHG',
801 xbins=n_HG_LG_amp_ratio_bins,xmin=hg_lg_amp_ratio_min_nominal,xmax=hg_lg_amp_ratio_max_nominal)
803 if (
not zdcMonAlg.IsInjectedPulse):
804 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGAmpRatioNoNonlinCorr',title=
';HG-to-LG Amplitude Raio;Events',
805 path=
'/SHIFT/ZDC/ZdcModule/ModuleHGLGComprNoNonlinCorr',
806 cutmask=
'zdcModuleHG',
807 xbins=n_HG_LG_amp_ratio_bins,xmin=hg_lg_amp_ratio_min_nominal,xmax=hg_lg_amp_ratio_max_nominal)
809 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleHGtoLGAmpRatio', type=
'TH2F', title=
';ZDC HG Amplitude [ADC Counts];HG-to-LG Amplitude Raio;Events',
810 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
811 cutmask=
'zdcModuleHG',
812 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=module_FPGA_max_ADC,
813 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_nominal,ymax=hg_lg_amp_ratio_max_nominal)
815 if (
not zdcMonAlg.IsInjectedPulse):
816 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleHGtoLGAmpRatioNoNonlinCorr', type=
'TH2F', title=
';ZDC HG Amplitude [ADC Counts];HG-to-LG Amplitude Raio;Events',
817 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGComprNoNonlinCorr',
818 cutmask=
'zdcModuleHG',
819 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=module_FPGA_max_ADC,
820 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_nominal,ymax=hg_lg_amp_ratio_max_nominal)
822 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleHGtoLGAmpRatio;zdcModuleHGtoLGAmpRatio_vs_zdcModuleAmp_profile', type=
'TProfile', title=
';ZDC HG Amplitude [ADC Counts];Average HG-to-LG Amplitude Raio;Events',
823 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
824 cutmask=
'zdcModuleHG',
825 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=module_FPGA_max_ADC)
827 if (
not zdcMonAlg.IsOnline):
828 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmpLGRefit, zdcModuleHGtoLGAmpRatio', type=
'TH2F', title=
';ZDC LG-Refit Amplitude [ADC Counts];HG-to-LG Amplitude Raio;Events',
829 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
830 cutmask=
'zdcModuleHG',
831 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=amp_LG_refit_max_ADC,
832 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_nominal,ymax=hg_lg_amp_ratio_max_nominal)
833 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmpLGRefit, zdcModuleHGtoLGAmpRatio;zdcModuleHGtoLGAmpRatio_vs_zdcModuleAmpLGRefit_profile', type=
'TProfile', title=
';ZDC LG-Refit Amplitude [ADC Counts];Average HG-to-LG Amplitude Raio;Events',
834 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
835 cutmask=
'zdcModuleHG',
836 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=amp_LG_refit_max_ADC)
838 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGT0Diff',title=
';HG-LG T0 Difference [ns];Events',
839 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
840 cutmask=
'zdcModuleHG',
841 xbins=n_HG_LG_time_diff_bins,xmin=-10.0,xmax=10.0)
843 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGT0Diff, zdcModuleHGtoLGAmpRatio', type=
'TH2F', title=
';HG-LG T0 Difference [ns];HG-to-LG Amplitude Raio;Events',
844 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
845 cutmask=
'zdcModuleHG',
846 xbins=n_HG_LG_time_diff_bins,xmin=2.0,xmax=4.0,
847 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_tight,ymax=hg_lg_amp_ratio_max_tight)
853 if (
not zdcMonAlg.IsInjectedPulse):
854 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleCalibAmp;zdcModuleCalibAmp_vs_lb', type=
'TH2F', title=
';lumi block;Module Calib Amplitude',
855 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmpLBdep',
856 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
857 ybins=n_module_amp_coarse_bins, ymin=0.0, ymax=module_calib_amp_1Nmonitor_xmax)
858 if (
not zdcMonAlg.IsOnline):
859 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleAmp;zdcModuleAmp_vs_lb', type=
'TH2F', title=
';lumi block;Module Amplitude [ADC counts]',
860 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpLBdep',
861 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
862 ybins=n_module_amp_coarse_bins, ymin=0.0, ymax=module_amp_1Nmonitor_xmax)
863 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleFract;zdcModuleFract_above20N_vs_lb', type=
'TH2F',title=
';lumi block;Module Amplitude Fraction',
864 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionLBdep',
865 cutmask=
'zdcAbove20NCurrentSide',
866 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
867 ybins=n_mod_fraction_bins_default,ymin=0.0,ymax=1.)
869 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
870 zdcModuleMonToolArr.defineHistogram(
'bcid, zdcModuleCalibAmp', type=
'TH2F', title=
';BCID;Module Calib Amplitude',
871 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmpBCIDdep',
872 xbins=bcid_max,xmin=0.0,xmax=bcid_max,
873 ybins=n_module_amp_coarse_bins, ymin=0.0, ymax=module_calib_amp_1Nmonitor_xmax)
877 if (
not zdcMonAlg.IsOnline):
878 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
879 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
880 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
881 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
882 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_LG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
883 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
884 cutmask=
'zdcModuleLG',
885 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
886 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
887 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_HG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
888 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
889 cutmask=
'zdcModuleHG',
890 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
891 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
893 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_LG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
894 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
895 cutmask=
'zdcModuleLG',
896 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
897 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
898 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_HG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
899 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
900 cutmask=
'zdcModuleHG',
901 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
902 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
904 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_LG_vs_lb_profile', type=
'TProfile', title=
';lumi block;Module Time [ns]',
905 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
906 cutmask=
'zdcModuleLGTimeValid',
907 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max)
908 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_HG_vs_lb_profile', type=
'TProfile', title=
';lumi block;Module Time [ns]',
909 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
910 cutmask=
'zdcModuleHGTimeValid',
911 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max)
917 if (zdcMonAlg.EnableRPDAmp):
919 rpdChannelMonToolArr = helper.addArray([sides,channels],zdcMonAlg,
'RpdChannelMonitor', topPath =
'ZDC')
922 rpdChannelMonToolArr.defineHistogram(
'RPDChannelAmplitudeCalib', title=
';RPD Channel Calibrated Amplitude;Events',
923 path=
'/SHIFT/RPD/RPDChannel/CalibAmp',
924 cutmask=
'RPDChannelValid',
925 xbins=n_rpd_amp_bins_full_range,xmin=rpd_channel_amp_min,xmax=rpd_sum_adc_max)
926 rpdChannelMonToolArr.defineHistogram(
'RPDChannelMaxADC', title=
';Max ADC [ADC Counts];Events',
927 path=
'/EXPERT/RPD/RPDChannel/MaxADC',
928 cutmask=
'RPDChannelValid',
929 xbins=n_energy_bins_default,xmin=0.0,xmax=module_FPGA_max_ADC)
931 if (
not zdcMonAlg.IsOnline):
932 rpdChannelMonToolArr.defineHistogram(
'RPDChannelSubAmp', title=
';RPD Channel Subtracted Amplitude;Events',
933 path=
'/EXPERT/RPD/RPDChannel/SubAmp',
934 cutmask=
'RPDChannelCentroidValid',
935 xbins=n_rpd_sub_amp_bins,xmin=rpd_sub_amp_min,xmax=rpd_sub_amp_max)
938 if (
not zdcMonAlg.IsOnline):
939 rpdChannelMonToolArr.defineHistogram(
'RPDChannelAmplitudeCalib,RPDChannelMaxADC', type=
'TH2F', title=
';Sum ADC [ADC Counts];Max ADC [ADC Counts]',
940 path=
'/EXPERT/RPD/RPDChannel/MaxADCVsSumADC',
941 cutmask=
'RPDChannelValid',
942 xbins=n_rpd_amp_bins_full_range,xmin=rpd_channel_amp_min,xmax=rpd_sum_adc_max,
943 ybins=n_energy_bins_default,ymin=0.0,ymax=module_FPGA_max_ADC)
945 rpdChannelMonToolArr.defineHistogram(
'RPDChannelMaxSample', title=
';Max Sample;Events',
946 path=
'/EXPERT/RPD/RPDChannel/MaxSample',
947 cutmask=
'RPDChannelValid',
948 xbins=24,xmin=0.0,xmax=24.)
952 rpdChannelMonToolArr.defineHistogram(
'RPDStatusBits',title=
';;Events',
953 path=
'/EXPERT/RPD/RPDChannel/StatusBits',
954 xbins=nRpdStatusBits,xmin=0,xmax=nRpdStatusBits,opt=
'kVec',
955 xlabels=[
'ValidBit',
'OutOfTimePileupBit',
'OverflowBit',
'PrePulseBit',
'PostPulseBit',
'NoPulseBit',
'BadAvgBaselineSubtrBit',
'InsufficientPileupFitPointsBit',
'PileupStretchedExpFitFailBit',
'PileupStretchedExpGrowthBit',
'PileupBadStretchedExpSubtrBit',
'PileupExpFitFailBit',
'PileupExpGrowthBit',
'PileupBadExpSubtrBit',
'PileupStretchedExpPulseLike'])
957 rpdChannelMonToolArr.defineHistogram(
'RPDChannelValidBitFloat;RPDChannelValidBit',title=
'RPD Channel valid bit;;Events',
958 path=
'/SHIFT/RPD/RPDChannel/StatusBits',
959 xbins=2,xmin=0,xmax=2,
960 xlabels=[
'Valid',
'Invalid'])
963 if (
not zdcMonAlg.IsOnline):
964 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelAmplitudeCalib;RPDChannelAmplitudeCalib_vs_lb', type=
'TH2F', title=
';lumi block;RPD Channel Calibrated Amplitude',
965 path=
'/EXPERT/RPD/RPDChannel/CalibAmpLBdep',
966 cutmask=
'RPDChannelValid',
967 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
968 ybins=n_rpd_amp_bins_full_range,ymin=rpd_channel_amp_min,ymax=rpd_sum_adc_max)
969 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelMaxADC;RPDChannelMaxADC_vs_lb', type=
'TH2F', title=
';lumi block;Max ADC [ADC Counts]',
970 path=
'/EXPERT/RPD/RPDChannel/MaxADCLBdep',
971 cutmask=
'RPDChannelValid',
972 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
973 ybins=n_energy_bins_default,ymin=0.0,ymax=module_FPGA_max_ADC)
975 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelAmplitudeCalib;RPDChannelAmplitudeCalib_vs_lb', type=
'TH2F', title=
';lumi block;RPD Channel Calibrated Amplitude',
976 path=
'/EXPERT/RPD/RPDChannel/CalibAmpLBdep',
977 cutmask=
'RPDChannelValid',
978 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
979 ybins=n_rpd_amp_bins_full_range,ymin=rpd_channel_amp_min,ymax=rpd_sum_adc_max)
980 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelMaxADC;RPDChannelMaxADC_vs_lb', type=
'TH2F', title=
';lumi block;Max ADC [ADC Counts]',
981 path=
'/EXPERT/RPD/RPDChannel/MaxADCLBdep',
982 cutmask=
'RPDChannelValid',
983 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
984 ybins=n_energy_bins_default,ymin=0.0,ymax=module_FPGA_max_ADC)
992 return helper.result()