5 @file TileClusterMonitorAlgorithm.py
6 @brief Python configuration of TileClusterMonitorAlgorithm algorithm for the Run III
10 ''' Function to configure TileClusterMonitorAlgorithm algorithm in the monitoring system.'''
14 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
17 from TileMonitoring.TileTopoClusterConfig
import TileTopoClusterCfg
22 from AthenaMonitoring
import AthMonitorCfgHelper
23 helper = AthMonitorCfgHelper(flags,
'TileClusterMonitoring')
26 from AthenaConfiguration.ComponentFactory
import CompFactory
27 tileClusterMonAlg = helper.addAlgorithm(CompFactory.TileClusterMonitorAlgorithm,
'TileClusterMonAlg')
29 tileClusterMonAlg.TriggerChain =
''
37 kwargs.setdefault(
'fillHistogramsForL1Triggers', [
'AnyPhysTrig',
'bit7_Calib'])
38 l1Triggers = kwargs[
'fillHistogramsForL1Triggers']
40 kwargs.setdefault(
'fillTimingHistograms', flags.Common.isOnline)
41 fillTimingHistograms = kwargs[
'fillTimingHistograms']
43 for k, v
in kwargs.items():
44 setattr(tileClusterMonAlg, k, v)
46 run =
str(flags.Input.RunNumbers[0])
49 executeTimeGroup = helper.addGroup(tileClusterMonAlg,
'TileClusterMonExecuteTime',
'Tile/')
50 executeTimeGroup.defineHistogram(
'TIME_execute', path =
'Cluster', type=
'TH1F',
51 title =
'Time for execute TileClusterMonAlg algorithm;time [#mus]',
52 xbins = 100, xmin = 0, xmax = 1000)
55 from TileCalibBlobObjs.Classes
import TileCalibUtils
as Tile
58 from TileMonitoring.TileMonitoringCfgHelper
import addTileEtaPhiMapsArray
62 title =
'Most energetic Tile Cluster position', path =
'Tile/Cluster',
63 run = run, triggers = l1Triggers, perSample =
False)
67 title =
'All Tile Cluster position', path =
'Tile/Cluster',
68 run = run, triggers = l1Triggers, perSample =
False)
72 value =
'energy', title =
'All Tile Cluster everage energy [MeV]',
73 path =
'Tile/Cluster', run = run, triggers = l1Triggers, perSample =
False)
78 title =
'Position correlation of Tile Cluster opposite to most energetic cluster',
79 path =
'Tile/Cluster', run = run, triggers = l1Triggers, perSample =
False,
80 etaTitle =
'#Delta #eta', etabins = 21, etamin = -2.025, etamax = 2.025,
81 phiTitle =
'#Delta #phi', phibins = Tile.MAX_DRAWER, phimin = 0.0, phimax = 6.4)
84 from TileMonitoring.TileMonitoringCfgHelper
import addTile1DHistogramsArray
88 title =
'Energy in most energetic Tile Cluster [MeV]', path =
'Tile/Cluster',
89 xbins = 80, xmin = 0., xmax = 20000., type =
'TH1D', run = run,
90 triggers = l1Triggers, perPartition =
True, perSample =
False,
91 perGain =
False, subDirectory =
True, allPartitions =
True)
95 title =
'E_{T} [MeV] in most energetic Tile Cluster', path =
'Tile/Cluster',
96 xbins = 80, xmin = 0., xmax = 20000., type =
'TH1D', run = run,
97 triggers = l1Triggers, perPartition =
False, perSample =
False,
98 perGain =
False, subDirectory =
False, allPartitions =
False)
102 title =
'Number of cells in most energetic Tile Cluster', path =
'Tile/Cluster',
103 xbins = 100, xmin = 0., xmax = 100., type =
'TH1D', run = run,
104 triggers = l1Triggers, perPartition =
False, perSample =
False,
105 perGain =
False, subDirectory =
False, allPartitions =
False)
110 title =
'All Tile Cluster Energy [MeV]', path =
'Tile/Cluster',
111 xbins = 80, xmin = 0., xmax = 20000., type =
'TH1D', run = run,
112 triggers = l1Triggers, perPartition =
False, perSample =
False,
113 perGain =
False, subDirectory =
False, allPartitions =
False)
117 title =
'Number of Tile Clusters', path =
'Tile/Cluster',
118 xbins = 200, xmin = 0., xmax = 200., type =
'TH1D', run = run,
119 triggers = l1Triggers, perPartition =
False, perSample =
False,
120 perGain =
False, subDirectory =
False, allPartitions =
False)
124 title =
'Tile Clusters SumPx [MeV]', path =
'Tile/Cluster',
125 xbins = 101, xmin = -10000., xmax = 10000., type =
'TH1D', run = run,
126 triggers = l1Triggers, perPartition =
False, perSample =
False,
127 perGain =
False, subDirectory =
False, allPartitions =
False)
131 title =
'Tile Clusters SumPy [MeV]', path =
'Tile/Cluster',
132 xbins = 101, xmin = -10000., xmax = 10000., type =
'TH1D', run = run,
133 triggers = l1Triggers, perPartition =
False, perSample =
False,
134 perGain =
False, subDirectory =
False, allPartitions =
False)
138 title =
'Tile Clusters SumEt [MeV]', path =
'Tile/Cluster',
139 xbins = 100, xmin = 0., xmax = 20000., type =
'TH1D', run = run,
140 triggers = l1Triggers, perPartition =
False, perSample =
False,
141 perGain =
False, subDirectory =
False, allPartitions =
False)
144 timeDiffTitle =
'Tile time correlation of cluster opposite to most energetic cluster; Time difference [ns]'
146 title = timeDiffTitle, path =
'Tile/Cluster', xbins = 200, xmin = -100., xmax = 100.,
147 type =
'TH1D', run = run, triggers = l1Triggers, perPartition =
False, perSample =
False,
148 perGain =
False, subDirectory =
False, allPartitions =
False)
151 eneDiffTitle =
'Tile energy correlation of cluster opposite to most energetic cluster; Time energy [MeV]'
153 title = eneDiffTitle, path =
'Tile/Cluster', xbins = 200, xmin = -10000., xmax = 10000.,
154 type =
'TH1D', run = run, triggers = l1Triggers, perPartition =
False, perSample =
False,
155 perGain =
False, subDirectory =
False, allPartitions =
False)
158 if fillTimingHistograms:
160 titlePartitionTime =
'Tile partition time vs luminosity block;LumiBlock;t[ns]'
162 xvalue =
'lumiBlock', value =
'time', title = titlePartitionTime, path =
'Tile/Cluster',
163 xbins = 1000, xmin = -0.5, xmax = 999.5, type=
'TProfile', run = run, triggers = [],
164 subDirectory =
False, perPartition =
True, perSample =
False, perGain =
False, allPartitions =
True)
167 accumalator = helper.result()
168 result.merge(accumalator)
171 if __name__==
'__main__':
174 from AthenaCommon.Logging
import log
179 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
180 from AthenaConfiguration.TestDefaults
import defaultTestFiles
182 flags.Input.Files = defaultTestFiles.ESD
183 flags.Output.HISTFileName =
'TileClusterMonitorOutput.root'
184 flags.DQ.useTrigger =
False
185 flags.DQ.enableLumiAccess =
False
186 flags.Exec.MaxEvents = 3
191 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
192 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
196 l1Triggers = [
'bit0_RNDM',
'bit1_ZeroBias',
'bit2_L1Cal',
'bit3_Muon',
197 'bit4_RPC',
'bit5_FTK',
'bit6_CTP',
'bit7_Calib',
'AnyPhysTrig']
200 fillTimingHistograms =
True,
201 fillHistogramsForL1Triggers = l1Triggers) )
203 cfg.printConfig(withDetails =
True, summariseProps =
True)
206 cfg.store(
open(
'TileClusterMonitorAlgorithm.pkl',
'wb') )
212 sys.exit(
not sc.isSuccess())