12     ''' Function to configure TileMBTSMonitorAlgorithm algorithm in the monitoring system.''' 
   14     kwargs.setdefault(
'useTrigger', (flags.DQ.useTrigger 
and not flags.Input.isMC))
 
   15     kwargs.setdefault(
'FillHistogramsPerMBTS', 
True)
 
   19     from AthenaConfiguration.ComponentAccumulator 
import ComponentAccumulator
 
   22     from TileRecUtils.TileDQstatusConfig 
import TileDQstatusAlgCfg
 
   25     from TileGeoModel.TileGMConfig 
import TileGMCfg
 
   28     from LArGeoAlgsNV.LArGMConfig 
import LArGMCfg
 
   31     from TileConditions.TileCablingSvcConfig 
import TileCablingSvcCfg
 
   34     if kwargs[
'useTrigger']:
 
   35         from TrigConfigSvc.TrigConfigSvcCfg 
import L1ConfigSvcCfg
 
   38     from AthenaConfiguration.Enums 
import BeamType, Format
 
   39     if flags.Input.Format 
is Format.POOL:
 
   40         kwargs.setdefault(
'TileDigitsContainer', 
'TileDigitsFlt')
 
   44     from AthenaMonitoring 
import AthMonitorCfgHelper
 
   45     helper = AthMonitorCfgHelper(flags, 
'TileMBTSMonAlgCfg')
 
   48     from AthenaConfiguration.ComponentFactory 
import CompFactory
 
   49     tileMBTSMonAlg = helper.addAlgorithm(CompFactory.TileMBTSMonitorAlgorithm, 
'TileMBTSMonAlg')
 
   51     tileMBTSMonAlg.TriggerChain = 
'' 
   53     runNumber = flags.Input.RunNumbers[0]
 
   56     if runNumber < 400000:
 
   57         energyCuts = [60. / 222 
for mbts 
in range(0, numberOfMBTS)]
 
   59         energyCuts = [0.1 
for mbts 
in range(0, numberOfMBTS)]
 
   60     kwargs.setdefault(
"EnergyCuts", energyCuts)
 
   62     for k, v 
