ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimPrototrackFitterConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5
7 name: str = "ActsProtoTrackCreationAndFitAlg",
8 **kwargs) -> ComponentAccumulator:
9 acc = ComponentAccumulator()
10
11 from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
12 acc.merge(ITkPixelReadoutGeometryCfg(flags))
13
14 from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
15 acc.merge(ITkStripReadoutGeometryCfg(flags))
16
17 if 'ActsFitter' not in kwargs:
18 from ActsConfig.ActsTrackFittingConfig import ActsFitterCfg
19 kwargs.setdefault("ActsFitter", acc.popToolsAndMerge(ActsFitterCfg(flags,
20 ReverseFilteringPt=0,
21 OutlierChi2Cut=float('inf'))))
22
23 acc.addEventAlgo(CompFactory.FPGATrackSim.FPGATrackSimPrototrackFitterAlg(name,**kwargs),
24 primary=True)
25 return acc
26
27def FPGAProtoTrackFitCfg(flags, name="FPGAPrototrackFitterConfig", stage = '', **kwargs):
28
29 ACTSProtoTrackChainTrackKey = "ACTSProtoTrackChainTestTracks"
30 FPGAPrototracks = f"ActsProtoTracks{stage}FromFPGATrack"
31 acc = ComponentAccumulator()
32
33 # ProtoTrackChain Track algo
34 acc.merge(FPGAPrototrackFitAlgCfg(flags,"FPGATrackSimProtoTackFitAlg",
35 ACTSTracksLocation=ACTSProtoTrackChainTrackKey,
36 FPGATrackSimActsProtoTracks=FPGAPrototracks,
37 **kwargs))
38 return acc
39
40def FPGATruthDecorationCfg(flags, FinalProtoTrackChainxAODTracksKey="xAODFPGAPrototracks", **kwargs):
41
43 from ActsConfig.ActsTruthConfig import ActsTruthParticleHitCountAlgCfg, ActsPixelClusterToTruthAssociationAlgCfg,ActsStripClusterToTruthAssociationAlgCfg
44
45 ACTSProtoTrackChainTrackKey = "ACTSProtoTrackChainTestTracks"
46 FinalProtoTrackChainxAODTracksKey=FinalProtoTrackChainxAODTracksKey
47
48 acc = ComponentAccumulator()
49 truthLinkVector="xAODFPGATruthLinks" if flags.Trigger.FPGATrackSim.useFPGATruthTrackMatching else "xAODTruthLinks"
50 acc.merge(ActsPixelClusterToTruthAssociationAlgCfg(flags,
51 name="ActsFPGAPixelClusterToTruthAssociationAlg",
52 InputTruthParticleLinks=truthLinkVector,
53 AssociationMapOut="ITkFPGAPixelClustersToTruthParticles",
54 Measurements="xAODPixelClustersFromFPGACluster"))
55
56 acc.merge(ActsStripClusterToTruthAssociationAlgCfg(flags,
57 name="ActsFPGAStripClusterToTruthAssociationAlg",
58 InputTruthParticleLinks=truthLinkVector,
59 AssociationMapOut="ITkFPGAStripClustersToTruthParticles",
60 Measurements="xAODStripClustersFromFPGACluster"))
61
62
63 acc.merge(ActsTruthParticleHitCountAlgCfg(flags,
64 name="ActsFPGATruthParticleHitCountAlg",
65 PixelClustersToTruthAssociationMap="ITkFPGAPixelClustersToTruthParticles",
66 StripClustersToTruthAssociationMap="ITkFPGAStripClustersToTruthParticles",
67 TruthParticleHitCountsOut="FPGATruthParticleHitCounts"))
68
69
70 from ActsConfig.ActsTruthConfig import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
71 acts_tracks=f"{flags.Tracking.ActiveConfig.extension}Tracks" if not flags.Acts.doAmbiguityResolution else f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"
72 acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
73 name=f"{acts_tracks}FPGATrackToTruthAssociationAlg",
74 PixelClustersToTruthAssociationMap="ITkFPGAPixelClustersToTruthParticles",
75 StripClustersToTruthAssociationMap="ITkFPGAStripClustersToTruthParticles",
76 ACTSTracksLocation=ACTSProtoTrackChainTrackKey,
77 AssociationMapOut=acts_tracks+"FPGAToTruthParticleAssociation"))
78
79
80 acc.merge(ActsTrackFindingValidationAlgCfg(flags,
81 name=f"{acts_tracks}FPGATrackFindingValidationAlg",
82 TrackToTruthAssociationMap=acts_tracks+"FPGAToTruthParticleAssociation",
83 TruthParticleHitCounts="FPGATruthParticleHitCounts"
84 ))
85
86
88 prefix = flags.Tracking.ActiveConfig.extension
89 from ActsConfig.ActsEventCnvConfig import ActsTrackToTrackParticleCnvAlgCfg
90 acc.merge(ActsTrackToTrackParticleCnvAlgCfg(flags, f"{prefix}ResolvedProtoTrackToAltTrackParticleCnvAlg",
91 ACTSTracksLocation=[ACTSProtoTrackChainTrackKey,],
92 TrackParticlesOutKey=f"{FinalProtoTrackChainxAODTracksKey}TrackParticles"))
93
94 from ActsConfig.ActsTruthConfig import ActsTrackParticleTruthDecorationAlgCfg
95 acc.merge(ActsTrackParticleTruthDecorationAlgCfg(flags,
96 f"{prefix}ActsFPGATrackParticleTruthDecorationAlg",
97 TrackToTruthAssociationMaps=[acts_tracks+"FPGAToTruthParticleAssociation"],
98 TrackParticleContainerName=f"{FinalProtoTrackChainxAODTracksKey}TrackParticles",
99 TruthParticleHitCounts="FPGATruthParticleHitCounts",
100 ComputeTrackRecoEfficiency=True))
101 return acc
FPGAProtoTrackFitCfg(flags, name="FPGAPrototrackFitterConfig", stage='', **kwargs)
ComponentAccumulator FPGAPrototrackFitAlgCfg(flags, str name="ActsProtoTrackCreationAndFitAlg", **kwargs)
FPGATruthDecorationCfg(flags, FinalProtoTrackChainxAODTracksKey="xAODFPGAPrototracks", **kwargs)