66 def LArCellMonConfigCore(helper, algclass, flags, isCosmics=False, TriggerStream='CosmicCalo', isMC=False, isOnline=False, algname='LArCellMonAlg'):
69 LArCellMonAlg = helper.addAlgorithm(algclass, algname)
72 badChanMaskProblems=[
"deadReadout",
"deadPhys",
"short",
"sporadicBurstNoise",
"highNoiseHG",
"highNoiseMG",
"highNoiseLG"]
74 badChanMaskProblems=[
"deadReadout",
"deadPhys",
"almostDead",
"short",
"sporadicBurstNoise",
"unstableNoiseLG",
"unstableNoiseMG",
"unstableNoiseHG",
"highNoiseHG",
"highNoiseMG",
"highNoiseLG"]
76 LArCellMonAlg.ProblemsToMask=badChanMaskProblems
78 if not isCosmics
and not isMC:
79 LArCellMonAlg.useReadyFilterTool=
True
81 LArCellMonAlg.useReadyFilterTool=
False
84 LArCellMonAlg.useBadLBTool=
False
86 LArCellMonAlg.useBadLBTool=
True
88 if isCosmics
or TriggerStream!=
'physics_CosmicCalo':
89 LArCellMonAlg.useBeamBackgroundRemoval =
False
90 LArCellMonAlg.useLArCollisionFilterTool =
False
92 LArCellMonAlg.useBeamBackgroundRemoval =
True
93 LArCellMonAlg.useLArCollisionFilterTool =
True
96 LArCellMonAlg.useLArNoisyAlg =
False
98 LArCellMonAlg.useLArNoisyAlg =
True
100 GroupName=
"LArCellMon"
101 LArCellMonAlg.MonGroupName = GroupName
102 LArCellMonAlg.MonGroupName_perJob = GroupName+
"PerJob"
103 LArCellMonAlg.MonGroupName_OccupancyEtaPhi = GroupName+
"_OccupancyEtaPhi"
104 LArCellMonAlg.MonGroupName_PercentageOccupancyEtaPhi = GroupName+
"_PercentageOccupancyEtaPhi"
105 LArCellMonAlg.MonGroupName_OccupancyEta = GroupName+
"_OccupancyEta"
106 LArCellMonAlg.MonGroupName_OccupancyPhi = GroupName+
"_OccupancyPhi"
107 LArCellMonAlg.MonGroupName_TotEnergyEtaPhi = GroupName+
"_TotEnergyEtaPhi"
108 LArCellMonAlg.MonGroupName_AvgQualityEtaPhi = GroupName+
"_AvgQualityEtaPhi"
109 LArCellMonAlg.MonGroupName_FractionOverQthEtaPhi = GroupName+
"_FractionOverQthEtaPhi"
110 LArCellMonAlg.MonGroupName_AvgTimeEtaPhi = GroupName+
"_AvgTimeEtaPhi"
111 LArCellMonAlg.MonGroupName_FractionPastTthEtaPhi = GroupName+
"_FractionPastTthEtaPhi"
114 LArCellMonAlg.EnableLumi =
True
116 LArCellMonAlg.Sporadic_switch = isCosmics
119 LArCellMonAlg.Threshold_EM_S0S1=5000.
120 LArCellMonAlg.Threshold_HECFCALEMS2S3=15000.
124 binlabels=[
"TotalEvents",
"ATLAS Ready",
"with Good LAr LB",
"with No LAr Collision",
"with No Beam Background",
"with No Trigger Filter",
"with No LArError"]
127 LArCellMonAlg.rndmTriggerNames =
"L1_RD0, L1_RD0_FILLED, L1_RD0_EMPTY, L1_RD1, L1_RD1_NOISE, L1_RD1_HIST, L1_RD1_BGRP4, L1_RD1_BGRP5"
128 LArCellMonAlg.caloTriggerNames =
"L1_EM[0-9]+, L1_HA[0-9]+, L1_J[0-9]+.*, L1_JB[0-9]+, L1_JF[0-9]+, L1_TE[0-9]+, L1_JE[0-9]+, L1_XE[0-9]+, L1_2EM[0-9]+, L1_2FJ[0-9]+, L1_2J[0-9]+,L1_3J[0-9]+.*,L1_4J[0-9]+.*,L1_5J[0-9]+,L1_6J[0-9]+,L1_FJ[0-9]+.*"
129 LArCellMonAlg.minBiasTriggerNames =
"L1_RD0_FILLED, L1_MBTS_1, L1_MBTS_2, L1_MBTS_1_1"
130 LArCellMonAlg.metTriggerNames =
"EF_xe[0-9]+.*"
131 LArCellMonAlg.miscTriggerNames =
""
136 if (isCosmics
or TriggerStream==
'physics_CosmicCalo' or TriggerStream==
'express_express' or TriggerStream==
'physics_Main' or TriggerStream==
'physics_ZeroBias')
or isOnline:
142 thresholdDict[
"ThresholdType"] = [
"noEth_CSCveto",
"noEth_rndm_CSCveto",
"medEth_CSCveto",
"5Sigma_CSCveto",
"hiEth_CSCveto",
"hiEth_noVeto",
"met_CSCveto" ]
143 thresholdDict[
"ThresholdDirection"] = [
"none" ,
"none" ,
"both" ,
"both" ,
"over" ,
"over" ,
"over" ]
144 thresholdDict[
"TriggersToInclude"] = [
"all" ,
"all" ,
"all" ,
"all" ,
"all" ,
"all" ,
"met" ]
145 thresholdDict[
"TriggersToExclude"] = [
"none" ,
"none" ,
"none" ,
"none" ,
"none" ,
"none" ,
"none" ]
147 thresholdDict[
"DoPercentageOccupancy"] = [
True ,
False ,
True ,
False ,
False ,
False ,
False ]
148 thresholdDict[
"DoEtaPhiOccupancy"] = [
True ,
False , do2DOcc , do2DOcc,do2DOcc, do2DOcc ,
False ]
149 thresholdDict[
"DoEtaOccupancy"] = [
False ,
False , isCosmics ,
False ,
False ,
False ,
False ]
150 thresholdDict[
"DoPhiOccupancy"] = [
False ,
False ,
True ,
False ,
False ,
False ,
False ]
152 thresholdDict[
"DoEtaPhiAverageEnergy"] = [
False , do2DOcc ,
False , do2DOcc ,
False ,
False ,
False ]
153 thresholdDict[
"DoEtaPhiTotalEnergy"] = [
False ,
False ,
False ,
False ,
False ,
False ,
False ]
154 thresholdDict[
"DoEtaPhiEnergyRMS"] = [
False ,
False ,
False ,
False ,
False ,
False ,
False ]
155 thresholdDict[
"DoEtaPhiRMSvsDBnoise"] = [
False ,
False ,
False ,
False ,
False ,
False ,
False ]
157 thresholdDict[
"DoEtaPhiAverageQuality"] = [
False ,
False ,
False ,
False ,
False ,
False ,
False ]
158 thresholdDict[
"DoEtaPhiFractionOverQth"]= [
False ,
False ,
False , do2DOcc , do2DOcc , do2DOcc ,
False ]
159 thresholdDict[
"QualityFactorThreshold"] = [ 4000. ]*7
161 thresholdDict[
"DoEtaPhiAverageTime"] = [
False ,
False ,
False , (
not isCosmics) ,
False ,
False ,
False ]
162 thresholdDict[
"DoEtaPhiFractionPastTth"]= [
False ,
False ,
False , (
not isCosmics) ,
False ,
False ,
False ]
163 thresholdDict[
"TimeThreshold"] = [ 4. ]*7
164 thresholdDict[
"ThresholdTitleTemplates"]= [
"no Threshold",
166 "|E_{cell}| > %0.f#sigma_{noise}^{database}",
167 "E_{cell} beyond %0.f#sigma_{noise}^{database}",
168 "E_{cell} > %0.f MeV",
169 "E_{cell} > %0.f MeV",
170 "E_{cell} > %0.f MeV, MET trigger"]
172 thresholdDict[
"DefaultThresholds"] = [-4000000.,-4000000. , 3. , 5. , 500. , 500. , 1000. ]
173 thresholdDict[
"ThresholdinSigNoise"] = [
False ,
False ,
True ,
True ,
False ,
False ,
False ]
177 nthr = len(thresholdDict[
"ThresholdType"])
178 if not all(len(thrProp)==nthr
for thrProp
in thresholdDict.values()):
179 from AthenaCommon.Logging
import logging
180 mlog = logging.getLogger(
'LArCellMonLog' )
181 mlog.error(
"LArCellMonAlg:: CONFIGURATION ERROR, threshold properties have different lenght. Please check CaloMonitoring/python/LArCellMonAlg.py")
186 LArCellMonAlg.ThresholdType = thresholdDict[
"ThresholdType"]
188 LArCellMonAlg.ThresholdDirection = thresholdDict[
"ThresholdDirection"]
189 LArCellMonAlg.TriggersToInclude = thresholdDict[
"TriggersToInclude"]
190 LArCellMonAlg.TriggersToExclude = thresholdDict[
"TriggersToExclude"]
192 LArCellMonAlg.QualityFactorThreshold = thresholdDict[
"QualityFactorThreshold"]
194 LArCellMonAlg.TimeThreshold = thresholdDict[
"TimeThreshold"]
196 LArCellMonAlg.DoBeamBackgroundRemoval=[(
"CSCveto" in thr )
for thr
in thresholdDict[
"ThresholdType"]]
199 LArCellMonAlg.ThresholdTitleTemplates= thresholdDict[
"ThresholdTitleTemplates"]
201 LArCellMonAlg.DefaultThresholds = thresholdDict[
"DefaultThresholds"]
202 LArCellMonAlg.ThresholdinSigNoise = thresholdDict[
"ThresholdinSigNoise"]
204 LArCellMonAlg.ThresholdColumnType = [
"hiEth_CSCveto",
"hiEth_noVeto"]
206 LArCellMonAlg.EMBP_Thresh = [ 800. , 800. ]
207 LArCellMonAlg.EMB1_Thresh = [ 600. , 600. ]
208 LArCellMonAlg.EMB2_Thresh = [ 600. , 600. ]
209 LArCellMonAlg.EMB3_Thresh = [ 600. , 600. ]
211 LArCellMonAlg.EMECP_Thresh = [ 1200. , 1200. ]
212 LArCellMonAlg.EMEC1_Thresh = [ 800. , 800. ]
213 LArCellMonAlg.EMEC2_Thresh = [ 800. , 800. ]
214 LArCellMonAlg.EMEC3_Thresh = [ 800. , 800. ]
216 LArCellMonAlg.HEC0_Thresh = [ 4000. , 4000. ]
217 LArCellMonAlg.HEC1_Thresh = [ 4000. , 4000. ]
218 LArCellMonAlg.HEC2_Thresh = [ 4000. , 4000. ]
219 LArCellMonAlg.HEC3_Thresh = [ 4000. , 4000. ]
221 LArCellMonAlg.FCAL1_Thresh = [ 6000. , 6000. ]
222 LArCellMonAlg.FCAL2_Thresh = [ 6000. , 6000. ]
223 LArCellMonAlg.FCAL3_Thresh = [ 6000. , 6000. ]
226 LArCellMonAlg.DoEtaPhiTotalOccupancyNames=[thr
for i_thr,thr
in enumerate(thresholdDict[
"ThresholdType"])
if ( thresholdDict[
"DoEtaPhiOccupancy"][i_thr]
and not thresholdDict[
"DoPercentageOccupancy"][i_thr] )
227 or thresholdDict[
"DoEtaPhiAverageEnergy"][i_thr]
228 or thresholdDict[
"DoEtaPhiAverageQuality"][i_thr]
229 or thresholdDict[
"DoEtaPhiAverageTime"][i_thr]]
231 LArCellMonAlg.DoEtaPhiPercentageOccupancyNames=[thr
for i_thr,thr
in enumerate(thresholdDict[
"ThresholdType"])
if thresholdDict[
"DoEtaPhiOccupancy"][i_thr]
and thresholdDict[
"DoPercentageOccupancy"][i_thr]]
233 LArCellMonAlg.DoEtaOccupancyNames=[thr
for i_thr,thr
in enumerate(thresholdDict[
"ThresholdType"])
if thresholdDict[
"DoEtaOccupancy"][i_thr]]
234 LArCellMonAlg.DoPhiOccupancyNames=[thr
for i_thr,thr
in enumerate(thresholdDict[
"ThresholdType"])
if thresholdDict[
"DoPhiOccupancy"][i_thr]]
235 LArCellMonAlg.DoEtaPhiTotEnergyNames=[thr
for i_thr,thr
in enumerate(thresholdDict[
"ThresholdType"])
if thresholdDict[
"DoEtaPhiTotalEnergy"][i_thr]
or thresholdDict[
"DoEtaPhiAverageEnergy"][i_thr]]
236 LArCellMonAlg.DoEtaPhiAvgQualityNames=[thr
for i_thr,thr
in enumerate(thresholdDict[
"ThresholdType"])
if thresholdDict[
"DoEtaPhiAverageQuality"][i_thr]]
237 LArCellMonAlg.DoEtaPhiFractionOverQthNames=[thr
for i_thr,thr
in enumerate(thresholdDict[
"ThresholdType"])
if thresholdDict[
"DoEtaPhiFractionOverQth"][i_thr]]
238 LArCellMonAlg.DoEtaPhiAvgTimeNames=[thr
for i_thr,thr
in enumerate(thresholdDict[
"ThresholdType"])
if thresholdDict[
"DoEtaPhiAverageTime"][i_thr]]
239 LArCellMonAlg.DoEtaPhiFractionPastTthNames=[thr
for i_thr,thr
in enumerate(thresholdDict[
"ThresholdType"])
if thresholdDict[
"DoEtaPhiFractionPastTth"][i_thr]]
247 cellMonGroup = helper.addGroup(
250 '/CaloMonitoring/LArCellMon_NoTrigSel/'
257 summ_hist_path=
'Summary/'
259 from CaloMonitoring.CaloMonAlgBase
import CaloBaseHistConfig
262 cellMonGroup.defineHistogram(
'trigType;nEvtsByTrigger',
263 title=
'Total Events: bin 0, RNDM Trigger: 1, Calo Trigger: 2, MinBias Trigger: 3, MET Trigger: 4, Misc Trigger: 5, Events Selected for Noise Plots: 6 ',
264 type=
'TH1I', path=summ_hist_path,
265 xbins=lArCellBinningScheme.larCellSummary[
"xbins"][0], xmin=lArCellBinningScheme.larCellSummary[
"xbins"][1], xmax=lArCellBinningScheme.larCellSummary[
"xbins"][2],
266 xlabels=lArCellBinningScheme.larCellSummary[
"xlabels"])
269 cellMonGroup.defineHistogram(
'eventCounter;nEvtsPerThreshold',
270 title=
'Events events passed Trigger and Background removal for each threshold (for normalisation)',
271 type=
'TH1I', path=summ_hist_path,
272 xbins=len(thresholdDict[
"ThresholdType"]),xmin=-0.5, xmax=(len(thresholdDict[
"ThresholdType"])-0.5),
273 xlabels=thresholdDict[
"ThresholdType"])
276 LArCellMonAlg.doUnnormalized1DEnergy=
True
277 energy_hist_path=
'Energy/'
279 for part
in LArCellMonAlg.LayerNames:
280 cellMonGroup.defineHistogram(
'cellEnergy_nocuts_'+part+
';CellEnergy_'+part,
281 title=
'Cell Energy in ' +part+
' with CSC veto;Cell Energy [MeV];Cell Events',
282 type=
'TH1F', path=energy_hist_path,
283 xbins=lArCellBinningScheme.logEnergyBins)
286 for part
in LArCellMonAlg.LayerNames:
287 cellMonGroup.defineHistogram(
'cellEnergy_nocuts_'+part+
';CellEnergy_'+part,
288 title=
'Cell Energy in ' +part+
' with CSC veto;Cell Energy [MeV];Cell Events',
289 type=
'TH1F', path=energy_hist_path,
290 xbins=lArCellBinningScheme.cosmicEneBinning[part][0], xmin=lArCellBinningScheme.cosmicEneBinning[part][1], xmax=lArCellBinningScheme.cosmicEneBinning[part][2])
293 for part
in LArCellMonAlg.LayerNames:
294 cellMonGroup.defineHistogram(
'cellEnergy_nocuts_'+part+
';CellEnergy_'+part,
295 title=
'Cell Energy in ' +part+
' with CSC veto;Cell Energy [MeV];Cell Events',
296 type=
'TH1F', path=energy_hist_path,
297 xbins=lArCellBinningScheme.defaultEnergyBins[0],xmin=lArCellBinningScheme.defaultEnergyBins[1],xmax=lArCellBinningScheme.defaultEnergyBins[2])
301 energyvstime_hist_path=
'EnergyVsTime/'
304 eCutForTiming = LArCellMonAlg.EcutForTiming
306 for part
in LArCellMonAlg.LayerNames:
307 cellMonGroup.defineHistogram(
'cellTime_'+part+
',cellEnergy_'+part+
';CellEnergyVsTime_'+part,
308 title=
'Cell Energy vs Cell Time in '+part+
' with CSC veto;Cell Time [ns];Cell Energy [MeV]',
309 type=
'TH2F', path=energyvstime_hist_path,
310 xbins=lArCellBinningScheme.timescale, ybins=lArCellBinningScheme.energyscale)
312 cellMonGroup.defineHistogram(
'cellTime_'+part+
';CellEnergyVsTime_'+part+
'_'+
str(
int(eCutForTiming[idx//2])),
313 title=
'Cell Energy vs Cell Time in '+part+
' with CSC veto - Cell Time (E>'+
str(
int(eCutForTiming[idx//2]))+
' [MeV]);Cell Time [ns]; NEvents',
314 weight=
'cellEnergy_'+part,
315 cutmask=
'enGreaterThanCut_'+part,
316 type=
'TH1F', path=energyvstime_hist_path,
317 xbins=lArCellBinningScheme.timescale)
322 cellMonGroupPerJob = helper.addGroup(
324 LArCellMonAlg.MonGroupName_perJob,
325 '/CaloMonitoring/LArCellMon_NoTrigSel/'
328 LArCellMonAlg.doKnownBadChannelsVsEtaPhi =
True
329 LArCellMonAlg.doDatabaseNoiseVsEtaPhi =
True
331 for part
in LArCellMonAlg.LayerNames:
332 cellMonGroupPerJob.defineHistogram(
'celleta_'+part+
',cellphi_'+part+
';KnownBadChannelsVsEtaPhi_'+part,
333 title=
"Map of known bad channels in (#eta,#phi) for "+part+
";cell #eta;cell #phi",
334 weight=
'badCellWord_'+part,
335 cutmask=
'fillBadChannelPlot',
336 type=
'TH2F', path=
"KnownBadChannels/",
337 xbins = lArCellBinningScheme.etaRange[part],
338 ybins = lArCellBinningScheme.phiRange[part],
339 merge=
'weightedAverage'
342 cellMonGroupPerJob.defineHistogram(
'celleta_'+part+
',cellphi_'+part+
';DatabaseNoiseVsEtaPhi_'+part,
343 title=
"Map of Noise Values from the Database vs (#eta,#phi) for "+part+
";cell #eta;cell #phi",
344 weight=
'cellnoisedb_'+part,
345 cutmask=
'doDatabaseNoisePlot',
346 type=
'TH2F', path=
"DatabaseNoise/",
347 xbins = lArCellBinningScheme.etaRange[part],
348 ybins = lArCellBinningScheme.phiRange[part],
349 merge=
'weightedAverage')
351 cellMonGroupPerJob.defineHistogram(
'celleta_'+part+
';NCellsActiveVsEta_'+part,
352 title=
"No. of Active Cells in #eta for "+part+
";cell #eta",
353 cutmask=
'doCellsActiveEtaPlot',
354 type=
'TH1F', path=
"ActiveCells/",
355 xbins = lArCellBinningScheme.etaRange[part],
356 merge=
'weightedAverage')
358 cellMonGroupPerJob.defineHistogram(
'cellphi_'+part+
';NCellsActiveVsPhi_'+part,
359 title=
"No. of Active Cells in #phi for "+part+
";cell #phi",
360 cutmask=
'doCellsActivePhiPlot',
361 type=
'TH1F', path=
"ActiveCells/",
362 xbins = lArCellBinningScheme.phiRange[part],
363 merge=
'weightedAverage')
369 allMonArray = helper.addArray([LArCellMonAlg.LayerNames, LArCellMonAlg.ThresholdType], LArCellMonAlg,
"allMon",
370 "/CaloMonitoring/LArCellMon_NoTrigSel/")
372 allMonArray.defineHistogram(
'dummy', type=
'TH1F', xbins=1, xmin=0, xmax=1)
375 for part
in LArCellMonAlg.LayerNames:
377 allMonArray.defineHistogram(
'celleta,cellphi;CellOccupancyVsEtaPhi',
378 title=
'No. of events in (#eta,#phi) for '+part+
';cell #eta;cell #phi',
379 type=
'TH2F', path=
"2d_Occupancy/",
380 cutmask=
'passThrCut',
381 xbins = lArCellBinningScheme.etaRange[part],
382 ybins = lArCellBinningScheme.phiRange[part],
383 pattern=[(part, _)
for _
in LArCellMonAlg.DoEtaPhiTotalOccupancyNames])
385 allMonArray.defineHistogram(
'celleta;RAW_CellOccupancyVsEta',
386 title=
'No. of events in (#eta) for '+part+
';cell #eta;',
387 type=
'TH1F', path=
"1d_Occupancy/",
388 cutmask=
'passThrCut',
389 xbins = lArCellBinningScheme.etaRange[part],
390 pattern=[(part, _)
for _
in LArCellMonAlg.DoEtaOccupancyNames])
392 allMonArray.defineHistogram(
'cellphi;RAW_CellOccupancyVsPhi',
393 title=
'No. of events in (#phi) for '+part+
';cell #phi;',
394 type=
'TH1F', path=
"1d_Occupancy/",
395 cutmask=
'passThrCut',
396 xbins = lArCellBinningScheme.phiRange[part],
397 pattern=[(part, _)
for _
in LArCellMonAlg.DoPhiOccupancyNames])
399 allMonArray.defineHistogram(
'celleta,cellphi;TotalEnergyVsEtaPhi',
400 title=
"Total Cell Energy vs (#eta,#phi) in "+part+
";cell #eta;cell #phi",
402 type=
'TH2D', path=
"2d_TotalEnergy/",
403 cutmask=
'passThrCut',
404 xbins = lArCellBinningScheme.etaRange[part],
405 ybins = lArCellBinningScheme.phiRange[part],
406 pattern=[(part, _)
for _
in LArCellMonAlg.DoEtaPhiTotEnergyNames])
408 allMonArray.defineHistogram(
'celleta,cellphi;TotalQualityVsEtaPhi',
409 title=
"Cell Quality vs (#eta,#phi) in "+part+
";cell #eta;cell #phi",
410 weight=
'cellQuality',
411 type=
'TH2F', path=
"2d_AvgQuality/",
412 cutmask=
'passThrCut',
413 xbins = lArCellBinningScheme.etaRange[part],
414 ybins = lArCellBinningScheme.phiRange[part],
415 pattern=[(part, _)
for _
in LArCellMonAlg.DoEtaPhiAvgQualityNames])
417 allMonArray.defineHistogram(
'celleta,cellphi;TotalTimeVsEtaPhi',
418 title=
"Cell Time vs (#eta,#phi) in "+part+
";cell #eta;cell #phi",
420 type=
'TH2F', path=
"2d_AvgTime/",
421 cutmask=
'passThrCut',
422 xbins = lArCellBinningScheme.etaRange[part],
423 ybins = lArCellBinningScheme.phiRange[part],
424 pattern=[(part, _)
for _
in LArCellMonAlg.DoEtaPhiAvgTimeNames])
426 allMonArray.defineHistogram(
'celleta,cellphi;RAW_fractionOverQthVsEtaPhi',
427 title=
"Fraction of Events in "+part+
" for which the Quality Factor exceeds Threshold;cell #eta;cell #phi",
428 weight=
'isPoorQuality',
429 type=
'TH2F', path=
"2d_PoorQualityFraction/",
430 cutmask=
'passThrCut',
431 xbins = lArCellBinningScheme.etaRange[part],
432 ybins = lArCellBinningScheme.phiRange[part],
433 pattern=[(part, _)
for _
in LArCellMonAlg.DoEtaPhiFractionOverQthNames])
435 allMonArray.defineHistogram(
'celleta,cellphi;RAW_fractionPastTthVsEtaPhi',
436 title=
"Fraction of Events in "+part+
" for which the Time is further than Threshold;cell #eta;cell #phi",
438 type=
'TH2F', path=
"2d_FractionOutOfTime/",
439 cutmask=
'passThrCut',
440 xbins = lArCellBinningScheme.etaRange[part],
441 ybins = lArCellBinningScheme.phiRange[part],
442 pattern=[(part, _)
for _
in LArCellMonAlg.DoEtaPhiFractionPastTthNames])
449 if LArCellMonAlg.Sporadic_switch:
450 sporadic_hist_path=
'/Sporadic_'+
str(LArCellMonAlg.Threshold_EM_S0S1)+
'*1e-3_'+
str(LArCellMonAlg.Threshold_HECFCALEMS2S3)+
'*1e-3GeV/'
451 cellMonGroup.defineTree(
'sporadicCellE,sporadicCellTime,sporadicCellQuality,sporadicCellID,lumiBlock,adoptedEThreshold;SporadicNoisyCellsTree', path=sporadic_hist_path,
452 treedef=
'sporadicCellE/F:sporadicCellTime/F:sporadicCellQuality/s:sporadicCellID/l:lumiBlock/i')