ATLAS Offline Software
Loading...
Searching...
No Matches
GfexInputMonitorAlgorithm.py
Go to the documentation of this file.
2# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3#
5 '''Function to configure LVL1 GfexInput algorithm in the monitoring system.'''
6
7 # get the component factory - used for getting the algorithms
8 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
9 result = ComponentAccumulator()
10
11
12
13 # use L1Calo's special MonitoringCfgHelper
14 from AthenaConfiguration.ComponentFactory import CompFactory
15 from TrigT1CaloMonitoring.LVL1CaloMonitoringConfig import L1CaloMonitorCfgHelper
16 helper = L1CaloMonitorCfgHelper(flags,CompFactory.GfexInputMonitorAlgorithm,'GfexInputMonAlg')
17
18 # for input monitoring we will require the emulated gFexTowers (built from supercells)
19 from L1CaloFEXAlgos.FexEmulatedTowersConfig import gFexEmulatedTowersCfg
20 result.merge(gFexEmulatedTowersCfg(flags,name="L1_gFexEmulatedTowers"))
21
22
23 # add any steering
24 groupName = 'GfexInputMonitor' # the monitoring group name is also used for the package name
25 helper.alg.PackageName = groupName
26
27
28 # path to the expert area for gFex Monitoring Plots
29 trigPath = 'Expert/Inputs/gFEX'
30
31
32 import numpy as np
33 eta_bins= [-4.9, -4.1,-3.5,-3.25,-3.2,-3.1,-2.9,-2.7,-2.5]
34 for eta in np.arange (-2.2,2.2,0.2):
35 eta_bins.append(eta)
36 eta_bins+= [2.2,2.5,2.7,2.9,3.1,3.25,3.3,3.5,4.1,4.9]
37
38 helper.defineDQAlgorithm("Gfex_Tower_etaPhiMapFilled",
39 hanConfig={"libname":"libdqm_summaries.so","name":"Bins_Equal_Threshold","BinThreshold":"0."},
40 thresholdConfig={"NBins":[0,32*40]}, # 0 bins expected to be empty
41 )
42
43
44 helper.defineTree('LBN,Error,EventNumber,TowerId,TowerEta,TowerPhi,TowerEt,RefTowerEt,TowerSaturationflag,RefTowerSat;errors',
45 "lbn/I:error/string:eventNumber/l:id/i:eta/F:phi/F:et/I:ref_et/I:sat/B:ref_sat/B",
46 title="errors tree;LBN;Error",fillGroup="errors",cutmask='FillTree')
47
48 # histograms of gFex tower variables
49 helper.defineHistogram('LBN,NGfexTowers;h_LBN_vs_nGfexTowers', title='Number of gFex towers in each event with Et > 10 GeV (MLE > 1662);LBN; gTowers per event; Number of events',
50 fillGroup = "highEtgTowers",
51 type='TH2D',
52 path=f'{trigPath}/detail',
53 hanConfig={"description":"The y value gives the number of gTowers with Et > 10 GeV; the z value gives the number of events"},
54 xbins=1,xmin=0,xmax=1,
55 ybins=1,ymin=0,ymax=1,
56 opt=['kAddBinsDynamically']
57 )
58
59 helper.defineHistogram('TowerEta,TowerPhi;h_HotTower_EtaPhiMap', title='gFex Tower Eta vs Phi (gTowerEt > 2 GeV (MLE > 1342)) ;#eta;#phi; Number of gTowers',
60 fillGroup = "highEtgTowers",
61 type='TH2F',
62 path=trigPath,
63 hanConfig={
64 "algorithm": "Gfex_Tower_etaPhiMapFilled",
65 "description":"Look for hot spots with unusual high statistics; Check <a href='./detail/h_HotTowers_posVsLBN'>detail plot</a> to get timeseries for each location", "display":"SetPalette(55),Draw=COL1Z"},
66 xbins=eta_bins, ybins=32,ymin=-3.2,ymax=3.2)
67
68
69
70 helper.defineHistogram('LBN,binNumber;h_HotTowers_posVsLBN',title='gFex Towers with Et > 2GeV (MLE > 1342);LB;32(x-1)+y',
71 path=f"{trigPath}/detail",
72 fillGroup = "highEtgTowers",
73 hanConfig={"description":"x and y correspond to axis bin numbers on <a href='../h_HotTower_EtaPhiMap'/>eta-phi plot</a>. Use this plot to check if hotspot/coldspots affected whole or part of run: turn on Projection X1 to see 1D hist of individual locations"},
74 type='TH2I',
75 xbins=1,xmin=0,xmax=10,
76 ybins=40*32,ymin=0.5,ymax=40*32+0.5,
77 opt=['kAddBinsDynamically','kAlwaysCreate'],merge="merge")
78
79 helper.defineHistogram('TowerEta,TowerPhi,TowerEt;h_HotTower_HeatMap', title='gFex Tower Average Et Distribution (gTowerEt > 2 GeV (MLE > 1342)) ;#eta;#phi;averageEt(MLE)',
80 fillGroup = "highEtgTowers",
81 type='TProfile2D',
82 xbins=eta_bins, ybins=32,ymin=-3.2,ymax=3.2)
83
84
85
86
87 helper.defineHistogram('TowerEta,TowerPhi;h_ColdTower_EtaPhiMap', title='gFex Tower Eta vs Phi (gTower Et < - 2 GeV (MLE < 1182) ;#eta;#phi;Number of gTowers',
88 fillGroup = "lowEtgTowers",
89 type='TH2F',
90 path=trigPath,
91 hanConfig={
92 "algorithm": "Gfex_Tower_etaPhiMapFilled",
93 "description":"Look for cold spots with unusual high statistics; Check <a href='./detail/h_ColdTowers_posVsLBN'>detail plot</a> to get timeseries for each location ", "display":"SetPalette(55),Draw=COL1Z"},
94 xbins=eta_bins, ybins=32,ymin=-3.2,ymax=3.2)
95
96 helper.defineHistogram('LBN,binNumber;h_ColdTowers_posVsLBN',title='gFex Towers with Et < -2GeV (MLE < 1182);LB;32(x-1)+y',
97 path=f"{trigPath}/detail",
98 fillGroup = "lowEtgTowers",
99 hanConfig={"description":"x and y correspond to axis bin numbers on <a href='../h_ColdTower_EtaPhiMap'/>eta-phi plot</a>. Use this plot to check if hotspot/coldspots affected whole or part of run: turn on Projection X1 to see 1D hist of individual locations"},
100 type='TH2I',
101 xbins=1,xmin=0,xmax=10,
102 ybins=40*32,ymin=0.5,ymax=40*32+0.5,
103 opt=['kAddBinsDynamically','kAlwaysCreate'],merge="merge")
104
105 helper.defineHistogram('TowerEta,TowerPhi,TowerEt;h_ColdTower_HeatMap', title='gFex Tower Average Et Distribution (gTower Et < - 2 GeV (MLE < 1182)) ;#eta;#phi;averageEt (MLE)',
106 fillGroup = "lowEtgTowers",
107 type='TProfile2D',
108 xbins=eta_bins, ybins=32,ymin=-3.2,ymax=3.2)
109
110
111 helper.defineHistogram('TowerEt;h_TowerEt', title='gFex Tower Et ; Et (MLE)',
112 fillGroup = "gTowers",
113 type='TH1I',
114 xbins= 2000 , xmin=500, xmax=2500.0)
115
116 helper.defineHistogram('TowerEt;h_TileTowerEt', title='gFex Tile Tower Et ; Et (GeV)',
117 fillGroup = "gTileTowers",
118 type='TH1I',
119 xbins= 255 , xmin=0, xmax=255)
120
121 helper.defineHistogram('TowerEta,TowerPhi,TowerEt;h_SaturatedTower_HeatMap', title='gFex Tower Average Et Distribution for Saturated gTower ;#eta;#phi;averageEt (MLE)',
122 fillGroup = "SatgTowers",
123 type='TProfile2D',
124 xbins=eta_bins, ybins=32,ymin=-3.2,ymax=3.2)
125 helper.defineHistogram('TowerEta,TowerPhi;h_EtMismatchSCell', title='gFEX tower Et mismatch - SCells;#eta;#phi',
126 fillGroup = "errorsSCell",
127 type='TH2D',
128 xbins=eta_bins, ybins=32,ymin=-3.2,ymax=3.2)
129 helper.defineHistogram('TowerEta,TowerPhi;h_EtMismatchTile', title='gFEX tower Et mismatch - Tile;#eta;#phi',
130 fillGroup = "errorsTile",
131 type='TH2D',
132 xbins=eta_bins, ybins=32,ymin=-3.2,ymax=3.2)
133
134
135
136
137 acc = helper.result()
138 result.merge(acc)
139 return result
140
141if __name__=='__main__':
142 # set input file and config options
143 from AthenaConfiguration.AllConfigFlags import initConfigFlags
144 import glob
145
146 inputs = glob.glob('/eos/atlas/atlastier0/rucio/data18_13TeV/physics_Main/00354311/data18_13TeV.00354311.physics_Main.recon.ESD.f1129/data18_13TeV.00354311.physics_Main.recon.ESD.f1129._lb0013._SFO-8._0001.1')
147
148 flags = initConfigFlags()
149 flags.Input.Files = inputs
150 flags.Output.HISTFileName = 'ExampleMonitorOutput_LVL1_MC.root'
151
152 flags.lock()
153 flags.dump() # print all the configs
154
155 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
156 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
157 cfg = MainServicesCfg(flags)
158 cfg.merge(PoolReadCfg(flags))
159
160 GfexInputMonitorCfg = GfexInputMonitoringConfig(flags)
161 cfg.merge(GfexInputMonitorCfg)
162
163 # options - print all details of algorithms, very short summary
164 cfg.printConfig(withDetails=False, summariseProps = True)
165
166 nevents=10
167 cfg.run(nevents)