in kwargs.items():
 
   63         setattr(tileMBTSMonAlg, k, v)
 
   65     if 'FillHistogramsPerMBTS' in kwargs:
 
   66         fillHistogramPerMBTS = kwargs[
'FillHistogramsPerMBTS']
 
   67     elif hasattr(tileMBTSMonAlg,
"_descriptors"): 
 
   68         fillHistogramPerMBTS = tileMBTSMonAlg._descriptors[
'FillHistogramsPerMBTS'].default
 
   70         fillHistogramPerMBTS = tileMBTSMonAlg.getDefaultProperty(
'FillHistogramsPerMBTS')
 
   72     useTrigger = kwargs[
'useTrigger']
 
   77     executeTimeGroup = helper.addGroup(tileMBTSMonAlg, 
'TileMBTSMonExecuteTime', 
'Tile/')
 
   78     executeTimeGroup.defineHistogram(
'TIME_execute', path = 
'MBTS', type=
'TH1F',
 
   79                                      title = 
'Time for execute TileMBTSMonAlg algorithm;time [#mus]',
 
   80                                      xbins = 100, xmin = 0, xmax = 1000)
 
   82     nMBTSPerSide = numberOfMBTS // 2
 
   83     labelsMBTS  =  [
'MBTSA' + (
'0' if x < 10 
else '') + 
str(x) 
for x 
in range(0, nMBTSPerSide)]
 
   84     labelsMBTS +=  [
'MBTSC' + (
'0' if x < 10 
else '') + 
str(x) 
for x 
in range(0, nMBTSPerSide)]
 
   88     occupancyGroup = helper.addGroup(tileMBTSMonAlg, 
'TileOccupancyMBTS', 
'Tile')
 
   89     occupancyGroup.defineHistogram(
'HitCounter;Occupancy', path = 
'MBTS/Cell', type=
'TH1F',
 
   90                                    xlabels = labelsMBTS, title = 
'Run ' + run + 
': MBTS Occupancy',
 
   91                                    xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS)
 
   94     energySummaryGroup = helper.addGroup(tileMBTSMonAlg, 
'TileEnergySummaryMBTS', 
'Tile')
 
   95     energySummaryGroup.defineHistogram(
'EnergyCounter,SummaryEnergy;SummaryEnergy', path = 
'MBTS/Cell', type=
'TProfile',
 
   96                                        title = 
'Run ' + run + 
': Average MBTS Energy;;Average Energy [pC]',
 
   97                                        xlabels = labelsMBTS, xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS)
 
  100     timeSummaryGroup = helper.addGroup(tileMBTSMonAlg, 
'TileTimeSummaryMBTS', 
'Tile')
 
  101     timeSummaryGroup.defineHistogram(
'TimeCounter,SummaryTime;SummaryTime', path = 
'MBTS/Cell', type=
'TProfile',
 
  102                                      title = 
'Run ' + run + 
': Average MBTS Time (Energy above threshold);;Average Time [ns]',
 
  103                                      xlabels = labelsMBTS, xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS)
 
  106     timeAGroup = helper.addGroup(tileMBTSMonAlg, 
'TileTimeMBTSA', 
'Tile')
 
  107     timeAGroup.defineHistogram(
'TimeA;Time_A', path = 
'MBTS/Cell', type=
'TH1F',
 
  108                                title = 
'Run ' + run + 
': Time of MBTS on A side;Time [ns]',
 
  109                                xbins = 151, xmin = -75.5, xmax = 75.5)
 
  112     timeCGroup = helper.addGroup(tileMBTSMonAlg, 
'TileTimeMBTSC', 
'Tile')
 
  113     timeCGroup.defineHistogram(
'TimeC;Time_C', path = 
'MBTS/Cell', type=
'TH1F',
 
  114                                title = 
'Run ' + run + 
': Time of MBTS on C side;Time [ns]',
 
  115                                xbins = 151, xmin = -75.5, xmax = 75.5)
 
  118     timeDifferenceGroup = helper.addGroup(tileMBTSMonAlg, 
'TileTimeDifferenceMBTS', 
'Tile')
 
  119     timeDifferenceGroup.defineHistogram(
'TimeDifference;TimeDiff_A-C', path = 
'MBTS/Cell', type=
'TH1F',
 
  120                                         title = 
'Run ' + run + 
': Time difference between MBTS on A and C sides;Time [ns]',
 
  121                                         xbins = 151, xmin = -75.5, xmax = 75.5)
 
  124     timeDifferenceLBGroup = helper.addGroup(tileMBTSMonAlg, 
'TileTimeDifferenceMBTSLB', 
'Tile')
 
  125     timeDifferenceLBGroup.defineHistogram(
'lumiBlock,TimeDifference;TimeDiff_A-C_LB', path = 
'MBTS/Cell', type=
'TH2F',
 
  126                                           title = (
'Run ' + run + 
': Time difference between MBTS on A and C sides vs LumiBlock' 
  127                                                    + 
';Luminosity Block;Time difference A-side - C-side [ns]'),
 
  128                                           xbins = 1000, xmin = -0.5, xmax = 999.5, ybins = 151, ymin = -75.5, ymax = 75.5,
 
  129                                           opt = 
'kAddBinsDynamically', merge = 
'merge')
 
  132     coincidentHitsGroup = helper.addGroup(tileMBTSMonAlg, 
'TileCoincidentHitsMBTS', 
'Tile')
 
  133     coincidentHitsGroup.defineHistogram(
'CoincidentCounter1,CoincidentCounter2;CoincidentEnergyHits',
 
  134                                         path = 
'MBTS/Cell', type=
'TH2F', xlabels = labelsMBTS, ylabels = labelsMBTS,
 
  135                                         title = 
'Run ' + run + 
': Coincident Hits (energy) between two MBTS counters',
 
  136                                         xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS,
 
  137                                         ybins = numberOfMBTS, ymin = 0, ymax = numberOfMBTS)
 
  141     errorLabels = [
'General', 
'Global CRC', 
'ROD CRC', 
'Frontend CRC', 
'BCID', 
'Header Format',
 
  142                    'Header Parity', 
'Sample Format', 
'Sample Parity', 
'Memory Parity']
 
  143     numberOfErrors = len(errorLabels)
 
  144     errorsGroup = helper.addGroup(tileMBTSMonAlg, 
'TileErrorsMBTS', 
'Tile')
 
  145     errorsGroup.defineHistogram(
'ErrorCounter,Error;ReadOutErrors', path = 
'MBTS/Digit',
 
  146                                 type=
'TH2F', xlabels = labelsMBTS, ylabels = errorLabels,
 
  147                                 title = 
'Run ' + run + 
': Tile Readout Errors for MBTS counters',
 
  148                                 xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS,
 
  149                                 ybins = numberOfErrors, ymin = 0, ymax = numberOfErrors)
 
  152     isCosmics = flags.Beam.Type 
