diff --git a/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py b/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py index 52a50bafd2cbd65bcd746af4be6b2c833ecf06fd..df5ef9c5324f4cf7566f87ea324ee08899f6ebdd 100644 --- a/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py +++ b/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py @@ -117,8 +117,10 @@ def ITkTrackRecoOutputCfg(flags, extensions_list=None): if (e == '' or flags.Tracking[f"ITk{e}Pass"].storeTrackSeeds) ] for extension in listOfExtensionsRequesting: toAOD += [ - f"xAOD::TrackParticleContainer#SiSPSeedSegments{extension}TrackParticles", - f"xAOD::TrackParticleAuxContainer#SiSPSeedSegments{extension}TrackParticlesAux." + f"xAOD::TrackParticleContainer#SiSPSeedSegments{extension}PixelTrackParticles", + f"xAOD::TrackParticleAuxContainer#SiSPSeedSegments{extension}PixelTrackParticlesAux.", + f"xAOD::TrackParticleContainer#SiSPSeedSegments{extension}StripTrackParticles", + f"xAOD::TrackParticleAuxContainer#SiSPSeedSegments{extension}StripTrackParticlesAux." ] result = ComponentAccumulator() diff --git a/InnerDetector/InDetConfig/python/InDetPrepRawDataToxAODConfig.py b/InnerDetector/InDetConfig/python/InDetPrepRawDataToxAODConfig.py index 17a7a9fad8548a86f716e41e63855bb4d3da5f78..8c0e2c826711cd00aa1cfb076d50fea278e699db 100644 --- a/InnerDetector/InDetConfig/python/InDetPrepRawDataToxAODConfig.py +++ b/InnerDetector/InDetConfig/python/InDetPrepRawDataToxAODConfig.py @@ -74,9 +74,11 @@ def ITkPixelPrepDataToxAODCfg(flags, name='ITkPixelPrepDataToxAOD', **kwargs): acc.merge(ITkPixelDCSCondStatusAlgCfg(flags)) acc.merge(ITkPixelDCSCondTempAlgCfg(flags)) acc.merge(ITkPixelDCSCondHVAlgCfg(flags)) - - from InDetConfig.PixelCalibAlgsConfig import ITkPixelChargeToTConversionCfg - acc.merge(ITkPixelChargeToTConversionCfg(flags)) + + from TrkConfig.TrkConfigFlags import TrackingComponent + if TrackingComponent.AthenaChain in flags.Tracking.recoChain: + from InDetConfig.PixelCalibAlgsConfig import ITkPixelChargeToTConversionCfg + acc.merge(ITkPixelChargeToTConversionCfg(flags)) if "PixelConditionsSummaryTool" not in kwargs: from PixelConditionsTools.ITkPixelConditionsSummaryConfig import ITkPixelConditionsSummaryCfg diff --git a/Tracking/Acts/ActsConfig/python/ActsSeedingConfig.py b/Tracking/Acts/ActsConfig/python/ActsSeedingConfig.py index dfbe3e3e59b2268b9c2492f63f999ee9642363a7..b52049eda81cdb53cf999ba7e9ea4400439da2f0 100644 --- a/Tracking/Acts/ActsConfig/python/ActsSeedingConfig.py +++ b/Tracking/Acts/ActsConfig/python/ActsSeedingConfig.py @@ -480,23 +480,35 @@ def ActsSeedingCfg(flags) -> ComponentAccumulator: if flags.Tracking.ActiveConfig.storeTrackSeeds: # For the time being this only saves Pixel Seeds. Will add the Strip Seed case later - seedKey = f'{flags.Tracking.ActiveConfig.extension}PixelSeeds' - trackKey = f'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}Tracks' - particleKey = f'SiSPSeedSegments{flags.Tracking.ActiveConfig.extension}' - acc.merge(ActsSeedToTrackCnvAlgCfg(flags, - name=f"{flags.Tracking.ActiveConfig.extension}SeedToTrackCnvAlg", - SeedContainerKey=seedKey, - ACTSTracksLocation=trackKey)) + seedKeyPixels = f'{flags.Tracking.ActiveConfig.extension}PixelSeeds' + seedKeyStrips = f'{flags.Tracking.ActiveConfig.extension}StripSeeds' + trackKeyPixels = f'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks' + trackKeyStrips = f'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}StripTracks' + particleKeyPixels = f'SiSPSeedSegments{flags.Tracking.ActiveConfig.extension}Pixel' + particleKeyStrips = f'SiSPSeedSegments{flags.Tracking.ActiveConfig.extension}Strip' + acc.merge(ActsSeedToTrackCnvAlgPixelCfg(flags, + name=f"{flags.Tracking.ActiveConfig.extension}PixelSeedToTrackCnvAlg", + SeedContainerKey=seedKeyPixels, + ACTSTracksLocation=trackKeyPixels)) + + acc.merge(ActsSeedToTrackCnvAlgStripCfg(flags, + name=f"{flags.Tracking.ActiveConfig.extension}StripSeedToTrackCnvAlg", + SeedContainerKey=seedKeyStrips, + ACTSTracksLocation=trackKeyStrips)) from ActsConfig.ActsTrackFindingConfig import ActsTrackToTrackParticleCnvAlgCfg acc.merge(ActsTrackToTrackParticleCnvAlgCfg(flags, - name=f"{flags.Tracking.ActiveConfig.extension}TracksSeedToTrackParticleCnvAlg", - TrackParticlesOutKey=particleKey, - ACTSTracksLocation=[trackKey])) + name=f"{flags.Tracking.ActiveConfig.extension}PixelTracksSeedToTrackParticleCnvAlg", + TrackParticlesOutKey=particleKeyPixels, + ACTSTracksLocation=[trackKeyPixels])) + acc.merge(ActsTrackToTrackParticleCnvAlgCfg(flags, + name=f"{flags.Tracking.ActiveConfig.extension}StripTracksSeedToTrackParticleCnvAlg", + TrackParticlesOutKey=particleKeyStrips, + ACTSTracksLocation=[trackKeyStrips])) return acc -def ActsSeedToTrackCnvAlgCfg(flags, - name: str = 'ActsSeedToTrackCnvAlg', +def ActsSeedToTrackCnvAlgPixelCfg(flags, + name: str = 'ActsSeedToTrackPixelCnvAlg', **kwargs: dict) -> ComponentAccumulator: acc = ComponentAccumulator() from ActsConfig.ActsGeometryConfig import ActsDetectorElementToActsGeometryIdMappingAlgCfg @@ -506,7 +518,7 @@ def ActsSeedToTrackCnvAlgCfg(flags, kwargs.setdefault('SeedContainerKey', f'{flags.Tracking.ActiveConfig.extension}PixelSeeds') kwargs.setdefault('EstimatedTrackParametersKey',f'{flags.Tracking.ActiveConfig.extension}PixelEstimatedTrackParams') - kwargs.setdefault('ACTSTracksLocation', f'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}Tracks') # This uses the same naming convention than the legacy code + kwargs.setdefault('ACTSTracksLocation', f'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks') # This uses the same naming convention than the legacy code if 'TrackingGeometryTool' not in kwargs: from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg @@ -515,3 +527,18 @@ def ActsSeedToTrackCnvAlgCfg(flags, acc.addEventAlgo(CompFactory.ActsTrk.SeedToTrackCnvAlg(name, **kwargs), primary=True) return acc +def ActsSeedToTrackCnvAlgStripCfg(flags, + name: str = 'ActsSeedToTrackStripCnvAlg', + **kwargs: dict) -> ComponentAccumulator: + acc = ComponentAccumulator() + + kwargs.setdefault('SeedContainerKey', f'{flags.Tracking.ActiveConfig.extension}StripSeeds') + kwargs.setdefault('EstimatedTrackParametersKey',f'{flags.Tracking.ActiveConfig.extension}StripEstimatedTrackParams') + + kwargs.setdefault('ACTSTracksLocation', f'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}StripTracks') # This uses the same naming convention than the legacy code + + from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg + kwargs.setdefault('TrackingGeometryTool', acc.popToolsAndMerge(ActsTrackingGeometryToolCfg(flags))) + + acc.addEventAlgo(CompFactory.ActsTrk.SeedToTrackCnvAlg(name, **kwargs), primary=True) + return acc diff --git a/Tracking/Acts/ActsConfig/test/ActsPersistifySeedsAlone.sh b/Tracking/Acts/ActsConfig/test/ActsPersistifySeedsAlone.sh new file mode 100755 index 0000000000000000000000000000000000000000..bd4968f93f286b09afa1546932f9621195615e60 --- /dev/null +++ b/Tracking/Acts/ActsConfig/test/ActsPersistifySeedsAlone.sh @@ -0,0 +1,30 @@ +#!/usr/bin/bash +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration + +# ttbar mu=200 input +input_rdo=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/RDO/ATLAS-P2-RUN4-03-00-00/mc21_14TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.RDO.e8481_s4149_r14700/RDO.33629020._000047.pool.root.1 +n_events=10 + +# Run Acts +Reco_tf.py \ + \ + --inputRDOFile ${input_rdo} \ + --outputAODFile AOD.acts.pool.root \ + --outputESDFile ESD.acts.pool.root \ + --preInclude "InDetConfig.ConfigurationHelpers.OnlyTrackingPreInclude,ActsConfig.ActsCIFlags.actsAloneWorkflowFlags" \ + --preExec "flags.Exec.FPE=-1;" "flags.Tracking.doStoreTrackSeeds=True;flags.Tracking.doTruth=True;flags.Tracking.doStoreSiSPSeededTracks=True;flags.Tracking.ITkActsPass.storeTrackSeeds=True;flags.Tracking.ITkActsPass.storeSiSPSeededTracks=True;flags.Tracking.writeExtendedSi_PRDInfo=False;flags.Tracking.ITkActsPass.doAthenaSeed=False;flags.Tracking.ITkActsPass.doActsSeed=True" \ + --postExec "from OutputStreamAthenaPool.OutputStreamConfig import addToAOD; toAOD = ['xAOD::TrackParticleContainer#SiSPSeedSegments*', 'xAOD::TrackParticleAuxContainer#SiSPSeedSegments*']; cfg.merge(addToAOD(flags, toAOD))" \ + --maxEvents ${n_events} \ + --multithreaded + +reco_rc=$? +if [ $reco_rc != 0 ]; then + exit $reco_rc +fi + +echo "Dumping Athena ESD content" +checkxAOD.py ESD.athena.pool.root + +echo "Dumping Acts ESD content" +checkxAOD.py ESD.acts.pool.root + diff --git a/Tracking/Acts/ActsEventCnv/src/SeedToTrackCnvAlg.cxx b/Tracking/Acts/ActsEventCnv/src/SeedToTrackCnvAlg.cxx index efc619ec62a98a7014a99b55087446f57f8aa913..a11193874eb766e9ac0584b803a07a22eaec54ac 100644 --- a/Tracking/Acts/ActsEventCnv/src/SeedToTrackCnvAlg.cxx +++ b/Tracking/Acts/ActsEventCnv/src/SeedToTrackCnvAlg.cxx @@ -79,7 +79,7 @@ StatusCode SeedToTrackCnvAlg::execute(const EventContext& context) const } } } - + std::unique_ptr<ActsTrk::TrackContainer> constTracksContainer = m_tracksBackendHandlesHelper.moveToConst(std::move(tracksContainer), m_trackingGeometryTool->getGeometryContext(context).context(), context);