ATLAS Offline Software
TrkGaussianSumFilterConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2 
3 __doc__ = "Configure GSF track fitter building"
4 
5 from AthenaCommon.Logging import logging
6 from AthenaConfiguration.ComponentFactory import CompFactory
7 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8 
9 
10 def GSFExtrapolatorToolCfg(flags, **kwargs):
11  '''dedicated Multi Component Extrapolator
12  '''
13 
14  acc = ComponentAccumulator()
15 
16  if "Propagators" not in kwargs:
17  from TrkConfig.TrkExRungeKuttaPropagatorConfig import (
18  GSFRungeKuttaPropagatorCfg)
19  gsfTrkPropagator = acc.popToolsAndMerge(
21  kwargs["Propagator"] = gsfTrkPropagator
22 
23  if "Navigator" not in kwargs:
24  from TrkConfig.AtlasExtrapolatorToolsConfig import AtlasNavigatorCfg
25  egTrkNavigator = AtlasNavigatorCfg(flags, name="egTrkNavigator")
26  kwargs["Navigator"] = acc.popToolsAndMerge(egTrkNavigator)
27 
28  if "ElectronMaterialConvolution" not in kwargs:
29  GsfMaterialUpdator = CompFactory.Trk.ElectronMaterialMixtureConvolution(
30  name="ElectronMaterialUpdator",
31  MaximumNumberOfComponents=12
32  )
33  kwargs["GsfMaterialConvolution"] = GsfMaterialUpdator
34 
35  acc.setPrivateTools(CompFactory.Trk.GsfExtrapolator(**kwargs))
36  return acc
37 
38 
39 # default for refits with electron hypothesis
40 # for example see
41 # https://cds.cern.ch/record/1449796/files/ATLAS-CONF-2012-047.pdf
42 def GaussianSumFitterCfg(flags, name="GaussianSumFitter", **kwargs):
43  ''' GSF Track Fitter Config
44  '''
45  acc = ComponentAccumulator()
46 
47  kwargs.setdefault("RefitOnMeasurementBase", True)
48 
49  # Note that the ROT tool for calibration
50  # has an effect if we fit on PrepRawData.
51  # i.e not refitting Measurements
52  RefitPRD = not kwargs["RefitOnMeasurementBase"]
53  if RefitPRD and "ToolForROTCreation" not in kwargs:
54  from TrkConfig.TrkRIO_OnTrackCreatorConfig import InDetRotCreatorCfg
55  kwargs["ToolForROTCreation"] = acc.popToolsAndMerge(
56  InDetRotCreatorCfg(flags)
57  )
58 
59  if "ToolForExtrapolation" not in kwargs:
60  gsfextrap = GSFExtrapolatorToolCfg(flags)
61  kwargs["ToolForExtrapolation"] = acc.popToolsAndMerge(gsfextrap)
62 
63  kwargs.setdefault("ReintegrateOutliers", True)
64 
65  acc.setPrivateTools(CompFactory.Trk.GaussianSumFitter(**kwargs))
66 
67  return acc
68 
69 def ITkGaussianSumFitterCfg(flags, name="ITkGaussianSumFitter", **kwargs):
70  acc = ComponentAccumulator()
71 
72  if "ToolForROTCreation" not in kwargs:
73  from TrkConfig.TrkRIO_OnTrackCreatorConfig import ITkRotCreatorCfg
74  ITkRotCreator = acc.popToolsAndMerge(ITkRotCreatorCfg(flags))
75  kwargs.setdefault("ToolForROTCreation", ITkRotCreator)
76 
77  kwargs.setdefault("RefitOnMeasurementBase", True)
78 
79  GaussianSumFitter = acc.popToolsAndMerge(
80  GaussianSumFitterCfg(flags, name=name, **kwargs)
81  )
82 
83  acc.setPrivateTools(GaussianSumFitter)
84  return acc
85 
86 
87 if __name__ == "__main__":
88 
89  from AthenaConfiguration.AllConfigFlags import initConfigFlags
90  flags = initConfigFlags()
91 
92  from AthenaConfiguration.ComponentAccumulator import printProperties
93  from AthenaConfiguration.TestDefaults import defaultTestFiles
94 
95  flags.Input.Files = defaultTestFiles.RDO_RUN2
96  flags.fillFromArgs()
97  flags.lock()
98  flags.dump()
99 
101  mlog = logging.getLogger("GSFTrackFitterConfigTest")
102  mlog.info("Configuring GSFExtrapolatorTool :")
104  mlog,
105  cfg.popToolsAndMerge(GSFExtrapolatorToolCfg(flags)),
106  nestLevel=1,
107  printDefaults=True,
108  )
109  mlog.info("Configuring EMGSFTrackFitter :")
111  mlog,
112  cfg.popToolsAndMerge(GaussianSumFitterCfg(flags)),
113  nestLevel=1,
114  printDefaults=True,
115  )
116 
117  f = open("gsftrackfitter.pkl", "wb")
118  cfg.store(f)
119  f.close()
python.TrkRIO_OnTrackCreatorConfig.ITkRotCreatorCfg
def ITkRotCreatorCfg(flags, name='ITkRotCreator', **kwargs)
Definition: TrkRIO_OnTrackCreatorConfig.py:134
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.TrkRIO_OnTrackCreatorConfig.InDetRotCreatorCfg
def InDetRotCreatorCfg(flags, name='InDetRotCreator', **kwargs)
Definition: TrkRIO_OnTrackCreatorConfig.py:13
python.TrkGaussianSumFilterConfig.GSFExtrapolatorToolCfg
def GSFExtrapolatorToolCfg(flags, **kwargs)
Definition: TrkGaussianSumFilterConfig.py:10
python.TrkExRungeKuttaPropagatorConfig.GSFRungeKuttaPropagatorCfg
def GSFRungeKuttaPropagatorCfg(flags, name='GSFTrkPropagator', **kwargs)
Definition: TrkExRungeKuttaPropagatorConfig.py:26
python.AtlasExtrapolatorToolsConfig.AtlasNavigatorCfg
def AtlasNavigatorCfg(flags, name='AtlasNavigator', **kwargs)
Definition: AtlasExtrapolatorToolsConfig.py:71
extractSporadic.printProperties
def printProperties(h, q, hLB)
Definition: extractSporadic.py:8
Trk::open
@ open
Definition: BinningType.h:40
python.TrkGaussianSumFilterConfig.GaussianSumFitterCfg
def GaussianSumFitterCfg(flags, name="GaussianSumFitter", **kwargs)
Definition: TrkGaussianSumFilterConfig.py:42
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.TrkGaussianSumFilterConfig.ITkGaussianSumFitterCfg
def ITkGaussianSumFitterCfg(flags, name="ITkGaussianSumFitter", **kwargs)
Definition: TrkGaussianSumFilterConfig.py:69