is BeamType.Cosmics
 
  153     nEnergyBins = 550 
if isCosmics 
else 400
 
  154     maxEnergy = 5 
if isCosmics 
else 80
 
  156     if fillHistogramPerMBTS:
 
  159         energyArray = helper.addArray([numberOfMBTS], tileMBTSMonAlg, 
'TileEnergyMBTS', topPath = 
'Tile/MBTS')
 
  160         for postfix, tool 
in energyArray.Tools.items():
 
  161             mbtsCounter = 
int( postfix.split(
'_')[1] )
 
  162             mbtsName = labelsMBTS[mbtsCounter]
 
  163             title = 
'Run ' + run + 
': Energy of ' + mbtsName + 
';Energy [pC]' 
  164             name = 
'Energy;Energy_' + mbtsName
 
  165             tool.defineHistogram(name, title = title, type = 
'TH1F', path = 
'Cell',
 
  166                                  xbins = nEnergyBins, xmin = -0.5, xmax = maxEnergy)
 
  169         energyLBArray = helper.addArray([numberOfMBTS], tileMBTSMonAlg, 
'TileEnergyLBMBTS', topPath = 
'Tile/MBTS')
 
  170         for postfix, tool 
in energyLBArray.Tools.items():
 
  171             mbtsCounter = 
int( postfix.split(
'_')[1] )
 
  172             mbtsName = labelsMBTS[mbtsCounter]
 
  173             title = 
'Run ' + run + 
': Energy of ' + mbtsName + 
' per lumiblock;Lumiblocks;Energy [pC]' 
  174             name = 
'lumiBlock,Energy;EnergyLB_' + mbtsName
 
  175             tool.defineHistogram(name, title = title, type = 
'TProfile', path = 
'Cell',
 
  176                                  xbins = 1000, xmin = -0.5, xmax = 999.5, opt = 
'kAddBinsDynamically', merge = 
'merge')
 
  179         timeArray = helper.addArray([numberOfMBTS], tileMBTSMonAlg, 
'TileTimeMBTS', topPath = 
'Tile/MBTS')
 
  180         for postfix, tool 
in timeArray.Tools.items():
 
  181             mbtsCounter = 
int( postfix.split(
'_')[1] )
 
  182             mbtsName = labelsMBTS[mbtsCounter]
 
  183             title = 
'Run ' + run + 
': Time of ' + mbtsName + 
';Time [ns]' 
  184             name = 
'Time;Time_' + mbtsName
 
  185             tool.defineHistogram(name, title = title, type = 
'TH1F', path = 
'Cell',
 
  186                                  xbins = 151, xmin = -75.5, xmax = 75.5)
 
  189         pedestalArray = helper.addArray([numberOfMBTS], tileMBTSMonAlg, 
'TilePedestalMBTS', topPath = 
'Tile/MBTS')
 
  190         for postfix, tool 
in pedestalArray.Tools.items():
 
  191             mbtsCounter = 
int( postfix.split(
'_')[1] )
 
  192             mbtsName = labelsMBTS[mbtsCounter]
 
  193             title = 
