9 from AthenaConfiguration.ComponentFactory
import CompFactory
14 selStr[
"passDigiNom"] =
"for unmasked SCs with ADC_max-pedestal > 10*RMS(DB) & good quality bits"
15 selStr[
"badNotMasked"] =
"for unmasked SCs which have bad quality bits"
18 selStr[
"zeroET"] =
"for unmasked SCs with ET == 0 GeV"
20 selStr[
"passSCNom"] =
"for unmasked SCs with non-zero ET < 10 GeV"
22 selStr[
"passSCNomInvalid"] =
"for unmasked SCs with raw E = -99999"
23 selStr[
"passSCNom0_0p325"] =
"for unmasked SCs with 0 GeV < ET < 0.325 GeV"
25 selStr[
"passSCNom0p325_1"] =
"for unmasked SCs with 0.325 GeV < ET < 1 GeV"
27 selStr[
"passSCNom1"] =
"for unmasked SCs with ET > 1 GeV"
29 selStr[
"passSCNom10"] =
"for unmasked SCs with ET > 10 GeV"
31 selStr[
"passSCNom10tauGt3"] =
"for unmasked SCs with ET > 10 GeV and #tau > 3"
32 selStr[
"saturNotMasked"] =
"for unmasked SCs which are saturated"
33 selStr[
"OFCbOFNotMasked"] =
"for unmasked SCs with OFCb in overflow"
34 selStr[
"onlofflEmismatch"] =
"for unmasked SCs which pass #tau selection where online & offline energies are different"
36 selStr[
"notMaskedEoflNe0"] =
"for unmasked SCs with non-zero ET ofl"
37 selStr[
"notMaskedEoflGt1"] =
"for unmasked SCs with ET ofl > 1 GeV"
42 '''Function to configures some algorithms in the monitoring system.'''
46 from AthenaMonitoring.AthMonitorCfgHelper
import AthMonitorCfgHelper
47 helper = AthMonitorCfgHelper(flags,
'LArDigitalTriggMonAlgCfg')
49 from LArMonitoring.GlobalVariables
import lArDQGlobals
51 from AthenaCommon.Logging
import logging
52 mlog = logging.getLogger(
'LArDigitalTriggMon' )
54 if not flags.DQ.enableLumiAccess:
55 from LumiBlockComps.LuminosityCondAlgConfig
import LuminosityCondAlgCfg
59 from LArCabling.LArCablingConfig
import LArOnOffIdMappingSCCfg
63 from LArConfiguration.LArElecCalibDBConfig
import LArElecCalibDBSCCfg
64 helper.resobj.merge(
LArElecCalibDBSCCfg(flags, condObjs=[
"Ramp",
"DAC2uA",
"Pedestal",
"uA2MeV",
"MphysOverMcal",
"OFC",
"Shape",
"HVScaleCorr"]))
72 RawSCContainerKey =
""
73 DigitContainerKey =
""
74 for i
in range(0,len(streamTypes)):
75 mlog.info(
"runinfo.streamTypes()[i]: "+
str(streamTypes[i]))
76 if streamTypes[i] ==
"SelectedEnergy":
78 RawSCContainerKey =
"SC_ET_ID"
79 if streamTypes[i] ==
"Energy":
81 RawSCContainerKey =
"SC_ET"
82 if streamTypes[i] ==
"RawADC":
84 larLATOMEBuilderAlg.LArDigitKey =
"SC"
85 larLATOMEBuilderAlg.isADCBas =
False
86 DigitContainerKey =
"SC"
87 if streamTypes[i] ==
"ADC":
89 DigitContainerKey =
"SC_ADC_BAS"
90 larLATOMEBuilderAlg.isADCBas =
True
91 larLATOMEBuilderAlg.LArDigitKey =
"SC_ADC_BAS"
94 if len(RawSCContainerKey)==0:
95 print(
"No energies, not including LArDigitalTriggMonAlg")
96 return helper.result()
98 larDigitalTriggMonAlg = helper.addAlgorithm(CompFactory.LArDigitalTriggMonAlg(
'larDigitalTriggMonAlg'))
99 larDigitalTriggMonAlg.ProblemsToMask=[
"maskedOSUM"]
101 larDigitalTriggMonAlg.LArRawSCEtRecoContainerKey=
"dummy"
103 larDigitalTriggMonAlg.isADCBas = hasAdcBas
104 larDigitalTriggMonAlg.LArRawSCContainerKey = RawSCContainerKey
105 larDigitalTriggMonAlg.LArDigitContainerKey = DigitContainerKey
107 if (hasEtId
and hasEt):
111 if (hasAdc
and hasAdcBas):
113 larDigitalTriggMonAlg.isADCBas=
False
115 mlog.info(
"Mux settings from COOL:")
116 mlog.info(
"has ET Id: "+
str(hasEtId))
117 mlog.info(
"has ET: "+
str(hasEt))
118 mlog.info(
"has ADC: "+
str(hasAdc))
119 mlog.info(
"has ADC Bas: "+
str(hasAdcBas))
122 larDigitalTriggMonAlg.SCMonGroup=SCGroupName
126 SCGroup = helper.addGroup(
127 larDigitalTriggMonAlg,
129 '/LArDigitalTrigger/',
135 LatomeDetBinMapping = dict([
136 (
"0x48",{
"Subdet":
"FCALC",
"Bin":1}),
137 (
"0x4c",{
"Subdet":
"EMEC/HECC",
"Bin":3}),
138 (
"0x44",{
"Subdet":
"EMECC",
"Bin":11}),
139 (
"0x4a",{
"Subdet":
"EMB/EMECC",
"Bin":27}),
140 (
"0x42",{
"Subdet":
"EMBC",
"Bin":43}),
141 (
"0x41",{
"Subdet":
"EMBA",
"Bin":59}),
142 (
"0x49",{
"Subdet":
"EMB/EMECA",
"Bin":75}),
143 (
"0x43",{
"Subdet":
"EMECA",
"Bin":91}),
144 (
"0x4b",{
"Subdet":
"EMEC/HECA",
"Bin":107}),
145 (
"0x47",{
"Subdet":
"FCALA",
"Bin":115})
154 for bb
in range (0,NLatomeBins):
156 for detID
in LatomeDetBinMapping:
157 if bb==(LatomeDetBinMapping[detID][
"Bin"]-1):
158 Label=LatomeDetBinMapping[detID][
"Subdet"]
161 if bb < NLatomeBins_side:
162 BinLabel_LATOME_C+=[Label+
str(phi)]
164 BinLabel_LATOME_A+=[Label+
str(phi)]
166 BinLabel_LATOME+=[Label+
str(phi)]
172 iphi_bins_dict = {
"ALL": 63,
"EMB": 63,
"EMEC": 63,
"HEC": 63,
"FCAL": 15}
177 SCGroup.defineHistogram(
'lumi_block,event_size;EventSize_vs_LB',
178 title=
'Digital trigger event size per LB; LumiBlock; Event size [MB]',
181 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max)
186 partGroup_digi = helper.addArray([larDigitalTriggMonAlg.LayerNames], larDigitalTriggMonAlg,
'LArDigitalTriggerMon_digi', topPath=
'/LArDigitalTrigger/')
187 partGroup_sc = helper.addArray([larDigitalTriggMonAlg.LayerNames], larDigitalTriggMonAlg,
'LArDigitalTriggerMon_sc', topPath=
'/LArDigitalTrigger/')
189 for part
in larDigitalTriggMonAlg.LayerNames:
191 for sel
in selStr.keys():
192 selStrPart[sel] =
"in "+part+
" "+selStr[sel]
194 for key
in iphi_bins_dict.keys():
195 if part.startswith(key):
196 iphi_bins = iphi_bins_dict[key]
199 partxbins=lArDQGlobals.SuperCell_Variables[
"etaRange"][
"All"][
"All"]
200 partybins=lArDQGlobals.SuperCell_Variables[
"phiRange"][
"All"][
"All"]
203 topPath=
"PerPartition/"
215 partxbins=lArDQGlobals.SuperCell_Variables[
"etaRange"][Part][Side][Sampling]
216 partybins=lArDQGlobals.SuperCell_Variables[
"phiRange"][Part][Side][Sampling]
221 for thisSel
in [
"passDigiNom",
"badNotMasked"]:
222 thisTopPath=f
"/{thisSel}/{topPath}"
225 partGroup_digi.defineHistogram(
'Digi_part_maxpos,Digi_part_partition;Partition_vs_maxSamplePosition_'+thisSel,
226 title=
'Partition vs. position of max sample '+selStrPart[thisSel],
227 cutmask=
'Digi_part_'+thisSel,
230 xbins=nsamples,xmin=0.5,xmax=nsamples+0.5,
231 ybins=lArDQGlobals.N_Partitions, ymin=-0.5, ymax=lArDQGlobals.N_Partitions-0.5,
232 xlabels = [
str(x)
for x
in range(1,nsamples+1)],
233 ylabels=lArDQGlobals.Partitions,
236 partGroup_digi.defineHistogram(
'Digi_part_latomesourceidbin,Digi_part_adc;ADCFullRange_vs_LATOME_'+thisSel,
237 title=
'ADC vs LATOME name '+selStrPart[thisSel]+
'; ; ADC',
238 cutmask=
'Digi_part_'+thisSel,
241 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
242 ybins=500, ymin=-2, ymax=2500,
243 xlabels=BinLabel_LATOME,
246 partGroup_digi.defineHistogram(
'Digi_part_latomesourceidbin,Digi_part_pedestal;Pedestal_vs_LATOME_'+thisSel,
247 title=
'Pedestal vs LATOME name '+selStrPart[thisSel]+
'; ; Pedestal',
248 cutmask=
'Digi_part_'+thisSel,
251 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
252 ybins=500, ymin=-2, ymax=2500,
253 xlabels=BinLabel_LATOME,
256 partGroup_digi.defineHistogram(
'Digi_part_latomesourceidbin,Digi_part_maxpos;MaxSamplePosition_vs_LATOME_'+thisSel,
257 title=
'Position of max sample vs. LATOME '+selStrPart[thisSel],
259 cutmask=
'Digi_part_'+thisSel,
261 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
262 ybins=nsamples,ymin=0.5,ymax=nsamples+0.5,
263 xlabels=BinLabel_LATOME,
264 ylabels = [
str(x)
for x
in range(1,nsamples+1)],
267 partGroup_digi.defineHistogram(
'Digi_part_latomesourceidbin,Digi_part_diff_adc0_ped;Diff_ADC0_Ped_vs_LATOME_'+thisSel,
268 title=
'ADC[0] - Pedestal vs LATOME name '+selStrPart[thisSel]+
'; ; ADC[0] - Pedestal',
270 cutmask=
'Digi_part_'+thisSel,
272 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
273 ybins=64, ymin=-32, ymax=32,
274 xlabels=BinLabel_LATOME,
277 partGroup_digi.defineHistogram(
'Digi_part_latomesourceidbin,Digi_part_diff_adc_ped_norm;Diff_ADC_Ped_Norm_vs_LATOME_'+thisSel,
278 title=
'(ADC-ped)/fabs(ADC_max-ped) '+selStrPart[thisSel]+
'; LATOME Name; (ADC - pedestal) / fabs(ADC_max - pedestal)',
280 cutmask=
'Digi_part_'+thisSel,
282 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
283 ybins=64, ymin=-32, ymax=32,
284 xlabels=BinLabel_LATOME,
289 partGroup_digi.defineHistogram(
'Digi_part_eta,Digi_part_phi;Coverage_Eta_Phi_'+thisSel,
290 title=
'SC coverage '+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
292 path=thisTopPath+
'/Coverage',
293 cutmask=
'Digi_part_'+thisSel,
299 if not flags.Common.isOnline:
continue
301 if thisSel !=
"passDigiNom":
continue
302 partGroup_digi.defineHistogram(
'Digi_part_eta,Digi_part_phi,Digi_part_diff_adc0_ped;Coverage_Diff_ADC0_Ped_'+thisSel,
303 title=
'ADC[0] - Pedestal'+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
305 cutmask=
'Digi_part_'+thisSel,
306 path=thisTopPath+
'/Coverage',
313 partGroup_digi.defineHistogram(
'Digi_part_BCID,Digi_part_iphi,Digi_part_diff_adc_ped;Diff_ADC_Ped_Per_BCID_Per_iphi_'+thisSel,
314 title=
'ADC - Pedestal (all samples) '+selStrPart[thisSel]+
': iphi vs BCID;BCID;iphi',
316 cutmask=
'Digi_part_'+thisSel,
318 xbins=3564,xmin=-0.5,xmax=3563.5,
319 ybins=iphi_bins+1,ymin=0,ymax=iphi_bins+1,
327 partGroup_digi.defineHistogram(
'Digi_part_sampos,Digi_part_adc;ADCZoom_vs_SamplePosition_'+thisSel,
328 title=
'ADC (zoom) vs sample position '+selStrPart[thisSel],
329 cutmask=
'Digi_part_'+thisSel,
332 xbins=nsamples,xmin=0.5,xmax=nsamples+0.5,
333 xlabels = [
str(x)
for x
in range(1,nsamples+1)],
334 ybins=750, ymin=0, ymax=1300,
337 partGroup_digi.defineHistogram(
'Digi_part_sampos,Digi_part_adc;ADCFullRange_vs_SamplePosition_'+thisSel,
338 title=
'ADC vs sample position '+selStrPart[thisSel],
339 cutmask=
'Digi_part_'+thisSel,
342 xbins=nsamples,xmin=0.5,xmax=nsamples+0.5,
343 xlabels = [
str(x)
for x
in range(1,nsamples+1)],
344 ybins=500, ymin=0, ymax=5000,
347 partGroup_digi.defineHistogram(
'Digi_part_sampos,Digi_part_pedestal;Pedestal_vs_SamplePosition_'+thisSel,
348 title=
'Pedestal vs sample position '+selStrPart[thisSel],
349 cutmask=
'Digi_part_'+thisSel,
352 xbins=nsamples,xmin=0.5,xmax=nsamples+0.5,
353 xlabels = [
str(x)
for x
in range(1,nsamples+1)],
354 ybins=500, ymin=0, ymax=5000,
357 partGroup_digi.defineHistogram(
'Digi_part_diff_adc0_ped;Diff_ADC0_Ped_'+thisSel,
358 title=
'LATOME (ADC[0]-ped) '+selStrPart[thisSel]+
'; (ADC - pedestal)',
360 cutmask=
'Digi_part_'+thisSel,
362 xbins=50,xmin=-25,xmax=25,
365 partGroup_digi.defineHistogram(
'Digi_part_sampos,Digi_part_diff_adc_ped_norm;Diff_ADC_Ped_Norm_vs_SamplePosition_'+thisSel,
366 title=
'(ADC-ped)/fabs(ADC_max-ped) '+selStrPart[thisSel]+
'; Sample position; (ADC - pedestal) / fabs(ADC_max - pedestal)',
368 cutmask=
'Digi_part_'+thisSel,
370 ybins=40,ymin=-1,ymax=1,
371 xbins=nsamples,xmin=0.5,xmax=nsamples+0.5,
372 xlabels = [
str(x)
for x
in range(1,nsamples+1)],
375 partGroup_digi.defineHistogram(
'Digi_part_BCID, Digi_part_adc;ADC_vs_BCID_'+thisSel,
376 title=
'ADC value vs BCID '+selStrPart[thisSel]+
'; BCID; ADC Value',
378 cutmask=
'Digi_part_'+thisSel,
380 xbins=3564,xmin=-0.5,xmax=3563.5,
381 ybins=500, ymin=0, ymax=5000,
384 partGroup_digi.defineHistogram(
'Digi_part_BCID, Digi_part_diff_adc0_ped;Diff_ADC0_Ped_vs_BCID_'+thisSel,
385 title=
'ADC[0] - Ped value vs BCID '+selStrPart[thisSel]+
'; BCID; ADC[0] Value',
387 cutmask=
'Digi_part_'+thisSel,
389 xbins=3564,xmin=-0.5,xmax=3563.5,
390 ybins=500, ymin=-5, ymax=5,
393 partGroup_digi.defineHistogram(
'Digi_part_LB, Digi_part_adc;ADC_vs_LB_'+thisSel,
394 title=
'ADC value vs LB '+selStrPart[thisSel]+
'; LB; ADC Value',
396 cutmask=
'Digi_part_'+thisSel,
398 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
399 ybins=500, ymin=0, ymax=5000,
402 partGroup_digi.defineHistogram(
"Digi_part_LB, Digi_part_adc_rms;ADC_RMS_vs_LB_"+thisSel,
403 title=
"RMS of ADC values vs LB "+selStrPart[thisSel]+
"; LB; RMS of ADC Values",
405 cutmask=
'Digi_part_'+thisSel,
407 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
408 ybins=100, ymin=0, ymax=10,
411 partGroup_digi.defineHistogram(
'Digi_part_BCID, Digi_part_adc_rms;ADC_RMS_vs_BCID_'+thisSel,
412 title=
'RMS of ADC values vs BCID '+selStrPart[thisSel]+
'; BCID; RMS of ADC Values',
414 cutmask=
'Digi_part_'+thisSel,
416 xbins=3564,xmin=-0.5,xmax=3563.5,
417 ybins=100, ymin=0, ymax=10,
421 partGroup_digi.defineHistogram(
'Digi_part_BCID, Digi_part_diff_adc_ped;Diff_ADC_Ped_vs_BCID_'+thisSel,
422 title=
'ADC - Pedestal (all samples) vs BCID '+selStrPart[thisSel]+
'; BCID; ADC Value',
424 cutmask=
'Digi_part_'+thisSel,
426 xbins=3564,xmin=-0.5,xmax=3563.5,
427 ybins=500, ymin=-5, ymax=5,
433 for thisSel
in [
"zeroET",
"passSCNom0_0p325",
"passSCNom0p325_1",
"passSCNom1",
"passSCNom10",
"passSCNom10tauGt3",
"saturNotMasked",
"OFCbOFNotMasked",
"onlofflEmismatch",
"notMaskedEoflNe0",
"notMaskedEoflGt1"]:
434 thisTopPath=f
"/{thisSel}/{topPath}"
437 partGroup_sc.defineHistogram(
'SC_part_latomesourceidbin,SC_part_et_onl;SC_ET_Onl_vs_LATOME_'+thisSel,
438 title=
'SC ET [GeV] vs LATOME name '+selStrPart[thisSel]+
'; ; ET SC [GeV]',
440 cutmask=
'SC_part_'+thisSel,
442 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
443 ybins=200, ymin=-10, ymax=200,
444 xlabels=BinLabel_LATOME,
448 partGroup_sc.defineHistogram(
'SC_part_LB,SC_part_latomesourceidbin;LB_vs_LATOME_'+thisSel,
449 title=
'LATOME name vs LB '+selStrPart[thisSel]+
';LB;LATOME',
451 cutmask=
'SC_part_'+thisSel,
453 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
454 ybins=NLatomeBins,ymin=1,ymax=NLatomeBins+1,
455 ylabels=BinLabel_LATOME,
458 partGroup_sc.defineHistogram(
'SC_part_time,SC_part_et_ofl;time_vs_et_ofl_'+thisSel,
459 title=
'SC coverage '+selStrPart[thisSel]+
': #tau vs ET ofl;#tau;ET ofl',
461 cutmask=
'SC_part_'+thisSel,
463 xbins=500,xmin=-50,xmax=50,
464 ybins=500,ymin=-10,ymax=70,
468 partGroup_sc.defineHistogram(
'SC_part_latomesourceidbin,SC_part_time;MeanOfflineLATOMEtime_vs_LATOME_'+thisSel,
469 title=
'Average LATOME #tau from Offline computation per LATOME'+selStrPart[thisSel]+
'; LATOME ; #tau [ns]',
471 cutmask=
'SC_part_'+thisSel,
473 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
474 ybins=200, ymin=-50, ymax=50,
475 xlabels=BinLabel_LATOME,
478 partGroup_sc.defineHistogram(
'SC_part_LB,SC_part_latomesourceidbin,SC_part_time;MeanOfflineLATOMEtime_perLB_perLATOME_'+thisSel,
479 title=
'SC #tau '+selStrPart[thisSel]+
': LATOME vs LB;LB;LATOME',
481 cutmask=
'SC_part_'+thisSel,
483 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
484 ybins=NLatomeBins,ymin=1,ymax=NLatomeBins+1,
485 ylabels=BinLabel_LATOME,
488 partGroup_sc.defineHistogram(
'SC_part_LB,SC_part_time;MeanOfflineLATOMEtime_vs_LB_'+thisSel,
489 title=
'Average LATOME #tau from Offline computation per LB '+selStrPart[thisSel]+
'; LumiBloc; #tau [ns]',
491 cutmask=
'SC_part_'+thisSel,
493 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
499 partGroup_sc.defineHistogram(
'SC_part_eta,SC_part_phi;Coverage_Eta_Phi_'+thisSel,
500 title=
'SC coverage '+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
502 cutmask=
'SC_part_'+thisSel,
503 path=thisTopPath+
'/Coverage',
509 partGroup_sc.defineHistogram(
'SC_part_time;OfflineLATOMEtime_'+thisSel,
510 title=
'LATOME #tau from Offline Computation '+selStrPart[thisSel]+
';#tau [ns]; Evts;',
512 cutmask=
'SC_part_'+thisSel,
514 xbins=100,xmin=-25,xmax=25,
518 if not flags.Common.isOnline:
continue
520 if thisSel !=
"passSCNom1":
continue
522 partGroup_sc.defineHistogram(
'SC_part_eta,SC_part_phi,SC_part_et_onl;Coverage_Et_Onl_'+thisSel,
523 title=
'SC Energy '+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
525 cutmask=
'SC_part_'+thisSel,
526 path=thisTopPath+
'/Coverage',
531 partGroup_sc.defineHistogram(
'SC_part_eta,SC_part_phi,SC_part_time;Coverage_OfflineLATOMEtime_'+thisSel,
532 title=
'LATOME #tau from Offline Computation '+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
534 cutmask=
'SC_part_'+thisSel,
535 path=thisTopPath+
'/Coverage',
540 partGroup_sc.defineHistogram(
'SC_part_et_onl,SC_part_et_ofl;ET_Ofl_vs_ET_Onl_'+thisSel,
541 title=
'LATOME ET vs Offline Computation '+selStrPart[thisSel]+
'; ET Onl;ET Offl [GeV]',
543 cutmask=
'SC_part_'+thisSel,
545 xbins=0,xmin=0,xmax=20,
546 ybins=0,ymin=0,ymax=20,
549 partGroup_sc.defineHistogram(
'SC_part_et_diff;ET_Diff_OnlOfl_'+thisSel,
550 title=
'LATOME ET vs Offline Computation '+selStrPart[thisSel]+
'; ET Onl - ET Offl [GeV]; Evts;',
552 cutmask=
'SC_part_'+thisSel,
554 xbins=200,xmin=-10,xmax=10,
558 partGroup_sc.defineHistogram(
'SC_part_et_onl;SC_ET_Onl_'+thisSel,
559 title=
'SC eT [GeV] '+selStrPart[thisSel],
561 cutmask=
'SC_part_'+thisSel,
563 xbins=500, xmin=-100, xmax=400,
567 partGroup_sc.defineHistogram(
'SC_part_BCID,SC_part_time;MeanOfflineLATOMEtime_vs_BCID_'+thisSel,
568 title=
'Average LATOME #tau from Offline computation per BCID '+selStrPart[thisSel]+
'; BCID; #tau [ns]',
570 cutmask=
'SC_part_'+thisSel,
572 xbins=3564,xmin=-0.5,xmax=3563.5,
575 partGroup_sc.defineHistogram(
'SC_part_BCID,SC_part_et_onl_muscaled;AvEnergyVsBCID_'+thisSel,
576 title=
'Average Energy vs BCID '+selStrPart[thisSel]+
'; BCID; Energy per SC [MeV]',
578 cutmask=
'SC_part_'+thisSel,
580 xbins=3564,xmin=-0.5,xmax=3563.5,
581 ybins=10, ymin=-20, ymax=20,
584 for thisSel
in [
"passSCNomInvalid"]:
585 thisTopPath=f
"/{thisSel}/{topPath}"
586 partGroup_sc.defineHistogram(
'SC_part_eta,SC_part_phi;Coverage_Eta_Phi_'+thisSel,
587 title=
'SC coverage '+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
589 path=thisTopPath+
'/Coverage',
590 cutmask=
'SC_part_'+thisSel,
597 return helper.result()
600 if __name__==
'__main__':
602 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
603 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
606 from AthenaConfiguration.Enums
import LHCPeriod
607 flags.GeoModel.Run = LHCPeriod.Run3
609 flags.Input.Files = [
"/eos/atlas/atlascerngroupdisk/proj-spot/spot-job-inputs/data23_13p6TeV/data23_13p6TeV.00451569.physics_Main.daq.RAW._lb0260._SFO-14._0001.data"]
611 flags.Output.HISTFileName =
'LArDigitalTriggMonOutput.root'
613 flags.DQ.useTrigger =
False
614 flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
615 flags.PerfMon.doFullMonMT=
True
616 flags.Exec.MaxEvents=100
620 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
624 from CaloRec.CaloRecoConfig
import CaloRecoCfg
627 from LArBadChannelTool.LArBadChannelConfig
import LArBadChannelCfg
630 from LArByteStream.LArRawSCDataReadingConfig
import LArRawSCDataReadingCfg
633 cfg.merge(SCData_acc)
635 larLATOMEBuilderAlg=CompFactory.LArLATOMEBuilderAlg(
"LArLATOMEBuilderAlg",LArDigitKey=
"SC", isADCBas=
False)
636 cfg.addEventAlgo(larLATOMEBuilderAlg)
638 streamTypes = [
"SelectedEnergy",
"ADC"]
642 from PerfMonComps.PerfMonCompsConfig
import PerfMonMTSvcCfg