19def SCTHitEffMonAlgConfig(flags):
20 '''Function to configures some algorithms in the monitoring system.'''
21
24 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
25 result = ComponentAccumulator()
26
27
28
29 from AthenaMonitoring import AthMonitorCfgHelper
30 helper = AthMonitorCfgHelper(flags, 'SCTHitEffMonCfg')
31
32
33
39 from AthenaConfiguration.ComponentFactory import CompFactory
40 from InDetConfig.InDetTrackHoleSearchConfig import (
41 InDetTrackHoleSearchToolCfg)
42 from InDetConfig.SiClusterOnTrackTool_SCTStripConfig import (
43 InDetSCT_ClusterOnTrackToolCfg)
44 from TrkConfig.TrkResidualPullCalculatorConfig import (
45 ResidualPullCalculatorCfg)
46
47 myMonAlg = helper.addAlgorithm(
48 CompFactory.SCTHitEffMonAlg,
49 'SCTHitEffMonAlg',
50 HoleSearch = result.popToolsAndMerge(
51 InDetTrackHoleSearchToolCfg(flags)),
52 ROTCreator = result.popToolsAndMerge(
53 InDetSCT_ClusterOnTrackToolCfg(flags)),
54 ResPullCalc = result.popToolsAndMerge(
55 ResidualPullCalculatorCfg(flags))
56 )
57
58
59
60
61
62
63
64
66 myMonAlg.TriggerChain = ''
67
68
71
72
73 from LumiBlockComps.BunchCrossingCondAlgConfig import BunchCrossingCondAlgCfg
74 result.merge(BunchCrossingCondAlgCfg(flags))
75 from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
76 result.merge(AtlasFieldCacheCondAlgCfg(flags))
77 from SCT_ConditionsAlgorithms.SCT_ConditionsAlgorithmsConfig import SCT_DetectorElementCondAlgCfg
78 result.merge(SCT_DetectorElementCondAlgCfg(flags))
79
80
81
82
83 from ROOT import SCT_Monitoring as sctMon
84
85 myMonGroup = [
86 helper.addGroup(
87 myMonAlg,
88 "SCTHitEffMonitorEC",
89 "SCT/SCTEC/"
90 ),
91 helper.addGroup(
92 myMonAlg,
93 "SCTHitEffMonitorB",
94 "SCT/SCTB/"
95 ),
96 helper.addGroup(
97 myMonAlg,
98 "SCTHitEffMonitorEA",
99 "SCT/SCTEA/"
100 ),
101 helper.addGroup(
102 myMonAlg,
103 "SCTHitEffMonitor",
104 "SCT/GENERAL/"
105 )
106 ]
107
108
110
111
112 subDetName = []
113 for i in range(len(sctMon.subDetName)):
114 subDetName.append(sctMon.subDetName[i].
Data())
115
116 mapName = ["m_eff_", "eff_", "p_eff_"]
117 ineffmapName = ["ineffm_", "ineff_", "ineffp_"]
118
119 sumEff = ["summaryeffm", "summaryeff", "summaryeffp"]
120 sumEffTitle = ["Summary Module Efficiency in Endcap C",
121 "Summary Module Efficiency in Barrel",
122 "Summary Module Efficiency in Endcap A"]
123
124 limit = [sctMon.N_DISKS*2, sctMon.N_BARRELS*2, sctMon.N_DISKS*2]
125
126
127 myMonGroup[sctMon.GENERAL_INDEX].defineHistogram(varname= "isub, eff;" + "SctTotalEff",
128 type= "TProfile",
129 title= "SCT Total Efficiency",
130 path="eff",
131 xbins=sctMon.N_REGIONS,
132 xmin=0.,
133 xmax=sctMon.N_REGIONS,
134 xlabels=subDetName,
135 opt='kAlwaysCreate')
136
137 myMonGroup[sctMon.GENERAL_INDEX].defineHistogram(varname= "isub, eff;" + "SctTotalEffBCID",
138 type= "TProfile",
139 title= "SCT Total Efficiency for First BCID",
140 path="eff",
141 xbins=sctMon.N_REGIONS,
142 xmin=0.,
143 xmax=sctMon.N_REGIONS,
144 xlabels=subDetName,
145 cutmask="isFirstBCID",
146 opt='kAlwaysCreate')
147
148 myMonGroup[sctMon.GENERAL_INDEX].defineHistogram(varname= "sideHash, eff;" + "effHashCode",
149 type= "TProfile",
150 title= "Efficiency vs module Hash code" + ";Module Hash Code;Efficiency",
151 path="eff",
152 xbins=sctMon.n_mod[sctMon.GENERAL_INDEX] * 2,
153 xmin=-0.5,
154 xmax=sctMon.n_mod[sctMon.GENERAL_INDEX] * 2 -0.5,
155 opt='kAlwaysCreate')
156
157 myMonGroup[sctMon.GENERAL_INDEX].defineHistogram(varname= "LumiBlock, eff;" + "effLumiBlock",
158 type= "TProfile",
159 title= "Efficiency vs Luminosity block"+";;Efficiency",
160 path="eff",
161 xbins=sctMon.NBINS_LBs,
162 xmin=0.5,
163 xmax=sctMon.NBINS_LBs + 0.5,
164 opt='kAlwaysCreate')
165
166
174
175
176 for isub in range(sctMon.N_REGIONS):
177 profileLabels = list(range(limit[isub]))
178 for k in range(limit[isub]):
179 profileLabels[k] = dedicatedTitle(k, isub)
180
181 myMonGroup[isub].defineHistogram(varname= "layerPlusHalfSide, eff;" + sumEff[isub],
182 type= "TProfile",
183 title= sumEffTitle[isub]+ ";;Efficiency",
184 path="eff",
185 xbins=2*sctMon.n_layers[isub],
186 xmin=0.,
187 xmax=sctMon.n_layers[isub],
188 xlabels=profileLabels,
189 opt='kAlwaysCreate')
190
191 myMonGroup[isub].defineHistogram(varname= "layerPlusHalfSide, eff;" + sumEff[isub] + "BCID",
192 type= "TProfile",
193 title= sumEffTitle[isub]+" for First BC" + ";;Efficiency",
194 path="eff",
195 xbins=2*sctMon.n_layers[isub],
196 xmin=0.,
197 xmax=sctMon.n_layers[isub],
198 xlabels=profileLabels,
199 cutmask="isFirstBCID",
200 opt='kAlwaysCreate')
201
202 myMonGroup[isub].defineHistogram(varname= "LumiBlock, eff;"+"effLumiBlock",
203 type= "TProfile",
204 title= "Efficiency vs Luminosity block in "+subDetName[isub]+";Luminosity block"+";Efficiency",
205 path="eff",
206 xbins=sctMon.NBINS_LBs,
207 xmin=0.5,
208 xmax=sctMon.NBINS_LBs + 0.5,
209 opt='kAlwaysCreate')
210
211
212 for layer_disk in range(sctMon.n_layers[isub]):
213 for side in range(2):
214 etaPhiSuffix = "_" + str(layer_disk) + "_" + str(side)
215 effName = mapName[isub] + str(layer_disk) + "_" + str(side)
216 ineffName = ineffmapName[isub] + str(layer_disk) + "_" + str(side)
217
218 myMonGroup[isub].defineHistogram(varname="ieta" + etaPhiSuffix + ",iphi" + etaPhiSuffix + ",eff;" + effName,
219 type= "TProfile2D",
220 title=
"Hit efficiency of" + sctMon.layerName[isub].
Data() + str(layer_disk) +
" / side " + str(side) +
" in " + subDetName[isub] +
";Index in the direction of #eta;Index in the direction of #phi",
221 path="eff",
222 xbins=sctMon.n_etabins[isub], xmin=sctMon.f_etabin[isub] - .5, xmax=sctMon.l_etabin[isub] + .5,
223 ybins=sctMon.n_phibins[isub], ymin=sctMon.f_phibin[isub] - .5, ymax=sctMon.l_phibin[isub] + .5,
224 opt='kAlwaysCreate')
225
226 myMonGroup[isub].defineHistogram(varname="ieta" + etaPhiSuffix + ",iphi" + etaPhiSuffix + ",eff;" + effName + "_bcid",
227 type= "TProfile2D",
228 title=
"Hit efficiency of" + sctMon.layerName[isub].
Data() + str(layer_disk) +
" / side " + str(side) +
" in " + subDetName[isub] +
" for first BCID" +
";Index in the direction of #eta;Index in the direction of #phi",
229 path="eff",
230 xbins=sctMon.n_etabins[isub], xmin=sctMon.f_etabin[isub] - .5, xmax=sctMon.l_etabin[isub] + .5,
231 ybins=sctMon.n_phibins[isub], ymin=sctMon.f_phibin[isub] - .5, ymax=sctMon.l_phibin[isub] + .5,
232 cutmask="isFirstBCID",
233 opt='kAlwaysCreate')
234
235 myMonGroup[isub].defineHistogram(varname="ieta" + etaPhiSuffix + ",iphi" + etaPhiSuffix + ",ineff;" + ineffName,
236 type= "TProfile2D",
237 title=
"Hit inefficiency of" + sctMon.layerName[isub].
Data() + str(layer_disk) +
" / side " + str(side) +
" in " + subDetName[isub] +
";Index in the direction of #eta;Index in the direction of #phi",
238 path="eff",
239 xbins=sctMon.n_etabins[isub], xmin=sctMon.f_etabin[isub] - .5, xmax=sctMon.l_etabin[isub] + .5,
240 ybins=sctMon.n_phibins[isub], ymin=sctMon.f_phibin[isub] - .5, ymax=sctMon.l_phibin[isub] + .5,
241 opt='kAlwaysCreate')
242
243
244 result.merge(helper.result())
245 return result
246