'Run ' + run + 
': Pedestal of ' + mbtsName + 
';Channel pedestal in ADC counts' 
  194             name = 
'Pedestal;Pedestal_' + mbtsName
 
  195             tool.defineHistogram(name, title = title, type = 
'TH1F', path = 
'Digit',
 
  196                                  xbins = 100, xmin = 20.5, xmax = 120.5)
 
  199         hfnArray = helper.addArray([numberOfMBTS], tileMBTSMonAlg, 
'TileHFNoiseMBTS', topPath = 
'Tile/MBTS')
 
  200         for postfix, tool 
in hfnArray.Tools.items():
 
  201             mbtsCounter = 
int( postfix.split(
'_')[1] )
 
  202             mbtsName = labelsMBTS[mbtsCounter]
 
  203             title = 
'Run ' + run + 
': High Frequency Noise of ' + mbtsName + 
';Inter-sample RMS in ADC counts' 
  204             name = 
'HFN;HFN_' + mbtsName
 
  205             tool.defineHistogram(name, title = title, type = 
'TH1F', path = 
'Digit',
 
  206                                  xbins = 100, xmin = 0, xmax = 5)
 
  209         averagePulseArray = helper.addArray([numberOfMBTS], tileMBTSMonAlg, 
'TileAveragePulseMBTS', topPath = 
'Tile/MBTS')
 
  210         for postfix, tool 
in averagePulseArray.Tools.items():
 
  211             mbtsCounter = 
int( postfix.split(
'_')[1] )
 
  212             mbtsName = labelsMBTS[mbtsCounter]
 
  213             title = 
'Run ' + run + 
': Average Pulse for digitized signals of ' + mbtsName
 
  214             title += 
';TileCal Digital Sample;Average number of ADC counts' 
  215             name = 
'SampleNumbers,Samples;AveragePulse_' + mbtsName
 
  216             tool.defineHistogram(name, title = title, type = 
'TProfile', path = 
'Digit',
 
  217                                  xbins = 7, xmin = -0.5, xmax = 6.5)
 
  222         tileMBTSMonAlg.CTP_ID = [-1] 
 
  225         occupancyTrigGroup = helper.addGroup(tileMBTSMonAlg, 
'TileTriggerOccupancyMBTS', 
'Tile')
 
  226         occupancyTrigGroup.defineHistogram(
'HitCounter;Occupancy_wTBP', path = 
'MBTS/Cell', type=
'TH1F',
 
  227                                            xlabels = labelsMBTS, title = f
'Run {run}: MBTS Occupancy with TBP fired',
 
  228                                            xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS)
 
  231         energySummaryTrigGroup = helper.addGroup(tileMBTSMonAlg, 
'TileTriggerEnergySummaryMBTS', 
'Tile')
 
  232         energySummaryTrigGroup.defineHistogram(
'HitCounter,SummaryEnergy;SummaryEnergy_TBP', path = 
'MBTS/Cell', type=
'TProfile',
 
  233                                                title = f
'Run {run}: Average MBTS Energy with TBP fired;;Average Energy [pC]',
 
  234                                                xlabels = labelsMBTS, xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS)
 
  237         timeSummaryTrigGroup = helper.addGroup(tileMBTSMonAlg, 
'TileTriggerTimeSummaryMBTS', 
'Tile')
 
  238         timeSummaryTrigGroup.defineHistogram(
'HitCounter,SummaryTime;SummaryTime_TBP', path = 
'MBTS/Cell', type=
'TProfile',
 
  239                                              title = f
'Run {run}: Average MBTS Time with TBP fired;;Average Time [ns]',
 
  240                                              xlabels = labelsMBTS, xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS)
 
  245             multiplicityGroup = helper.addGroup(tileMBTSMonAlg, 
'TileTriggerMultiplicityMBTS' + side, 
'Tile')
 
  246             multiplicityTitle = f
