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
56 helper.resobj.merge(LuminosityCondAlgCfg(flags))
59 from LArCabling.LArCablingConfig
import LArOnOffIdMappingSCCfg
60 helper.resobj.merge(LArOnOffIdMappingSCCfg(flags))
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=
""
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)]
171 "H09L",
"H08R",
"H08L",
"H07R",
"H07L",
"H06R",
"H06L",
"H05R",
"H05L",
"H04R",
"H04L",
"H03R",
172 "H03L",
"H02R",
"H02L",
"H01R",
"H01L",
"H16R",
"H16L",
"H15R",
"H15L",
"H14R",
"H14L",
"H13R",
173 "H13L",
"H12R",
"H12L",
"H11R",
"H11L",
"H10R",
"H10L",
"H09R",
174 "I01L",
"I02R",
"I02L",
"I03R",
"I03L",
"I04R",
"I04L",
"I05R",
"I05L",
"I06R",
"I06L",
"I07R",
175 "I07L",
"I08R",
"I08L",
"I09R",
"I09L",
"I10R",
"I10L",
"I11R",
"I11L",
"I12R",
"I12L",
"I13R",
176 "I13L",
"I14R",
"I14L",
"I15R",
"I15L",
"I16R",
"I16L",
"I01R",
177 "C07R",
"C07L",
"C06L",
"C06R",
"C06H",
"C05R",
"C05L",
"C04R",
"C04L",
"C03R",
"C03L",
"C02L",
178 "C02R",
"C02H",
"C01R",
"C01L",
"C13R",
"C13L",
"C12L",
"C12R",
"C12H",
"C11R",
"C11L",
"C10R",
179 "C10L",
"C09L",
"C09R",
"C09H",
"C08R",
"C08L",
180 "A01R",
"A01L",
"A02L",
"A02R",
"A02H",
"A03R",
"A03L",
"A04R",
"A04L",
"A05R",
"A05L",
"A06L",
181 "A06R",
"A06H",
"A07R",
"A07L",
"A08R",
"A08L",
"A09L",
"A09R",
"A09H",
"A10R",
"A10L",
"A11R",
182 "A11L",
"A12L",
"A12R",
"A12H",
"A13R",
"A13L"
185 iphi_bins_dict = {
"ALL": 63,
"EMB": 63,
"EMEC": 63,
"HEC": 63,
"FCAL": 15}
190 SCGroup.defineHistogram(
'lumi_block,event_size;EventSize_vs_LB',
191 title=
'Digital trigger event size per LB; LumiBlock; Event size [MB]',
194 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max)
199 partGroup_digi = helper.addArray([larDigitalTriggMonAlg.LayerNames], larDigitalTriggMonAlg,
'LArDigitalTriggerMon_digi', topPath=
'/LArDigitalTrigger/')
200 partGroup_sc = helper.addArray([larDigitalTriggMonAlg.LayerNames], larDigitalTriggMonAlg,
'LArDigitalTriggerMon_sc', topPath=
'/LArDigitalTrigger/')
202 for part
in larDigitalTriggMonAlg.LayerNames:
204 for sel
in selStr.keys():
205 selStrPart[sel] =
"in "+part+
" "+selStr[sel]
207 for key
in iphi_bins_dict.keys():
208 if part.startswith(key):
209 iphi_bins = iphi_bins_dict[key]
212 partxbins=lArDQGlobals.SuperCell_Variables[
"etaRange"][
"All"][
"All"]
213 partybins=lArDQGlobals.SuperCell_Variables[
"phiRange"][
"All"][
"All"]
216 topPath=
"PerPartition/"
228 partxbins=lArDQGlobals.SuperCell_Variables[
"etaRange"][Part][Side][Sampling]
229 partybins=lArDQGlobals.SuperCell_Variables[
"phiRange"][Part][Side][Sampling]
234 for thisSel
in [
"passDigiNom",
"badNotMasked"]:
235 thisTopPath=f
"/{thisSel}/{topPath}"
238 partGroup_digi.defineHistogram(
'Digi_part_maxpos,Digi_part_partition;Partition_vs_maxSamplePosition_'+thisSel,
239 title=
'Partition vs. position of max sample '+selStrPart[thisSel],
240 cutmask=
'Digi_part_'+thisSel,
243 xbins=nsamples,xmin=0.5,xmax=nsamples+0.5,
244 ybins=lArDQGlobals.N_Partitions, ymin=-0.5, ymax=lArDQGlobals.N_Partitions-0.5,
245 xlabels = [str(x)
for x
in range(1,nsamples+1)],
246 ylabels=lArDQGlobals.Partitions,
249 partGroup_digi.defineHistogram(
'Digi_part_latomesourceidbin,Digi_part_adc;ADCFullRange_vs_LATOME_'+thisSel,
250 title=
'ADC vs LATOME name '+selStrPart[thisSel]+
'; ; ADC',
251 cutmask=
'Digi_part_'+thisSel,
254 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
255 ybins=500, ymin=-2, ymax=2500,
256 xlabels=BinLabel_LATOME,
259 partGroup_digi.defineHistogram(
'Digi_part_latomesourceidbin,Digi_part_pedestal;Pedestal_vs_LATOME_'+thisSel,
260 title=
'Pedestal vs LATOME name '+selStrPart[thisSel]+
'; ; Pedestal',
261 cutmask=
'Digi_part_'+thisSel,
264 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
265 ybins=500, ymin=-2, ymax=2500,
266 xlabels=BinLabel_LATOME,
269 partGroup_digi.defineHistogram(
'Digi_part_latomesourceidbin,Digi_part_maxpos;MaxSamplePosition_vs_LATOME_'+thisSel,
270 title=
'Position of max sample vs. LATOME '+selStrPart[thisSel],
272 cutmask=
'Digi_part_'+thisSel,
274 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
275 ybins=nsamples,ymin=0.5,ymax=nsamples+0.5,
276 xlabels=BinLabel_LATOME,
277 ylabels = [str(x)
for x
in range(1,nsamples+1)],
280 partGroup_digi.defineHistogram(
'Digi_part_latomesourceidbin,Digi_part_diff_adc0_ped;Diff_ADC0_Ped_vs_LATOME_'+thisSel,
281 title=
'ADC[0] - Pedestal vs LATOME name '+selStrPart[thisSel]+
'; ; ADC[0] - Pedestal',
283 cutmask=
'Digi_part_'+thisSel,
285 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
286 ybins=64, ymin=-32, ymax=32,
287 xlabels=BinLabel_LATOME,
290 partGroup_digi.defineHistogram(
'Digi_part_latomesourceidbin,Digi_part_diff_adc_ped_norm;Diff_ADC_Ped_Norm_vs_LATOME_'+thisSel,
291 title=
'(ADC-ped)/fabs(ADC_max-ped) '+selStrPart[thisSel]+
'; LATOME Name; (ADC - pedestal) / fabs(ADC_max - pedestal)',
293 cutmask=
'Digi_part_'+thisSel,
295 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
296 ybins=64, ymin=-32, ymax=32,
297 xlabels=BinLabel_LATOME,
302 partGroup_digi.defineHistogram(
'Digi_part_eta,Digi_part_phi;Coverage_Eta_Phi_'+thisSel,
303 title=
'SC coverage '+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
305 path=thisTopPath+
'/Coverage',
306 cutmask=
'Digi_part_'+thisSel,
312 if not flags.Common.isOnline:
continue
314 if thisSel !=
"passDigiNom":
continue
315 partGroup_digi.defineHistogram(
'Digi_part_eta,Digi_part_phi,Digi_part_diff_adc0_ped;Coverage_Diff_ADC0_Ped_'+thisSel,
316 title=
'ADC[0] - Pedestal'+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
318 cutmask=
'Digi_part_'+thisSel,
319 path=thisTopPath+
'/Coverage',
326 partGroup_digi.defineHistogram(
'Digi_part_BCID,Digi_part_iphi,Digi_part_diff_adc_ped;Diff_ADC_Ped_Per_BCID_Per_iphi_'+thisSel,
327 title=
'ADC - Pedestal (all samples) '+selStrPart[thisSel]+
': iphi vs BCID;BCID;iphi',
329 cutmask=
'Digi_part_'+thisSel,
331 xbins=3564,xmin=-0.5,xmax=3563.5,
332 ybins=iphi_bins+1,ymin=0,ymax=iphi_bins+1,
340 partGroup_digi.defineHistogram(
'Digi_part_sampos,Digi_part_adc;ADCZoom_vs_SamplePosition_'+thisSel,
341 title=
'ADC (zoom) vs sample position '+selStrPart[thisSel],
342 cutmask=
'Digi_part_'+thisSel,
345 xbins=nsamples,xmin=0.5,xmax=nsamples+0.5,
346 xlabels = [str(x)
for x
in range(1,nsamples+1)],
347 ybins=750, ymin=0, ymax=1300,
350 partGroup_digi.defineHistogram(
'Digi_part_sampos,Digi_part_adc;ADCFullRange_vs_SamplePosition_'+thisSel,
351 title=
'ADC vs sample position '+selStrPart[thisSel],
352 cutmask=
'Digi_part_'+thisSel,
355 xbins=nsamples,xmin=0.5,xmax=nsamples+0.5,
356 xlabels = [str(x)
for x
in range(1,nsamples+1)],
357 ybins=500, ymin=0, ymax=5000,
360 partGroup_digi.defineHistogram(
'Digi_part_sampos,Digi_part_pedestal;Pedestal_vs_SamplePosition_'+thisSel,
361 title=
'Pedestal vs sample position '+selStrPart[thisSel],
362 cutmask=
'Digi_part_'+thisSel,
365 xbins=nsamples,xmin=0.5,xmax=nsamples+0.5,
366 xlabels = [str(x)
for x
in range(1,nsamples+1)],
367 ybins=500, ymin=0, ymax=5000,
370 partGroup_digi.defineHistogram(
'Digi_part_diff_adc0_ped;Diff_ADC0_Ped_'+thisSel,
371 title=
'LATOME (ADC[0]-ped) '+selStrPart[thisSel]+
'; (ADC - pedestal)',
373 cutmask=
'Digi_part_'+thisSel,
375 xbins=50,xmin=-25,xmax=25,
378 partGroup_digi.defineHistogram(
'Digi_part_sampos,Digi_part_diff_adc_ped_norm;Diff_ADC_Ped_Norm_vs_SamplePosition_'+thisSel,
379 title=
'(ADC-ped)/fabs(ADC_max-ped) '+selStrPart[thisSel]+
'; Sample position; (ADC - pedestal) / fabs(ADC_max - pedestal)',
381 cutmask=
'Digi_part_'+thisSel,
383 ybins=40,ymin=-1,ymax=1,
384 xbins=nsamples,xmin=0.5,xmax=nsamples+0.5,
385 xlabels = [str(x)
for x
in range(1,nsamples+1)],
388 partGroup_digi.defineHistogram(
'Digi_part_BCID, Digi_part_adc;ADC_vs_BCID_'+thisSel,
389 title=
'ADC value vs BCID '+selStrPart[thisSel]+
'; BCID; ADC Value',
391 cutmask=
'Digi_part_'+thisSel,
393 xbins=3564,xmin=-0.5,xmax=3563.5,
394 ybins=500, ymin=0, ymax=5000,
397 partGroup_digi.defineHistogram(
'Digi_part_BCID, Digi_part_diff_adc0_ped;Diff_ADC0_Ped_vs_BCID_'+thisSel,
398 title=
'ADC[0] - Ped value vs BCID '+selStrPart[thisSel]+
'; BCID; ADC[0] Value',
400 cutmask=
'Digi_part_'+thisSel,
402 xbins=3564,xmin=-0.5,xmax=3563.5,
403 ybins=500, ymin=-5, ymax=5,
406 partGroup_digi.defineHistogram(
'Digi_part_LB, Digi_part_adc;ADC_vs_LB_'+thisSel,
407 title=
'ADC value vs LB '+selStrPart[thisSel]+
'; LB; ADC Value',
409 cutmask=
'Digi_part_'+thisSel,
411 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
412 ybins=500, ymin=0, ymax=5000,
415 partGroup_digi.defineHistogram(
"Digi_part_LB, Digi_part_adc_rms;ADC_RMS_vs_LB_"+thisSel,
416 title=
"RMS of ADC values vs LB "+selStrPart[thisSel]+
"; LB; RMS of ADC Values",
418 cutmask=
'Digi_part_'+thisSel,
420 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
421 ybins=100, ymin=0, ymax=10,
424 partGroup_digi.defineHistogram(
'Digi_part_BCID, Digi_part_adc_rms;ADC_RMS_vs_BCID_'+thisSel,
425 title=
'RMS of ADC values vs BCID '+selStrPart[thisSel]+
'; BCID; RMS of ADC Values',
427 cutmask=
'Digi_part_'+thisSel,
429 xbins=3564,xmin=-0.5,xmax=3563.5,
430 ybins=100, ymin=0, ymax=10,
434 partGroup_digi.defineHistogram(
'Digi_part_BCID, Digi_part_diff_adc_ped;Diff_ADC_Ped_vs_BCID_'+thisSel,
435 title=
'ADC - Pedestal (all samples) vs BCID '+selStrPart[thisSel]+
'; BCID; ADC Value',
437 cutmask=
'Digi_part_'+thisSel,
439 xbins=3564,xmin=-0.5,xmax=3563.5,
440 ybins=500, ymin=-5, ymax=5,
446 for thisSel
in [
"zeroET",
"passSCNom0_0p325",
"passSCNom0p325_1",
"passSCNom1",
"passSCNom10",
"passSCNom10tauGt3",
"saturNotMasked",
"OFCbOFNotMasked",
"onlofflEmismatch",
"notMaskedEoflNe0",
"notMaskedEoflGt1"]:
447 thisTopPath=f
"/{thisSel}/{topPath}"
450 partGroup_sc.defineHistogram(
'SC_part_latomesourceidbin,SC_part_et_onl;SC_ET_Onl_vs_LATOME_'+thisSel,
451 title=
'SC ET [GeV] vs LATOME name '+selStrPart[thisSel]+
'; ; ET SC [GeV]',
453 cutmask=
'SC_part_'+thisSel,
455 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
456 ybins=200, ymin=-10, ymax=200,
457 xlabels=BinLabel_LATOME,
461 partGroup_sc.defineHistogram(
'SC_part_LB,SC_part_latomesourceidbin;LB_vs_LATOME_'+thisSel,
462 title=
'LATOME name vs LB '+selStrPart[thisSel]+
';LB;LATOME',
464 cutmask=
'SC_part_'+thisSel,
466 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
467 ybins=NLatomeBins,ymin=1,ymax=NLatomeBins+1,
468 ylabels=BinLabel_LATOME,
471 partGroup_sc.defineHistogram(
'SC_part_time,SC_part_et_ofl;time_vs_et_ofl_'+thisSel,
472 title=
'SC coverage '+selStrPart[thisSel]+
': #tau vs ET ofl;#tau;ET ofl',
474 cutmask=
'SC_part_'+thisSel,
476 xbins=500,xmin=-50,xmax=50,
477 ybins=500,ymin=-10,ymax=70,
481 partGroup_sc.defineHistogram(
'SC_part_latomesourceidbin,SC_part_time;MeanOfflineLATOMEtime_vs_LATOME_'+thisSel,
482 title=
'Average LATOME #tau from Offline computation per LATOME'+selStrPart[thisSel]+
'; LATOME ; #tau [ns]',
484 cutmask=
'SC_part_'+thisSel,
486 xbins=NLatomeBins,xmin=1,xmax=NLatomeBins+1,
487 ybins=200, ymin=-50, ymax=50,
488 xlabels=BinLabel_LATOME,
491 partGroup_sc.defineHistogram(
'SC_part_LB,SC_part_latomesourceidbin,SC_part_time;MeanOfflineLATOMEtime_perLB_perLATOME_'+thisSel,
492 title=
'SC #tau '+selStrPart[thisSel]+
': LATOME vs LB;LB;LATOME',
494 cutmask=
'SC_part_'+thisSel,
496 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
497 ybins=NLatomeBins,ymin=1,ymax=NLatomeBins+1,
498 ylabels=BinLabel_LATOME,
501 partGroup_sc.defineHistogram(
'SC_part_LB,SC_part_time;MeanOfflineLATOMEtime_vs_LB_'+thisSel,
502 title=
'Average LATOME #tau from Offline computation per LB '+selStrPart[thisSel]+
'; LumiBloc; #tau [ns]',
504 cutmask=
'SC_part_'+thisSel,
506 xbins=lArDQGlobals.LB_Bins, xmin=lArDQGlobals.LB_Min, xmax=lArDQGlobals.LB_Max,
512 partGroup_sc.defineHistogram(
'SC_part_eta,SC_part_phi;Coverage_Eta_Phi_'+thisSel,
513 title=
'SC coverage '+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
515 cutmask=
'SC_part_'+thisSel,
516 path=thisTopPath+
'/Coverage',
522 partGroup_sc.defineHistogram(
'SC_part_time;OfflineLATOMEtime_'+thisSel,
523 title=
'LATOME #tau from Offline Computation '+selStrPart[thisSel]+
';#tau [ns]; Evts;',
525 cutmask=
'SC_part_'+thisSel,
527 xbins=100,xmin=-25,xmax=25,
531 if not flags.Common.isOnline:
continue
533 if thisSel !=
"passSCNom1":
continue
535 partGroup_sc.defineHistogram(
'SC_part_eta,SC_part_phi,SC_part_et_onl;Coverage_Et_Onl_'+thisSel,
536 title=
'SC Energy '+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
538 cutmask=
'SC_part_'+thisSel,
539 path=thisTopPath+
'/Coverage',
544 partGroup_sc.defineHistogram(
'SC_part_eta,SC_part_phi,SC_part_time;Coverage_OfflineLATOMEtime_'+thisSel,
545 title=
'LATOME #tau from Offline Computation '+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
547 cutmask=
'SC_part_'+thisSel,
548 path=thisTopPath+
'/Coverage',
553 partGroup_sc.defineHistogram(
'SC_part_et_onl,SC_part_et_ofl;ET_Ofl_vs_ET_Onl_'+thisSel,
554 title=
'LATOME ET vs Offline Computation '+selStrPart[thisSel]+
'; ET Onl;ET Offl [GeV]',
556 cutmask=
'SC_part_'+thisSel,
558 xbins=0,xmin=0,xmax=20,
559 ybins=0,ymin=0,ymax=20,
562 partGroup_sc.defineHistogram(
'SC_part_et_diff;ET_Diff_OnlOfl_'+thisSel,
563 title=
'LATOME ET vs Offline Computation '+selStrPart[thisSel]+
'; ET Onl - ET Offl [GeV]; Evts;',
565 cutmask=
'SC_part_'+thisSel,
567 xbins=200,xmin=-10,xmax=10,
571 partGroup_sc.defineHistogram(
'SC_part_et_onl;SC_ET_Onl_'+thisSel,
572 title=
'SC eT [GeV] '+selStrPart[thisSel],
574 cutmask=
'SC_part_'+thisSel,
576 xbins=500, xmin=-100, xmax=400,
580 partGroup_sc.defineHistogram(
'SC_part_BCID,SC_part_time;MeanOfflineLATOMEtime_vs_BCID_'+thisSel,
581 title=
'Average LATOME #tau from Offline computation per BCID '+selStrPart[thisSel]+
'; BCID; #tau [ns]',
583 cutmask=
'SC_part_'+thisSel,
585 xbins=3564,xmin=-0.5,xmax=3563.5,
588 partGroup_sc.defineHistogram(
'SC_part_BCID,SC_part_et_onl_muscaled;AvEnergyVsBCID_'+thisSel,
589 title=
'Average Energy vs BCID '+selStrPart[thisSel]+
'; BCID; Energy per SC [MeV]',
591 cutmask=
'SC_part_'+thisSel,
593 xbins=3564,xmin=-0.5,xmax=3563.5,
594 ybins=10, ymin=-20, ymax=20,
597 for thisSel
in [
"passSCNomInvalid"]:
598 thisTopPath=f
"/{thisSel}/{topPath}"
599 partGroup_sc.defineHistogram(
'SC_part_eta,SC_part_phi;Coverage_Eta_Phi_'+thisSel,
600 title=
'SC coverage '+selStrPart[thisSel]+
': #phi vs #eta;#eta;#phi',
602 path=thisTopPath+
'/Coverage',
603 cutmask=
'SC_part_'+thisSel,
608 partGroup_sc.defineHistogram(
'SC_part_ltdbsourceid;InvalideCodes_vs_LTDB_'+thisSel,
609 title=
'Invalide code entries vs LTDB '+selStrPart[thisSel]+
'; LTDB ; Invalide Codes entries',
611 cutmask=
'SC_part_'+thisSel,
613 xbins=NLTDBbins,xmin=0,xmax=NLTDBbins,
614 xlabels=BinLabel_LTDB,
618 return helper.result()