ATLAS Offline Software
ActsTrackFittingConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from ActsConfig.ActsConfigFlags import TrackFitterType
6 from ActsInterop import UnitConstants
7 from typing import Optional
8 def ActsFitterCfg(flags,
9  name: str = "ActsFitterTool",
10  fitterKind: Optional[TrackFitterType] = None,
11  **kwargs) -> ComponentAccumulator:
12  acc = ComponentAccumulator()
13 
14  fitterKind = flags.Acts.trackFitterType if fitterKind is None else fitterKind
15 
16  if flags.Acts.fitFromPRD:
17  from TrkConfig.TrkRIO_OnTrackCreatorConfig import ITkRotCreatorCfg
18  kwargs.setdefault('RotCreatorTool', acc.popToolsAndMerge(ITkRotCreatorCfg(flags)))
19 
20 
21  # Make sure this is set correctly!
22  # /eos/project-a/acts/public/MaterialMaps/ATLAS/material-maps-Pixel-SCT.json
23  from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
24  kwargs.setdefault("TrackingGeometryTool", acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags)))
25 
26  from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg
27  kwargs.setdefault("ExtrapolationTool", acc.popToolsAndMerge(ActsExtrapolationToolCfg(flags, MaxSteps=10000)))
28 
29  from ActsConfig.ActsEventCnvConfig import ActsToTrkConverterToolCfg
30  kwargs.setdefault('ATLASConverterTool', acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags)))
31 
32 
33  if fitterKind is TrackFitterType.KalmanFitter:
34  kwargs.setdefault("ReverseFilteringPt", 1.0 * UnitConstants.GeV)
35 
36  if fitterKind is TrackFitterType.KalmanFitter: # This flag is by default set to KalmanFitter
37  acc.setPrivateTools(CompFactory.ActsTrk.KalmanFitterTool(name, **kwargs))
38  elif fitterKind is TrackFitterType.GaussianSumFitter:
39  if "SummaryTool" not in kwargs:
40  from TrkConfig.TrkTrackSummaryToolConfig import InDetTrackSummaryToolCfg
41  kwargs.setdefault('SummaryTool', acc.getPrimaryAndMerge(InDetTrackSummaryToolCfg(flags)))
42 
43  if 'BoundaryCheckTool' not in kwargs:
44  if flags.Detector.GeometryITk:
45  from InDetConfig.InDetBoundaryCheckToolConfig import ITkBoundaryCheckToolCfg
46  kwargs.setdefault("BoundaryCheckTool", acc.popToolsAndMerge(ITkBoundaryCheckToolCfg(flags)))
47  else:
48  from InDetConfig.InDetBoundaryCheckToolConfig import InDetBoundaryCheckToolCfg
49  kwargs.setdefault("BoundaryCheckTool",acc.popToolsAndMerge(InDetBoundaryCheckToolCfg(flags)))
50  name = name.replace("KalmanFitter", "GaussianSumFitter")
51  acc.setPrivateTools(CompFactory.ActsTrk.GaussianSumFitterTool(name, **kwargs))
52  elif fitterKind is TrackFitterType.GlobalChiSquareFitter:
53  name = name.replace("KalmanFitter", "GlobalChiSquareFitter")
54  acc.setPrivateTools(CompFactory.ActsTrk.GlobalChiSquareFitterTool(name, **kwargs))
55 
56  return acc
57 
58 
59 
61  name : str = "ActsReFitterAlg",
62  **kwargs) -> ComponentAccumulator:
63  acc = ComponentAccumulator()
64  kwargs.setdefault("ActsFitter", acc.popToolsAndMerge(ActsFitterCfg(flags)))
65  kwargs.setdefault("TrackName", "ResolvedTracks")
66  kwargs.setdefault("NewTrackName", "Refitted_Tracks")
67  kwargs.setdefault("DoReFitFromPRD", flags.Acts.fitFromPRD)
68  acc.addEventAlgo(CompFactory.ActsTrk.ReFitterAlg(name, **kwargs))
69 
70  if flags.Acts.writeTrackCollection:
71  acc.merge(writeAdditionalTracks(flags))
72 
73  return acc
74 
75 def forceITkActsReFitterAlgCfg(flags) -> ComponentAccumulator:
76  #Use this flag in the --postInclude of ActsKfRefiting.sh to fit from the PRD (uncalibrated); Else to fit from the ROT (calibrated), use `(...).ActsReFitterAlgCfg` flag directly
77  flags = flags.cloneAndReplace("Tracking.ActiveConfig",
78  flags.Tracking.ITkPrimaryPassConfig.value)
79  return ActsReFitterAlgCfg(flags)
80 
81 
83  trackName: str = 'ResolvedTracks',
84  newTrackName: str ='ReFitted_Tracks') -> ComponentAccumulator:
85  acc = ComponentAccumulator()
86 
87  from xAODTrackingCnv.xAODTrackingCnvConfig import ITkTrackParticleCnvAlgCfg
88 
89  if flags.Tracking.doTruth:
90  from InDetConfig.ITkTrackTruthConfig import ITkTrackTruthCfg
91  acc.merge(ITkTrackTruthCfg(flags,
92  Tracks = trackName,
93  DetailedTruth = f"{trackName}DetailedTruth",
94  TracksTruth = f"{trackName}TruthCollection"))
95  acc.merge(ITkTrackTruthCfg(flags,
96  Tracks = newTrackName,
97  DetailedTruth = f"{newTrackName}DetailedTruth",
98  TracksTruth = f"{newTrackName}TruthCollection"))
99 
100  acc.merge(ITkTrackParticleCnvAlgCfg(flags,
101  name = f"{trackName}TrackParticleCnvAlg",
102  TrackContainerName = trackName,
103  xAODTrackParticlesFromTracksContainerName = f"{trackName}TrackParticles",
104  TrackTruthContainerName = f"{trackName}TruthCollection"))
105  acc.merge(ITkTrackParticleCnvAlgCfg(flags,
106  name = f"{newTrackName}TrackParticleCnvAlg",
107  TrackContainerName = newTrackName,
108  xAODTrackParticlesFromTracksContainerName = f"{newTrackName}TrackParticles",
109  TrackTruthContainerName = f"{newTrackName}TruthCollection"))
110 
111  from OutputStreamAthenaPool.OutputStreamConfig import addToESD, addToAOD
112  itemList = [f"xAOD::TrackParticleContainer#{trackName}TrackParticles",
113  f"xAOD::TrackParticleAuxContainer#{trackName}TrackParticlesAux.",
114  f"xAOD::TrackParticleContainer#{newTrackName}TrackParticles",
115  f"xAOD::TrackParticleAuxContainer#{newTrackName}TrackParticlesAux."]
116 
117  acc.merge(addToESD(flags, itemList))
118  acc.merge(addToAOD(flags, itemList))
119  return acc
120 
ActsTrackFittingConfig.forceITkActsReFitterAlgCfg
ComponentAccumulator forceITkActsReFitterAlgCfg(flags)
Definition: ActsTrackFittingConfig.py:75
python.TrkRIO_OnTrackCreatorConfig.ITkRotCreatorCfg
def ITkRotCreatorCfg(flags, name='ITkRotCreator', **kwargs)
Definition: TrkRIO_OnTrackCreatorConfig.py:134
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.ITkTrackTruthConfig.ITkTrackTruthCfg
def ITkTrackTruthCfg(flags, Tracks="CombinedITkTracks", DetailedTruth="CombinedITkTracksDetailedTrackTruth", TracksTruth="CombinedITkTracksTrackTruthCollection")
Definition: ITkTrackTruthConfig.py:10
ActsEventCnvConfig.ActsToTrkConverterToolCfg
ComponentAccumulator ActsToTrkConverterToolCfg(flags, str name="ActsToTrkConverterTool", **kwargs)
Definition: ActsEventCnvConfig.py:6
python.InDetBoundaryCheckToolConfig.ITkBoundaryCheckToolCfg
def ITkBoundaryCheckToolCfg(flags, name='ITkBoundaryCheckTool', **kwargs)
Definition: InDetBoundaryCheckToolConfig.py:102
ActsTrackFittingConfig.ActsReFitterAlgCfg
ComponentAccumulator ActsReFitterAlgCfg(flags, str name="ActsReFitterAlg", **kwargs)
Definition: ActsTrackFittingConfig.py:60
xAODTrackingCnvConfig.ITkTrackParticleCnvAlgCfg
def ITkTrackParticleCnvAlgCfg(flags, name="ITkTrackParticleCnvAlg", ClusterSplitProbabilityName="", AssociationMapName="", bool isActsAmbi=False, **kwargs)
Definition: xAODTrackingCnvConfig.py:287
ActsTrackFittingConfig.ActsFitterCfg
ComponentAccumulator ActsFitterCfg(flags, str name="ActsFitterTool", Optional[TrackFitterType] fitterKind=None, **kwargs)
Definition: ActsTrackFittingConfig.py:8
python.TrkTrackSummaryToolConfig.InDetTrackSummaryToolCfg
def InDetTrackSummaryToolCfg(flags, name='InDetTrackSummaryTool', **kwargs)
Definition: TrkTrackSummaryToolConfig.py:22
ActsGeometryConfig.ActsExtrapolationToolCfg
ComponentAccumulator ActsExtrapolationToolCfg(flags, str name="ActsExtrapolationTool", **kwargs)
Definition: ActsGeometryConfig.py:149
ActsGeometryConfig.ActsTrackingGeometryToolCfg
ComponentAccumulator ActsTrackingGeometryToolCfg(flags, str name="ActsTrackingGeometryTool")
Definition: ActsGeometryConfig.py:140
python.InDetBoundaryCheckToolConfig.InDetBoundaryCheckToolCfg
def InDetBoundaryCheckToolCfg(flags, name='InDetBoundarySearchTool', **kwargs)
Definition: InDetBoundaryCheckToolConfig.py:7
python.OutputStreamConfig.addToESD
def addToESD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:135
ActsTrackFittingConfig.writeAdditionalTracks
ComponentAccumulator writeAdditionalTracks(flags, str trackName='ResolvedTracks', str newTrackName='ReFitted_Tracks')
Definition: ActsTrackFittingConfig.py:82
python.OutputStreamConfig.addToAOD
def addToAOD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:150