'Run {run}: Average number of MBTS triggers on {side} side;BCID;Average # of Triggers' 
  247             multiplicityGroup.defineHistogram(f
'bcid,multiplicity{side};MBTS{side}TriggersVsBCID', path = 
'MBTS/Trigger',
 
  248                                               type=
'TProfile', title = multiplicityTitle, xbins = 3565, xmin = -0.5, xmax = 3564.5)
 
  251         multiplicityPerSideGroup = helper.addGroup(tileMBTSMonAlg, 
'TileTriggerMultiplicityPerSideMBTS', 
'Tile')
 
  252         multiplicityPerSideTitle = f
'Run {run}: Number of MBTS triggers per side with TBP fired' 
  253         multiplicityPerSideTitle += 
';# of Triggers on A side; # of Triggers on C side' 
  254         multiplicityPerSideGroup.defineHistogram(
'multiplicityA,multiplicityC;MBTSTriggersPerSide',
 
  255                                                  path = 
'MBTS/Trigger', type=
'TH2F', title = multiplicityPerSideTitle,
 
  256                                                  xbins = nMBTSPerSide, xmin = -0.5, xmax = nMBTSPerSide - 0.5,
 
  257                                                  ybins = nMBTSPerSide, ymin = -0.5, ymax = nMBTSPerSide - 0.5)
 
  260         triggerNames = [
'TBP', 
'TAP', 
'TAV']
 
  261         triggerDescriptions = [
'before prescale', 
'after prescale', 
'after veto']
 
  262         triggersArray = helper.addArray([len(triggerNames)], tileMBTSMonAlg, 
'MBTS_Triggers', topPath = 
'Tile/MBTS')
 
  263         for postfix, tool 
in triggersArray.Tools.items():
 
  264             triggerIdx = 
int( postfix.split(
'_').pop() )
 
  265             trigger = triggerNames[triggerIdx]
 
  266             description = triggerDescriptions[triggerIdx]
 
  267             tool.defineHistogram(f
'TriggerCounter;MBTS_Triggers_{trigger}', path = 
'Trigger', type=
'TH1F',
 
  268                                  xlabels = labelsMBTS, title = f
'Run {run}: MBTS triggers {description} ({trigger})',
 
  269                                  xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS)
 
  272         triggersInWinArray = helper.addArray([len(triggerNames)], tileMBTSMonAlg, 
'MBTS_TriggersInWindow', topPath = 
'Tile/MBTS')
 
  273         for postfix, tool 
in triggersInWinArray.Tools.items():
 
  274             triggerIdx = 
int( postfix.split(
'_').pop() )
 
  275             trigger = triggerNames[triggerIdx]
 
  276             description = triggerDescriptions[triggerIdx]
 
  277             tool.defineHistogram(f
'TriggerCounter;MBTS_TriggersInWindow_{trigger}', path = 
'Trigger', type=
'TH1F',
 
  278                                  xlabels = labelsMBTS, title = f
'Run {run}: MBTS triggers {description} ({trigger}) in CTP window',
 
  279                                  xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS)
 
  282         triggersSumLables = [
'A-Inner', 
'A-Outer', 
'A-Total', 
'C-Inner', 
'C-Outer', 
'C-Total']
 
  283         triggersSumArray = helper.addArray([len(triggerNames)], tileMBTSMonAlg, 
'MBTS_TriggersSum', topPath = 
'Tile/MBTS')
 
  284         for postfix, tool 
in triggersSumArray.Tools.items():
 
  285             triggerIdx = 
int( postfix.split(
'_').pop() )
 
  286             trigger = triggerNames[triggerIdx]
 
  287             description = triggerDescriptions[triggerIdx]
 
  288             tool.defineHistogram(f
'TriggerType;MBTS_TriggersSum_{trigger}', path = 
'Trigger', type=
'TH1F',
 
  289                                  xlabels = triggersSumLables, title = f
'Run {run}: Sum of MBTS triggers {description} ({trigger})',
 
  290                                  xbins = len(triggersSumLables), xmin = 0, xmax = len(triggersSumLables))
 
  293         coinTrigArray = helper.addArray([len(triggerNames)], tileMBTSMonAlg, 
'MBTS_CoincidentTriggers', topPath = 
'Tile/MBTS')
 
  294         for postfix, tool 
