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 Hadronic 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 Hadronic 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 Hadronic 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 Hadronic 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 Hadronic 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 Hadronic 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',
406 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=energy_sum_zoomin_xmax)
408 if (zdcMonAlg.EnableZDCSingleSideTriggers):
409 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum;zdcEnergySum_zoomin_wTrigSelec',title=
'ZDC Side {0} Energy Sum (1-to-4n, require opposite-side trigger);Side {0} Energy[GeV];Events',
410 path =
'/SHIFT/ZDC/PerArm/Energy',
412 cutmask =
'passTrigOppSide',
413 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=energy_sum_zoomin_xmax)
416 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',
417 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
418 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=uncalib_amp_sum_zoomin_xmax)
420 if (zdcMonAlg.EnableZDCSingleSideTriggers):
421 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',
422 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
423 cutmask =
'passTrigOppSide',
424 xbins=energy_sum_zoomin_nbins,xmin=0.0,xmax=uncalib_amp_sum_zoomin_xmax)
427 zdcSideMonToolArr.defineHistogram(
'zdcUncalibSum',title=
'ZDC Side {0} Uncalibrated Sum;[ADC];Events',
428 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
429 xbins=n_energy_bins_default,xmin=0.0,xmax=zdc_amp_sum_xmax)
432 if (
not zdcMonAlg.IsOnline):
433 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcEnergySum;zdcEnergySum_vs_lb_noTrig', type=
'TH2F', title=
';lumi block;Side {0} Energy [GeV]',
434 path =
'/EXPERT/ZDC/PerArm/Energy',
435 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
436 ybins=energy_sum_zoomin_nbins,ymin=0.0,ymax=energy_sum_zoomin_xmax)
437 if (zdcMonAlg.EnableZDCSingleSideTriggers):
438 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcEnergySum;zdcEnergySum_vs_lb_wTrig', type=
'TH2F', title=
';lumi block;Side {0} Energy [GeV]',
439 path =
'/EXPERT/ZDC/PerArm/Energy',
440 cutmask =
'passTrigOppSide',
441 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
442 ybins=energy_sum_zoomin_nbins,ymin=0.0,ymax=energy_sum_zoomin_xmax)
444 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum;zdcEnergySum_1n_noTrigSelec',title=
'ZDC Side {0} Energy Sum (1n range, no trigger selection);Side {0} Energy[GeV];Events',
445 path =
'/SHIFT/ZDC/PerArm/Energy',
447 xbins=energy_sum_1n_nbins,xmin=energy_sum_1n_xmin,xmax=energy_sum_1n_xmax)
449 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcEnergySum;zdcEnergySum_1n_vs_lb_noTrig', type=
'TH2F', title=
';lumi block;Side {0} Energy (1n range) [GeV]',
450 path =
'/EXPERT/ZDC/PerArm/Energy',
451 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
452 ybins=energy_sum_1n_nbins,ymin=energy_sum_1n_xmin,ymax=energy_sum_1n_xmax)
454 if (
not zdcMonAlg.IsOnline):
455 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcUncalibSum;zdcUncalibSum_vs_lb_noTrig', type=
'TH2F', title=
';lumi block;ZDC Side {0} Uncalibrated Sum [ADC]',
456 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
457 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
458 ybins=n_energy_bins_default,ymin=0.0,ymax=uncalib_amp_sum_zoomin_xmax)
459 if (zdcMonAlg.EnableZDCSingleSideTriggers):
460 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcUncalibSum;zdcUncalibSum_vs_lb_wTrig', type=
'TH2F', title=
';lumi block;ZDC Side {0} Uncalibrated Sum [ADC]',
461 path =
'/EXPERT/ZDC/PerArm/UncalibAmp',
462 cutmask =
'passTrigOppSide',
463 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
464 ybins=n_energy_bins_default,ymin=0.0,ymax=uncalib_amp_sum_zoomin_xmax)
467 if (
not zdcMonAlg.IsOnline):
468 zdcSideMonToolArr.defineHistogram(
'bcid, zdcEnergySum;zdcEnergySum_vs_bcid_noTrig', type=
'TH2F', title=
';BCID;Side {0} Energy [GeV]',
469 path =
'/EXPERT/ZDC/PerArm/Energy',
470 xbins=bcid_max,xmin=0.0,xmax=bcid_max,
471 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_zoomin_xmax)
472 if (zdcMonAlg.EnableZDCSingleSideTriggers):
473 zdcSideMonToolArr.defineHistogram(
'bcid, zdcEnergySum;zdcEnergySum_vs_bcid_wTrig', type=
'TH2F', title=
';BCID;Side {0} Energy [GeV]',
474 path =
'/EXPERT/ZDC/PerArm/Energy',
475 cutmask =
'passTrigOppSide',
476 xbins=bcid_max,xmin=0.0,xmax=bcid_max,
477 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_zoomin_xmax)
479 if (zdcMonAlg.CalInfoOn):
480 zdcSideMonToolArr.defineHistogram(
'fCalEt, zdcEnergySumTeV;zdcEnergySum_vs_fCalEt_single_side', type=
'TH2F', title=
';Side {0} FCal Energy [TeV];Side {0} ZDC Energy [TeV]',
481 path =
'/EXPERT/ZDC/PerArm/ZDCFcalCorr',
483 xbins=fCal_single_side_nbins,xmin=fCal_single_side_min,xmax=fCal_single_side_max,
484 ybins=n_energy_bins_default,ymin=0.0,ymax=energy_sum_single_side_xmax_TeV)
489 zdcSideMonToolArr.defineHistogram(
'zdcAvgTime',title=
'ZDC Side Average Time;t[ns];Events',
490 path =
'/EXPERT/ZDC/PerArm/AvgTime',
491 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
493 if (
not zdcMonAlg.IsOnline):
494 zdcSideMonToolArr.defineHistogram(
'lumiBlock, zdcAvgTime;zdcAvgTime_vs_lb', type=
'TH2F', title=
';ZDC Side Average Time versus Lumi block;lumi block;t[ns]',
495 path =
'/EXPERT/ZDC/PerArm/AvgTime',
496 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
497 ybins=n_time_centroid_bins_default,ymin=-10.0,ymax=10.0)
501 zdcSideMonToolArr.defineHistogram(
'centroidStatusBits',title=
';;Events',
502 path=
'/EXPERT/RPD/PerArm/Centroid',
503 xbins=nRpdCentroidStatusBits,xmin=0.0,xmax=nRpdCentroidStatusBits,
505 xlabels=[
'ValidBit',
'HasCentroidBit',
'ZDCInvalidBit',
'InsufficientZDCEnergyBit',
'ExcessiveZDCEnergyBit',
'EMInvalidBit',
'InsufficientEMEnergyBit',
'ExcessiveEMEnergyBit',
'RPDInvalidBit',
'PileupBit',
'ExcessivePileupBit',
'ZeroSumBit',
'ExcessiveSubtrUnderflowBit',
'Row0ValidBit',
'Row1ValidBit',
'Row2ValidBit',
'Row3ValidBit',
'Col0ValidBit',
'Col1ValidBit',
'Col2ValidBit',
'Col3ValidBit'])
507 zdcSideMonToolArr.defineHistogram(
'centroidValidBitFloat;centroidValidBit_RequireMinZDCEnergy',title=
'Centroid valid bit;;Events',
508 path=
'/SHIFT/RPD/PerArm/Centroid',
510 cutmask=
'passMinZDCEnergyCutForCentroidValidEvaluation',
511 xbins=2,xmin=0,xmax=2,
512 xlabels=[
'Valid',
'Invalid'])
515 zdcSideMonToolArr.defineHistogram(
'xCentroid',title=
';Centroid x position [mm];Events',
516 path=
'/SHIFT/RPD/PerArm/Centroid',
518 cutmask=
'centroidValid',
519 xbins=n_time_centroid_bins_default,xmin=x_centroid_min,xmax=x_centroid_max)
521 zdcSideMonToolArr.defineHistogram(
'yCentroid',title=
';Centroid y position [mm];Events',
522 path=
'/SHIFT/RPD/PerArm/Centroid',
524 cutmask=
'centroidValid',
525 xbins=n_time_centroid_bins_default*2,xmin=y_centroid_min,xmax=y_centroid_max)
527 zdcSideMonToolArr.defineHistogram(
'xCentroid, yCentroid',type=
'TH2F',title=
';Centroid x position [mm];Centroid y position [mm]',
528 path=
'/EXPERT/RPD/PerArm/Centroid',
529 cutmask=
'centroidValid',
530 xbins=n_time_centroid_bins_default,xmin=x_centroid_min,xmax=x_centroid_max,
531 ybins=n_time_centroid_bins_default*2,ymin=y_centroid_min,ymax=y_centroid_max)
533 zdcSideMonToolArr.defineHistogram(
'ReactionPlaneAngle',title=
';Reaction Plane Angle;Events',
534 path=
'/EXPERT/RPD/PerArm/ReactionPlane',
535 cutmask=
'centroidValid',
536 xbins=64,xmin=-3.141593,xmax=3.141593)
540 if (
not zdcMonAlg.IsOnline):
541 zdcSideMonToolArr.defineHistogram(
'xCentroid, yCentroid;yCentroid_vs_xCentroid_requireOnlyHasCentroidBit',type=
'TH2F',title=
';Centroid x position [mm];Centroid y position [mm]',
542 path=
'/EXPERT/RPD/PerArm/Centroid',
543 xbins=n_time_centroid_bins_default,xmin=x_centroid_min,xmax=x_centroid_max,
544 ybins=n_time_centroid_bins_default,ymin=y_centroid_min,ymax=y_centroid_max)
545 zdcSideMonToolArr.defineHistogram(
'ReactionPlaneAngle;ReactionPlaneAngle_requireOnlyHasCentroidBit',title=
';Reaction Plane Angle;Events',
546 path=
'/EXPERT/RPD/PerArm/ReactionPlane',
547 xbins=64,xmin=-3.141593,xmax=3.141593)
551 if (
not zdcMonAlg.IsOnline):
552 zdcSideMonToolArr.defineHistogram(
'lumiBlock, xCentroid;xCentroid_vs_lb_requireOnlyHasCentroidBit', type=
'TH2F', title=
';lumi block;Centroid x position [mm]',
553 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
554 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
555 ybins=n_time_centroid_bins_default,ymin=x_centroid_min,ymax=x_centroid_max)
556 zdcSideMonToolArr.defineHistogram(
'lumiBlock, yCentroid;yCentroid_vs_lb_requireOnlyHasCentroidBit', type=
'TH2F', title=
';lumi block;Centroid y position [mm]',
557 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
558 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
559 ybins=n_time_centroid_bins_default,ymin=y_centroid_min,ymax=y_centroid_max)
561 zdcSideMonToolArr.defineHistogram(
'lumiBlock, xCentroid;xCentroid_vs_lb', type=
'TH2F', title=
';lumi block;Centroid x position [mm]',
562 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
563 cutmask=
'centroidValid',
564 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
565 ybins=n_time_centroid_bins_default,ymin=x_centroid_min,ymax=x_centroid_max)
566 zdcSideMonToolArr.defineHistogram(
'lumiBlock, yCentroid;yCentroid_vs_lb', type=
'TH2F', title=
';lumi block;Centroid y position [mm]',
567 path=
'/EXPERT/RPD/PerArm/CentroidLBdep',
568 cutmask=
'centroidValid',
569 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
570 ybins=n_time_centroid_bins_default,ymin=y_centroid_min,ymax=y_centroid_max)
573 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum, rpdMaxADCSum', type=
'TH2F', title=
';E ZDC side [TeV];RPD Max ADC Sum (AorC) [ADC counts]',
574 path=
'/EXPERT/ZdcRpdPerSideCorr',
575 cutmask=
'RPDSideValid',
576 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
577 ybins=n_energy_bins_default,ymin=0.0,ymax=rpd_max_adc_sum_xmax)
578 zdcSideMonToolArr.defineHistogram(
'zdcEnergySum, rpdAmplitudeCalibSum', type=
'TH2F', title=
';E ZDC side [GeV];RPD Calib Amp Sum (AorC) [ADC counts]',
579 path=
'/EXPERT/ZdcRpdPerSideCorr',
580 cutmask=
'RPDSideValid',
581 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
582 ybins=n_energy_bins_default,ymin=0.0,ymax=rpd_amp_sum_xmax)
583 zdcSideMonToolArr.defineHistogram(
'zdcEMModuleEnergy, rpdAmplitudeCalibSum', type=
'TH2F', title=
';E EM module AorC [GeV];RPD Calib Amp Sum (AorC) [ADC counts]',
584 path=
'/EXPERT/ZdcRpdPerSideCorr',
585 cutmask=
'RPDSideValid',
586 xbins=n_energy_bins_default,xmin=0.0,xmax=module_calib_amp_xmax / 2.,
587 ybins=n_energy_bins_default,ymin=0.0,ymax=rpd_amp_sum_xmax)
594 zdcModuleMonToolArr = helper.addArray([sides,modules],zdcMonAlg,
'ZdcModuleMonitor', topPath =
'ZDC')
598 zdcModuleMonToolArr.defineHistogram(
'zdcStatusBits',title=
';;Events',
599 path=
'/SHIFT/ZDC/ZdcModule/ModuleStatusBits',
600 opt=
'kAlwaysCreate kVec',
601 xbins=nZdcStatusBits,xmin=0.0,xmax=nZdcStatusBits,
602 xlabels=[
'PulseBit',
'LowGainBit',
'FailBit',
'HGOverflowBit',
'HGUnderflowBit',
'PSHGOverUnderflowBit',
'LGOverflowBit',
'LGUnderflowBit',
'PrePulseBit',
'PostPulseBit',
'FitFailedBit',
'BadChisqBit',
'BadT0Bit',
'ExcludeEarlyLGBit',
'ExcludeLateLGBit',
'preExpTailBit',
'FitMinAmpBit',
'RepassPulseBit'])
606 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp',title=
';Module Amplitude [ADC Counts];Events',
607 path=
'/SHIFT/ZDC/ZdcModule/ModuleAmp',
609 xbins=n_fpga_bins * 2,xmin=0.0,xmax=module_amp_xmax)
611 zdcModuleMonToolArr.defineHistogram(
'zdcModuleMaxADC',title=
';Module Max ADC;Events',
612 path=
'/EXPERT/ZDC/ZdcModule/ModuleMaxADC',
613 xbins=n_fpga_bins,xmin=0.0,xmax=module_amp_xmax)
616 if (
not zdcMonAlg.IsPPMode):
617 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp;zdcModuleAmp_HG',title=
';Module Amplitude HG [ADC Counts];Events',
618 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
619 cutmask=
'zdcModuleHG',
620 xbins=n_fpga_bins,xmin=0.0,xmax=module_FPGA_max_ADC)
622 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp;zdcModuleAmp_LG',title=
';Module Amplitude LG [ADC Counts];Events',
623 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
624 cutmask=
'zdcModuleLG',
625 xbins=n_fpga_bins,xmin=0.0,xmax=module_amp_xmax)
627 if (zdcMonAlg.IsInjectedPulse):
628 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmpLGRefit',title=
';LG-Refit Amplitude [ADC Counts];Events',
629 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
630 cutmask=
'zdcModuleHG',
631 xbins=n_fpga_bins,xmin=0.0,xmax=amp_LG_refit_max_ADC)
633 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
634 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp;zdcModuleAmp_halfrange',title=
';Module Amplitude [ADC Counts];Events',
635 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmp',
636 xbins=n_fpga_bins,xmin=0.0,xmax=module_amp_xmax / 2.)
639 if (zdcMonAlg.IsInjectedPulse
or not zdcMonAlg.IsOnline):
640 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp,zdcModuleAmpToMaxADCRatio;zdcModuleAmpToMaxADCRatio_vs_zdcModuleMaxADC_HG_profile',type=
'TProfile',title=
';Module Max ADC HG [ADC];Avg Amp/Max ADC',
641 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpToMaxADCRatio',
642 cutmask=
'zdcModuleHG',
643 xbins=n_fpga_bins,xmin=0.0,xmax=module_FPGA_max_ADC)
645 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp,zdcModuleAmpToMaxADCRatio;zdcModuleAmpToMaxADCRatio_vs_zdcModuleMaxADC_HG',type=
'TH2F',title=
';Module Max ADC HG [ADC];Avg Amp/Max ADC',
646 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpToMaxADCRatio',
647 cutmask=
'zdcModuleHG',
648 xbins=n_fpga_bins,xmin=0.0,xmax=module_FPGA_max_ADC,
649 ybins=100,ymin=0.0,ymax=2.)
651 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp,zdcModuleAmpToMaxADCRatio;zdcModuleAmpToMaxADCRatio_vs_zdcModuleMaxADC_LG_profile',type=
'TProfile',title=
';Module Max ADC LG [ADC];Avg Amp/Max ADC',
652 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpToMaxADCRatio',
653 cutmask=
'zdcModuleLG',
654 xbins=n_fpga_bins,xmin=0.0,xmax=nominal_lg_max_ADC)
656 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp,zdcModuleAmpToMaxADCRatio;zdcModuleAmpToMaxADCRatio_vs_zdcModuleMaxADC_LG',type=
'TH2F',title=
';Module Max ADC LG [ADC];Avg Amp/Max ADC',
657 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpToMaxADCRatio',
658 cutmask=
'zdcModuleLG',
659 xbins=n_fpga_bins,xmin=0.0,xmax=nominal_lg_max_ADC,
660 ybins=100,ymin=0.0,ymax=2./nominal_lg_gain_factor)
664 if (zdcMonAlg.IsInjectedPulse):
665 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract',title=
';Module Amplitude Fraction;Events',
666 path=
'/SHIFT/ZDC/ZdcModule/ModuleFraction',
668 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
670 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract;zdcModuleFract_above_cut',title=
';Module Amplitude Fraction;Events',
671 path=
'/SHIFT/ZDC/ZdcModule/ModuleFraction',
673 cutmask=
'zdcEnergyAboveModuleFractCut',
674 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
675 zdcModuleMonToolArr.defineHistogram(
'zdcEnergySumCurrentSide, zdcModuleFract;zdcModuleFract_vs_zdcEnergySum_fullrange', type=
'TH2F', title=
';ZDC Energy Sum Current Side [GeV];Module Amplitude Fraction',
676 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionVsEnergy',
677 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax,
678 ybins=n_mod_fraction_bins_default,ymin=0.0,ymax=1.)
679 zdcModuleMonToolArr.defineHistogram(
'zdcEnergySumCurrentSide, zdcModuleFract;zdcModuleFract_vs_zdcEnergySum_profile', type=
'TProfile', title=
';ZDC Energy Sum Current Side [GeV];Module Amplitude Fraction',
680 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionVsEnergy',
681 cutmask=
'zdcModuleFractionValid',
682 xbins=n_energy_bins_default,xmin=0.0,xmax=energy_sum_xmax)
683 zdcModuleMonToolArr.defineHistogram(
'zdcEnergySumCurrentSide, zdcModuleFract;zdcModuleFract_vs_zdcEnergySum_zoomedin', type=
'TH2F', title=
';Amplitude Sum Current Side [ADC Counts];Module Amplitude Fraction',
684 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionVsEnergy',
685 xbins=n_energy_bins_default,xmin=0.0,xmax=10000,
686 ybins=n_mod_fraction_bins_default,ymin=0.0,ymax=1.)
687 if (
not zdcMonAlg.IsOnline):
688 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract',title=
';Module Amplitude Fraction;Events',
689 path=
'/EXPERT/ZDC/ZdcModule/ModuleFraction',
690 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
691 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFract;zdcModuleFract_above20N',title=
';Module Amplitude Fraction;Events',
692 path=
'/EXPERT/ZDC/ZdcModule/ModuleFraction',
693 cutmask=
'zdcAbove20NCurrentSide',
694 xbins=n_mod_fraction_bins_default,xmin=0.0,xmax=1.)
696 if (
not zdcMonAlg.IsInjectedPulse):
697 zdcModuleMonToolArr.defineHistogram(
'zdcModuleCalibAmp',title=
';Module Calibrated Amplitude [GeV];Events',
698 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmp',
699 xbins=2*n_energy_bins_default,xmin=0.0,xmax=module_calib_amp_xmax)
701 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
702 zdcModuleMonToolArr.defineHistogram(
'zdcModuleCalibAmp;zdcModuleCalibAmp_halfrange',title=
';Module Calibrated Amplitude [GeV];Events',
703 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmp',
704 xbins=2*n_energy_bins_default,xmin=0.0,xmax=module_calib_amp_xmax / 2.)
707 if (zdcMonAlg.IsInjectedPulse):
709 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleFitAmp;zdcModuleAmpHG_vs_injectedPulseInputVoltage', type=
'TH2F', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
710 cutmask=
'zdcHGInjPulseValid',
711 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpHGVsInputVoltage',
715 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleFitAmp;zdcModuleAmpHG_vs_injectedPulseInputVoltage_profile', type=
'TProfile', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
716 cutmask=
'zdcHGInjPulseValid',
717 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpHGVsInputVoltage',
722 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleMaxADCHG', type=
'TH2F', title=
';Pulse amp [V];Max ADC HG',
723 cutmask=
'zdcHGInjPulseValid',
724 path=
'/EXPERT/ZDC/ZdcModule/ModuleMaxADCHGVsInputVoltage',
729 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleLGFitAmp;zdcModuleAmpLG_vs_injectedPulseInputVoltage', type=
'TH2F', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
730 cutmask=
'zdcLGInjPulseValid',
731 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpLGVsInputVoltage',
735 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleLGFitAmp;zdcModuleAmpLG_vs_injectedPulseInputVoltage_profile', type=
'TProfile', title=
';Pulse amp [V];Signal Fit Amp [ADC Counts]',
736 cutmask=
'zdcLGInjPulseValid',
737 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpLGVsInputVoltage',
742 zdcModuleMonToolArr.defineHistogram(
'injectedPulseInputVoltage,zdcModuleMaxADCLG;zdcModuleMaxADCLG_vs_injectedPulseInputVoltage', type=
'TH2F', title=
';Pulse amp [V];Max ADC LG',
743 cutmask=
'zdcLGInjPulseValid',
744 path=
'/EXPERT/ZDC/ZdcModule/ModuleMaxADCLGVsInputVoltage',
750 zdcModuleMonToolArr.defineHistogram(
'zdcModuleTime',title=
';Module Time [ns];Events',
751 path=
'/SHIFT/ZDC/ZdcModule/ModuleTime',
753 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
755 if (
not zdcMonAlg.IsPPMode):
756 zdcModuleMonToolArr.defineHistogram(
'zdcModuleTime;zdcModuleTime_LG',title=
';Module Time [ns];Events',
757 path=
'/SHIFT/ZDC/ZdcModule/ModuleTime',
759 cutmask=
'zdcModuleLG',
760 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
762 zdcModuleMonToolArr.defineHistogram(
'zdcModuleTime;zdcModuleTime_HG',title=
';Module Time [ns];Events',
763 path=
'/SHIFT/ZDC/ZdcModule/ModuleTime',
765 cutmask=
'zdcModuleHG',
766 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
768 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFitT0',title=
';Module FitT0 [ns];Events',
769 path=
'/EXPERT/ZDC/ZdcModule/ModuleFitT0',
770 xbins=200,xmin=0.0,xmax=time_in_data_buffer)
772 if (
not zdcMonAlg.IsPPMode):
773 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFitT0;zdcModuleFitT0_LG',title=
';Module FitT0 LG [ns];Events',
774 path=
'/EXPERT/ZDC/ZdcModule/ModuleFitT0',
775 cutmask=
'zdcModuleLG',
776 xbins=n_time_centroid_bins_default,xmin=0.0,xmax=time_in_data_buffer)
778 zdcModuleMonToolArr.defineHistogram(
'zdcModuleFitT0;zdcModuleFitT0_HG',title=
';Module FitT0 HG [ns];Events',
779 path=
'/EXPERT/ZDC/ZdcModule/ModuleFitT0',
780 cutmask=
'zdcModuleHG',
781 xbins=n_time_centroid_bins_default,xmin=0.0,xmax=time_in_data_buffer)
784 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
785 zdcModuleMonToolArr.defineHistogram(
'zdcModuleCalibTime',title=
';Module Calibrated Time [ns];Events',
786 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibTime',
787 xbins=n_time_centroid_bins_default,xmin=-10.0,xmax=10.0)
791 zdcModuleMonToolArr.defineHistogram(
'zdcModuleChisq',title=
';Module Chi-square;Events',
792 path=
'/EXPERT/ZDC/ZdcModule/ModuleChisq',
793 weight=
'zdcModuleChisqEventWeight',
794 xbins=
create_log_bins(module_chisq_min, module_chisq_max, module_chisq_nbins))
795 zdcModuleMonToolArr.defineHistogram(
'zdcModuleChisqOverAmp',title=
';Module Chi-square / Amplitude;Events',
796 path=
'/SHIFT/ZDC/ZdcModule/ModuleChisq',
798 weight=
'zdcModuleChisqOverAmpEventWeight',
799 xbins=
create_log_bins(module_chisq_over_amp_min, module_chisq_over_amp_max, module_chisq_over_amp_nbins))
800 zdcModuleMonToolArr.defineHistogram(
'zdcModuleChisqOverAmp;zdcModuleChisqOverAmp_linear',title=
';Module Chi-square / Amplitude;Events',
801 path=
'/SHIFT/ZDC/ZdcModule/ModuleChisq',
803 xbins=module_chisq_over_amp_linear_nbins,xmin=0.,xmax=module_chisq_over_amp_linear_max)
805 if (
not zdcMonAlg.IsOnline):
806 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleChisqOverAmp',type=
'TH2F',title=
';Module Amplitude [ADC Counts];Module Chi-square / Amplitude',
807 path=
'/EXPERT/ZDC/ZdcModule/ModuleChisq',
808 weight=
'zdcModuleChisqOverAmpEventWeight',
809 xbins=n_energy_bins_default,xmin=0.0,xmax=module_amp_xmax / 2.,
810 ybins=
create_log_bins(module_chisq_over_amp_min, module_chisq_over_amp_max, module_chisq_over_amp_nbins))
814 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGAmpRatio',title=
';HG-to-LG Amplitude Raio;Events',
815 path=
'/SHIFT/ZDC/ZdcModule/ModuleHGLGCompr',
817 cutmask=
'zdcModuleHG',
818 xbins=n_HG_LG_amp_ratio_bins,xmin=hg_lg_amp_ratio_min_nominal,xmax=hg_lg_amp_ratio_max_nominal)
820 if (
not zdcMonAlg.IsInjectedPulse):
821 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGAmpRatioNoNonlinCorr',title=
';HG-to-LG Amplitude Raio;Events',
822 path=
'/SHIFT/ZDC/ZdcModule/ModuleHGLGComprNoNonlinCorr',
824 cutmask=
'zdcModuleHG',
825 xbins=n_HG_LG_amp_ratio_bins,xmin=hg_lg_amp_ratio_min_nominal,xmax=hg_lg_amp_ratio_max_nominal)
827 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleHGtoLGAmpRatio', type=
'TH2F', title=
';ZDC HG Amplitude [ADC Counts];HG-to-LG Amplitude Raio;Events',
828 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
829 cutmask=
'zdcModuleHG',
830 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=module_FPGA_max_ADC,
831 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_nominal,ymax=hg_lg_amp_ratio_max_nominal)
833 if (
not zdcMonAlg.IsInjectedPulse):
834 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleHGtoLGAmpRatioNoNonlinCorr', type=
'TH2F', title=
';ZDC HG Amplitude [ADC Counts];HG-to-LG Amplitude Raio;Events',
835 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGComprNoNonlinCorr',
836 cutmask=
'zdcModuleHG',
837 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=module_FPGA_max_ADC,
838 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_nominal,ymax=hg_lg_amp_ratio_max_nominal)
840 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmp, zdcModuleHGtoLGAmpRatio;zdcModuleHGtoLGAmpRatio_vs_zdcModuleAmp_profile', type=
'TProfile', title=
';ZDC HG Amplitude [ADC Counts];Average HG-to-LG Amplitude Raio;Events',
841 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
842 cutmask=
'zdcModuleHG',
843 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=module_FPGA_max_ADC)
845 if (
not zdcMonAlg.IsOnline):
846 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmpLGRefit, zdcModuleHGtoLGAmpRatio', type=
'TH2F', title=
';ZDC LG-Refit Amplitude [ADC Counts];HG-to-LG Amplitude Raio;Events',
847 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
848 cutmask=
'zdcModuleHG',
849 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=amp_LG_refit_max_ADC,
850 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_nominal,ymax=hg_lg_amp_ratio_max_nominal)
851 zdcModuleMonToolArr.defineHistogram(
'zdcModuleAmpLGRefit, zdcModuleHGtoLGAmpRatio;zdcModuleHGtoLGAmpRatio_vs_zdcModuleAmpLGRefit_profile', type=
'TProfile', title=
';ZDC LG-Refit Amplitude [ADC Counts];Average HG-to-LG Amplitude Raio;Events',
852 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
853 cutmask=
'zdcModuleHG',
854 xbins=n_module_amp_fine_bins, xmin=0.0, xmax=amp_LG_refit_max_ADC)
856 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGT0Diff',title=
';HG-LG T0 Difference [ns];Events',
857 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
858 cutmask=
'zdcModuleHG',
859 xbins=n_HG_LG_time_diff_bins,xmin=-10.0,xmax=10.0)
861 zdcModuleMonToolArr.defineHistogram(
'zdcModuleHGtoLGT0Diff, zdcModuleHGtoLGAmpRatio', type=
'TH2F', title=
';HG-LG T0 Difference [ns];HG-to-LG Amplitude Raio;Events',
862 path=
'/EXPERT/ZDC/ZdcModule/ModuleHGLGCompr',
863 cutmask=
'zdcModuleHG',
864 xbins=n_HG_LG_time_diff_bins,xmin=2.0,xmax=4.0,
865 ybins=n_HG_LG_amp_ratio_bins,ymin=hg_lg_amp_ratio_min_tight,ymax=hg_lg_amp_ratio_max_tight)
871 if (
not zdcMonAlg.IsInjectedPulse):
872 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleCalibAmp;zdcModuleCalibAmp_vs_lb', type=
'TH2F', title=
';lumi block;Module Calib Amplitude',
873 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmpLBdep',
874 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
875 ybins=n_module_amp_coarse_bins, ymin=0.0, ymax=module_calib_amp_1Nmonitor_xmax)
876 if (
not zdcMonAlg.IsOnline):
877 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleAmp;zdcModuleAmp_vs_lb', type=
'TH2F', title=
';lumi block;Module Amplitude [ADC counts]',
878 path=
'/EXPERT/ZDC/ZdcModule/ModuleAmpLBdep',
879 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
880 ybins=n_module_amp_coarse_bins, ymin=0.0, ymax=module_amp_1Nmonitor_xmax)
881 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleFract;zdcModuleFract_above20N_vs_lb', type=
'TH2F',title=
';lumi block;Module Amplitude Fraction',
882 path=
'/EXPERT/ZDC/ZdcModule/ModuleFractionLBdep',
883 cutmask=
'zdcAbove20NCurrentSide',
884 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
885 ybins=n_mod_fraction_bins_default,ymin=0.0,ymax=1.)
887 if (
not zdcMonAlg.IsOnline
and not zdcMonAlg.IsInjectedPulse):
888 zdcModuleMonToolArr.defineHistogram(
'bcid, zdcModuleCalibAmp', type=
'TH2F', title=
';BCID;Module Calib Amplitude',
889 path=
'/EXPERT/ZDC/ZdcModule/ModuleCalibAmpBCIDdep',
890 xbins=bcid_max,xmin=0.0,xmax=bcid_max,
891 ybins=n_module_amp_coarse_bins, ymin=0.0, ymax=module_calib_amp_1Nmonitor_xmax)
895 if (
not zdcMonAlg.IsOnline):
896 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
897 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
898 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
899 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
900 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_LG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
901 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
902 cutmask=
'zdcModuleLG',
903 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
904 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
905 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_HG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
906 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
907 cutmask=
'zdcModuleHG',
908 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
909 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
911 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_LG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
912 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
913 cutmask=
'zdcModuleLG',
914 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
915 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
916 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_HG_vs_lb', type=
'TH2F', title=
';lumi block;Module Time [ns]',
917 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
918 cutmask=
'zdcModuleHG',
919 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
920 ybins=n_time_centroid_bins_default, ymin=-10.0, ymax=10.0)
922 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_LG_vs_lb_profile', type=
'TProfile', title=
';lumi block;Module Time [ns]',
923 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
924 cutmask=
'zdcModuleLGTimeValid',
925 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max)
926 zdcModuleMonToolArr.defineHistogram(
'lumiBlock, zdcModuleTime;zdcModuleTime_HG_vs_lb_profile', type=
'TProfile', title=
';lumi block;Module Time [ns]',
927 path=
'/EXPERT/ZDC/ZdcModule/ModuleTimeLBdep',
928 cutmask=
'zdcModuleHGTimeValid',
929 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max)
935 if (zdcMonAlg.EnableRPDAmp):
937 rpdChannelMonToolArr = helper.addArray([sides,channels],zdcMonAlg,
'RpdChannelMonitor', topPath =
'ZDC')
940 rpdChannelMonToolArr.defineHistogram(
'RPDChannelAmplitudeCalib', title=
';RPD Channel Calibrated Amplitude;Events',
941 path=
'/SHIFT/RPD/RPDChannel/CalibAmp',
943 cutmask=
'RPDChannelValid',
944 xbins=n_rpd_amp_bins_full_range,xmin=rpd_channel_amp_min,xmax=rpd_sum_adc_max)
945 rpdChannelMonToolArr.defineHistogram(
'RPDChannelMaxADC', title=
';Max ADC [ADC Counts];Events',
946 path=
'/EXPERT/RPD/RPDChannel/MaxADC',
947 cutmask=
'RPDChannelValid',
948 xbins=n_energy_bins_default,xmin=0.0,xmax=module_FPGA_max_ADC)
950 if (
not zdcMonAlg.IsOnline):
951 rpdChannelMonToolArr.defineHistogram(
'RPDChannelSubAmp', title=
';RPD Channel Subtracted Amplitude;Events',
952 path=
'/EXPERT/RPD/RPDChannel/SubAmp',
953 cutmask=
'RPDChannelCentroidValid',
954 xbins=n_rpd_sub_amp_bins,xmin=rpd_sub_amp_min,xmax=rpd_sub_amp_max)
957 if (
not zdcMonAlg.IsOnline):
958 rpdChannelMonToolArr.defineHistogram(
'RPDChannelAmplitudeCalib,RPDChannelMaxADC', type=
'TH2F', title=
';Sum ADC [ADC Counts];Max ADC [ADC Counts]',
959 path=
'/EXPERT/RPD/RPDChannel/MaxADCVsSumADC',
960 cutmask=
'RPDChannelValid',
961 xbins=n_rpd_amp_bins_full_range,xmin=rpd_channel_amp_min,xmax=rpd_sum_adc_max,
962 ybins=n_energy_bins_default,ymin=0.0,ymax=module_FPGA_max_ADC)
964 rpdChannelMonToolArr.defineHistogram(
'RPDChannelMaxSample', title=
';Max Sample;Events',
965 path=
'/EXPERT/RPD/RPDChannel/MaxSample',
966 cutmask=
'RPDChannelValid',
967 xbins=24,xmin=0.0,xmax=24.)
971 rpdChannelMonToolArr.defineHistogram(
'RPDStatusBits',title=
';;Events',
972 path=
'/EXPERT/RPD/RPDChannel/StatusBits',
973 xbins=nRpdStatusBits,xmin=0,xmax=nRpdStatusBits,
975 xlabels=[
'ValidBit',
'OutOfTimePileupBit',
'OverflowBit',
'PrePulseBit',
'PostPulseBit',
'NoPulseBit',
'BadAvgBaselineSubtrBit',
'InsufficientPileupFitPointsBit',
'PileupStretchedExpFitFailBit',
'PileupStretchedExpGrowthBit',
'PileupBadStretchedExpSubtrBit',
'PileupExpFitFailBit',
'PileupExpGrowthBit',
'PileupBadExpSubtrBit',
'PileupStretchedExpPulseLike'])
977 rpdChannelMonToolArr.defineHistogram(
'RPDChannelValidBitFloat;RPDChannelValidBit',title=
'RPD Channel valid bit;;Events',
978 path=
'/SHIFT/RPD/RPDChannel/StatusBits',
980 xbins=2,xmin=0,xmax=2,
981 xlabels=[
'Valid',
'Invalid'])
984 if (
not zdcMonAlg.IsOnline):
985 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelAmplitudeCalib;RPDChannelAmplitudeCalib_vs_lb', type=
'TH2F', title=
';lumi block;RPD Channel Calibrated Amplitude',
986 path=
'/EXPERT/RPD/RPDChannel/CalibAmpLBdep',
987 cutmask=
'RPDChannelValid',
988 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
989 ybins=n_rpd_amp_bins_full_range,ymin=rpd_channel_amp_min,ymax=rpd_sum_adc_max)
990 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelMaxADC;RPDChannelMaxADC_vs_lb', type=
'TH2F', title=
';lumi block;Max ADC [ADC Counts]',
991 path=
'/EXPERT/RPD/RPDChannel/MaxADCLBdep',
992 cutmask=
'RPDChannelValid',
993 xbins=lumi_block_max,xmin=0.0,xmax=lumi_block_max,
994 ybins=n_energy_bins_default,ymin=0.0,ymax=module_FPGA_max_ADC)
996 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelAmplitudeCalib;RPDChannelAmplitudeCalib_vs_lb', type=
'TH2F', title=
';lumi block;RPD Channel Calibrated Amplitude',
997 path=
'/EXPERT/RPD/RPDChannel/CalibAmpLBdep',
998 cutmask=
'RPDChannelValid',
999 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
1000 ybins=n_rpd_amp_bins_full_range,ymin=rpd_channel_amp_min,ymax=rpd_sum_adc_max)
1001 rpdChannelMonToolArr.defineHistogram(
'lumiBlock, RPDChannelMaxADC;RPDChannelMaxADC_vs_lb', type=
'TH2F', title=
';lumi block;Max ADC [ADC Counts]',
1002 path=
'/EXPERT/RPD/RPDChannel/MaxADCLBdep',
1003 cutmask=
'RPDChannelValid',
1004 xbins=n_lumi_block_bins_coarse,xmin=0.0,xmax=lumi_block_max,
1005 ybins=n_energy_bins_default,ymin=0.0,ymax=module_FPGA_max_ADC)
1013 return helper.result()