ATLAS Offline Software
Functions
TileDQFragMonitorAlgorithm Namespace Reference

Functions

def TileDQFragMonitoringConfig (flags, **kwargs)
 

Function Documentation

◆ TileDQFragMonitoringConfig()

def TileDQFragMonitorAlgorithm.TileDQFragMonitoringConfig (   flags,
**  kwargs 
)
Function to configure TileDQFragMonitorAlgorithm algorithm in the monitoring system.

Definition at line 10 of file TileDQFragMonitorAlgorithm.py.

10 def TileDQFragMonitoringConfig(flags, **kwargs):
11 
12  ''' Function to configure TileDQFragMonitorAlgorithm algorithm in the monitoring system.'''
13 
14  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
15  result = ComponentAccumulator()
16 
17  from DetDescrCnvSvc.DetDescrCnvSvcConfig import DetDescrCnvSvcCfg
18  result.merge(DetDescrCnvSvcCfg(flags))
19 
20  from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
21  result.merge( TileCablingSvcCfg(flags) )
22 
23  from TileRecUtils.TileDQstatusConfig import TileDQstatusAlgCfg
24  result.merge( TileDQstatusAlgCfg(flags) )
25 
26  from TileConditions.TileInfoLoaderConfig import TileInfoLoaderCfg
27  result.merge( TileInfoLoaderCfg(flags) )
28 
29  from TileConditions.TileEMScaleConfig import TileEMScaleCondAlgCfg
30  result.merge( TileEMScaleCondAlgCfg(flags) )
31 
32  from TileConditions.TileBadChannelsConfig import TileBadChannelsCondAlgCfg
33  result.merge( TileBadChannelsCondAlgCfg(flags) )
34 
35  kwargs.setdefault('CheckDCS', flags.Tile.useDCS)
36  if kwargs['CheckDCS']:
37  from TileConditions.TileDCSConfig import TileDCSCondAlgCfg
38  result.merge( TileDCSCondAlgCfg(flags) )
39 
40  rawChannelContainer = flags.Tile.RawChannelContainer
41 
42  from AthenaConfiguration.Enums import Format
43  if flags.Input.Format is Format.POOL:
44  kwargs.setdefault('TileDigitsContainer', 'TileDigitsFlt')
45  if rawChannelContainer not in flags.Input.Collections:
46  rawChannelContainer = ''
47 
48  kwargs.setdefault('TileRawChannelContainer', rawChannelContainer)
49 
50  from AthenaCommon.SystemOfUnits import GeV
51  kwargs.setdefault('MinEnergyChan', -5.0 * GeV)
52  kwargs.setdefault('MinEnergyGap', -10.0 * GeV)
53 
54  runNumber = flags.Input.RunNumbers[0]
55  run = str(runNumber)
56 
57  # The following class will make a sequence, configure algorithms, and link
58  # them to GenericMonitoringTools
59  from AthenaMonitoring import AthMonitorCfgHelper
60  helper = AthMonitorCfgHelper(flags, 'TileDQFragMonAlgCfg')
61 
62  from AthenaConfiguration.ComponentFactory import CompFactory
63  tileDQFragMonAlg = helper.addAlgorithm(CompFactory.TileDQFragMonitorAlgorithm, 'TileDQFragMonAlg')
64 
65  for k, v in kwargs.items():
66  setattr(tileDQFragMonAlg, k, v)
67 
68  # 1) Configure histogram with TileDQFragMonAlg algorithm execution time
69  executeTimeGroup = helper.addGroup(tileDQFragMonAlg, 'TileDQFragMonExecuteTime', 'Tile/')
70  executeTimeGroup.defineHistogram('TIME_execute', path = 'DMUErrors', type='TH1F',
71  title = 'Time for execute TileDQFragMonAlg algorithm;time [#mus]',
72  xbins = 300, xmin = 0, xmax = 300000)
73 
74  # 2) Configure histogram with Tile error state in EventInfo vs lumi block
75  errorStateGroup = helper.addGroup(tileDQFragMonAlg, 'TileEventsWithErrEventInfoLB', 'Tile/DMUErrors')
76  errorStateGroup.defineHistogram('lumiBlock;TileEventsWithErrEventInfo', path = 'BadDrawers', type='TH1F',
77  title = 'Run ' + run + ': # events with Tile error state in EventInfo;LumiBlock;# events with error',
78  xbins = 1000, xmin = -0.5, xmax = 999.5, opt = 'kAddBinsDynamically', merge = 'merge')
79 
80  # 3) Configure histogram with number of consecutive bad Tile modules
81  consecutiveBadGroup = helper.addGroup(tileDQFragMonAlg, 'TileConsecutiveBadModules', 'Tile/DMUErrors')
82  consecutiveBadGroup.defineHistogram('TileConsecutiveBad', path = 'BadDrawers', type='TH1F',
83  title = 'Run ' + run + ': Max # Tile consecutive bad modules;# consecutive bad modules;N',
84  xbins = 17, xmin = -0.5, xmax = 16.5)
85 
86  # 4) Configure histogram with number of consecutive bad Tile modules per lumi block
87  consecutiveBadLBGroup = helper.addGroup(tileDQFragMonAlg, 'TileConsecutiveBadModulesLB', 'Tile/DMUErrors')
88  consecutiveBadLBGroup.defineHistogram('lumiBlock,TileConsecutiveBad;TileConsecutiveBadLB', path = 'BadDrawers', type='TH2F',
89  title = 'Run ' + run + ': Max # Tile consecutive bad modules;LumiBlock;# consecutive bad modules',
90  xbins = 1000, xmin = -0.5, xmax = 999.5, ybins = 17, ymin = -0.5, ymax = 16.5,
91  opt = 'kAddBinsDynamically', merge = 'merge')
92 
93 
94  from TileMonitoring.TileMonitoringCfgHelper import getPartitionName
95  from TileCalibBlobObjs.Classes import TileCalibUtils as Tile
96 
97  # 5) Configure histogram with mismatched L1 trigger type of Tile module
98  moduleLabels = [str(module) for module in range(1, Tile.MAX_DRAWER + 1)]
99  partitionLabels = [getPartitionName(ros) for ros in range(1, Tile.MAX_ROS)]
100 
101  mismatchedLVL1Group = helper.addGroup(tileDQFragMonAlg, 'TileMismatchedL1TriggerType', 'Tile/')
102  mismatchedLVL1Group.defineHistogram('module,ROS;TileMismatchedL1TriggerType', path = 'DMUErrors',
103  title = 'Run ' + run + ': Tile mismatched L1 Trigger Type;Module;Partition',
104  type = 'TH2F', xlabels = moduleLabels, ylabels = partitionLabels,
105  xbins = Tile.MAX_DRAWER, xmin = -0.5, xmax = Tile.MAX_DRAWER - 0.5,
106  ybins = Tile.MAX_ROS - 1, ymin = 1.0, ymax = Tile.MAX_ROS)
107 
108  # 6) Configure histogram with no all Tile digits in the case of Trigger Type = 0x82
109  noAllDigitsGroup = helper.addGroup(tileDQFragMonAlg, 'TileNoAllDigits', 'Tile/')
110  noAllDigitsGroup.defineHistogram('module,ROS;TileNoalldigits', path = 'DMUErrors', type = 'TH2F',
111  title = 'Run ' + run + ': No All Tile digits in event with Trigger Type = 0x82;Module;Partition',
112  xlabels = moduleLabels, ylabels = partitionLabels,
113  xbins = Tile.MAX_DRAWER, xmin = -0.5, xmax = Tile.MAX_DRAWER - 0.5,
114  ybins = Tile.MAX_ROS - 1, ymin = 1.0, ymax = Tile.MAX_ROS)
115 
116  # ) Configure histogram with global CRC errors vs module and partition
117  globalCRCGroup = helper.addGroup(tileDQFragMonAlg, 'TileBadGlobalCRC', 'Tile/')
118  globalCRCGroup.defineHistogram('module,ROS;TileBadGlobalCRC', path = 'DMUErrors', type = 'TH2F',
119  title = 'Run ' + run + ': Global CRC errors;Module;Partition',
120  xlabels = moduleLabels, ylabels = partitionLabels,
121  xbins = Tile.MAX_DRAWER, xmin = -0.5, xmax = Tile.MAX_DRAWER - 0.5,
122  ybins = Tile.MAX_ROS - 1, ymin = 1.0, ymax = Tile.MAX_ROS)
123 
124  # 7) Configure histograms with Tile DMU errors
125  maxDMUs = 16
126  dmuLabels = [str(dmu) for dmu in range(0, maxDMUs)]
127 
128  dmuErrorLabels = ['OK', 'HEADER_FORM', 'HEADER_PAR', 'MEMO_PAR', 'FE_CRC', 'ROD_CRC', 'BCID']
129  dmuErrorLabels += ['SAMPLE_FORM', 'SAMPLE_PAR', 'DOUBLE_STB', 'SINGLE_STB', 'GLOBAL_CRC']
130  dmuErrorLabels += ['DUMMY_FRAG', 'NO_RECO_FRAG', 'MASKED', 'ALL_M_BAD_DCS', 'ANY_CH_BAD_HV']
131 
132  dmuErrorLabels += ['0 -> 1023', 'Zeros', 'Two 1023 + ped', 'Jump 2 levels', 'Single Up + ped']
133  dmuErrorLabels += ['Single Dn + ped', 'Single Up + sig', 'Single Dn + sig', 'Ped > 200 LG']
134  dmuErrorLabels += ['Single Dn LG_s0', 'Single Dn LG_s6', 'Up LG_s0_s6 or Gap', 'Dn LG_s0_s6 or Gap']
135  dmuErrorLabels += ['Bad quality', 'Big negative ene']
136 
137  maxErrors = len(dmuErrorLabels)
138 
139  errorsArray = helper.addArray([int(Tile.MAX_ROS - 1), int(Tile.MAX_DRAWER)],
140  tileDQFragMonAlg, 'TileDigiErrors', topPath = 'Tile/')
141  for postfix, tool in errorsArray.Tools.items():
142  ros, module = [int(x) for x in postfix.split('_')[1:]]
143 
144  moduleName = Tile.getDrawerString(ros + 1, module)
145  title = 'Run ' + run + ': ' + moduleName + ' Channel and DMU Header Errors;DMU'
146  name = 'DMU,Error;TileDigiErrors' + moduleName
147 
148  tool.defineHistogram(name, title = title, type = 'TH2F', path = 'DMUErrors',
149  xlabels = dmuLabels, ylabels = dmuErrorLabels,
150  xbins = maxDMUs, xmin = 0.0, xmax = maxDMUs,
151  ybins = maxErrors, ymin = 0.0, ymax = maxErrors)
152 
153 
154 
155  # 8) Configure histograms with fraction of events/DMUs Tile DMU errors vs lumi blocks
156  errorsVsLBArray = helper.addArray([int(Tile.MAX_ROS - 1), int(Tile.MAX_DRAWER)],
157  tileDQFragMonAlg, 'FracTileDigiErrors', topPath = 'Tile/')
158  for postfix, tool in errorsVsLBArray.Tools.items():
159  ros, module = [int(x) for x in postfix.split('_')[1:]]
160 
161  moduleName = Tile.getDrawerString(ros + 1, module)
162  title = 'Run ' + run + ': ' + moduleName + ' (#total_events - #ok_events)/(#total_events)'
163  title += ';LumiBlock;Fraction of Digital errors'
164  name = 'lumiBlock,fractionOfBadDMUs;FracTileDigiErrors' + moduleName
165 
166  tool.defineHistogram(name, title = title, path = 'DMUErrors', type = 'TProfile',
167  xbins = 1000, xmin = -0.5, xmax = 999.5, opt = 'kAddBinsDynamically', merge = 'merge')
168 
169 
170 
171  from TileMonitoring.TileMonitoringCfgHelper import addTileModuleChannelMapsArray
172 
173  # 9) Configure histograms with # of jumps errors per Tile partition
174  addTileModuleChannelMapsArray(helper, tileDQFragMonAlg, path = 'Tile/DMUErrors/BadDrawers',
175  name = 'TileBadChannelsJumpMap', title = '# Jump errors',
176  run = run)
177 
178  # 10) Configure histograms with # of not masked jumps errors per Tile partition
179  addTileModuleChannelMapsArray(helper, tileDQFragMonAlg, path = 'Tile/DMUErrors/BadDrawers',
180  name = 'TileBadChannelsJumpNotMaskMap', title = '# Not masked Jump errors',
181  run = run)
182 
183 
184  # 11) Configure histograms with Tile bad pulse shape
185  addTileModuleChannelMapsArray(helper, tileDQFragMonAlg, path = 'Tile/DMUErrors/BadDrawers',
186  name = 'TileBadPulseQualityMap', run = run,
187  title = 'Bad pulse shape or #chi^{2} from Optimal Filtering algirithm')
188 
189  # 12) Configure histograms with Tile channel negative amplitudes below threshold
190  addTileModuleChannelMapsArray(helper, tileDQFragMonAlg, path = 'Tile/DMUErrors/BadDrawers',
191  name = 'TileBadChannelsNegMap', title = '# Negative amplitude',
192  run = run)
193 
194  # 13) Configure histograms with not masked Tile channel negative amplitudes below threshold
195  addTileModuleChannelMapsArray(helper, tileDQFragMonAlg, path = 'Tile/DMUErrors/BadDrawers',
196  name = 'TileBadChannelsNegNotMaskMap', run = run,
197  title = '# Not masked negative amplitude')
198 
199 
200  # 14) Configure histograms with Tile with negative energy below threshold
201  negEneMapTitle = f"# Negative energy below {kwargs['MinEnergyChan']/GeV} ({kwargs['MinEnergyGap']/GeV} for E cels) GeV"
202  addTileModuleChannelMapsArray(helper, tileDQFragMonAlg, path = 'Tile/DMUErrors/BadDrawers',
203  name = 'TileNegativeEnergyMap', run = run, title = negEneMapTitle)
204 
205  accumalator = helper.result()
206  result.merge(accumalator)
207  return result
208 
209 
SystemOfUnits
TileMonitoringCfgHelper.addTileModuleChannelMapsArray
def addTileModuleChannelMapsArray(helper, algorithm, name, title, path, weight='', subDirectory=False, type='TH2D', value='', run='', triggers=[], perGain=False, separator='_')
Definition: TileMonitoringCfgHelper.py:370
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
python.TileInfoLoaderConfig.TileInfoLoaderCfg
def TileInfoLoaderCfg(flags, **kwargs)
Definition: TileInfoLoaderConfig.py:12
python.DetDescrCnvSvcConfig.DetDescrCnvSvcCfg
def DetDescrCnvSvcCfg(flags, **kwargs)
Definition: DetDescrCnvSvcConfig.py:6
TileDQstatusConfig.TileDQstatusAlgCfg
def TileDQstatusAlgCfg(flags, **kwargs)
Definition: TileDQstatusConfig.py:31
python.TileBadChannelsConfig.TileBadChannelsCondAlgCfg
def TileBadChannelsCondAlgCfg(flags, **kwargs)
Definition: TileBadChannelsConfig.py:10
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
TileMonitoringCfgHelper.getPartitionName
def getPartitionName(ros)
Definition: TileMonitoringCfgHelper.py:40
python.TileEMScaleConfig.TileEMScaleCondAlgCfg
def TileEMScaleCondAlgCfg(flags, **kwargs)
Definition: TileEMScaleConfig.py:10
python.TileDCSConfig.TileDCSCondAlgCfg
def TileDCSCondAlgCfg(flags, **kwargs)
Definition: TileDCSConfig.py:8
TileDQFragMonitorAlgorithm.TileDQFragMonitoringConfig
def TileDQFragMonitoringConfig(flags, **kwargs)
Definition: TileDQFragMonitorAlgorithm.py:10
str
Definition: BTagTrackIpAccessor.cxx:11
python.TileCablingSvcConfig.TileCablingSvcCfg
def TileCablingSvcCfg(flags)
Definition: TileCablingSvcConfig.py:11