in coinTrigArray.Tools.items():
 
  295             triggerIdx = 
int( postfix.split(
'_').pop() )
 
  296             trigger = triggerNames[triggerIdx]
 
  297             tool.defineHistogram(f
'CoincidentTrigger1,CoincidentTrigger2;MBTS_CoincidentTriggers_{trigger}',
 
  298                                  path = 
'Trigger', type=
'TH2F', xlabels = labelsMBTS, ylabels = labelsMBTS,
 
  299                                  title = f
'Run {run}: Coincident {trigger}s fired between two MBTS counters',
 
  300                                  xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS,
 
  301                                  ybins = numberOfMBTS, ymin = 0, ymax = numberOfMBTS)
 
  304         deltaBCIDSummaryArray = helper.addArray([len(triggerNames)], tileMBTSMonAlg, 
'MBTS_DeltaBCID_Summary', topPath = 
'Tile/MBTS')
 
  305         for postfix, tool 
in deltaBCIDSummaryArray.Tools.items():
 
  306             triggerIdx = 
int( postfix.split(
'_').pop() )
 
  307             trigger = triggerNames[triggerIdx]
 
  308             tool.defineHistogram(f
'TriggerCounter,DeltaBCID;MBTS_DeltaBCID_Summary_{trigger}', path = 
'Trigger', type=
'TProfile',
 
  309                                  title = f
'Run {run}: BCID difference of {trigger} from Event BCID;;Average BCID delta',
 
  310                                  xlabels = labelsMBTS, xbins = numberOfMBTS, xmin = 0, xmax = numberOfMBTS)
 
  313         deltaBCIDArray = helper.addArray([len(triggerNames), numberOfMBTS], tileMBTSMonAlg, 
'MBTS_DeltaBCID', topPath = 
'Tile/MBTS')
 
  314         for postfix, tool 
in deltaBCIDArray.Tools.items():
 
  315             elements = postfix.split(
'_')
 
  316             mbtsCounter = 
int( elements.pop() )
 
  317             triggerIdx = 
int( elements.pop() )
 
  318             mbtsName = labelsMBTS[mbtsCounter]
 
  319             trigger = triggerNames[triggerIdx]
 
  320             deltaBCIDTitle = f
'Run {run}: {mbtsName} BCID difference of {trigger} signal' 
  321             deltaBCIDTitle += f
';Bunch crossing between {trigger} fire and L1Accept' 
  322             tool.defineHistogram(f
'DeltaBCID;MBTS_DeltaBCID_{trigger}_{mbtsName}', path = 
'Trigger', type=
'TH1F',
 
  323                                  title = deltaBCIDTitle, xbins = 19, xmin = -9.5, xmax = 9.5)
 
  326         bcidArray = helper.addArray([len(triggerNames), numberOfMBTS], tileMBTSMonAlg, 
'MBTS_BCID', topPath = 
'Tile/MBTS')
 
  327         for postfix, tool 
in bcidArray.Tools.items():
 
  328             elements = postfix.split(
'_')
 
  329             mbtsCounter = 
int( elements.pop() )
 
  330             triggerIdx = 
int( elements.pop() )
 
  331             mbtsName = labelsMBTS[mbtsCounter]
 
  332             trigger = triggerNames[triggerIdx]
 
  333             bcidTitle = f
'Run {run}: {mbtsName} BCID of {trigger} signal;BCID' 
  334             tool.defineHistogram(f
'MBTS_BCID;MBTS_BCID_{trigger}_{mbtsName}', path = 
'Trigger', type=
'TH1F',
 
  335                                  title = bcidTitle, xbins = 3565, xmin = -0.5, xmax = 3564.5)
 
  338         energyTrigArray = helper.addArray([numberOfMBTS], tileMBTSMonAlg, 
'TileEnergyTrigMBTS', topPath = 
'Tile/MBTS')
 
  339         for postfix, tool 
in energyTrigArray.Tools.items():
 
  340             mbtsCounter = 
