ATLAS Offline Software
ActsProtoTrackCreationAndFitConfig.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 
7  name: str = "ActsTruthGuidedProtoTrackCreatorTool",
8  **kwargs) -> ComponentAccumulator:
10  kwargs.setdefault('PRD_MultiTruthCollections', ["PRD_MultiTruthITkPixel","PRD_MultiTruthITkStrip"])
11  acc.setPrivateTools(CompFactory.ActsTrk.TruthGuidedProtoTrackCreator(name, **kwargs))
12  return acc
13 
15  name: str = "ActsProtoTrackCreationAndFitAlg",
16  **kwargs) -> ComponentAccumulator:
17  acc = ComponentAccumulator()
18  from ActsConfig.ActsTrackFindingConfig import isdet
19  kwargs.setdefault("DetectorElementCollectionKeys", isdet(flags, pixel=["ITkPixelDetectorElementCollection"], strip=["ITkStripDetectorElementCollection"]))
20 
21  from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
22  acc.merge(ITkPixelReadoutGeometryCfg(flags))
23 
24  from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
25  acc.merge(ITkStripReadoutGeometryCfg(flags))
26 
27  kwargs.setdefault('PixelClusterContainer', 'ITkPixelClusters')
28  kwargs.setdefault('StripClusterContainer', 'ITkStripClusters')
29  kwargs.setdefault('ACTSTracksLocation', 'EFTestTracks')
30 
31  if "TrackingGeometryTool" not in kwargs:
32  from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
33  kwargs.setdefault(
34  "TrackingGeometryTool",
35  acc.popToolsAndMerge(ActsTrackingGeometryToolCfg(flags)),
36  ) # PrivateToolHandle
37 
38  if 'ExtrapolationTool' not in kwargs:
39  from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg
40  kwargs.setdefault(
41  "ExtrapolationTool",
42  acc.popToolsAndMerge(ActsExtrapolationToolCfg(flags, MaxSteps=10000)),
43  ) # PrivateToolHandle
44 
45  if 'ATLASConverterTool' not in kwargs:
46  from ActsConfig.ActsEventCnvConfig import ActsToTrkConverterToolCfg
47  kwargs.setdefault(
48  "ATLASConverterTool",
49  acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags)),
50  )
51 
52  if 'ActsFitter' not in kwargs:
53  from ActsConfig.ActsTrackFittingConfig import ActsFitterCfg
54  kwargs.setdefault("ActsFitter", acc.popToolsAndMerge(ActsFitterCfg(flags,
55  ReverseFilteringPt=0,
56  OutlierChi2Cut=30)))
57 
58  if 'PatternBuilder' not in kwargs:
59  kwargs.setdefault('PatternBuilder', acc.popToolsAndMerge(ActsTruthGuidedProtoTrackCreatorToolCfg(flags)))
60 
61  acc.addEventAlgo(CompFactory.ActsTrk.ProtoTrackCreationAndFitAlg(name,**kwargs),
62  primary=True)
63  return acc
64 
66  name: str = "ActsProtoTrackReportingAlg",
67  **kwargs) -> ComponentAccumulator:
68  acc = ComponentAccumulator()
69  acc.addEventAlgo(CompFactory.ActsTrk.ProtoTrackReportingAlg(name,**kwargs),
70  primary=True)
71  return acc
72 
73 if __name__ == "__main__":
74  from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
75 
76  def SetupHistSvc(flags, streamName, dataFile):
77  acc = ComponentAccumulator()
78  histSvc = CompFactory.THistSvc(Output= ["{streamName} DATAFILE='{data_file}', OPT='RECREATE'".format(streamName=streamName, data_file = dataFile )])
79  acc.addService(histSvc, primary=True)
80  return acc
81 
82  # Key names for the different track containers
83  ACTSProtoTrackChainTrackKey = "ACTSProtoTrackChainTestTracks"
84  FinalProtoTrackChainTracksKey="TrkProtoTrackChainTestTracks"
85  FinalProtoTrackChainxAODTracksKey="xAODProtoTrackChainTestTracks"
86 
87  from AthenaConfiguration.AllConfigFlags import initConfigFlags
88  flags = initConfigFlags()
89 
90  # this job specific flags
91  flags.addFlag("outputNTupleFile", "refits.root")
92 
93  # Disable calo for this test
94  flags.Detector.EnableCalo = False
95 
96 
97  # ensure that the xAOD SP and cluster containers are available
98  flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint=True
99  flags.Tracking.ITkMainPass.doAthenaToActsCluster=True
100 
101  flags.Acts.doRotCorrection = False
102  # IDPVM flags
103  flags.PhysVal.IDPVM.doExpertOutput = True
104  flags.PhysVal.IDPVM.doPhysValOutput = False
105  flags.PhysVal.IDPVM.doHitLevelPlots = True
106  flags.PhysVal.IDPVM.runDecoration = True
107  flags.PhysVal.IDPVM.validateExtraTrackCollections = [f"{FinalProtoTrackChainxAODTracksKey}TrackParticles"]
108  # @TODO the technical efficiency can only be computed if the xAOD clusters provide
109  # information about the contributing truth particles (truth_index).
110  # Currently, this information is only provided by the PixelPrepDataToxAOD and
111  # SCT_PrepDataToxAOD but not the ClusterConversionUtilities used in this test.
112  # Therefore doTechnicalEfficiency = False
113  flags.PhysVal.IDPVM.doTechnicalEfficiency = False
114  flags.PhysVal.OutputFileName = "IDPVM.root"
115  flags.fillFromArgs()
116  if flags.Input.Files == ['_ATHENA_GENERIC_INPUTFILE_NAME_']:
117  flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/RDO/ATLAS-P2-RUN4-03-00-00/mc21_14TeV.900498.PG_single_muonpm_Pt100_etaFlatnp0_43.recon.RDO.e8481_s4149_r14697/RDO.33675668._000016.pool.root.1"]
118  flags.lock()
119  flags = flags.cloneAndReplace("Tracking.ActiveConfig","Tracking.MainPass")
120 
121  # Main services
122  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
123  top_acc = MainServicesCfg(flags)
124 
125  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
126  top_acc.merge(PoolReadCfg(flags))
127 
128  #Truth
129  if flags.Input.isMC:
130  from xAODTruthCnv.xAODTruthCnvConfig import GEN_AOD2xAODCfg
131  top_acc.merge(GEN_AOD2xAODCfg(flags))
132 
133  # Standard reco
134  top_acc.merge(ITkTrackRecoCfg(flags))
135 
136  # ProtoTrackChain Track algo
137  top_acc.merge(SetupHistSvc(flags,streamName="HmmRefits",dataFile=flags.outputNTupleFile))
138  top_acc.merge(ActsProtoTackCreationAndFitAlgCfg(flags,"ActsProtoTackCreationAndFitAlg",ACTSTracksLocation=ACTSProtoTrackChainTrackKey ))
139 
140 
141  from ActsConfig.ActsTruthConfig import ActsTruthAssociationAlgCfg, ActsTruthParticleHitCountAlgCfg
142  top_acc.merge(ActsTruthAssociationAlgCfg(flags))
143  top_acc.merge(ActsTruthParticleHitCountAlgCfg(flags))
144 
145  from ActsConfig.ActsTruthConfig import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
146  acts_tracks=f"{flags.Tracking.ActiveConfig.extension}Tracks" if not flags.Acts.doAmbiguityResolution else f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"
147  top_acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
148  name=f"{acts_tracks}TrackToTruthAssociationAlg",
149  ACTSTracksLocation=ACTSProtoTrackChainTrackKey,
150  AssociationMapOut=acts_tracks+"ToTruthParticleAssociation"))
151 
152  top_acc.merge(ActsTrackFindingValidationAlgCfg(flags,
153  name=f"{acts_tracks}TrackFindingValidationAlg",
154  TrackToTruthAssociationMap=acts_tracks+"ToTruthParticleAssociation"
155  ))
156 
157  # Convert ActsTrk::TrackContainer to xAOD::TrackParticleContainer
158  prefix = flags.Tracking.ActiveConfig.extension
159  from ActsConfig.ActsTrackFindingConfig import ActsTrackToTrackParticleCnvAlgCfg
160  top_acc.merge(ActsTrackToTrackParticleCnvAlgCfg(flags, f"{prefix}ResolvedProtoTrackToAltTrackParticleCnvAlg",
161  ACTSTracksLocation=[ACTSProtoTrackChainTrackKey,],
162  TrackParticlesOutKey=f"{FinalProtoTrackChainxAODTracksKey}TrackParticles"))
163 
164  from ActsConfig.ActsTruthConfig import ActsTrackParticleTruthDecorationAlgCfg
165  top_acc.merge(ActsTrackParticleTruthDecorationAlgCfg(flags,
166  f"{prefix}ActsSandboxTrackParticleTruthDecorationAlg",
167  TrackToTruthAssociationMaps=[acts_tracks+"ToTruthParticleAssociation"],
168  TrackParticleContainerName=f"{FinalProtoTrackChainxAODTracksKey}TrackParticles"))
169 
170  # Add the truth decorators
171  from InDetPhysValMonitoring.InDetPhysValDecorationConfig import AddDecoratorCfg
172  top_acc.merge(AddDecoratorCfg(flags))
173 
174  # IDPVM running
175  from InDetPhysValMonitoring.InDetPhysValMonitoringConfig import InDetPhysValMonitoringCfg
176  top_acc.merge(InDetPhysValMonitoringCfg(flags))
177 
178  top_acc.printConfig(withDetails=True, summariseProps=True)
179  flags.dump()
180 
181 
182  from AthenaCommon.Constants import DEBUG
183  top_acc.foreach_component("AthEventSeq/*").OutputLevel = DEBUG
184  top_acc.printConfig(withDetails=True, summariseProps=True)
185  top_acc.store(open("ITkTrackRecoWithProtoTracks.pkl", "wb"))
186  sc = top_acc.run(flags.Exec.MaxEvents)
187 
188  if sc.isFailure():
189  import sys
190  sys.exit(1)
ActsProtoTrackCreationAndFitConfig.SetupHistSvc
def SetupHistSvc(flags, streamName, dataFile)
Definition: ActsProtoTrackCreationAndFitConfig.py:76
python.ITkTrackRecoConfig.ITkTrackRecoCfg
ComponentAccumulator ITkTrackRecoCfg(flags)
Main ITk tracking config #####################.
Definition: ITkTrackRecoConfig.py:516
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
vtune_athena.format
format
Definition: vtune_athena.py:14
ActsProtoTrackCreationAndFitConfig.ActsTruthGuidedProtoTrackCreatorToolCfg
ComponentAccumulator ActsTruthGuidedProtoTrackCreatorToolCfg(flags, str name="ActsTruthGuidedProtoTrackCreatorTool", **kwargs)
Definition: ActsProtoTrackCreationAndFitConfig.py:6
ActsProtoTrackCreationAndFitConfig.ActsProtoTrackReportingAlgCfg
ComponentAccumulator ActsProtoTrackReportingAlgCfg(flags, str name="ActsProtoTrackReportingAlg", **kwargs)
Definition: ActsProtoTrackCreationAndFitConfig.py:65
xAODTruthCnvConfig.GEN_AOD2xAODCfg
def GEN_AOD2xAODCfg(flags, name="GEN_AOD2xAOD", **kwargs)
Definition: xAODTruthCnvConfig.py:15
ActsEventCnvConfig.ActsToTrkConverterToolCfg
ComponentAccumulator ActsToTrkConverterToolCfg(flags, str name="ActsToTrkConverterTool", **kwargs)
Definition: ActsEventCnvConfig.py:6
ActsTrackFindingConfig.isdet
list isdet(flags, *list pixel=None, list strip=None)
Definition: ActsTrackFindingConfig.py:10
InDetPhysValDecorationConfig.AddDecoratorCfg
def AddDecoratorCfg(flags, **kwargs)
Definition: InDetPhysValDecorationConfig.py:157
InDetPhysValMonitoringConfig.InDetPhysValMonitoringCfg
def InDetPhysValMonitoringCfg(flags)
Definition: InDetPhysValMonitoringConfig.py:394
ActsTruthConfig.ActsTruthParticleHitCountAlgCfg
ComponentAccumulator ActsTruthParticleHitCountAlgCfg(flags, str name='ActsTruthParticleHitCountAlg', **dict kwargs)
Definition: ActsTruthConfig.py:69
ActsTruthConfig.ActsTrackToTruthAssociationAlgCfg
ComponentAccumulator ActsTrackToTruthAssociationAlgCfg(flags, str name='ActsTracksToTruthAssociationAlg', **dict kwargs)
Definition: ActsTruthConfig.py:50
ActsTruthConfig.ActsTrackFindingValidationAlgCfg
ComponentAccumulator ActsTrackFindingValidationAlgCfg(flags, str name='ActsTracksValidationAlg', **dict kwargs)
Definition: ActsTruthConfig.py:141
ActsProtoTrackCreationAndFitConfig.ActsProtoTackCreationAndFitAlgCfg
ComponentAccumulator ActsProtoTackCreationAndFitAlgCfg(flags, str name="ActsProtoTrackCreationAndFitAlg", **kwargs)
Definition: ActsProtoTrackCreationAndFitConfig.py:14
ActsGeometryConfig.ActsExtrapolationToolCfg
ComponentAccumulator ActsExtrapolationToolCfg(flags, str name="ActsExtrapolationTool", **kwargs)
Definition: ActsGeometryConfig.py:108
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:252
Constants
some useful constants -------------------------------------------------—
ActsGeometryConfig.ActsTrackingGeometryToolCfg
ComponentAccumulator ActsTrackingGeometryToolCfg(flags, str name="ActsTrackingGeometryTool")
Definition: ActsGeometryConfig.py:99
ITkPixelGeoModelConfig.ITkPixelReadoutGeometryCfg
def ITkPixelReadoutGeometryCfg(flags, setGeometryAlignable=False, setAlignmentFolderName="/Indet/Align")
Definition: ITkPixelGeoModelConfig.py:39
Trk::open
@ open
Definition: BinningType.h:40
ITkStripGeoModelConfig.ITkStripReadoutGeometryCfg
def ITkStripReadoutGeometryCfg(flags, setGeometryAlignable=False, setAlignmentFolderName="/Indet/Align")
Definition: ITkStripGeoModelConfig.py:39
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
ActsTruthConfig.ActsTruthAssociationAlgCfg
ComponentAccumulator ActsTruthAssociationAlgCfg(flags, **dict kwargs)
Definition: ActsTruthConfig.py:89
ActsTrackFittingConfig.ActsFitterCfg
ComponentAccumulator ActsFitterCfg(flags, str name="ActsKalmanFitter", **kwargs)
Definition: ActsTrackFittingConfig.py:8
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:69
ActsTruthConfig.ActsTrackParticleTruthDecorationAlgCfg
ComponentAccumulator ActsTrackParticleTruthDecorationAlgCfg(flags, str name='ActsTrackParticleTruthDecorationAlg', **dict kwargs)
Definition: ActsTruthConfig.py:116
ActsTrackFindingConfig.ActsTrackToTrackParticleCnvAlgCfg
ComponentAccumulator ActsTrackToTrackParticleCnvAlgCfg(flags, str name="ActsTrackToTrackParticleCnvAlg", **kwargs)
Definition: ActsTrackFindingConfig.py:261