3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
7 name: str =
"ActsTrackAnalysisAlg",
8 **kwargs) -> ComponentAccumulator:
11 kwargs.setdefault(
'TracksLocation',
'ActsTracks')
12 kwargs.setdefault(
"MonGroupName", kwargs[
'TracksLocation'])
14 from AthenaMonitoring
import AthMonitorCfgHelper
15 helper = AthMonitorCfgHelper(flags, kwargs[
'TracksLocation'] +
'AnalysisAlgCfg')
17 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.TrackAnalysisAlg, name, **kwargs)
18 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
20 monitoringGroup.defineHistogram(
'Ntracks', title=
'Number of Tracks;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
21 xbins=500, xmin=0, xmax=20000)
23 monitoringGroup.defineHistogram(
'NsharedPerLayer_pixelBarrel', title=
'Number of shared hits per layer - Pixel Barrel;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
24 xbins=5, xmin=0, xmax=5)
25 monitoringGroup.defineHistogram(
'NsharedPerLayer_pixelEndCap', title=
'Number of shared hits per layer - Pixel EndCap;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
26 xbins=9, xmin=0, xmax=9)
27 monitoringGroup.defineHistogram(
'NsharedPerLayer_stripBarrel', title=
'Number of shared hits per layer - Strip Barrel;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
28 xbins=4, xmin=0, xmax=4)
29 monitoringGroup.defineHistogram(
'NsharedPerLayer_stripEndCap', title=
'Number of shared hits per layer - Strip EndCap;Layer;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
30 xbins=6, xmin=0, xmax=6)
33 monitoringGroup.defineHistogram(
'theta', title=
'Track polar angle;#theta;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
34 xbins=128, xmin=0, xmax=math.pi)
35 monitoringGroup.defineHistogram(
'eta', title=
'Track eta;#eta;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
36 xbins=128, xmin=-4, xmax=4)
37 monitoringGroup.defineHistogram(
'phi', title=
'Track azimuthal angle;#phi;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
38 xbins=128, xmin=-math.pi, xmax=math.pi)
39 monitoringGroup.defineHistogram(
'qoverp', title=
'track inverse momentum;q/p [1/GeV];Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
40 xbins=200, xmin=-1.2, xmax=1.2)
41 monitoringGroup.defineHistogram(
'chi2OverNdof', title=
'fit chi2 / ndof;#chi^{2}/nDoF;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
42 xbins=100, xmin=0, xmax=20)
43 monitoringGroup.defineHistogram(
'nStates', title=
'Number of states / track;# states;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
44 xbins=60, xmin=0, xmax=60)
45 monitoringGroup.defineHistogram(
'nMeasurements', title=
'Number of measurements / track;# measurements;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
46 xbins=35, xmin=0, xmax=35)
47 monitoringGroup.defineHistogram(
'nShared', title=
'Number of shared hits per track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
48 xbins=35, xmin=0, xmax=35)
49 monitoringGroup.defineHistogram(
'nOutliers', title=
'Number of outliers hits per track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
50 xbins=35, xmin=0, xmax=35)
51 monitoringGroup.defineHistogram(
'nHoles', title=
'Number of holes hits per track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
52 xbins=35, xmin=0, xmax=35)
54 monitoringGroup.defineHistogram(
'nPixelHits', title=
'Number of pixel hits / track;# pixel hits;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
55 xbins=35, xmin=0, xmax=35)
56 monitoringGroup.defineHistogram(
'nStripHits', title=
'Number of strip hits / track;# strip hits;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
57 xbins=35, xmin=0, xmax=35)
58 monitoringGroup.defineHistogram(
'surfaceType', title=
'type of reference surface;type;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
59 xbins=35, xmin=0, xmax=35)
62 monitoringGroup.defineHistogram(
'eta,nMeasurements', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
63 xbins=128, xmin=-4, xmax=4,
64 ybins=35, ymin=0, ymax=35)
65 monitoringGroup.defineHistogram(
'eta,nShared', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
66 xbins=128, xmin=-4, xmax=4,
67 ybins=35, ymin=0, ymax=35)
68 monitoringGroup.defineHistogram(
'eta,nOutliers', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
69 xbins=128, xmin=-4, xmax=4,
70 ybins=35, ymin=0, ymax=35)
71 monitoringGroup.defineHistogram(
'eta,nHoles', title=
'Track eta;#eta;Entries', type=
'TH2F', path=kwargs[
'MonGroupName'],
72 xbins=128, xmin=-4, xmax=4,
73 ybins=35, ymin=0, ymax=35)
75 acc.merge(helper.result())
79 name: str =
'ActsTrackParticleAnalysisAlg',
80 **kwargs) -> ComponentAccumulator:
82 kwargs.setdefault(
'MonitorTrackStateCounts',
True)
83 kwargs.setdefault(
'TrackParticleLocation',
'ActsTrackParticles')
85 kwargs.setdefault(
'MonGroupName', kwargs[
'TrackParticleLocation'])
87 from AthenaMonitoring
import AthMonitorCfgHelper
88 helper = AthMonitorCfgHelper(flags,
'TrackParticleAnalysisAlgCfg')
89 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.TrackParticleAnalysisAlg, name, **kwargs)
90 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/'+name+
'/')
92 monitoringGroup.defineHistogram(
'pt', title=
'TrackParticle pt;pt (MeV);Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
93 xbins=100, xmin=0, xmax=10e3)
94 monitoringGroup.defineHistogram(
'eta', title=
'TrackParticle eta;eta;Entries', type=
'TH1F', path=kwargs[
'MonGroupName'],
95 xbins=50, xmin=-4, xmax=4)
98 monitoringGroup.defineHistogram(
'pixelHits', title=
'Number of pixel hits;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
99 xbins=50, xmin=-1, xmax=49)
100 monitoringGroup.defineHistogram(
'innermostHits', title=
'Number of innermost pixel hits;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
101 xbins=6, xmin=-1, xmax=5)
102 monitoringGroup.defineHistogram(
'nextToInnermostHits', title=
'Number of next-to-innermost pixel hits;N;Entries', type=
'TH1I',
103 path=kwargs[
'MonGroupName'], xbins=6, xmin=-1, xmax=5)
104 monitoringGroup.defineHistogram(
'expectInnermostHit', title=
'Innermost pixel hit expected;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
105 xbins=3, xmin=-1, xmax=2)
106 monitoringGroup.defineHistogram(
'expectNextToInnermostHit', title=
'Next-to-innermost pixel hit expected;N;Entries', type=
'TH1I',
107 path=kwargs[
'MonGroupName'],xbins=3, xmin=-1, xmax=2)
109 if kwargs[
'MonitorTrackStateCounts'] :
114 if 'ExtraInputs' not in kwargs :
115 tracks_name = kwargs[
'TrackParticleLocation']
116 if tracks_name[-len(
'TrackParticles'):] ==
'TrackParticles' :
117 kwargs.setdefault(
'ExtraInputs',{(
'ActsTrk::TrackContainer',tracks_name[:-len(
'TrackParticles')]+
'Tracks')})
119 monitoringGroup.defineHistogram(
'States', title=
'Number of states on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
120 xbins=50, xmin=0, xmax=50)
121 monitoringGroup.defineHistogram(
'Measurements', title=
'Number of measurements on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
122 xbins=50, xmin=0, xmax=50)
123 monitoringGroup.defineHistogram(
'Parameters', title=
'Number of parameters on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
124 xbins=50, xmin=0, xmax=50)
125 monitoringGroup.defineHistogram(
'Outliers', title=
'Number of outliers on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
126 xbins=50, xmin=0, xmax=50)
127 monitoringGroup.defineHistogram(
'Holes', title=
'Number of holes on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
128 xbins=50, xmin=0, xmax=50)
129 monitoringGroup.defineHistogram(
'SharedHits', title=
'Number of shared hits on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
130 xbins=50, xmin=0, xmax=50)
131 monitoringGroup.defineHistogram(
'MaterialStates', title=
'Number of material states on track;N;Entries', type=
'TH1I', path=kwargs[
'MonGroupName'],
132 xbins=50, xmin=0, xmax=50)
133 acc.merge(helper.result())
135 acc.addEventAlgo( CompFactory.ActsTrk.TrackParticleAnalysisAlg(name, **kwargs) )
139 name: str =
"ActsHgtdClusterAnalysisAlg",
140 **kwargs) -> ComponentAccumulator:
141 if flags.HGTD.Geometry.useGeoModelXml:
142 from HGTD_GeoModelXml.HGTD_GeoModelConfig
import HGTD_ReadoutGeometryCfg
144 from HGTD_GeoModel.HGTD_GeoModelConfig
import HGTD_ReadoutGeometryCfg
147 kwargs.setdefault(
"MonGroupName",
"ActsHgtdClusters")
149 from AthenaMonitoring
import AthMonitorCfgHelper
150 helper = AthMonitorCfgHelper(flags,
'ActsHgtdClusterAnalysisAlgCfg')
152 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.HgtdClusterAnalysisAlg, name, **kwargs)
153 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
155 path =
"ActsHgtdClusters"
156 monitoringGroup.defineHistogram(
'localX,localY;h_localXY', title=
"h_localXY; x [mm]; y [mm]", type=
"TH2F", path=path,
157 xbins=20, xmin=-30, xmax=30,
158 ybins=20, ymin=-30, ymax=30)
159 monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=path,
160 xbins=100, xmin=-750, xmax=750,
161 ybins=100, ymin=-750, ymax=750)
162 monitoringGroup.defineHistogram(
'globalZ,globalR;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=path,
163 xbins=100, xmin=-3600, xmax=3600,
164 ybins=100, ymin=0, ymax=800)
165 monitoringGroup.defineTree(
'localX,localY,localT,localCovXX,localCovYY,localCovTT,globalX,globalY,globalZ,globalR,eta;HgtdClusters',
167 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>')
169 acc.merge(helper.result())
173 name: str =
"ActsPixelClusterAnalysisAlg",
174 extension: str =
"Acts",
175 **kwargs) -> ComponentAccumulator:
176 path = extension.replace(
"Acts",
"") +
"PixelClusters"
178 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
181 kwargs.setdefault(
"MonGroupName", extension +
"ClusterAnalysisAlg")
183 from AthenaMonitoring
import AthMonitorCfgHelper
184 helper = AthMonitorCfgHelper(flags, extension +
'ClusterAnalysisAlgCfg')
186 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.PixelClusterAnalysisAlg, name, **kwargs)
187 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
189 monitoringGroup.defineHistogram(
'globalZ,perp;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=path,
190 xbins=1500, xmin=-3000, xmax=3000,
191 ybins=400, ymin=0, ymax=400)
192 monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=path,
193 xbins=800, xmin=-400, xmax=400,
194 ybins=800, ymin=-400, ymax=400)
195 monitoringGroup.defineHistogram(
'eta;h_etaCluster', title=
"h_etaCluster; cluster #eta", type=
"TH1F", path=path,
196 xbins=100, xmin=-5, xmax=5)
198 monitoringGroup.defineTree(
'barrelEndcap,layerDisk,phiModule,etaModule,isInnermost,isNextToInnermost,eta,globalX,globalY,globalZ,perp,localX,localY,localCovXX,localCovYY,sizeX,sizeY,widthY;PixelClusters',
200 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>')
202 acc.merge(helper.result())
207 name: str =
"ActsStripClusterAnalysisAlg",
208 extension: str =
"Acts",
209 **kwargs) -> ComponentAccumulator:
210 path = extension.replace(
"Acts",
"") +
"StripClusters"
212 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
215 kwargs.setdefault(
"MonGroupName", extension +
"ClusterAnalysisAlg")
217 from AthenaMonitoring
import AthMonitorCfgHelper
218 helper = AthMonitorCfgHelper(flags, extension +
"ClusterAnalysisAlgCfg")
220 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.StripClusterAnalysisAlg, name, **kwargs)
221 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
223 monitoringGroup.defineHistogram(
'globalZ,perp;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=path,
224 xbins=1500, xmin=-3000, xmax=3000,
225 ybins=400, ymin=300, ymax=1100)
226 monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=path,
227 xbins=1600, xmin=-1100, xmax=1100,
228 ybins=1600, ymin=-1100, ymax=1100)
229 monitoringGroup.defineHistogram(
'eta;h_etaCluster', title=
"h_etaCluster; cluster #eta", type=
"TH1F", path=path,
230 xbins=100, xmin=-5, xmax=5)
232 monitoringGroup.defineTree(f
'barrelEndcap,layerDisk,phiModule,etaModule,sideModule,eta,globalX,globalY,globalZ,perp,localX,localCovXX,sizeX;{path}',
234 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>')
236 acc.merge(helper.result())
241 extension: str =
"Acts",
244 **kwargs) -> ComponentAccumulator:
245 isPixel =
'Pixel' in name
246 perp_min = 0
if isPixel
else 300
247 perp_max = 400
if isPixel
else 1100
250 from AthenaMonitoring
import AthMonitorCfgHelper
251 helper = AthMonitorCfgHelper(flags, extension +
'SpacePointAnalysisAlgCfg')
253 kwargs.setdefault(
"MonGroupName", extension +
"SpacePointAnalysisAlg")
255 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SpacePointAnalysisAlg, name, **kwargs)
256 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
259 monitoringGroup.defineHistogram(
'Nsp;h_Nsp', title=
"Number of Space Points;N;Entries", type=
"TH1I", path=f
"{histoPath}",
260 xbins=100, xmin=0, xmax=0)
262 monitoringGroup.defineHistogram(
'globalX,globalY;h_globalXY', title=
"h_globalXY; x [mm]; y [mm]", type=
"TH2F", path=f
"{histoPath}",
263 xbins=800, xmin=-perp_max, xmax=perp_max,
264 ybins=800, ymin=-perp_max, ymax=perp_max)
265 monitoringGroup.defineHistogram(
'globalZ,perp;h_globalZR', title=
"h_globalZR; z [mm]; r [mm]", type=
"TH2F", path=f
"{histoPath}",
266 xbins=1500, xmin=-3000, xmax=3000,
267 ybins=400, ymin=perp_min, ymax=perp_max)
268 monitoringGroup.defineHistogram(
'eta;h_etaSpacePoint', title=
"h_etaSpacePoint; space point #eta", type=
"TH1F", path=f
"{histoPath}",
269 xbins=100, xmin=-5, xmax=5)
271 monitoringGroup.defineTree(f
'barrelEndcap,layerDisk,phiModule,etaModule,sideModule,isInnermost,isNextToInnermost,isOverlap,eta,globalX,globalY,globalZ,perp,globalCovR,globalCovZ;{ntupleName}',
273 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>')
275 acc.merge(helper.result())
279 name: str =
"ActsPixelSpacePointAnalysisAlg",
280 extension: str =
"Acts",
281 **kwargs) -> ComponentAccumulator:
284 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
287 kwargs.setdefault(
"SpacePointContainerKey",
"ITkPixelSpacePoints")
288 kwargs.setdefault(
"UsePixel",
True)
289 kwargs.setdefault(
"UseOverlap",
False)
293 extension = extension,
294 histoPath = extension.replace(
"Acts",
"") +
"PixelSpacePoints",
295 ntupleName = extension.replace(
"Acts",
"") +
"PixelSpacePoints",
302 name: str =
"ActsStripSpacePointAnalysisAlg",
303 extension: str =
"Acts",
304 **kwargs) -> ComponentAccumulator:
307 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
310 kwargs.setdefault(
"SpacePointContainerKey",
"ITkStripSpacePoints")
311 kwargs.setdefault(
"UsePixel",
False)
312 kwargs.setdefault(
"UseOverlap",
False)
316 extension = extension,
317 histoPath = extension.replace(
"Acts",
"") +
"StripSpacePoints",
318 ntupleName = extension.replace(
"Acts",
"") +
"StripSpacePoints",
324 name: str =
"ActsStripOverlapSpacePointAnalysisAlg",
325 extension: str =
"Acts",
326 **kwargs) -> ComponentAccumulator:
327 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
330 kwargs.setdefault(
"SpacePointContainerKey",
"ITkStripOverlapSpacePoints")
331 kwargs.setdefault(
"UsePixel",
False)
332 kwargs.setdefault(
"UseOverlap",
True)
336 extension = extension,
337 histoPath = extension.replace(
"Acts",
"") +
"StripOverlapSpacePoints",
338 ntupleName = extension.replace(
"Acts",
"") +
"StripOverlapSpacePoints",
345 extension: str =
"Acts",
347 ntupleName: str =
"",
348 **kwargs) -> ComponentAccumulator:
351 isPixel =
'Pixel' in name
352 perp_min = 0
if isPixel
else 300
353 perp_max = 400
if isPixel
else 1100
355 kwargs.setdefault(
'MonGroupName', extension +
'SeedAnalysisAlg')
357 from AthenaMonitoring
import AthMonitorCfgHelper
358 helper = AthMonitorCfgHelper(flags, extension +
'SeedAnalysisAlgCfg')
360 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
362 acc.addPublicTool(geoTool)
365 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
369 from ActsConfig.ActsTrackParamsEstimationConfig
import ActsTrackParamsEstimationToolCfg
372 kwargs.setdefault(
'TrackingGeometryTool', acc.getPublicTool(geoTool.name))
373 kwargs.setdefault(
'ATLASConverterTool', converterTool)
374 kwargs.setdefault(
'TrackParamsEstimationTool', trackEstimationTool)
376 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SeedAnalysisAlg, name, **kwargs)
377 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
379 monitoringGroup.defineHistogram(
'Nseed', title=
'Number of Seeds;N;Entries', type=
'TH1I', path=f
'{histoPath}',
380 xbins=100, xmin=0, xmax=0)
382 monitoringGroup.defineHistogram(
'z1,r1;zr1', title=
'Bottom SP - Z coordinate vs R;z [mm];r [mm]', type=
'TH2F', path=f
'{histoPath}',
383 xbins=1500, xmin=-3000, xmax=3000,
384 ybins=400, ymin=perp_min, ymax=perp_max)
385 monitoringGroup.defineHistogram(
'z2,r2;zr2', title=
'Middle SP - Z coordinate vs R;z [mm];r [mm]', type=
'TH2F', path=f
'{histoPath}',
386 xbins=1500, xmin=-3000, xmax=3000,
387 ybins=400, ymin=perp_min, ymax=perp_max)
388 monitoringGroup.defineHistogram(
'z3,r3;zr3', title=
'Top SP - Z coordinate vs R;z [mm];r [mm]', type=
'TH2F', path=f
'{histoPath}',
389 xbins=1500, xmin=-3000, xmax=3000,
390 ybins=400, ymin=perp_min, ymax=perp_max)
392 monitoringGroup.defineHistogram(
'x1;x1', title=
'Bottom SP - x coordinate;x [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
393 xbins=100, xmin=-perp_max, xmax=perp_max)
394 monitoringGroup.defineHistogram(
'y1;y1', title=
'Bottom SP - y coordinate;y [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
395 xbins=100, xmin=-perp_max, xmax=perp_max)
396 monitoringGroup.defineHistogram(
'z1;z1', title=
'Bottom SP - z coordinate;z [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
397 xbins=100, xmin=-3000, xmax=3000)
398 monitoringGroup.defineHistogram(
'r1;r1', title=
'Bottom SP - radius coordinate;r [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
399 xbins=100, xmin=perp_min, xmax=perp_max)
401 monitoringGroup.defineHistogram(
'x2;x2', title=
'Middle SP - x coordinate;x [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
402 xbins=100, xmin=-perp_max, xmax=perp_max)
403 monitoringGroup.defineHistogram(
'y2;y2', title=
'Middle SP - y coordinate;y [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
404 xbins=100, xmin=-perp_max, xmax=perp_max)
405 monitoringGroup.defineHistogram(
'z2;z2', title=
'Middle SP - z coordinate;z [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
406 xbins=100, xmin=-3000, xmax=3000)
407 monitoringGroup.defineHistogram(
'r2;r2', title=
'Middle SP - radius coordinate;r [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
408 xbins=100, xmin=perp_min, xmax=perp_max)
410 monitoringGroup.defineHistogram(
'x3;x3', title=
'Top SP - x coordinate;x [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
411 xbins=100, xmin=-perp_max, xmax=perp_max)
412 monitoringGroup.defineHistogram(
'y3;y3', title=
'Top SP - y coordinate;y [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
413 xbins=100, xmin=-perp_max, xmax=perp_max)
414 monitoringGroup.defineHistogram(
'z3;z3', title=
'Top SP - z coordinate;z [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
415 xbins=100, xmin=-3000, xmax=3000)
416 monitoringGroup.defineHistogram(
'r3;r3', title=
'Top SP - radius coordinate;r [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
417 xbins=100, xmin=perp_min, xmax=perp_max)
419 if 'PixelSeeds' in ntupleName:
420 monitoringGroup.defineHistogram(
'pt;pT', title=
'Pt;Pt;Entries;', type=
'TH1F', path=f
'{histoPath}',
421 xbins=100, xmin=0, xmax=100)
422 monitoringGroup.defineHistogram(
'd0;d0', title=
'd0;d0 [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
423 xbins=50, xmin=0, xmax=2)
424 monitoringGroup.defineHistogram(
'eta;Eta', title=
'Pseudo-Rapidity;Pseudo-Rapidity;Entries;', type=
'TH1F', path=f
'{histoPath}',
425 xbins=50, xmin=0, xmax=4.5)
426 monitoringGroup.defineHistogram(
'theta;Theta', title=
'Theta;Theta;Entries;', type=
'TH1F', path=f
'{histoPath}',
427 xbins=50, xmin=0, xmax=1.6)
428 monitoringGroup.defineHistogram(
'penalty;Penalty', title=
'Penalty;Penalty;Entries;', type=
'TH1F', path=f
'{histoPath}',
429 xbins=50, xmin=0, xmax=200)
430 monitoringGroup.defineHistogram(
'dzdr_b;dzdr_b', title=
'dzdr_b;;;', type=
'TH1F', path=f
'{histoPath}',
431 xbins=50, xmin=-30, xmax=30)
432 monitoringGroup.defineHistogram(
'dzdr_t;dzdr_t', title=
'dzdr_t;;;', type=
'TH1F', path=f
'{histoPath}',
433 xbins=50, xmin=-30, xmax=30)
434 elif 'StripSeeds' in ntupleName:
435 monitoringGroup.defineHistogram(
'pt;pT', title=
'Pt;Pt;Entries;', type=
'TH1F', path=f
'{histoPath}',
436 xbins=100, xmin=0, xmax=2300)
437 monitoringGroup.defineHistogram(
'd0;d0', title=
'd0;d0 [mm];Entries;', type=
'TH1F', path=f
'{histoPath}',
438 xbins=50, xmin=0, xmax=120)
439 monitoringGroup.defineHistogram(
'eta;Eta', title=
'Pseudo-Rapidity;Pseudo-Rapidity;Entries;', type=
'TH1F', path=f
'{histoPath}',
440 xbins=50, xmin=0, xmax=4.5)
441 monitoringGroup.defineHistogram(
'theta;Theta', title=
'Theta;Theta;Entries;', type=
'TH1F', path=f
'{histoPath}',
442 xbins=50, xmin=0, xmax=1.6)
443 monitoringGroup.defineHistogram(
'penalty;Penalty', title=
'Penalty;Penalty;Entries;', type=
'TH1F', path=f
'{histoPath}',
444 xbins=50, xmin=0, xmax=20000)
445 monitoringGroup.defineHistogram(
'dzdr_b;dzdr_b', title=
'dzdr_b;;;', type=
'TH1F', path=f
'{histoPath}',
446 xbins=50, xmin=-6.5, xmax=6.5)
447 monitoringGroup.defineHistogram(
'dzdr_t;dzdr_t', title=
'dzdr_t;;;', type=
'TH1F', path=f
'{histoPath}',
448 xbins=50, xmin=-6.5, xmax=6.5)
450 if flags.Tracking.doTruth:
451 monitoringGroup.defineHistogram(
'passed,estimated_eta;EfficiencyEta', title=
'Efficiency vs eta;eta;Efficiency', type=
'TEfficiency', path=f
'{histoPath}',
452 xbins=50, xmin=-5, xmax=5)
453 monitoringGroup.defineHistogram(
'passed,estimated_pt;EfficiencyPt', title=
'Efficiency vs pT;pT [GeV];Efficiency', type=
'TEfficiency', path=f
'{histoPath}',
454 xbins=30, xmin=0, xmax=120)
457 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"
458 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>\
459 :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"
460 if flags.Tracking.doTruth:
461 list_variables +=
",truth_barcode,truth_prob"
462 tree_def +=
":truth_barcode/vector<int>:truth_prob/vector<double>"
464 monitoringGroup.defineTree(f
'{list_variables};{ntupleName}',
468 acc.merge(helper.result())
474 name: str =
"ActsPixelSeedAnalysisAlg",
475 extension: str =
"Acts",
476 **kwargs) -> ComponentAccumulator:
477 kwargs.setdefault(
'InputSeedCollection',
'ActsPixelSeeds')
479 if flags.Tracking.doTruth:
480 kwargs.setdefault(
'DetectorElements',
'ITkPixelDetectorElementCollection')
481 kwargs.setdefault(
'ITkClustersTruth',
'')
486 histoPath = extension.replace(
"Acts",
"") +
'PixelSeeds',
487 ntupleName = extension.replace(
"Acts",
"") +
'PixelSeeds',
492 name: str =
"ActsStripSeedAnalysisAlg",
493 extension: str =
"Acts",
494 **kwargs) -> ComponentAccumulator:
495 kwargs.setdefault(
'InputSeedCollection',
'ActsStripSeeds')
496 kwargs.setdefault(
'UsePixel',
False)
498 if flags.Tracking.doTruth:
499 kwargs.setdefault(
'DetectorElements',
'ITkStripDetectorElementCollection')
500 kwargs.setdefault(
'ITkClustersTruth',
'')
505 histoPath = extension.replace(
"Acts",
"") +
'StripSeeds',
506 ntupleName = extension.replace(
"Acts",
"") +
'StripSeeds',
512 extension: str =
"Acts",
514 ntupleName: str =
"",
515 **kwargs) -> ComponentAccumulator:
516 from AthenaMonitoring
import AthMonitorCfgHelper
517 helper = AthMonitorCfgHelper(flags,extension +
'EstimatedTrackParamsAnalysisAlgCfg')
519 kwargs.setdefault(
'MonGroupName', extension +
'SeedAnalysisAlg')
521 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.EstimatedTrackParamsAnalysisAlg, name, **kwargs)
522 monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs[
'MonGroupName'],
'/ActsAnalysis/')
524 monitoringGroup.defineHistogram(
'Nparams', title=
'Number of Estimated Parameters from Seeds;N;Entries', type=
'TH1I', path=f
'{histoPath}',
525 xbins=100, xmin=0, xmax=0)
527 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}",
529 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>")
531 return helper.result()
534 name: str =
"ActsSeedingAlgorithmAnalysis",
535 **kwargs) -> ComponentAccumulator:
538 MonitoringGroupNames = []
540 if "SeedingTools" not in kwargs:
541 from InDetConfig.SiSpacePointsSeedToolConfig
import ITkSiSpacePointsSeedMakerCfg
543 ITkSiSpacePointsSeedMaker.maxSize = 1e8
544 MonitoringGroupNames.append(
"ITkSiSpacePointSeedMaker")
546 from ActsConfig.ActsSeedingConfig
import ActsSiSpacePointsSeedMakerToolCfg
549 from ActsConfig.ActsSeedingConfig
import ActsPixelSeedingToolCfg
553 ActsITkSiSpacePointsSeedMaker.doSeedConversion =
False
554 MonitoringGroupNames.append(
"ActsITkSiSpacePointSeedMaker")
556 from ActsConfig.ActsSeedingConfig
import ActsPixelGbtsSeedingToolCfg
561 name=
"ActsSiSpacePointsSeedMakerGbts",
562 SeedToolPixel=gbtsSeedToolPixel))
563 ActsGbtsITkSiSpacePointsSeedMaker.doSeedConversion =
False
564 MonitoringGroupNames.append(
"ActsGbtsITkSiSpacePointSeedMaker")
566 from ActsConfig.ActsSeedingConfig
import ActsPixelOrthogonalSeedingToolCfg, ActsStripOrthogonalSeedingToolCfg
569 ActsITkSiSpacePointsSeedMakerOrthogonal = \
571 name=
"ActsSiSpacePointsSeedMakerOrthogonal",
572 SeedToolPixel=pixel_orthogonal_seeding_tool,
573 SeedToolStrip=strip_orthogonal_seeding_tool))
574 ActsITkSiSpacePointsSeedMakerOrthogonal.doSeedConversion =
False
575 MonitoringGroupNames.append(
"ActsOrthogonalITkSiSpacePointSeedMaker")
577 from GaudiKernel.GaudiHandles
import PrivateToolHandleArray
578 kwargs.setdefault(
"SeedingTools",
579 PrivateToolHandleArray([ITkSiSpacePointsSeedMaker,
580 ActsITkSiSpacePointsSeedMaker,
581 ActsGbtsITkSiSpacePointsSeedMaker,
582 ActsITkSiSpacePointsSeedMakerOrthogonal]))
584 kwargs.setdefault(
"MonitorNames", MonitoringGroupNames)
586 from AthenaMonitoring
import AthMonitorCfgHelper
587 helper = AthMonitorCfgHelper(flags,
'SeedingAlgorithmAnalysisAlgCfg')
588 monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SeedingAlgorithmAnalysisAlg, name, **kwargs)
590 for groupName
in MonitoringGroupNames:
591 monitoringGroup = helper.addGroup(monitoringAlgorithm, groupName,
'/'+groupName+
'/')
592 monitoringGroup.defineTree(
'eventNumber,stripSeedInitialisationTime,stripSeedProductionTime,pixelSeedInitialisationTime,pixelSeedProductionTime,numberPixelSpacePoints,numberStripSpacePoints,numberPixelSeeds,numberStripSeeds;seedInformation',
594 treedef=
'eventNumber/I:stripSeedInitialisationTime/F:stripSeedProductionTime/F:pixelSeedInitialisationTime/F:pixelSeedProductionTime/F:numberPixelSpacePoints/I:numberStripSpacePoints/I:numberPixelSeeds/I:numberStripSeeds/I')
596 acc.merge(helper.result())
601 name: str =
'ActsPixelEstimatedTrackParamsAnalysisAlg',
602 extension: str =
"Acts",
603 **kwargs) -> ComponentAccumulator:
604 kwargs.setdefault(
'InputTrackParamsCollection',
'ActsPixelEstimatedTrackParams')
608 histoPath = extension.replace(
"Acts",
"") +
'PixelEstimatedTrackParams',
609 ntupleName = extension.replace(
"Acts",
"") +
'PixelEstimatedTrackParams',
614 name: str =
'ActsStripEstimatedTrackParamsAnalysisAlg',
615 extension: str =
"Acts",
616 **kwargs) -> ComponentAccumulator:
617 kwargs.setdefault(
'InputTrackParamsCollection',
'ActsStripEstimatedTrackParams')
621 histoPath = extension.replace(
"Acts",
"") +
'StripEstimatedTrackParams',
622 ntupleName = extension.replace(
"Acts",
"") +
'StripEstimatedTrackParams',
628 **kwargs) -> ComponentAccumulator:
631 if 'ExtrapolationTool' not in kwargs:
632 from ActsConfig.ActsGeometryConfig
import ActsExtrapolationToolCfg
638 if 'TrackingGeometryTool' not in kwargs:
639 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
641 'TrackingGeometryTool',
645 if 'ATLASConverterTool' not in kwargs:
646 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
649 if 'TrackParamsEstimationTool' not in kwargs:
650 from ActsConfig.ActsTrackParamsEstimationConfig
import ActsTrackParamsEstimationToolCfg
653 acc.addEventAlgo(CompFactory.ActsTrk.SeedsToTrackParamsAlg(name, **kwargs))
657 name: str =
'ActsPixelSeedsToTrackParamsAlg',
658 extension: str =
"Acts",
659 **kwargs) -> ComponentAccumulator:
660 kwargs.setdefault(
'InputSeedContainerKey',
'ActsPixelSeeds')
661 kwargs.setdefault(
'DetectorElementsKey',
'ITkPixelDetectorElementCollection')
662 kwargs.setdefault(
'OutputTrackParamsCollectionKey',
'ActsPixelEstimatedTrackParams')
669 name: str =
'ActsStripSeedsToTrackParamsAlgCfg',
670 extension: str =
"Acts",
671 **kwargs) -> ComponentAccumulator:
672 kwargs.setdefault(
'InputSeedContainerKey',
'ActsStripSeeds')
673 kwargs.setdefault(
'DetectorElementsKey',
'ITkStripDetectorElementCollection')
674 kwargs.setdefault(
'OutputTrackParamsCollectionKey',
'ActsStripEstimatedTrackParams')
681 name: str =
'PhysValActs',
682 **kwargs) -> ComponentAccumulator:
686 typedCollections = flags.Input.TypedCollections
687 for col
in typedCollections:
688 col_type, col_name = col.split(
"#")
689 if col_type ==
"xAOD::PixelClusterContainer":
690 kwargs.setdefault(
"doPixelClusters",
True)
691 elif col_type ==
"xAOD::StripClusterContainer":
692 kwargs.setdefault(
"doStripClusters",
True)
693 elif col_type ==
"xAOD::HGTDClusterContainer":
694 kwargs.setdefault(
"doHgtdClusters", flags.PhysVal.IDPVM.doHGTD)
695 elif col_type ==
"xAOD::SpacePointContainer":
696 if 'Pixel' in col_name:
697 kwargs.setdefault(
"doPixelSpacePoints",
True)
698 elif 'Strip' in col_name:
699 kwargs.setdefault(
"doStripSpacePoints",
True)
700 kwargs.setdefault(
"doStripOverlapSpacePoints",
True)
702 acc.setPrivateTools(CompFactory.ActsTrk.PhysValTool(name=name,
708 if flags.Detector.EnableITkPixel:
710 if flags.Detector.EnableITkStrip:
717 if flags.Detector.EnableITkPixel:
719 if flags.Detector.EnableITkStrip:
726 if flags.Detector.EnableITkPixel:
728 if flags.Detector.EnableITkStrip:
733 name : str =
"ActsResidualAnalysisAlg",
734 **kwargs) -> ComponentAccumulator:
738 kwargs.setdefault(
'InDetTrackParticles',
'InDetTrackParticles')
739 kwargs.setdefault(
"MonGroupName", kwargs[
'InDetTrackParticles'])
741 from AthenaMonitoring
import AthMonitorCfgHelper
742 helper = AthMonitorCfgHelper(flags, kwargs[
'InDetTrackParticles'] +
'AnalysisAlgCfg')
744 ResidualMonitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.ITkAlignMonResidualsAlg, name, **kwargs)
746 layersPix = [
'0',
'1',
'2',
'3',
'4']
748 residualXArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm,
'PixResidualX', topPath =
'/ActsAnalysis/Residuals')
749 residualYArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm,
'PixResidualY', topPath =
'/ActsAnalysis/Residuals')
750 pullXArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm,
'PixPullX', topPath =
'/ActsAnalysis/Residuals')
751 pullYArray = helper.addArray([len(layersPix)], ResidualMonitoringAlgorithm,
'PixPullY', topPath =
'/ActsAnalysis/Residuals')
753 layersStrip = [
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8']
754 stripResidualXArray = helper.addArray([len(layersStrip)], ResidualMonitoringAlgorithm,
'StripResidualX', topPath =
'/ActsAnalysis/Residuals')
755 stripPullXArray = helper.addArray([len(layersStrip)], ResidualMonitoringAlgorithm,
'StripPullX', topPath =
'/ActsAnalysis/Residuals')
764 for postfix,tool
in residualXArray.Tools.items():
765 layer = layersPix[
int(postfix.split(
"_")[1])]
766 title = (
'UnBiased X Residual Pixel Barrel %s' % layer)
767 name =
'm_pix_residualsx;pix_b' + layer +
'_residualx'
768 tool.defineHistogram(name, title = title, type =
'TH1F',
769 xbins = 100, xmin = xminX, xmax = xmaxX)
772 for postfix,tool
in residualYArray.Tools.items():
773 layer = layersPix[
int(postfix.split(
"_")[1])]
774 title = (
'UnBiased Y Residual Pixel Barrel %s' % layer)
775 name =
'm_pix_residualsy;pix_b' + layer +
'_residualy'
776 tool.defineHistogram(name, title = title, type =
'TH1F',
777 xbins = 100, xmin = xminY, xmax = xmaxY)
780 for postfix,tool
in pullXArray.Tools.items():
782 layer = layersPix[
int(postfix.split(
"_")[1])]
783 title = (
'UnBiased X Pull Pixel Barrel %s' % layer)
784 name =
'm_pix_pullsx;pix_b' + layer +
'_pullx'
785 tool.defineHistogram(name, title = title, type =
'TH1F',
786 xbins = 100, xmin = -pullX, xmax = pullX)
789 for postfix,tool
in pullYArray.Tools.items():
790 layer = layersPix[
int(postfix.split(
"_")[1])]
791 title = (
'UnBiased Y Pull Pixel Barrel %s' % layer)
792 name =
'm_pix_pullsy;pix_b' + layer +
'_pully'
793 tool.defineHistogram(name, title = title, type =
'TH1F',
794 xbins = 100, xmin = -pullX, xmax = pullX)
798 for postfix,tool
in stripResidualXArray.Tools.items():
799 layer = layersStrip[
int(postfix.split(
"_")[1])]
800 title = (
'UnBiased X Residual Strip Barrel %s' % layer)
801 name =
'm_strip_residualsx;strip_b' + layer +
'_residualx'
802 tool.defineHistogram(name, title = title, type =
'TH1F',
803 xbins = 100, xmin = xminX, xmax = xmaxX)
806 for postfix,tool
in stripPullXArray.Tools.items():
807 layer = layersStrip[
int(postfix.split(
"_")[1])]
808 title = (
'UnBiased X Pull Strip Barrel %s' % layer)
809 name =
'm_strip_pullsx;strip_b' + layer +
'_pullx'
810 tool.defineHistogram(name, title = title, type =
'TH1F',
811 xbins = 100, xmin = -pullX, xmax = pullX)
813 acc.merge(helper.result())