int( postfix.split(
'_')[1] )
 
  341             mbtsName = labelsMBTS[mbtsCounter]
 
  342             title = f
'Run {run}: Energy with TBP fired of {mbtsName};Energy [pC]' 
  343             name = f
'Energy;Energy_TBP_{mbtsName}' 
  344             tool.defineHistogram(name, title = title, type = 
'TH1F', path = 
'Cell',
 
  345                                  xbins = nEnergyBins, xmin = -0.5, xmax = maxEnergy)
 
  348         energyTrigLBArray = helper.addArray([numberOfMBTS], tileMBTSMonAlg, 
'TileEnergyTrigLBMBTS', topPath = 
'Tile/MBTS')
 
  349         for postfix, tool 
in energyTrigLBArray.Tools.items():
 
  350             mbtsCounter = 
int( postfix.split(
'_')[1] )
 
  351             mbtsName = labelsMBTS[mbtsCounter]
 
  352             title = f
'Run {run}: Energy with TBP fired of {mbtsName} per lumiblock;Lumiblocks;Energy [pC]' 
  353             name = f
'lumiBlock,Energy;EnergyLB_TBP_{mbtsName}' 
  354             tool.defineHistogram(name, title = title, type = 
'TProfile', path = 
'Cell',
 
  355                                  xbins = 1000, xmin = -0.5, xmax = 999.5, opt = 
'kAddBinsDynamically', merge = 
'merge')
 
  358         timeTrigArray = helper.addArray([numberOfMBTS], tileMBTSMonAlg, 
'TileTimeTrigMBTS', topPath = 
'Tile/MBTS')
 
  359         for postfix, tool 
in timeTrigArray.Tools.items():
 
  360             mbtsCounter = 
int( postfix.split(
'_')[1] )
 
  361             mbtsName = labelsMBTS[mbtsCounter]
 
  362             title = f
'Run {run}: Time with TBP fired of {mbtsName};Time [ns]' 
  363             name = f
'Time;Time_TBP_{mbtsName}' 
  364             tool.defineHistogram(name, title = title, type = 
'TH1F', path = 
'Cell',
 
  365                                  xbins = 151, xmin = -75.5, xmax = 75.5)
 
  368         efficiencyTrigArray = helper.addArray([numberOfMBTS], tileMBTSMonAlg, 
'TileEfficiencyTrigMBTS', topPath = 
'Tile/MBTS')
 
  369         for postfix, tool 
in efficiencyTrigArray.Tools.items():
 
  370             mbtsCounter = 
int( postfix.split(
'_')[1] )
 
  371             mbtsName = labelsMBTS[mbtsCounter]
 
  372             title = f
'Run {run}: Efficiency of LVL1 vs readout {mbtsName}' 
  373             title += 
';Energy [pc];Fraction of events with TBP' 
  374             name = f
'Energy,Efficiency;Efficiency_TBP_{mbtsName}' 
  375             tool.defineHistogram(name, title = title, type = 
'TProfile', path = 
'Cell',
 
  376                                  xbins = 100, xmin = -0.55, xmax = 9.55)
 
  379         averageTrigPulseArray = helper.addArray([numberOfMBTS], tileMBTSMonAlg, 
'TileAveragePulseTrigMBTS', topPath = 
'Tile/MBTS')
 
  380         for postfix, tool 
in averageTrigPulseArray.Tools.items():
 
  381             mbtsCounter = 
int( postfix.split(
'_')[1] )
 
  382             mbtsName = labelsMBTS[mbtsCounter]
 
  383             title = f
'Run {run}: Average Pulse with TBP fired for digitized signals of {mbtsName}' 
  384             title += 
';TileCal Digital Sample;Average number of ADC counts' 
  385             name = f
'SampleNumbers,Samples;AveragePulse_TBP_{mbtsName}' 
  386             tool.defineHistogram(name, title = title, type = 
'TProfile', path = 
'Digit',
 
  387                                  xbins = 7, xmin = -0.5, xmax = 6.5)
 
  389     accumalator = helper.result()
 
  390     result.merge(accumalator)