8 name: str =
"ActsSeedToTrackAnalysisAlg",
9 **kwargs) -> ComponentAccumulator:
10 acc = ComponentAccumulator()
11 kwargs.setdefault(
"InputSeedCollection",
"")
12 kwargs.setdefault(
"InputTrackParamsCollection",
"")
13 kwargs.setdefault(
"InputDestinyCollection",
"")
15 if flags.Tracking.doTruth:
16 if flags.Detector.EnableITkPixel:
17 kwargs.setdefault(
"PixelTruthAssociationMap",
"ITkPixelClustersToTruthParticles")
18 if flags.Detector.EnableITkStrip:
19 kwargs.setdefault(
"StripTruthAssociationMap",
"ITkStripClustersToTruthParticles")
21 from AthenaMonitoring
import AthMonitorCfgHelper
22 helper = AthMonitorCfgHelper(flags, kwargs[
'InputDestinyCollection'] +
'AnalysisAlgCfg')
24 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SeedToTrackAnalysisAlg, name, **kwargs)
25 destinyTypes = [
'UNKNOWN',
'SUCCEED',
'DUPLICATE',
'FAILURE',
'INCLUSIVE']
26 nTypes = len(destinyTypes)
28 histoPath = f
'/ActsAnalysis/{kwargs["InputDestinyCollection"]}'
30 seedVars = helper.addArray([nTypes], monitoringAlgorithm,
'seedVars', topPath=histoPath)
32 for postfix, tool
in seedVars.Tools.items():
33 layer = destinyTypes[ int(postfix.split(
"_")[1]) ]
34 tool.defineHistogram(f
"eta,bottomR;Eta_Vs_bottomR_{layer}", title=f
"Bottom R vs Eta for {layer}", type=
'TH2F', path=
'2D',
35 xbins=50, xmin=-4.5, xmax=4.5,
36 ybins=320, ymin=0, ymax=320)
37 tool.defineHistogram(f
"eta,middleR;Eta_Vs_middleR_{layer}", title=f
"Middle R vs Eta for {layer}", type=
'TH2F', path=
'2D',
38 xbins=50, xmin=-4.5, xmax=4.5,
39 ybins=320, ymin=0, ymax=320)
40 tool.defineHistogram(f
"eta,topR;Eta_Vs_topR_{layer}", title=f
"Top R vs Eta for {layer}", type=
'TH2F', path=
'2D',
41 xbins=50, xmin=-4.5, xmax=4.5,
42 ybins=320, ymin=0, ymax=320)
44 tool.defineHistogram(f
"deltaR_BT,deltaR_BM;DeltaR_BT_vs_Delta_BM_{layer}", title=f
"Delta Radius BT vs BM for {layer}", type=
'TH2F', path=
'2D',
45 xbins=320, xmin=0, xmax=320,
46 ybins=320, ymin=0, ymax=320)
47 tool.defineHistogram(f
"deltaR_BT,deltaR_MT;DeltaR_BT_vs_Delta_MT_{layer}", title=f
"Delta Radius BT vs MT for {layer}", type=
'TH2F', path=
'2D',
48 xbins=320, xmin=0, xmax=320,
49 ybins=320, ymin=0, ymax=320)
50 tool.defineHistogram(f
"deltaR_BM,deltaR_MT;DeltaR_BM_vs_Delta_MT_{layer}", title=f
"Delta Radius MB vs MT for {layer}", type=
'TH2F', path=
'2D',
51 xbins=320, xmin=0, xmax=320,
52 ybins=320, ymin=0, ymax=320)
54 tool.defineHistogram(f
"bottomZ,bottomR;BottomZR_{layer}", title=f
"Bottom SP ZR for {layer}", type=
'TH2F', path=
'2D',
55 xbins=12000, xmin=-3000, xmax=3000,
56 ybins=1000, ymin=0, ymax=320)
57 tool.defineHistogram(f
"middleZ,middleR;MiddleZR_{layer}", title=f
"Middle SP ZR for {layer}", type=
'TH2F', path=
'2D',
58 xbins=12000, xmin=-3000, xmax=3000,
59 ybins=1000, ymin=0, ymax=320)
60 tool.defineHistogram(f
"topZ,topR;TopZR_{layer}", title=f
"Top SP ZR for {layer}", type=
'TH2F', path=
'2D',
61 xbins=12000, xmin=-3000, xmax=3000,
62 ybins=1000, ymin=0, ymax=320)
64 tool.defineHistogram(f
"cotTheta_BM;cotTheta_BM_{layer}", title=f
"CotTheta bottom-middle for {layer}", type=
'TH1F', path=
'SPVars',
65 xbins=80, xmin=0, xmax=40,
66 ybins=80, ymin=0, ymax=40)
67 tool.defineHistogram(f
"cotTheta_MT;cotTheta_MR_{layer}", title=f
"CotTheta middle-top for {layer}", type=
'TH1F', path=
'SPVars',
68 xbins=80, xmin=0, xmax=40,
69 ybins=80, ymin=0, ymax=40)
70 tool.defineHistogram(f
"cotTheta_BM;cotTheta_BT_{layer}", title=f
"CotTheta bottom-top for {layer}", type=
'TH1F', path=
'SPVars',
71 xbins=80, xmin=0, xmax=40,
72 ybins=80, ymin=0, ymax=40)
74 tool.defineHistogram(f
"deltaCotTheta_BM_MT;deltaCotTheta_BM_MT_{layer}", title=f
"Delta CotTheta bottom-top vs middle-top for {layer}", type=
'TH1F', path=
'SPVars',
75 xbins=80, xmin=-2, xmax=2,
76 ybins=80, ymin=-2, ymax=2)
79 tool.defineHistogram(f
"bottomR,quality;Quality_vs_BottomR_{layer}", title=f
"Seed Bottom Radius Vs Quality for {layer};Bottom SP radius;Quality", type=
'TH2F', path=
'Quality',
80 xbins=320, xmin=0, xmax=320,
81 ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
82 tool.defineHistogram(f
"middleR,quality;Quality_vs_MiddleR_{layer}", title=f
"Seed Middle Radius Vs Quality for {layer};Middle SP radius;Quality", type=
'TH2F', path=
'Quality',
83 xbins=320, xmin=0, xmax=320,
84 ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
85 tool.defineHistogram(f
"topR,quality;Quality_vs_TopR_{layer}", title=f
"Seed Top Radius Vs Quality for {layer};Top SP radius;Quality", type=
'TH2F', path=
'Quality',
86 xbins=320, xmin=0, xmax=320,
87 ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
89 tool.defineHistogram(f
"deltaR_BT,quality;Quality_vs_deltaR_BT_{layer}", title=f
"Seed Bottom Radius Vs Quality for {layer};Bottom SP radius;Quality", type=
'TH2F', path=
'Quality',
90 xbins=320, xmin=0, xmax=320,
91 ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
92 tool.defineHistogram(f
"deltaR_BM,quality;Quality_vs_deltaR_BM_{layer}", title=f
"Seed Bottom Radius Vs Quality for {layer};Bottom SP radius;Quality", type=
'TH2F', path=
'Quality',
93 xbins=320, xmin=0, xmax=320,
94 ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
95 tool.defineHistogram(f
"deltaR_MT,quality;Quality_vs_deltaR_MT_{layer}", title=f
"Seed Bottom Radius Vs Quality for {layer};Bottom SP radius;Quality", type=
'TH2F', path=
'Quality',
96 xbins=320, xmin=0, xmax=320,
97 ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
99 tool.defineHistogram(f
"bottomR,truthProb;Truth_Probability_vs_bottomR_{layer}", title=f
"bottom R vs truth prob. for {layer};R;Truth Prob.", type=
'TH2F', path=
'Quality',
100 xbins=320, xmin=0, xmax=320,
101 ybins=12, ymin=0, ymax=1.2)
102 tool.defineHistogram(f
"middleR,truthProb;Truth_Probability_vs_middleR_{layer}", title=f
"middle R vs truth prob. for {layer};R;Truth Prob.", type=
'TH2F', path=
'Quality',
103 xbins=320, xmin=0, xmax=320,
104 ybins=12, ymin=0, ymax=1.2)
105 tool.defineHistogram(f
"topR,truthProb;Truth_Probability_vs_topR_{layer}", title=f
"top R vs truth prob. for {layer};R;Truth Prob.", type=
'TH2F', path=
'Quality',
106 xbins=320, xmin=0, xmax=320,
107 ybins=12, ymin=0, ymax=1.2)
109 tool.defineHistogram(f
"vtxZ,quality;Quality_vs_vtxZ_{layer}", title=f
"Seed Vtxz Vs Quality for {layer};vtx Z;Quality", type=
'TH2F', path=
'Quality',
110 xbins=100, xmin=-200, xmax=200,
111 ybins=1000, ymin=-rangeQuality, ymax=rangeQuality)
113 tool.defineHistogram(f
"truthProb;Truth_Probability_{layer}", title=f
"Seed Truth Probability for {layer}", type=
"TH1F", path=
'Quality',
114 xbins=12, xmin=0, xmax=1.2)
115 tool.defineHistogram(f
"eta,truthProb;Truth_Probability_vs_Eta_{layer}", title=f
"Seed Truth Probability VS Eta for {layer}", type=
"TH2F", path=
'Quality',
116 xbins=50, xmin=-4.5, xmax=4.5,
117 ybins=12, ymin=0, ymax=1.2)
118 tool.defineHistogram(f
"quality,truthProb;Truth_Probability_vs_Quality_{layer}", title=f
"Seed Truth Probability VS Eta for {layer}", type=
"TH2F", path=
'Quality',
119 xbins=1000, xmin=-rangeQuality, xmax=rangeQuality,
120 ybins=12, ymin=0, ymax=1.2)
122 tool.defineHistogram(f
"deltaR_BT,truthProb;deltaR_BT_vs_Truth_Probability_{layer}", title=f
"Seed Truth Probability for {layer}", type=
"TH2F", path=
'Quality',
123 xbins=320, xmin=0, xmax=320,
124 ybins=12, ymin=0, ymax=1.2)
125 tool.defineHistogram(f
"deltaR_BM,truthProb;deltaR_BM_vs_Truth_Probability_{layer}", title=f
"Seed Truth Probability for {layer}", type=
"TH2F", path=
'Quality',
126 xbins=320, xmin=0, xmax=320,
127 ybins=12, ymin=0, ymax=1.2)
128 tool.defineHistogram(f
"deltaR_MT,truthProb;deltaR_MT_vs_Truth_Probability_{layer}", title=f
"Seed Truth Probability for {layer}", type=
"TH2F", path=
'Quality',
129 xbins=320, xmin=0, xmax=320,
130 ybins=12, ymin=0, ymax=1.2)
132 tool.defineHistogram(f
"eta;Eta_{layer}", title=f
"Eta for {layer}", type=
'TH1F', path=
'SeedVars',
133 xbins=50, xmin=-4.5, xmax=4.5)
134 tool.defineHistogram(f
"pt;Pt_{layer}", title=f
"Pt for {layer}", type=
'TH1F', path=
'SeedVars',
135 xbins=100, xmin=0, xmax=100)
136 tool.defineHistogram(f
"quality;Quality_{layer}", title=f
"Quality for {layer}", type=
'TH1F', path=
'SeedVars',
137 xbins=1000, xmin=-rangeQuality, xmax=rangeQuality)
138 tool.defineHistogram(f
"vtxZ;VtxZ_{layer}", title=f
"Vtx Z for {layer}", type=
'TH1F', path=
'SeedVars',
139 xbins=100, xmin=-200, xmax=200)
141 tool.defineHistogram(f
"bottomX;BottomX_{layer}", title=f
"Bottom X for {layer}", type=
'TH1F', path=
'SPVars',
142 xbins=320, xmin=-320, xmax=320)
143 tool.defineHistogram(f
"bottomY;BottomY_{layer}", title=f
"Bottom Y for {layer}", type=
'TH1F', path=
'SPVars',
144 xbins=320, xmin=-320, xmax=320)
145 tool.defineHistogram(f
"bottomZ;BottomZ_{layer}", title=f
"Bottom Z for {layer}", type=
'TH1F', path=
'SPVars',
146 xbins=500, xmin=-3000, xmax=3000)
147 tool.defineHistogram(f
"bottomR;BottomR_{layer}", title=f
"Bottom Radius for {layer}", type=
'TH1F', path=
'SPVars',
148 xbins=320, xmin=0, xmax=320)
150 tool.defineHistogram(f
"middleX;MiddleX_{layer}", title=f
"Middle X for {layer}", type=
'TH1F', path=
'SPVars',
151 xbins=320, xmin=-320, xmax=320)
152 tool.defineHistogram(f
"middleY;MiddleY_{layer}", title=f
"Middle Y for {layer}", type=
'TH1F', path=
'SPVars',
153 xbins=320, xmin=-320, xmax=320)
154 tool.defineHistogram(f
"middleZ;MiddleZ_{layer}", title=f
"Middle Z for {layer}", type=
'TH1F', path=
'SPVars',
155 xbins=500, xmin=-3000, xmax=3000)
156 tool.defineHistogram(f
"middleR;MiddleR_{layer}", title=f
"Middle Radius for {layer}", type=
'TH1F', path=
'SPVars',
157 xbins=320, xmin=0, xmax=320)
159 tool.defineHistogram(f
"topX;TopX_{layer}", title=f
"Top X for {layer}", type=
'TH1F', path=
'SPVars',
160 xbins=320, xmin=-320, xmax=320)
161 tool.defineHistogram(f
"topY;TopY_{layer}", title=f
"Top Y for {layer}", type=
'TH1F', path=
'SPVars',
162 xbins=320, xmin=-320, xmax=320)
163 tool.defineHistogram(f
"topZ;TopZ_{layer}", title=f
"Top Z for {layer}", type=
'TH1F', path=
'SPVars',
164 xbins=500, xmin=-3000, xmax=3000)
165 tool.defineHistogram(f
"topR;TopR_{layer}", title=f
"Top Radius for {layer}", type=
'TH1F', path=
'SPVars',
166 xbins=320, xmin=0, xmax=320)
168 tool.defineHistogram(f
"deltaR_BT;DeltaR_BT_{layer}", title=f
"Delta Radius between Bottom and Top for {layer}", type=
'TH1F', path=
'SPVars',
169 xbins=320, xmin=0, xmax=320)
170 tool.defineHistogram(f
"deltaR_BM;DeltaR_BM_{layer}", title=f
"Delta Radius between Bottom and Middle for {layer}", type=
'TH1F', path=
'SPVars',
171 xbins=320, xmin=0, xmax=320)
172 tool.defineHistogram(f
"deltaR_MT;DeltaR_MT_{layer}", title=f
"Delta Radius between Middle and Top for {layer}", type=
'TH1F', path=
'SPVars',
173 xbins=320, xmin=0, xmax=320)
175 acc.merge(helper.result())
180 name: str =
"ActsTrackAnalysisAlg",
181 **kwargs) -> ComponentAccumulator:
182 acc = ComponentAccumulator()
184 kwargs.setdefault(
'TracksLocation',
'ActsTracks')
185 kwargs.setdefault(
"MonGroupName", kwargs[
'TracksLocation'])
187 from AthenaMonitoring
import AthMonitorCfgHelper
188 helper = AthMonitorCfgHelper(flags, kwargs[
'TracksLocation'] +
'AnalysisAlgCfg')
190 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.TrackAnalysisAlg, name, **kwargs)
191 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
193 monitoringGroup.defineHistogram(
'Ntracks', title=
'Number of Tracks;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
194 xbins=500, xmin=0, xmax=20000)
196 monitoringGroup.defineHistogram(
'NsharedPerLayer_pixelBarrel', title=
'Number of shared hits per layer - Pixel Barrel;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
197 xbins=5, xmin=0, xmax=5)
198 monitoringGroup.defineHistogram(
'NsharedPerLayer_pixelEndCap', title=
'Number of shared hits per layer - Pixel EndCap;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
199 xbins=9, xmin=0, xmax=9)
200 monitoringGroup.defineHistogram(
'NsharedPerLayer_stripBarrel', title=
'Number of shared hits per layer - Strip Barrel;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
201 xbins=4, xmin=0, xmax=4)
202 monitoringGroup.defineHistogram(
'NsharedPerLayer_stripEndCap', title=
'Number of shared hits per layer - Strip EndCap;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
203 xbins=6, xmin=0, xmax=6)
206 monitoringGroup.defineHistogram(
'theta', title=
'Track polar angle;#theta;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
207 xbins=128, xmin=0, xmax=math.pi)
208 monitoringGroup.defineHistogram(
'eta', title=
'Track eta;#eta;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
209 xbins=128, xmin=-4, xmax=4)
210 monitoringGroup.defineHistogram(
'pt', title=
'Track pR;p_{T};Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
211 xbins=200, xmin=0, xmax=200)
212 monitoringGroup.defineHistogram(
'phi', title=
'Track azimuthal angle;#phi;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
213 xbins=128, xmin=-math.pi, xmax=math.pi)
214 monitoringGroup.defineHistogram(
'qoverp', title=
'track inverse momentum;q/p [1/GeV];Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
215 xbins=200, xmin=-1.2, xmax=1.2)
216 monitoringGroup.defineHistogram(
'chi2OverNdof', title=
'fit chi2 / ndof;#chi^{2}/nDoF;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
217 xbins=100, xmin=0, xmax=20)
218 monitoringGroup.defineHistogram(
'nStates', title=
'Number of states / track;# states;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
219 xbins=60, xmin=0, xmax=60)
220 monitoringGroup.defineHistogram(
'nMeasurements', title=
'Number of measurements / track;# measurements;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
221 xbins=35, xmin=0, xmax=35)
222 monitoringGroup.defineHistogram(
'nShared', title=
'Number of shared hits per track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
223 xbins=35, xmin=0, xmax=35)
224 monitoringGroup.defineHistogram(
'nOutliers', title=
'Number of outliers hits per track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
225 xbins=35, xmin=0, xmax=35)
226 monitoringGroup.defineHistogram(
'nHoles', title=
'Number of holes hits per track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
227 xbins=35, xmin=0, xmax=35)
229 monitoringGroup.defineHistogram(
'nPixelHits', title=
'Number of pixel hits / track;# pixel hits;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
230 xbins=35, xmin=0, xmax=35)
231 monitoringGroup.defineHistogram(
'nStripHits', title=
'Number of strip hits / track;# strip hits;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
232 xbins=35, xmin=0, xmax=35)
233 monitoringGroup.defineHistogram(
'surfaceType', title=
'type of reference surface;type;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
234 xbins=35, xmin=0, xmax=35)
237 monitoringGroup.defineHistogram(
'eta,nMeasurements', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
238 xbins=128, xmin=-4, xmax=4,
239 ybins=35, ymin=0, ymax=35)
240 monitoringGroup.defineHistogram(
'eta,nShared', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
241 xbins=128, xmin=-4, xmax=4,
242 ybins=35, ymin=0, ymax=35)
243 monitoringGroup.defineHistogram(
'eta,nOutliers', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
244 xbins=128, xmin=-4, xmax=4,
245 ybins=35, ymin=0, ymax=35)
246 monitoringGroup.defineHistogram(
'eta,nHoles', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
247 xbins=128, xmin=-4, xmax=4,
248 ybins=35, ymin=0, ymax=35)
249 monitoringGroup.defineHistogram(
'eta,pt', title=
'Track pT vs eta;#eta;p_{T}', type=
'TProfile', path=kwargs[
'MonGroupName'],
250 xbins=128, xmin=-4, xmax=4)
252 acc.merge(helper.result())
256 name: str =
'ActsTrackParticleAnalysisAlg',
257 **kwargs) -> ComponentAccumulator:
258 acc = ComponentAccumulator()
259 kwargs.setdefault(
'MonitorTrackStateCounts',
True)
260 kwargs.setdefault(
'TrackParticleLocation',
'ActsTrackParticles')
262 kwargs.setdefault(
'MonGroupName', kwargs[
'TrackParticleLocation'])
264 from AthenaMonitoring
import AthMonitorCfgHelper
265 helper = AthMonitorCfgHelper(flags,
'TrackParticleAnalysisAlgCfg')
266 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.TrackParticleAnalysisAlg, name, **kwargs)
267 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/'+name+
'/')
269 monitoringGroup.defineHistogram(
'pt', title=
'TrackParticle pt;pt (MeV);Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
270 xbins=100, xmin=0, xmax=10e3)
271 monitoringGroup.defineHistogram(
'eta', title=
'TrackParticle eta;eta;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
272 xbins=50, xmin=-4, xmax=4)
275 monitoringGroup.defineHistogram(
'pixelHits', title=
'Number of pixel hits;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
276 xbins=50, xmin=-1, xmax=49)
277 monitoringGroup.defineHistogram(
'innermostHits', title=
'Number of innermost pixel hits;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
278 xbins=6, xmin=-1, xmax=5)
279 monitoringGroup.defineHistogram(
'nextToInnermostHits', title=
'Number of next-to-innermost pixel hits;N;Entries', type=
'TH1I',
280 path=kwargs[
'MonGroupName'], xbins=6, xmin=-1, xmax=5)
281 monitoringGroup.defineHistogram(
'expectInnermostHit', title=
'Innermost pixel hit expected;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
282 xbins=3, xmin=-1, xmax=2)
283 monitoringGroup.defineHistogram(
'expectNextToInnermostHit', title=
'Next-to-innermost pixel hit expected;N;Entries', type=
'TH1I',
284 path=kwargs[
'MonGroupName'],xbins=3, xmin=-1, xmax=2)
286 if kwargs[
'MonitorTrackStateCounts'] :
291 if 'ExtraInputs' not in kwargs :
292 tracks_name = kwargs[
'TrackParticleLocation']
293 if tracks_name[-len(
'TrackParticles'):] ==
'TrackParticles' :
294 kwargs.setdefault(
'ExtraInputs',{(
'ActsTrk::TrackContainer',tracks_name[:-len(
'TrackParticles')]+
'Tracks')})
296 monitoringGroup.defineHistogram(
'States', title=
'Number of states on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
297 xbins=50, xmin=0, xmax=50)
298 monitoringGroup.defineHistogram(
'Measurements', title=
'Number of measurements on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
299 xbins=50, xmin=0, xmax=50)
300 monitoringGroup.defineHistogram(
'Parameters', title=
'Number of parameters on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
301 xbins=50, xmin=0, xmax=50)
302 monitoringGroup.defineHistogram(
'Outliers', title=
'Number of outliers on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
303 xbins=50, xmin=0, xmax=50)
304 monitoringGroup.defineHistogram(
'Holes', title=
'Number of holes on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
305 xbins=50, xmin=0, xmax=50)
306 monitoringGroup.defineHistogram(
'SharedHits', title=
'Number of shared hits on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
307 xbins=50, xmin=0, xmax=50)
308 monitoringGroup.defineHistogram(
'MaterialStates', title=
'Number of material states on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
309 xbins=50, xmin=0, xmax=50)
310 acc.merge(helper.result())
312 acc.addEventAlgo( CompFactory.ActsTrk.TrackParticleAnalysisAlg(name, **kwargs) )
532 extension: str =
"Acts",
534 ntupleName: str =
"",
535 **kwargs) -> ComponentAccumulator:
536 acc = ComponentAccumulator()
538 isPixel =
'Pixel' in name
539 perp_min = 0
if isPixel
else 300
540 perp_max = 400
if isPixel
else 1100
542 kwargs.setdefault(
'MonGroupName', extension +
'SeedAnalysisAlg')
544 from AthenaMonitoring
import AthMonitorCfgHelper
545 helper = AthMonitorCfgHelper(flags, extension +
'SeedAnalysisAlgCfg')
547 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
548 geoTool = acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags))
549 acc.addPublicTool(geoTool)
552 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
553 converterTool = acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags))
556 from ActsConfig.ActsTrackParamsEstimationConfig
import ActsTrackParamsEstimationToolCfg
557 trackEstimationTool = acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags))
559 kwargs.setdefault(
'TrackingGeometryTool', acc.getPublicTool(geoTool.name))
560 kwargs.setdefault(
'ATLASConverterTool', converterTool)
561 kwargs.setdefault(
'TrackParamsEstimationTool', trackEstimationTool)
563 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SeedAnalysisAlg, name, **kwargs)
564 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
566 monitoringGroup.defineHistogram(
'Nseed', title=
'Number of Seeds;N;Entries', type=
'TH1I', path=f
'{histoPath}',
567 xbins=100, xmin=0, xmax=0)
569 monitoringGroup.defineHistogram(
'z1,r1;zr1', title=
'Bottom SP - Z coordinate vs R;z [mm];r [mm]', type=
'TH2F', path=f
'{histoPath}',
570 xbins=1500, xmin=-3000, xmax=3000,
571 ybins=400, ymin=perp_min, ymax=perp_max)
572 monitoringGroup.defineHistogram(
'z2,r2;zr2', title=
'Middle SP - Z coordinate vs R;z [mm];r [mm]', type=
'TH2F', path=f
'{histoPath}',
573 xbins=1500, xmin=-3000, xmax=3000,
574 ybins=400, ymin=perp_min, ymax=perp_max)
575 monitoringGroup.defineHistogram(
'z3,r3;zr3', title=
'Top SP - Z coordinate vs R;z [mm];r [mm]', type=
'TH2F', path=f
'{histoPath}',
576 xbins=1500, xmin=-3000, xmax=3000,
577 ybins=400, ymin=perp_min, ymax=perp_max)
579 monitoringGroup.defineHistogram(
'x1;x1', title=
'Bottom SP - x coordinate;x [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
580 xbins=100, xmin=-perp_max, xmax=perp_max)
581 monitoringGroup.defineHistogram(
'y1;y1', title=
'Bottom SP - y coordinate;y [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
582 xbins=100, xmin=-perp_max, xmax=perp_max)
583 monitoringGroup.defineHistogram(
'z1;z1', title=
'Bottom SP - z coordinate;z [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
584 xbins=100, xmin=-3000, xmax=3000)
585 monitoringGroup.defineHistogram(
'r1;r1', title=
'Bottom SP - radius coordinate;r [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
586 xbins=100, xmin=perp_min, xmax=perp_max)
588 monitoringGroup.defineHistogram(
'x2;x2', title=
'Middle SP - x coordinate;x [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
589 xbins=100, xmin=-perp_max, xmax=perp_max)
590 monitoringGroup.defineHistogram(
'y2;y2', title=
'Middle SP - y coordinate;y [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
591 xbins=100, xmin=-perp_max, xmax=perp_max)
592 monitoringGroup.defineHistogram(
'z2;z2', title=
'Middle SP - z coordinate;z [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
593 xbins=100, xmin=-3000, xmax=3000)
594 monitoringGroup.defineHistogram(
'r2;r2', title=
'Middle SP - radius coordinate;r [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
595 xbins=100, xmin=perp_min, xmax=perp_max)
597 monitoringGroup.defineHistogram(
'x3;x3', title=
'Top SP - x coordinate;x [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
598 xbins=100, xmin=-perp_max, xmax=perp_max)
599 monitoringGroup.defineHistogram(
'y3;y3', title=
'Top SP - y coordinate;y [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
600 xbins=100, xmin=-perp_max, xmax=perp_max)
601 monitoringGroup.defineHistogram(
'z3;z3', title=
'Top SP - z coordinate;z [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
602 xbins=100, xmin=-3000, xmax=3000)
603 monitoringGroup.defineHistogram(
'r3;r3', title=
'Top SP - radius coordinate;r [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
604 xbins=100, xmin=perp_min, xmax=perp_max)
606 if 'PixelSeeds' in ntupleName:
607 monitoringGroup.defineHistogram(
'pt;pT', title=
'Pt;Pt;Entries;', type=
'TH1F', path=f
'{histoPath}',
608 xbins=100, xmin=0, xmax=100)
609 monitoringGroup.defineHistogram(
'd0;d0', title=
'd0;d0 [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
610 xbins=50, xmin=0, xmax=2)
611 monitoringGroup.defineHistogram(
'eta;Eta', title=
'Pseudo-Rapidity;Pseudo-Rapidity;Entries;', type=
'TH1F', path=f
'{histoPath}',
612 xbins=50, xmin=0, xmax=4.5)
613 monitoringGroup.defineHistogram(
'theta;Theta', title=
'Theta;Theta;Entries;', type=
'TH1F', path=f
'{histoPath}',
614 xbins=50, xmin=0, xmax=1.6)
615 monitoringGroup.defineHistogram(
'penalty;Penalty', title=
'Penalty;Penalty;Entries;', type=
'TH1F', path=f
'{histoPath}',
616 xbins=50, xmin=0, xmax=200)
617 monitoringGroup.defineHistogram(
'dzdr_b;dzdr_b', title=
'dzdr_b;;;', type=
'TH1F', path=f
'{histoPath}',
618 xbins=50, xmin=-30, xmax=30)
619 monitoringGroup.defineHistogram(
'dzdr_t;dzdr_t', title=
'dzdr_t;;;', type=
'TH1F', path=f
'{histoPath}',
620 xbins=50, xmin=-30, xmax=30)
621 elif 'StripSeeds' in ntupleName:
622 monitoringGroup.defineHistogram(
'pt;pT', title=
'Pt;Pt;Entries;', type=
'TH1F', path=f
'{histoPath}',
623 xbins=100, xmin=0, xmax=2300)
624 monitoringGroup.defineHistogram(
'd0;d0', title=
'd0;d0 [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
625 xbins=50, xmin=0, xmax=120)
626 monitoringGroup.defineHistogram(
'eta;Eta', title=
'Pseudo-Rapidity;Pseudo-Rapidity;Entries;', type=
'TH1F', path=f
'{histoPath}',
627 xbins=50, xmin=0, xmax=4.5)
628 monitoringGroup.defineHistogram(
'theta;Theta', title=
'Theta;Theta;Entries;', type=
'TH1F', path=f
'{histoPath}',
629 xbins=50, xmin=0, xmax=1.6)
630 monitoringGroup.defineHistogram(
'penalty;Penalty', title=
'Penalty;Penalty;Entries;', type=
'TH1F', path=f
'{histoPath}',
631 xbins=50, xmin=0, xmax=20000)
632 monitoringGroup.defineHistogram(
'dzdr_b;dzdr_b', title=
'dzdr_b;;;', type=
'TH1F', path=f
'{histoPath}',
633 xbins=50, xmin=-6.5, xmax=6.5)
634 monitoringGroup.defineHistogram(
'dzdr_t;dzdr_t', title=
'dzdr_t;;;', type=
'TH1F', path=f
'{histoPath}',
635 xbins=50, xmin=-6.5, xmax=6.5)
637 if flags.Tracking.doTruth:
638 monitoringGroup.defineHistogram(
'passed,estimated_eta;EfficiencyEta', title=
'Efficiency vs eta;eta;Efficiency', type=
'TEfficiency', path=f
'{histoPath}',
639 xbins=50, xmin=-5, xmax=5)
640 monitoringGroup.defineHistogram(
'passed,estimated_pt;EfficiencyPt', title=
'Efficiency vs pT;pT [GeV];Efficiency', type=
'TEfficiency', path=f
'{histoPath}',
641 xbins=30, xmin=0, xmax=120)
644 list_variables =
"x1,y1,z1,r1,x2,y2,z2,r2,x3,y3,z3,r3,pt,theta,eta,d0,dzdr_b,dzdr_t,penalty,event_number,actual_mu"
645 tree_def =
"x1/vector<double>:y1/vector<double>:z1/vector<double>:r1/vector<double>:x2/vector<double>:y2/vector<double>:z2/vector<double>:r2/vector<double>:x3/vector<double>:y3/vector<double>:z3/vector<double>:r3/vector<double>\
646:pt/vector<float>:theta/vector<float>:eta/vector<float>:d0/vector<float>:dzdr_b/vector<float>:dzdr_t/vector<float>:penalty/vector<float>:event_number/l:actual_mu/F"
647 if flags.Tracking.doTruth:
648 list_variables +=
",truth_barcode,truth_prob"
649 tree_def +=
":truth_barcode/vector<int>:truth_prob/vector<double>"
651 if flags.Acts.doAnalysisNtuples:
652 monitoringGroup.defineTree(f
'{list_variables};{ntupleName}',
656 acc.merge(helper.result())
723 name: str =
"ActsSeedingAlgorithmAnalysis",
724 **kwargs) -> ComponentAccumulator:
725 acc = ComponentAccumulator()
727 addOtherSeedingAlgorithms = kwargs.pop(
"addOtherSeedingAlgorithms",
False)
729 MonitoringGroupNames = []
731 if "SeedingTools" not in kwargs:
732 from InDetConfig.SiSpacePointsSeedToolConfig
import ITkSiSpacePointsSeedMakerCfg
733 ITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ITkSiSpacePointsSeedMakerCfg(flags))
734 ITkSiSpacePointsSeedMaker.maxSize = 1e8
735 MonitoringGroupNames.append(
"ITkSiSpacePointSeedMaker")
737 from ActsConfig.ActsSeedingConfig
import ActsSiSpacePointsSeedMakerToolCfg
740 from ActsConfig.ActsSeedingConfig
import ActsFastPixelSeedingToolCfg
741 seedToolPixel = acc.popToolsAndMerge(ActsFastPixelSeedingToolCfg(flags, doSeedQualitySelection=
False))
743 ActsITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ActsSiSpacePointsSeedMakerToolCfg(flags, SeedToolPixel=seedToolPixel))
744 ActsITkSiSpacePointsSeedMaker.doSeedConversion =
False
745 MonitoringGroupNames.append(
"ActsITkSiSpacePointSeedMaker")
747 if addOtherSeedingAlgorithms:
748 from ActsConfig.ActsSeedingConfig
import ActsPixelGbtsSeedingToolCfg
749 gbtsSeedToolPixel = acc.popToolsAndMerge(ActsPixelGbtsSeedingToolCfg(flags))
752 ActsGbtsITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ActsSiSpacePointsSeedMakerToolCfg(flags,
753 name=
"ActsSiSpacePointsSeedMakerGbts",
754 SeedToolPixel=gbtsSeedToolPixel))
755 ActsGbtsITkSiSpacePointsSeedMaker.doSeedConversion =
False
756 MonitoringGroupNames.append(
"ActsGbtsITkSiSpacePointSeedMaker")
758 from ActsConfig.ActsSeedingConfig
import ActsPixelOrthogonalSeedingToolCfg, ActsStripOrthogonalSeedingToolCfg
759 pixel_orthogonal_seeding_tool = acc.popToolsAndMerge(ActsPixelOrthogonalSeedingToolCfg(flags))
760 strip_orthogonal_seeding_tool = acc.popToolsAndMerge(ActsStripOrthogonalSeedingToolCfg(flags))
761 ActsITkSiSpacePointsSeedMakerOrthogonal = \
762 acc.popToolsAndMerge(ActsSiSpacePointsSeedMakerToolCfg(flags,
763 name=
"ActsSiSpacePointsSeedMakerOrthogonal",
764 SeedToolPixel=pixel_orthogonal_seeding_tool,
765 SeedToolStrip=strip_orthogonal_seeding_tool))
766 ActsITkSiSpacePointsSeedMakerOrthogonal.doSeedConversion =
False
767 MonitoringGroupNames.append(
"ActsOrthogonalITkSiSpacePointSeedMaker")
771 from GaudiKernel.GaudiHandles
import PrivateToolHandleArray
773 privateSeedingTools = [ITkSiSpacePointsSeedMaker, ActsITkSiSpacePointsSeedMaker]
775 if addOtherSeedingAlgorithms:
776 privateSeedingTools.append(ActsGbtsITkSiSpacePointsSeedMaker)
777 privateSeedingTools.append(ActsITkSiSpacePointsSeedMakerOrthogonal)
779 kwargs.setdefault(
"SeedingTools",
780 PrivateToolHandleArray(privateSeedingTools))
782 kwargs.setdefault(
"MonitorNames", MonitoringGroupNames)
783 kwargs.setdefault(
"DoStrip",
not flags.Tracking.doITkFastTracking)
785 from AthenaMonitoring
import AthMonitorCfgHelper
786 helper = AthMonitorCfgHelper(flags,
'SeedingAlgorithmAnalysisAlgCfg')
787 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SeedingAlgorithmAnalysisAlg, name, **kwargs)
789 if flags.Acts.doAnalysisNtuples:
790 for groupName
in MonitoringGroupNames:
791 monitoringGroup = helper.addGroup(monitoringAlgorithm, groupName,
'/'+groupName+
'/')
792 monitoringGroup.defineTree(
'eventNumber,stripSeedInitialisationTime,stripSeedProductionTime,pixelSeedInitialisationTime,pixelSeedProductionTime,numberPixelSpacePoints,numberStripSpacePoints,numberPixelSeeds,numberStripSeeds;seedInformation',
794 treedef=
'eventNumber/I:stripSeedInitialisationTime/F:stripSeedProductionTime/F:pixelSeedInitialisationTime/F:pixelSeedProductionTime/F:numberPixelSpacePoints/I:numberStripSpacePoints/I:numberPixelSeeds/I:numberStripSeeds/I')
796 acc.merge(helper.result())
935 name : str =
"ActsResidualAnalysisAlg",
936 **kwargs) -> ComponentAccumulator:
938 acc = ComponentAccumulator()
940 kwargs.setdefault(
'TrackParticles',
'InDetTrackParticles')
941 kwargs.setdefault(
"MonGroupName", kwargs[
'TrackParticles'])
943 from AthenaMonitoring
import AthMonitorCfgHelper
944 helper = AthMonitorCfgHelper(flags, kwargs[
'TrackParticles'] +
'AnalysisAlgCfg')
946 ResidualMonitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.ITkAlignMonResidualsAlg, name, **kwargs)
948 layersPix = [
'0',
'1',
'2',
'3',
'4']
950 path = f
'/ActsAnalysis/{kwargs["TrackParticles"]}/Residuals'
951 residualXArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm,
'PixResidualX', topPath = path)
952 residualYArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm,
'PixResidualY', topPath = path)
953 pullXArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm,
'PixPullX', topPath = path)
954 pullYArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm,
'PixPullY', topPath = path)
956 layersStrip = [
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8']
957 stripResidualXArray = helper.addArray([len(layersStrip)], ResidualMonitoringAlgorithm,
'StripResidualX', topPath = path)
958 stripPullXArray = helper.addArray([len(layersStrip)], ResidualMonitoringAlgorithm,
'StripPullX', topPath = path)
967 for postfix,tool
in residualXArray.Tools.items():
968 layer = layersPix[int(postfix.split(
"_")[1])]
969 title = (
'UnBiased X Residual Pixel Barrel %s' % layer)
970 name =
'm_pix_residualsx;pix_b' + layer +
'_residualx'
971 tool.defineHistogram(name, title = title, type =
'TH1F',
972 xbins = 100, xmin = xminX, xmax = xmaxX)
975 for postfix,tool
in residualYArray.Tools.items():
976 layer = layersPix[int(postfix.split(
"_")[1])]
977 title = (
'UnBiased Y Residual Pixel Barrel %s' % layer)
978 name =
'm_pix_residualsy;pix_b' + layer +
'_residualy'
979 tool.defineHistogram(name, title = title, type =
'TH1F',
980 xbins = 100, xmin = xminY, xmax = xmaxY)
983 for postfix,tool
in pullXArray.Tools.items():
985 layer = layersPix[int(postfix.split(
"_")[1])]
986 title = (
'UnBiased X Pull Pixel Barrel %s' % layer)
987 name =
'm_pix_pullsx;pix_b' + layer +
'_pullx'
988 tool.defineHistogram(name, title = title, type =
'TH1F',
989 xbins = 100, xmin = -pullX, xmax = pullX)
992 for postfix,tool
in pullYArray.Tools.items():
993 layer = layersPix[int(postfix.split(
"_")[1])]
994 title = (
'UnBiased Y Pull Pixel Barrel %s' % layer)
995 name =
'm_pix_pullsy;pix_b' + layer +
'_pully'
996 tool.defineHistogram(name, title = title, type =
'TH1F',
997 xbins = 100, xmin = -pullX, xmax = pullX)
1001 for postfix,tool
in stripResidualXArray.Tools.items():
1002 layer = layersStrip[int(postfix.split(
"_")[1])]
1003 title = (
'UnBiased X Residual Strip Barrel %s' % layer)
1004 name =
'm_strip_residualsx;strip_b' + layer +
'_residualx'
1005 tool.defineHistogram(name, title = title, type =
'TH1F',
1006 xbins = 100, xmin = xminX, xmax = xmaxX)
1009 for postfix,tool
in stripPullXArray.Tools.items():
1010 layer = layersStrip[int(postfix.split(
"_")[1])]
1011 title = (
'UnBiased X Pull Strip Barrel %s' % layer)
1012 name =
'm_strip_pullsx;strip_b' + layer +
'_pullx'
1013 tool.defineHistogram(name, title = title, type =
'TH1F',
1014 xbins = 100, xmin = -pullX, xmax = pullX)
1016 acc.merge(helper.result())