ATLAS Offline Software
Loading...
Searching...
No Matches
ActsProtoTrackCreationAndFitConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5
7 name: str = "ActsTruthGuidedProtoTrackCreatorTool",
8 **kwargs) -> ComponentAccumulator:
9 acc = ComponentAccumulator()
10 kwargs.setdefault('PRD_MultiTruthCollections', ["PRD_MultiTruthITkPixel","PRD_MultiTruthITkStrip"])
11 acc.setPrivateTools(CompFactory.ActsTrk.TruthGuidedProtoTrackCreatorTool(name, **kwargs))
12 return acc
13
15 name: str = "ActsProtoTrackCreationAndFitAlg",
16 **kwargs) -> ComponentAccumulator:
17 acc = ComponentAccumulator()
18
19 from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
20 acc.merge(ITkPixelReadoutGeometryCfg(flags))
21
22 from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
23 acc.merge(ITkStripReadoutGeometryCfg(flags))
24
25 kwargs.setdefault('PixelClusterContainer', 'ITkPixelClusters')
26 kwargs.setdefault('StripClusterContainer', 'ITkStripClusters')
27 kwargs.setdefault('ACTSTracksLocation', 'EFTestTracks')
28
29 if 'ActsFitter' not in kwargs:
30 from ActsConfig.ActsTrackFittingConfig import ActsFitterCfg
31 kwargs.setdefault("ActsFitter", acc.popToolsAndMerge(ActsFitterCfg(flags,
32 ReverseFilteringPt=0,
33 OutlierChi2Cut=30)))
34
35 if 'PatternBuilder' not in kwargs:
36 kwargs.setdefault('PatternBuilder', acc.popToolsAndMerge(ActsTruthGuidedProtoTrackCreatorToolCfg(flags)))
37
38 acc.addEventAlgo(CompFactory.ActsTrk.ProtoTrackCreationAndFitAlg(name,**kwargs),
39 primary=True)
40 return acc
41
43 name: str = "ActsProtoTrackReportingAlg",
44 **kwargs) -> ComponentAccumulator:
45 acc = ComponentAccumulator()
46 kwargs.setdefault("ProtoTracksLocation", "ProtoTracksCollection")
47 kwargs.setdefault("copyParametersFromFit", True)
48 acc.addEventAlgo(CompFactory.ActsTrk.ProtoTrackReportingAlg(name,**kwargs),
49 primary=True)
50 return acc
51
52if __name__ == "__main__":
53
54 def SetupHistSvc(flags, streamName, dataFile):
55 acc = ComponentAccumulator()
56 histSvc = CompFactory.THistSvc(Output= ["{streamName} DATAFILE='{data_file}', OPT='RECREATE'".format(streamName=streamName, data_file = dataFile )])
57 acc.addService(histSvc, primary=True)
58 return acc
59
60 # Key names for the different track containers
61 ACTSProtoTrackChainTrackKey = "ACTSProtoTrackChainTestTracks"
62 FinalProtoTrackChainTracksKey="TrkProtoTrackChainTestTracks"
63 FinalProtoTrackChainxAODTracksKey="xAODProtoTrackChainTestTracks"
64
65 from AthenaConfiguration.AllConfigFlags import initConfigFlags
66 flags = initConfigFlags()
67
68 # this job specific flags
69 flags.addFlag("outputNTupleFile", "refits.root")
70
71 # Disable calo for this test
72 flags.Detector.EnableCalo = False
73 flags.Detector.EnableHGTD = False
74
75 flags.Acts.doRotCorrection = False
76
77 # Only runs with legacy Athena reconstruction
78 from ActsConfig.ActsCIFlags import athenaLegacyTrackingFlags
79 athenaLegacyTrackingFlags(flags)
80 # ensure that the xAOD SP and cluster containers are available
81 flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint=True
82 flags.Tracking.ITkMainPass.doAthenaToActsCluster=True
83
84 # IDTPM flags
85 from InDetTrackPerfMon.InDetTrackPerfMonFlags import initializeIDTPMConfigFlags, initializeIDTPMTrkAnaConfigFlags
86 flags = initializeIDTPMConfigFlags(flags)
87
88 flags.PhysVal.IDTPM.plotsDefFileList = "InDetTrackPerfMon/PlotsDefFileList_default.txt" # default value - not needed
89 flags.PhysVal.IDTPM.plotsCommonValuesFile = "InDetTrackPerfMon/PlotsDefCommonValues.json" # default value - not needed
90 flags.PhysVal.OutputFileName = flags.PhysVal.IDTPM.outputFilePrefix + '.HIST.root' # automatically set in IDTPM config - not needed
91 flags.Output.doWriteAOD_IDTPM = True
92 flags.PhysVal.IDTPM.trkAnaCfgFile = "InDetTrackPerfMon/EFTrkAnaConfig_example.json"
93 flags = initializeIDTPMTrkAnaConfigFlags(flags)
94
95 flags.PhysVal.IDTPM.TrkAnaEF.TrigTrkKey = f"{FinalProtoTrackChainxAODTracksKey}TrackParticles"
96 flags.PhysVal.IDTPM.TrkAnaDoubleRatio.TrigTrkKey = f"{FinalProtoTrackChainxAODTracksKey}TrackParticles"
97
98 flags.PhysVal.doExample = False
99
100 flags.fillFromArgs()
101 if flags.Input.Files == ['_ATHENA_GENERIC_INPUTFILE_NAME_']:
102 flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/RDO/ATLAS-P2-RUN4-04-00-00/mc21_14TeV.900498.PG_single_muonpm_Pt100_etaFlatnp0_43.recon.RDO.e8481_s4494_r16632/RDO.45451592._000021.pool.root.1"]
103
104 from AthenaConfiguration.TestDefaults import defaultConditionsTags
105 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN4_MC
106
107 flags.Debug.DumpEvtStore = True
108 flags.lock()
109
110 # Main services
111 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
112 top_acc = MainServicesCfg(flags)
113
114 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
115 top_acc.merge(PoolReadCfg(flags))
116
117 #Truth
118 if flags.Input.isMC:
119 from xAODTruthCnv.xAODTruthCnvConfig import GEN_AOD2xAODCfg
120 top_acc.merge(GEN_AOD2xAODCfg(flags))
121
122 # Standard reco
123 from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
124 top_acc.merge(ITkTrackRecoCfg(flags))
125
126 # ProtoTrackChain Track algo
127 top_acc.merge(SetupHistSvc(flags,streamName="HmmRefits",dataFile=flags.outputNTupleFile))
128 top_acc.merge(ActsProtoTackCreationAndFitAlgCfg(flags,"ActsProtoTackCreationAndFitAlg",ACTSTracksLocation=ACTSProtoTrackChainTrackKey ))
129
130
131 from ActsConfig.ActsTruthConfig import ActsTruthAssociationAlgCfg, ActsTruthParticleHitCountAlgCfg
132 top_acc.merge(ActsTruthAssociationAlgCfg(flags))
133 top_acc.merge(ActsTruthParticleHitCountAlgCfg(flags))
134
135 from ActsConfig.ActsTruthConfig import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
136 acts_tracks="ActsTracks" if not flags.Acts.doAmbiguityResolution else "ActsResolvedTracks"
137 top_acc.merge(ActsTrackToTruthAssociationAlgCfg(
138 flags,
139 name=f"{acts_tracks}ProtoTrackToTruthAssociationAlg",
140 ACTSTracksLocation=ACTSProtoTrackChainTrackKey,
141 AssociationMapOut=acts_tracks+"ToTruthParticleAssociation"))
142
143 top_acc.merge(ActsTrackFindingValidationAlgCfg(
144 flags,
145 name=f"{acts_tracks}TrackFindingValidationAlg",
146 TrackToTruthAssociationMap=acts_tracks+"ToTruthParticleAssociation"))
147
148 # Convert ActsTrk::TrackContainer to xAOD::TrackParticleContainer
149 from ActsConfig.ActsEventCnvConfig import ActsTrackToTrackParticleCnvAlgCfg
150 top_acc.merge(ActsTrackToTrackParticleCnvAlgCfg(
151 flags, "ActsResolvedProtoTrackToAltTrackParticleCnvAlg",
152 ACTSTracksLocation=[ACTSProtoTrackChainTrackKey,],
153 TrackParticlesOutKey=f"{FinalProtoTrackChainxAODTracksKey}TrackParticles"))
154
155 from ActsConfig.ActsTruthConfig import ActsTrackParticleTruthDecorationAlgCfg
156 top_acc.merge(ActsTrackParticleTruthDecorationAlgCfg(
157 flags,
158 "ActsSandboxTrackParticleTruthDecorationAlg",
159 TrackToTruthAssociationMaps=[acts_tracks+"ToTruthParticleAssociation"],
160 TrackParticleContainerName=f"{FinalProtoTrackChainxAODTracksKey}TrackParticles"))
161
162 # Add the truth decorators
163 from InDetPhysValMonitoring.InDetPhysValDecorationConfig import AddDecoratorCfg
164 top_acc.merge(AddDecoratorCfg(flags))
165
166 # IDTPM running
167 from InDetTrackPerfMon.InDetTrackPerfMonConfig import InDetTrackPerfMonCfg
168 top_acc.merge( InDetTrackPerfMonCfg(flags) )
169
170 top_acc.printConfig(withDetails=True, summariseProps=True)
171 flags.dump()
172
173
174 from AthenaCommon.Constants import DEBUG
175 top_acc.foreach_component("AthEventSeq/*").OutputLevel = DEBUG
176 top_acc.printConfig(withDetails=True, summariseProps=True)
177 top_acc.store(open("ITkTrackRecoWithProtoTracks.pkl", "wb"))
178 sc = top_acc.run(flags.Exec.MaxEvents)
179
180 if sc.isFailure():
181 import sys
182 sys.exit(1)
ComponentAccumulator ActsProtoTrackReportingAlgCfg(flags, str name="ActsProtoTrackReportingAlg", **kwargs)
ComponentAccumulator ActsTruthGuidedProtoTrackCreatorToolCfg(flags, str name="ActsTruthGuidedProtoTrackCreatorTool", **kwargs)
ComponentAccumulator ActsProtoTackCreationAndFitAlgCfg(flags, str name="ActsProtoTrackCreationAndFitAlg", **kwargs)