3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
8 name: str =
"ActsSeedToTrackAnalysisAlg",
9 **kwargs) -> 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:
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:
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) )
316 name: str =
"ActsHgtdClusterAnalysisAlg",
317 **kwargs) -> ComponentAccumulator:
318 if flags.HGTD.Geometry.useGeoModelXml:
319 from HGTD_GeoModelXml.HGTD_GeoModelConfig
import HGTD_ReadoutGeometryCfg
321 from HGTD_GeoModel.HGTD_GeoModelConfig
import HGTD_ReadoutGeometryCfg
324 kwargs.setdefault(
"MonGroupName",
"ActsHgtdClusters")
326 from AthenaMonitoring
import AthMonitorCfgHelper
327 helper = AthMonitorCfgHelper(flags,
'ActsHgtdClusterAnalysisAlgCfg')
329 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.HgtdClusterAnalysisAlg, name, **kwargs)
330 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
332 path =
"ActsHgtdClusters"
333 monitoringGroup.defineHistogram(
'localX,localY;h_localXY', title=
"h_localXY; x [mm]; y [mm]", type=
"TH2F", path=path,
334 xbins=20, xmin=-30, xmax=30,
335 ybins=20, ymin=-30, ymax=30)
336 monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=path,
337 xbins=100, xmin=-750, xmax=750,
338 ybins=100, ymin=-750, ymax=750)
339 monitoringGroup.defineHistogram(
'globalZ,globalR;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=path,
340 xbins=100, xmin=-3600, xmax=3600,
341 ybins=100, ymin=0, ymax=800)
342 if flags.Acts.doAnalysisNtuples:
343 monitoringGroup.defineTree(
'localX,localY,localT,localCovXX,localCovYY,localCovTT,globalX,globalY,globalZ,globalR,eta;HgtdClusters',
345 treedef=
'localX/vector<float>:localY/vector<float>:localT/vector<float>:localCovXX/vector<float>:localCovYY/vector<float>:localCovTT/vector<float>:globalX/vector<float>:globalY/vector<float>:globalZ/vector<float>:globalR/vector<float>:eta/vector<float>')
347 acc.merge(helper.result())
351 name: str =
"ActsPixelClusterAnalysisAlg",
352 extension: str =
"Acts",
353 **kwargs) -> ComponentAccumulator:
354 path = extension.replace(
"Acts",
"") +
"PixelClusters"
356 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
359 kwargs.setdefault(
"MonGroupName", extension +
"ClusterAnalysisAlg")
361 from AthenaMonitoring
import AthMonitorCfgHelper
362 helper = AthMonitorCfgHelper(flags, extension +
'ClusterAnalysisAlgCfg')
364 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.PixelClusterAnalysisAlg, name, **kwargs)
365 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
367 monitoringGroup.defineHistogram(
'globalZ,perp;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=path,
368 xbins=1500, xmin=-3000, xmax=3000,
369 ybins=400, ymin=0, ymax=400)
370 monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=path,
371 xbins=800, xmin=-400, xmax=400,
372 ybins=800, ymin=-400, ymax=400)
373 monitoringGroup.defineHistogram(
'eta;h_etaCluster', title=
"h_etaCluster; cluster #eta", type=
"TH1F", path=path,
374 xbins=100, xmin=-5, xmax=5)
376 if flags.Acts.doAnalysisNtuples:
377 monitoringGroup.defineTree(
'barrelEndcap,layerDisk,phiModule,etaModule,isInnermost,isNextToInnermost,eta,globalX,globalY,globalZ,perp,localX,localY,localCovXX,localCovYY,sizeX,sizeY,widthY;PixelClusters',
379 treedef=
'barrelEndcap/vector<int>:layerDisk/vector<int>:phiModule/vector<int>:etaModule/vector<int>:isInnermost/vector<int>:isNextToInnermost/vector<int>:eta/vector<double>:globalX/vector<float>:globalY/vector<float>:globalZ/vector<float>:perp/vector<float>:localX/vector<float>:localY/vector<float>:localCovXX/vector<float>:localCovYY/vector<float>:sizeX/vector<int>:sizeY/vector<int>:widthY/vector<float>')
381 acc.merge(helper.result())
386 name: str =
"ActsStripClusterAnalysisAlg",
387 extension: str =
"Acts",
388 **kwargs) -> ComponentAccumulator:
389 path = extension.replace(
"Acts",
"") +
"StripClusters"
391 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
394 kwargs.setdefault(
"MonGroupName", extension +
"ClusterAnalysisAlg")
396 from AthenaMonitoring
import AthMonitorCfgHelper
397 helper = AthMonitorCfgHelper(flags, extension +
"ClusterAnalysisAlgCfg")
399 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.StripClusterAnalysisAlg, name, **kwargs)
400 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
402 monitoringGroup.defineHistogram(
'globalZ,perp;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=path,
403 xbins=1500, xmin=-3000, xmax=3000,
404 ybins=400, ymin=300, ymax=1100)
405 monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=path,
406 xbins=1600, xmin=-1100, xmax=1100,
407 ybins=1600, ymin=-1100, ymax=1100)
408 monitoringGroup.defineHistogram(
'eta;h_etaCluster', title=
"h_etaCluster; cluster #eta", type=
"TH1F", path=path,
409 xbins=100, xmin=-5, xmax=5)
411 if flags.Acts.doAnalysisNtuples:
412 monitoringGroup.defineTree(f
'barrelEndcap,layerDisk,phiModule,etaModule,sideModule,eta,globalX,globalY,globalZ,perp,localX,localCovXX,sizeX;{path}',
414 treedef=
'barrelEndcap/vector<int>:layerDisk/vector<int>:phiModule/vector<int>:etaModule/vector<int>:sideModule/vector<int>:eta/vector<double>:globalX/vector<float>:globalY/vector<float>:globalZ/vector<float>:perp/vector<float>:localX/vector<float>:localCovXX/vector<float>:sizeX/vector<int>')
416 acc.merge(helper.result())
421 extension: str =
"Acts",
424 **kwargs) -> ComponentAccumulator:
425 isPixel =
'Pixel' in name
426 perp_min = 0
if isPixel
else 300
427 perp_max = 400
if isPixel
else 1100
430 from AthenaMonitoring
import AthMonitorCfgHelper
431 helper = AthMonitorCfgHelper(flags, extension +
'SpacePointAnalysisAlgCfg')
433 kwargs.setdefault(
"MonGroupName", extension +
"SpacePointAnalysisAlg")
435 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SpacePointAnalysisAlg, name, **kwargs)
436 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
439 monitoringGroup.defineHistogram(
'Nsp;h_Nsp', title=
"Number of Space Points;N;Entries", type=
"TH1I", path=f
"{histoPath}",
440 xbins=100, xmin=0, xmax=0)
442 monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=f
"{histoPath}",
443 xbins=800, xmin=-perp_max, xmax=perp_max,
444 ybins=800, ymin=-perp_max, ymax=perp_max)
445 monitoringGroup.defineHistogram(
'globalZ,perp;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=f
"{histoPath}",
446 xbins=1500, xmin=-3000, xmax=3000,
447 ybins=400, ymin=perp_min, ymax=perp_max)
448 monitoringGroup.defineHistogram(
'eta;h_etaSpacePoint', title=
"h_etaSpacePoint; space point #eta", type=
"TH1F", path=f
"{histoPath}",
449 xbins=100, xmin=-5, xmax=5)
451 if flags.Acts.doAnalysisNtuples:
452 monitoringGroup.defineTree(f
'barrelEndcap,layerDisk,phiModule,etaModule,sideModule,isInnermost,isNextToInnermost,isOverlap,eta,globalX,globalY,globalZ,perp,globalCovR,globalCovZ;{ntupleName}',
454 treedef=
'barrelEndcap/vector<int>:layerDisk/vector<int>:phiModule/vector<int>:etaModule/vector<int>:sideModule/vector<int>:isInnermost/vector<int>:isNextToInnermost/vector<int>:isOverlap/vector<int>:eta/vector<double>:globalX/vector<double>:globalY/vector<double>:globalZ/vector<double>:perp/vector<double>:globalCovR/vector<double>:globalCovZ/vector<double>')
456 acc.merge(helper.result())
460 name: str =
"ActsPixelSpacePointAnalysisAlg",
461 extension: str =
"Acts",
462 **kwargs) -> ComponentAccumulator:
465 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
468 kwargs.setdefault(
"SpacePointContainerKey",
"ITkPixelSpacePoints")
469 kwargs.setdefault(
"UsePixel",
True)
470 kwargs.setdefault(
"UseOverlap",
False)
471 kwargs.setdefault(
'ExtraInputs',
472 [(
'xAOD::SpacePointContainer' , f
'StoreGateSvc+{kwargs["SpacePointContainerKey"]}.measurements')])
476 extension = extension,
477 histoPath = extension.replace(
"Acts",
"") +
"PixelSpacePoints",
478 ntupleName = extension.replace(
"Acts",
"") +
"PixelSpacePoints",
485 name: str =
"ActsStripSpacePointAnalysisAlg",
486 extension: str =
"Acts",
487 **kwargs) -> ComponentAccumulator:
490 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
493 kwargs.setdefault(
"SpacePointContainerKey",
"ITkStripSpacePoints")
494 kwargs.setdefault(
"UsePixel",
False)
495 kwargs.setdefault(
"UseOverlap",
False)
496 kwargs.setdefault(
'ExtraInputs',
497 [(
'xAOD::SpacePointContainer' , f
'StoreGateSvc+{kwargs["SpacePointContainerKey"]}.measurements')])
501 extension = extension,
502 histoPath = extension.replace(
"Acts",
"") +
"StripSpacePoints",
503 ntupleName = extension.replace(
"Acts",
"") +
"StripSpacePoints",
509 name: str =
"ActsStripOverlapSpacePointAnalysisAlg",
510 extension: str =
"Acts",
511 **kwargs) -> ComponentAccumulator:
512 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
515 kwargs.setdefault(
"SpacePointContainerKey",
"ITkStripOverlapSpacePoints")
516 kwargs.setdefault(
"UsePixel",
False)
517 kwargs.setdefault(
"UseOverlap",
True)
518 kwargs.setdefault(
'ExtraInputs',
519 [(
'xAOD::SpacePointContainer' , f
'StoreGateSvc+{kwargs["SpacePointContainerKey"]}.measurements')])
523 extension = extension,
524 histoPath = extension.replace(
"Acts",
"") +
"StripOverlapSpacePoints",
525 ntupleName = extension.replace(
"Acts",
"") +
"StripOverlapSpacePoints",
532 extension: str =
"Acts",
534 ntupleName: str =
"",
535 **kwargs) -> 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
549 acc.addPublicTool(geoTool)
552 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
556 from ActsConfig.ActsTrackParamsEstimationConfig
import ActsTrackParamsEstimationToolCfg
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())
662 name: str =
"ActsPixelSeedAnalysisAlg",
663 extension: str =
"Acts",
664 **kwargs) -> ComponentAccumulator:
665 kwargs.setdefault(
'InputSeedCollection',
'ActsPixelSeeds')
667 if flags.Tracking.doTruth:
668 kwargs.setdefault(
'DetectorElements',
'ITkPixelDetectorElementCollection')
669 kwargs.setdefault(
'ITkClustersTruth',
'')
674 histoPath = extension.replace(
"Acts",
"") +
'PixelSeeds',
675 ntupleName = extension.replace(
"Acts",
"") +
'PixelSeeds',
680 name: str =
"ActsStripSeedAnalysisAlg",
681 extension: str =
"Acts",
682 **kwargs) -> ComponentAccumulator:
683 kwargs.setdefault(
'InputSeedCollection',
'ActsStripSeeds')
684 kwargs.setdefault(
'UsePixel',
False)
686 if flags.Tracking.doTruth:
687 kwargs.setdefault(
'DetectorElements',
'ITkStripDetectorElementCollection')
688 kwargs.setdefault(
'ITkClustersTruth',
'')
693 histoPath = extension.replace(
"Acts",
"") +
'StripSeeds',
694 ntupleName = extension.replace(
"Acts",
"") +
'StripSeeds',
700 extension: str =
"Acts",
702 ntupleName: str =
"",
703 **kwargs) -> ComponentAccumulator:
704 from AthenaMonitoring
import AthMonitorCfgHelper
705 helper = AthMonitorCfgHelper(flags,extension +
'EstimatedTrackParamsAnalysisAlgCfg')
707 kwargs.setdefault(
'MonGroupName', extension +
'SeedAnalysisAlg')
709 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.EstimatedTrackParamsAnalysisAlg, name, **kwargs)
710 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
712 monitoringGroup.defineHistogram(
'Nparams', title=
'Number of Estimated Parameters from Seeds;N;Entries', type=
'TH1I', path=f
'{histoPath}',
713 xbins=100, xmin=0, xmax=0)
715 if flags.Acts.doAnalysisNtuples:
716 monitoringGroup.defineTree(f
"track_param_pt,track_param_eta,track_param_phi,track_param_loc0,track_param_loc1,track_param_theta,track_param_qoverp,track_param_time,track_param_charge;{ntupleName}",
718 treedef=
"track_param_pt/vector<double>:track_param_eta/vector<double>:track_param_phi/vector<double>:track_param_loc0/vector<double>:track_param_loc1/vector<double>:track_param_theta/vector<double>:track_param_qoverp/vector<double>:track_param_time/vector<double>:track_param_charge/vector<int>")
720 return helper.result()
723 name: str =
"ActsSeedingAlgorithmAnalysis",
724 **kwargs) -> ComponentAccumulator:
727 addOtherSeedingAlgorithms = kwargs.pop(
"addOtherSeedingAlgorithms",
False)
729 MonitoringGroupNames = []
731 if "SeedingTools" not in kwargs:
732 from InDetConfig.SiSpacePointsSeedToolConfig
import ITkSiSpacePointsSeedMakerCfg
734 ITkSiSpacePointsSeedMaker.maxSize = 1e8
735 MonitoringGroupNames.append(
"ITkSiSpacePointSeedMaker")
737 from ActsConfig.ActsSeedingConfig
import ActsSiSpacePointsSeedMakerToolCfg
740 from ActsConfig.ActsSeedingConfig
import ActsFastPixelSeedingToolCfg
744 ActsITkSiSpacePointsSeedMaker.doSeedConversion =
False
745 MonitoringGroupNames.append(
"ActsITkSiSpacePointSeedMaker")
747 if addOtherSeedingAlgorithms:
748 from ActsConfig.ActsSeedingConfig
import ActsPixelGbtsSeedingToolCfg
753 name=
"ActsSiSpacePointsSeedMakerGbts",
754 SeedToolPixel=gbtsSeedToolPixel))
755 ActsGbtsITkSiSpacePointsSeedMaker.doSeedConversion =
False
756 MonitoringGroupNames.append(
"ActsGbtsITkSiSpacePointSeedMaker")
758 from ActsConfig.ActsSeedingConfig
import ActsPixelOrthogonalSeedingToolCfg, ActsStripOrthogonalSeedingToolCfg
761 ActsITkSiSpacePointsSeedMakerOrthogonal = \
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())
801 name: str =
'ActsPixelEstimatedTrackParamsAnalysisAlg',
802 extension: str =
"Acts",
803 **kwargs) -> ComponentAccumulator:
804 kwargs.setdefault(
'InputTrackParamsCollection',
'ActsPixelEstimatedTrackParams')
808 histoPath = extension.replace(
"Acts",
"") +
'PixelEstimatedTrackParams',
809 ntupleName = extension.replace(
"Acts",
"") +
'PixelEstimatedTrackParams',
814 name: str =
'ActsStripEstimatedTrackParamsAnalysisAlg',
815 extension: str =
"Acts",
816 **kwargs) -> ComponentAccumulator:
817 kwargs.setdefault(
'InputTrackParamsCollection',
'ActsStripEstimatedTrackParams')
821 histoPath = extension.replace(
"Acts",
"") +
'StripEstimatedTrackParams',
822 ntupleName = extension.replace(
"Acts",
"") +
'StripEstimatedTrackParams',
828 **kwargs) -> ComponentAccumulator:
831 if 'ExtrapolationTool' not in kwargs:
832 from ActsConfig.ActsGeometryConfig
import ActsExtrapolationToolCfg
838 if 'TrackingGeometryTool' not in kwargs:
839 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
841 'TrackingGeometryTool',
845 if 'ATLASConverterTool' not in kwargs:
846 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
849 if 'TrackParamsEstimationTool' not in kwargs:
850 from ActsConfig.ActsTrackParamsEstimationConfig
import ActsTrackParamsEstimationToolCfg
853 kwargs.setdefault(
"autoReverseSearch", flags.Acts.autoReverseSearchCKF)
855 acc.addEventAlgo(CompFactory.ActsTrk.SeedsToTrackParamsAlg(name, **kwargs))
859 name: str =
'ActsPixelSeedsToTrackParamsAlg',
860 extension: str =
"Acts",
861 **kwargs) -> ComponentAccumulator:
862 kwargs.setdefault(
'InputSeedContainerKey',
'ActsPixelSeeds')
863 kwargs.setdefault(
'DetectorElementsKey',
'ITkPixelDetectorElementCollection')
864 kwargs.setdefault(
'OutputTrackParamsCollectionKey',
'ActsPixelEstimatedTrackParams')
871 name: str =
'ActsStripSeedsToTrackParamsAlgCfg',
872 extension: str =
"Acts",
873 **kwargs) -> ComponentAccumulator:
874 kwargs.setdefault(
'InputSeedContainerKey',
'ActsStripSeeds')
875 kwargs.setdefault(
'DetectorElementsKey',
'ITkStripDetectorElementCollection')
876 kwargs.setdefault(
'OutputTrackParamsCollectionKey',
'ActsStripEstimatedTrackParams')
883 name: str =
'PhysValActs',
884 **kwargs) -> ComponentAccumulator:
888 typedCollections = flags.Input.TypedCollections
889 for col
in typedCollections:
890 col_type, col_name = col.split(
"#")
891 if col_type ==
"xAOD::PixelClusterContainer":
892 kwargs.setdefault(
"doPixelClusters",
True)
893 elif col_type ==
"xAOD::StripClusterContainer":
894 kwargs.setdefault(
"doStripClusters",
True)
895 elif col_type ==
"xAOD::HGTDClusterContainer":
896 kwargs.setdefault(
"doHgtdClusters", flags.PhysVal.IDPVM.doHGTD)
897 elif col_type ==
"xAOD::SpacePointContainer":
898 if 'Pixel' in col_name:
899 kwargs.setdefault(
"doPixelSpacePoints",
True)
900 elif 'Strip' in col_name:
901 kwargs.setdefault(
"doStripSpacePoints",
True)
902 kwargs.setdefault(
"doStripOverlapSpacePoints",
True)
904 acc.setPrivateTools(CompFactory.ActsTrk.PhysValTool(name=name,
910 if flags.Detector.EnableITkPixel:
912 if flags.Detector.EnableITkStrip:
919 if flags.Detector.EnableITkPixel:
921 if flags.Detector.EnableITkStrip:
928 if flags.Detector.EnableITkPixel:
930 if flags.Detector.EnableITkStrip:
935 name : str =
"ActsResidualAnalysisAlg",
936 **kwargs) -> 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())