26 Book the histograms for the efex monitoring. This is done in a separate method
27 to the algorithm creation (above) because the histograms are based on the list of container keys
28 given to the algorithm, which can be customized by the user before calling this method.
31 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
36 from TrigT1CaloMonitoring.LVL1CaloMonitoringConfig
import L1CaloMonitorCfgHelper
37 helper = L1CaloMonitorCfgHelper(flags,
None,
'EfexMonitoringCfg')
42 baseGroupName = EfexMonAlg.PackageName
46 trigPath = f
'Developer/{eFexAlg.name}/'
49 def pathFromKey(key,prefix="Nominal/"):
51 if "DAODSim" in key: path =
"DAODSim/"
52 elif "ReSim" in key: path =
"ReSim/"
53 elif "Sim" in key: path =
"Sim/"
54 if "_eEMx" in key: path +=
"eEMx"
55 elif "_eEM" in key: path +=
"eEM"
56 elif "_eTaux" in key: path +=
"eTAUx"
57 elif "_eTau" in key: path +=
"eTAU"
60 cut_names = [
"LowPtCut",
"HiPtCut"]
61 cut_vals = [EfexMonAlg.LowPtCut, EfexMonAlg.HiPtCut]
67 for phiOct
in range(0,8):
68 for etaIdx
in range(-25,25):
69 locIdxs += [
str(phiOct) +
":" +
str(etaIdx)]
71 for containerKey
in (
list(EfexMonAlg.eFexEMTobKeyList) +
list(EfexMonAlg.eFexTauTobKeyList)):
72 helper.defineHistogram(containerKey +
'_nTOBs_nocut;h_n'+containerKey+
'_nocut', title=
'Number of '+containerKey+
';Number of '+containerKey+
';Events',
73 fillGroup = baseGroupName,
74 path=trigPath+pathFromKey(containerKey)+
"NoCut",
75 type=
'TH1I', xbins=100,xmin=-0.5,xmax=99.5)
76 if "Sim" not in containerKey:
78 helper.defineHistogram(f
"LBN,{containerKey}_nTOBs_nocut;h_"+containerKey+
"_nTOBs", title =
"Average # of " + containerKey +
" TOBs;LBN",
79 fillGroup = baseGroupName +
"_" + containerKey,
80 path=trigPath+pathFromKey(containerKey)+
"NoCut",
82 xbins=1,xmin=0,xmax=1,ybins=20,ymin=-0.5,ymax=19.5, opt=[
'kAddBinsDynamically'])
85 helper.defineDQAlgorithm(
"Efex_eEM_etaThiMapFilled",
86 hanConfig={
"libname":
"libdqm_summaries.so",
"name":
"Bins_Equal_Threshold",
"BinThreshold":
"0."},
87 thresholdConfig={
"NBins":[1,64*50]},
89 helper.defineDQAlgorithm(
"Efex_eTAU_etaThiMapFilled",
90 hanConfig={
"libname":
"libdqm_summaries.so",
"name":
"Bins_Equal_Threshold",
"BinThreshold":
"0."},
91 thresholdConfig={
"NBins":[0,64*50]},
95 for cut_name, cut_val
in zip(cut_names, cut_vals):
96 cut_title_addition =
'' if (cut_val == 0.0)
else ' [Et>=' +
'%.1f'%(cut_val/1000) +
'GeV]'
98 for containerKey
in EfexMonAlg.eFexEMTobKeyList:
99 fillGroup = baseGroupName+
'_'+containerKey+
'_'+cut_name
100 tobStr = containerKey
102 helper.defineHistogram(
'nEMTOBs;h_nEmTOBs', title=
'Number of '+tobStr+
's'+cut_title_addition+
';EM '+tobStr+
's;Number of EM '+tobStr+
's',
104 type=
'TH1I', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=10,xmin=0,xmax=10)
106 helper.defineHistogram(
'TOBTransverseEnergy;h_TOBTransverseEnergy', title=tobStr+
' ET [MeV]'+cut_title_addition,
108 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=100,xmin=0,xmax=50000)
110 helper.defineHistogram(
'TOBEta;h_TOBEta', title=tobStr+
' Eta'+cut_title_addition,
112 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=50,xmin=-2.5,xmax=2.5)
114 helper.defineHistogram(
'TOBPhi;h_TOBPhi', title=tobStr+
' Phi'+cut_title_addition,
116 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=64,xmin=-math.pi,xmax=math.pi)
118 helper.defineHistogram(f
"TOBEta,TOBPhi;h_{containerKey}_{cut_name}_EtaPhiMap", title=tobStr+
' Count'+cut_title_addition+
';#eta;#phi',
120 hanConfig={
"display":
"SetPalette(55)",
121 "description":f
"Inspect for hot/cold spots - check help for list of known hot/coldspots, then check <a href='./detail/h_{containerKey}_{cut_name}_posVsLBN'>detail timeseries</a>. Warning if more than 1 deadspot, but could just be low stats",
"algorithm":
"Efex_eEM_etaThiMapFilled"},
123 path=((
"Expert/Outputs/"+pathFromKey(containerKey,
""))
if "Sim" not in containerKey
and "x" not in containerKey
else trigPath+pathFromKey(containerKey)+cut_name),
124 xbins=50,xmin=-2.5,xmax=2.5,ybins=64,ymin=-math.pi,ymax=math.pi,opt=[
'kAlwaysCreate'])
126 if "Sim" not in containerKey
and "x" not in containerKey:
127 helper.defineHistogram(f
"LBN,binNumber;h_{containerKey}_{cut_name}_posVsLBN", title=tobStr+
' Count'+cut_title_addition+
';LB;50(y-1)+x',
129 hanConfig={
"description":f
"Timeseries of TOB counts at each location ... y-axis relates to x and y bin numbers from <a href='../h_{containerKey}_{cut_name}_EtaPhiMap'>eta-phi map</a>. Use Projection X1 for 1D plot"},
131 path=
"Expert/Outputs/"+pathFromKey(containerKey,
"")+
"/detail",
132 xbins=1,xmin=0,xmax=10,
133 ybins=64*50,ymin=0.5,ymax=64*50+0.5,opt=[
'kAddBinsDynamically'])
135 helper.defineHistogram(
'TOBshelfNumber;h_TOBshelfNumber', title=tobStr+
' EM Shelf Number'+cut_title_addition,
137 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=2,xmin=0,xmax=2)
139 helper.defineHistogram(
'TOBeFEXNumberSh0;h_TOBeFEXNumberShelf0', title=tobStr+
' EM Module Number Shelf 0'+cut_title_addition,
141 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=12,xmin=0,xmax=12)
143 helper.defineHistogram(
'TOBeFEXNumberSh1;h_TOBeFEXNumberShelf1', title=tobStr+
' EM Module Number Shelf 1'+cut_title_addition,
145 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=12,xmin=0,xmax=12)
147 helper.defineHistogram(
'TOBfpga;h_TOBfpga', title=tobStr+
' EM FPGA'+cut_title_addition,
149 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=4,xmin=0,xmax=4)
151 helper.defineHistogram(
'TOBReta;h_TOBReta', title=tobStr+
' EM Reta'+cut_title_addition,
153 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name,xbins=250,xmin=0,xmax=1)
155 helper.defineHistogram(
'TOBRhad;h_TOBRhad', title=tobStr+
' EM Rhad'+cut_title_addition,
157 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=250,xmin=0,xmax=1)
159 helper.defineHistogram(
'TOBWstot;h_TOBWstot', title=tobStr+
' EM Wstot'+cut_title_addition,
161 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=250,xmin=0,xmax=1)
163 threshold_labels = [
'fail',
'loose',
'medium',
'tight']
164 helper.defineHistogram(
'TOBReta_threshold;h_TOBReta_threshold', title=tobStr+
' EM Reta threshold'+cut_title_addition,
166 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name,xbins=4,xmin=0,xmax=4.0,xlabels=threshold_labels)
168 helper.defineHistogram(
'TOBRhad_threshold;h_TOBRhad_threshold', title=tobStr+
' EM Rhad threshold'+cut_title_addition,
170 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=4,xmin=0,xmax=4.0,xlabels=threshold_labels)
172 helper.defineHistogram(
'TOBWstot_threshold;h_TOBWstot_threshold', title=tobStr+
' EM Wstot threshold'+cut_title_addition,
174 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=4,xmin=0,xmax=4.0,xlabels=threshold_labels)
177 for containerKey
in EfexMonAlg.eFexTauTobKeyList:
178 fillGroup = baseGroupName+
'_'+containerKey+
'_'+cut_name
179 tobStr = containerKey
181 helper.defineHistogram(
'nTauTOBs;h_nTauTOBs', title=
'Number of '+tobStr+
's'+cut_title_addition+
';Tau '+tobStr+
's;Number of Tau '+tobStr+
's',
182 fillGroup = fillGroup,
183 type=
'TH1I', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=10,xmin=0,xmax=10)
185 helper.defineHistogram(
'tauTOBTransverseEnergy;h_tauTOBTransverseEnergy', title=tobStr+
' Tau Transverse Energy [MeV]'+cut_title_addition,
186 fillGroup = fillGroup,
187 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=100,xmin=0,xmax=50000)
189 helper.defineHistogram(
'tauTOBEta;h_tauTOBEta', title=tobStr+
' Tau Eta'+cut_title_addition,
190 fillGroup = fillGroup,
191 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=60,xmin=-2.5,xmax=2.5)
193 helper.defineHistogram(
'tauTOBPhi;h_tauTOBPhi', title=tobStr+
' Tau Phi'+cut_title_addition,
194 fillGroup = fillGroup,
195 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=100,xmin=-math.pi,xmax=math.pi)
197 helper.defineHistogram(f
"tauTOBEta,tauTOBPhi;h_{containerKey}_{cut_name}_EtaPhiMap", title=
'eTAU '+tobStr+
' Count'+cut_title_addition+
';#eta;#phi',
198 fillGroup = fillGroup,
199 hanConfig={
"display":
"SetPalette(55)",
200 "description":f
"Inspect for hot/cold spots - check help for list of known hot/coldspots, then check <a href='./detail/h_{containerKey}_{cut_name}_posVsLBN'>detail timeseries</a>. Warning if any deadspots/empty, but could just be low stats",
"algorithm":
"Efex_eTAU_etaThiMapFilled"},
202 path=((
"Expert/Outputs/"+pathFromKey(containerKey,
""))
if "Sim" not in containerKey
and "x" not in containerKey
else (trigPath+pathFromKey(containerKey)+cut_name)),
203 xbins=50,xmin=-2.5,xmax=2.5,ybins=64,ymin=-math.pi,ymax=math.pi,opt=[
'kAlwaysCreate'])
205 if "Sim" not in containerKey
and "x" not in containerKey:
206 helper.defineHistogram(f
"LBN,binNumber;h_{containerKey}_{cut_name}_posVsLBN", title=
'eTAU '+tobStr+
' Count'+cut_title_addition+
';LB;50(y-1)+x',
208 hanConfig={
"description":f
"Timeseries of TOB counts at each location ... y-axis relates to x and y bin numbers from <a href='../h_{containerKey}_{cut_name}_EtaPhiMap'>eta-phi map</a>. Use Projection X1 for 1D plot"},
210 path=
"Expert/Outputs/"+pathFromKey(containerKey,
"")+
"/detail",
211 xbins=1,xmin=0,xmax=10,
212 ybins=64*50,ymin=0.5,ymax=64*50+0.5,opt=[
'kAddBinsDynamically'])
214 helper.defineHistogram(
'tauTOBshelfNumber;h_tauTOBshelfNumber', title=tobStr+
' Tau Shelf Number'+cut_title_addition,
215 fillGroup = fillGroup,
216 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=2,xmin=0,xmax=2)
218 helper.defineHistogram(
'tauTOBeFEXNumberSh0;h_tauTOBeFEXNumberShelf0', title=tobStr+
' Tau Module Number Shelf 0'+cut_title_addition,
219 fillGroup = fillGroup,
220 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=12,xmin=0,xmax=12)
222 helper.defineHistogram(
'tauTOBeFEXNumberSh1;h_tauTOBeFEXNumberShelf1', title=tobStr+
' Tau Module Number Shelf 1'+cut_title_addition,
223 fillGroup = fillGroup,
224 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=12,xmin=0,xmax=12)
227 helper.defineHistogram(
'tauTOBfpga;h_tauTOBfpga', title=tobStr+
' Tau FPGA'+cut_title_addition,
228 fillGroup = fillGroup,
229 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=4,xmin=0,xmax=4)
231 helper.defineHistogram(
'tauTOBRcore;h_tauTOBRcore', title=tobStr+
' Tau rCore'+cut_title_addition,
232 fillGroup = fillGroup,
233 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=250,xmin=0,xmax=1)
235 helper.defineHistogram(
'tauTOBRhad;h_tauTOBRhad', title=tobStr+
' Tau rHad'+cut_title_addition,
236 fillGroup = fillGroup,
237 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=250,xmin=0,xmax=1)
239 helper.defineHistogram(
'tauTOBRcore_threshold;h_tauTOBRcore_threshold', title=tobStr+
' Tau rCore threshold'+cut_title_addition,
240 fillGroup = fillGroup,
241 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=4,xmin=0,xmax=4.0, xlabels=threshold_labels)
243 helper.defineHistogram(
'tauTOBRhad_threshold;h_tauTOBRhad_threshold', title=tobStr+
' Tau rHad threshold'+cut_title_addition,
244 fillGroup = fillGroup,
245 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=4,xmin=0,xmax=4.0, xlabels=threshold_labels)
247 helper.defineHistogram(
'tauTOBthree_threshold;h_tauTOBthree_threshold', title=tobStr+
' Tau 3 taus threshold'+cut_title_addition,
248 fillGroup = fillGroup,
249 type=
'TH1F', path=trigPath+pathFromKey(containerKey)+cut_name, xbins=4,xmin=0,xmax=4.0, xlabels=threshold_labels)
251 acc = helper.result()