From 8198c0f656971751387e0df1eb5172da6c3ad8c1 Mon Sep 17 00:00:00 2001 From: tbold <tomasz.bold@cern.ch> Date: Tue, 16 Jul 2024 14:23:42 +0200 Subject: [PATCH 1/5] Setup Extension alg in FPGATest on RDO --- .../src/TrackExtensionAlg.cxx | 10 +++++-- .../src/TrackExtensionAlg.h | 2 +- .../ActsTrackReconstruction_entries.cxx | 2 ++ .../python/FPGATrackExtensionConfig.py | 28 +++++++++++++++++++ .../python/FPGATrackSimAnalysisConfig.py | 5 ++-- .../FPGATrackAnalysisOnRDO.sh | 3 +- .../test/FPGATrackingSimACTSIntTest.sh | 0 7 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackExtensionConfig.py mode change 100644 => 100755 Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/test/FPGATrackingSimACTSIntTest.sh diff --git a/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.cxx b/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.cxx index c1bc47b93f5d..22ee8ee7bd38 100644 --- a/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.cxx +++ b/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.cxx @@ -38,6 +38,7 @@ namespace ActsTrk{ ActsTrk::prefixFromTrackContainerName(m_trackContainerKey.key()))); ATH_CHECK(m_ATLASConverterTool.retrieve()); ATH_CHECK(m_trackingGeometryTool.retrieve()); + ATH_CHECK(m_pixelDetEleCollKey.initialize()); m_logger = makeActsAthenaLogger(this, name()); @@ -93,12 +94,15 @@ namespace ActsTrk{ std::shared_ptr<Acts::PerigeeSurface> perigeeSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(Acts::Vector3::Zero()); - for (const ActsTrk::ProtoTrack& protTrack : *protoTracksHandle) { - auto result = m_ckfConfig->ckf.findTracks(*protTrack.parameters, buildCKFOptions(context, perigeeSurface.get()), + for (const ActsTrk::ProtoTrack& protoTrack : *protoTracksHandle) { + ATH_MSG_DEBUG("Extending proto track of " << protoTrack.measurements.size() << " measurements"); + auto result = m_ckfConfig->ckf.findTracks(*protoTrack.parameters, buildCKFOptions(context, perigeeSurface.get()), tracksContainerTemp); - + ATH_MSG_DEBUG("Built " << tracksContainerTemp.size() << " tracks from it"); for (detail::RecoTrackContainer::TrackProxy tempTrackProxy : tracksContainerTemp) { ActsTrk::MutableTrackContainer::TrackProxy destTrackProxy = trackContainer.makeTrack(); + ATH_MSG_DEBUG("This track has now " << tempTrackProxy.nMeasurements()); + destTrackProxy.copyFrom(tempTrackProxy); } } diff --git a/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.h b/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.h index a464fa3525e1..08498930586b 100644 --- a/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.h +++ b/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.h @@ -51,7 +51,7 @@ class TrackExtensionAlg : public AthReentrantAlgorithm { ToolHandle<ActsTrk::IActsToTrkConverterTool> m_ATLASConverterTool{ this, "ATLASConverterTool", ""}; SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> - m_pixelDetEleCollKey{this, "PixelDetEleCollKey", "", + m_pixelDetEleCollKey{this, "PixelDetEleCollKey", "ITkPixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"}; ToolHandle<IActsTrackingGeometryTool> m_trackingGeometryTool{ this, "TrackingGeometryTool", ""}; diff --git a/Tracking/Acts/ActsTrackReconstruction/src/components/ActsTrackReconstruction_entries.cxx b/Tracking/Acts/ActsTrackReconstruction/src/components/ActsTrackReconstruction_entries.cxx index a1312a782bc4..1179b3b9659b 100644 --- a/Tracking/Acts/ActsTrackReconstruction/src/components/ActsTrackReconstruction_entries.cxx +++ b/Tracking/Acts/ActsTrackReconstruction/src/components/ActsTrackReconstruction_entries.cxx @@ -12,6 +12,7 @@ #include "src/KalmanFitter.h" #include "src/GaussianSumFitter.h" #include "src/ProtoTrackCreationAndFitAlg.h" +#include "src/TrackExtensionAlg.h" #include "src/ProtoTrackReportingAlg.h" #include "src/RandomProtoTrackCreator.h" #include "src/TruthGuidedProtoTrackCreator.h" @@ -20,6 +21,7 @@ DECLARE_COMPONENT( ActsTrk::TrackFindingAlg ) DECLARE_COMPONENT( ActsTrk::ReFitterAlg ) DECLARE_COMPONENT( ActsTrk::AmbiguityResolutionAlg ) DECLARE_COMPONENT( ActsTrk::ProtoTrackCreationAndFitAlg ) +DECLARE_COMPONENT( ActsTrk::TrackExtensionAlg ) DECLARE_COMPONENT( ActsTrk::ProtoTrackReportingAlg ) DECLARE_COMPONENT( ActsTrk::TrackToTrackParticleCnvAlg ) diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackExtensionConfig.py b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackExtensionConfig.py new file mode 100644 index 000000000000..205de126ef01 --- /dev/null +++ b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackExtensionConfig.py @@ -0,0 +1,28 @@ + # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory + +def FPGATrackExtensionAlgCfg(flags, **kwargs): + acc = ComponentAccumulator() + + kwargs.setdefault("PixelClusterContainer", "ITkPixelClusters") + kwargs.setdefault("ACTSTracksLocation", "ExtendedFPGATracks") + if "ExtrapolationTool" not in kwargs: + from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg + kwargs["ExtrapolationTool"] = acc.popToolsAndMerge( + ActsExtrapolationToolCfg(flags, MaxSteps=100) + ) # PrivateToolHandle + if 'ATLASConverterTool' not in kwargs: + from ActsConfig.ActsEventCnvConfig import ActsToTrkConverterToolCfg + kwargs["ATLASConverterTool"] = acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags)) + + if "TrackingGeometryTool" not in kwargs: + from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg + kwargs["TrackingGeometryTool"] = acc.popToolsAndMerge(ActsTrackingGeometryToolCfg(flags)) + + from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg + acc.merge(ITkPixelReadoutGeometryCfg(flags)) + + acc.addEventAlgo(CompFactory.ActsTrk.TrackExtensionAlg(**kwargs)) + return acc \ No newline at end of file diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py index 4cb6776c2288..ec4beb6dcbcd 100755 --- a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py +++ b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py @@ -610,8 +610,9 @@ if __name__ == "__main__": from FPGATrackSimPrototrackFitter.FPGATrackSimPrototrackFitterConfig import FPGAPrototrackFitAndTruthDecorationCfg acc.merge(FPGAPrototrackFitAndTruthDecorationCfg(flags,FinalProtoTrackChainxAODTracksKey=FinalProtoTrackChainxAODTracksKey,stage='_1st')) # Run ACTS KF for 1st stage - - # write to AOD + from FPGATrackSimConfTools.FPGATrackExtensionConfig import FPGATrackExtensionAlgCfg + acc.merge(FPGATrackExtensionAlgCfg(flags, name="FPGATrackExtension", ProtoTracksLocation=FinalProtoTrackChainxAODTracksKey, OutputLevel=2)) # run CKF track extension on FPGA tracks + if flags.Trigger.FPGATrackSim.writeToAOD: acc.merge(WriteToAOD(flags, stage = '_1st')) if flags.Trigger.FPGATrackSim.Hough.secondStage : acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg_2nd', stage = '_2nd')) # Default disabled, doesn't work if enabled if flags.Trigger.FPGATrackSim.convertUnmappedHits: acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlgUnmapped_1st', stage = 'Unmapped_1st', doClusters = False)) diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/test/FPGATrackWorkflow/FPGATrackAnalysisOnRDO.sh b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/test/FPGATrackWorkflow/FPGATrackAnalysisOnRDO.sh index d81f4c2240c3..53c1d5cfb3b2 100755 --- a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/test/FPGATrackWorkflow/FPGATrackAnalysisOnRDO.sh +++ b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/test/FPGATrackWorkflow/FPGATrackAnalysisOnRDO.sh @@ -17,7 +17,8 @@ python -m FPGATrackSimConfTools.FPGATrackSimAnalysisConfig \ Trigger.FPGATrackSim.mapsDir=${MAPS} \ Trigger.FPGATrackSim.tracking=True \ Trigger.FPGATrackSim.sampleType='singleMuons' \ - Trigger.FPGATrackSim.bankDir=${BANKS} + Trigger.FPGATrackSim.bankDir=${BANKS} \ + Trigger.FPGATrackSim.doEDMConversion=True ls -l echo "... analysis on RDO, this part is done ..." diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/test/FPGATrackingSimACTSIntTest.sh b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/test/FPGATrackingSimACTSIntTest.sh old mode 100644 new mode 100755 -- GitLab From 03a6670b36e4ae4dca4cc42ed1ed7d86dd1a5fb0 Mon Sep 17 00:00:00 2001 From: tbold <tomasz.bold@cern.ch> Date: Wed, 17 Jul 2024 15:30:36 +0200 Subject: [PATCH 2/5] Advance in configuring extension alg --- .../python/FPGATrackSimAnalysisConfig.py | 22 ++++++++++++------- .../FPGATrackSimPrototrackFitterConfig.py | 11 +++++++--- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py index ec4beb6dcbcd..640b5a58d7a7 100755 --- a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py +++ b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py @@ -355,7 +355,8 @@ def prepareFlagsForFPGATrackSimLogicalHistProcessAlg(flags): def FPGAClusterConverterCfg(flags): result=ComponentAccumulator() - FPGAClusterConverter = CompFactory.FPGAClusterConverter() + from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ITkStripLorentzAngleToolCfg + FPGAClusterConverter = CompFactory.FPGAClusterConverter(LorentzAngleTool=acc.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags))) result.setPrivateTools(FPGAClusterConverter) return result @@ -490,6 +491,8 @@ def FPGAConversionAlgCfg(inputFlags, name = 'FPGAConversionAlg', stage = '', **k flags = prepareFlagsForFPGATrackSimLogicalHistProcessAlg(inputFlags) result=ComponentAccumulator() + from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg + result.merge(ITkStripReadoutGeometryCfg(flags)) kwargs.setdefault("FPGATrackSimClusterKey", "FPGAClusters%s" %(stage)) kwargs.setdefault("FPGATrackSimHitKey", "FPGAHits%s" %(stage)) @@ -547,7 +550,6 @@ if __name__ == "__main__": from AthenaConfiguration.MainServicesConfig import MainServicesCfg flags = initConfigFlags() - flags.fillFromArgs() from AthenaConfiguration.TestDefaults import defaultGeometryTags flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN4 @@ -576,7 +578,9 @@ if __name__ == "__main__": flags.PhysVal.IDPVM.doTechnicalEfficiency = False # should figure out if 'True' is needed and what's missing to enable it flags.PhysVal.OutputFileName = "IDPVM.root" ############################################ - + flags.Concurrency.NumThreads=1 + flags.Scheduler.ShowDataDeps=True + flags.fillFromArgs() flags.lock() flags = flags.cloneAndReplace("Tracking.ActiveConfig","Tracking.MainPass") acc=MainServicesCfg(flags) @@ -608,10 +612,12 @@ if __name__ == "__main__": from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg acc.merge(FPGATrackSimReportingCfg(flags,perEventReports=False)) - from FPGATrackSimPrototrackFitter.FPGATrackSimPrototrackFitterConfig import FPGAPrototrackFitAndTruthDecorationCfg - acc.merge(FPGAPrototrackFitAndTruthDecorationCfg(flags,FinalProtoTrackChainxAODTracksKey=FinalProtoTrackChainxAODTracksKey,stage='_1st')) # Run ACTS KF for 1st stage - from FPGATrackSimConfTools.FPGATrackExtensionConfig import FPGATrackExtensionAlgCfg - acc.merge(FPGATrackExtensionAlgCfg(flags, name="FPGATrackExtension", ProtoTracksLocation=FinalProtoTrackChainxAODTracksKey, OutputLevel=2)) # run CKF track extension on FPGA tracks + from FPGATrackSimPrototrackFitter.FPGATrackSimPrototrackFitterConfig import FPGATruthDecorationCfg, FPGAProtoTrackFitCfg + acc.merge(FPGAProtoTrackFitCfg(flags,stage='_1st')) # Run ACTS KF for 1st stage + acc.merge(FPGATruthDecorationCfg(flags,FinalProtoTrackChainxAODTracksKey=FinalProtoTrackChainxAODTracksKey,stage='_1st')) # Run ACTS KF for 1st stage + # TODO enable once debugged + # from FPGATrackSimConfTools.FPGATrackExtensionConfig import FPGATrackExtensionAlgCfg + # acc.merge(FPGATrackExtensionAlgCfg(flags, name="FPGATrackExtension", ProtoTracksLocation="ActsProtoTracks_1stFromFPGATrack", OutputLevel=2)) # run CKF track extension on FPGA tracks if flags.Trigger.FPGATrackSim.writeToAOD: acc.merge(WriteToAOD(flags, stage = '_1st')) if flags.Trigger.FPGATrackSim.Hough.secondStage : acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg_2nd', stage = '_2nd')) # Default disabled, doesn't work if enabled @@ -623,7 +629,7 @@ if __name__ == "__main__": from InDetPhysValMonitoring.InDetPhysValDecorationConfig import AddDecoratorCfg acc.merge(AddDecoratorCfg(flags)) - # IDPVM running + # # IDPVM running from InDetPhysValMonitoring.InDetPhysValMonitoringConfig import InDetPhysValMonitoringCfg acc.merge(InDetPhysValMonitoringCfg(flags)) diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimPrototrackFitter/python/FPGATrackSimPrototrackFitterConfig.py b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimPrototrackFitter/python/FPGATrackSimPrototrackFitterConfig.py index d3dd461c5730..bf506157643c 100755 --- a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimPrototrackFitter/python/FPGATrackSimPrototrackFitterConfig.py +++ b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimPrototrackFitter/python/FPGATrackSimPrototrackFitterConfig.py @@ -48,10 +48,9 @@ def FPGAPrototrackFitAlgCfg(flags, primary=True) return acc -def FPGAPrototrackFitAndTruthDecorationCfg(flags,FinalProtoTrackChainxAODTracksKey="xAODFPGAPrototracks",name="FPGAPrototrackFitterConfig", stage = '',**kwargs): +def FPGAProtoTrackFitCfg(flags, name="FPGAPrototrackFitterConfig", stage = '', **kwargs): ACTSProtoTrackChainTrackKey = "ACTSProtoTrackChainTestTracks" - FinalProtoTrackChainxAODTracksKey=FinalProtoTrackChainxAODTracksKey acc = ComponentAccumulator() from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg @@ -63,12 +62,18 @@ def FPGAPrototrackFitAndTruthDecorationCfg(flags,FinalProtoTrackChainxAODTracksK ACTSTracksLocation=ACTSProtoTrackChainTrackKey, FPGATrackSimActsProtoTracks=f"ActsProtoTracks{stage}FromFPGATrack", **kwargs)) + return acc +def FPGATruthDecorationCfg(flags, FinalProtoTrackChainxAODTracksKey="xAODFPGAPrototracks", stage = '', **kwargs): ################################################################################ # Track to Truth association and validation from ActsConfig.ActsTruthConfig import ActsTruthParticleHitCountAlgCfg, ActsPixelClusterToTruthAssociationAlgCfg,ActsStripClusterToTruthAssociationAlgCfg - + ACTSProtoTrackChainTrackKey = "ACTSProtoTrackChainTestTracks" + FinalProtoTrackChainxAODTracksKey=FinalProtoTrackChainxAODTracksKey + + acc = ComponentAccumulator() + acc.merge(ActsPixelClusterToTruthAssociationAlgCfg(flags, name="ActsFPGAPixelClusterToTruthAssociationAlg", InputTruthParticleLinks="xAODFPGATruthLinks", -- GitLab From b75512d35b068e207930963249d1f15cf94655a7 Mon Sep 17 00:00:00 2001 From: tbold <tomasz.bold@cern.ch> Date: Thu, 18 Jul 2024 15:02:14 +0200 Subject: [PATCH 3/5] Alg is executing --- .../src/TrackExtensionAlg.cxx | 49 +++++++++---------- .../src/TrackExtensionAlg.h | 1 - .../src/TrackFindingData.h | 3 +- .../FPGATrackSimConfTools/CMakeLists.txt | 4 ++ .../python/FPGATrackExtensionConfig.py | 7 +-- .../python/FPGATrackSimAnalysisConfig.py | 5 +- 6 files changed, 37 insertions(+), 32 deletions(-) diff --git a/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.cxx b/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.cxx index 22ee8ee7bd38..1631cba375ac 100644 --- a/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.cxx +++ b/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.cxx @@ -39,7 +39,7 @@ namespace ActsTrk{ ATH_CHECK(m_ATLASConverterTool.retrieve()); ATH_CHECK(m_trackingGeometryTool.retrieve()); ATH_CHECK(m_pixelDetEleCollKey.initialize()); - + ATH_CHECK(m_extrapolationTool.retrieve()); m_logger = makeActsAthenaLogger(this, name()); auto magneticField = std::make_unique<ATLASMagneticFieldWrapper>(); @@ -93,10 +93,30 @@ namespace ActsTrk{ detail::RecoTrackContainer tracksContainerTemp(trackBackend, trackStateBackend); std::shared_ptr<Acts::PerigeeSurface> perigeeSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(Acts::Vector3::Zero()); + Acts::GeometryContext tgContext = m_trackingGeometryTool->getGeometryContext(context).context(); + Acts::MagneticFieldContext mfContext = m_extrapolationTool->getMagneticFieldContext(context); + detail::TrackFindingMeasurements measurements = collectMeasurements(context); + + + ActsTrk::UncalibSourceLinkAccessor slAccessor(measurements.orderedGeoIds(), + measurements.measurementRanges()); + Acts::SourceLinkAccessorDelegate<ActsTrk::UncalibSourceLinkAccessor::Iterator> slAccessorDelegate; + slAccessorDelegate.connect<&ActsTrk::UncalibSourceLinkAccessor::range>(&slAccessor); + + + TrackExtensionAlg::CKFOptions options(tgContext, + mfContext, + m_calibrationContext, + slAccessorDelegate, + m_ckfConfig->ckfExtensions, + m_ckfConfig->pOptions, + perigeeSurface.get()); + + for (const ActsTrk::ProtoTrack& protoTrack : *protoTracksHandle) { ATH_MSG_DEBUG("Extending proto track of " << protoTrack.measurements.size() << " measurements"); - auto result = m_ckfConfig->ckf.findTracks(*protoTrack.parameters, buildCKFOptions(context, perigeeSurface.get()), + auto result = m_ckfConfig->ckf.findTracks(*protoTrack.parameters, options, tracksContainerTemp); ATH_MSG_DEBUG("Built " << tracksContainerTemp.size() << " tracks from it"); for (detail::RecoTrackContainer::TrackProxy tempTrackProxy : tracksContainerTemp) { @@ -124,32 +144,11 @@ namespace ActsTrk{ SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> pixelDetEleHandle(m_pixelDetEleCollKey, context); detail::TrackFindingMeasurements measurements(pixelClustersHandle->size()); + measurements.addDetectorElements(xAOD::UncalibMeasType::PixelClusterType, **pixelDetEleHandle, m_ATLASConverterTool); // potential TODO: filtering only certain layers measurements.addMeasurements(0, *pixelClustersHandle, **pixelDetEleHandle, - m_ATLASConverterTool); + m_ATLASConverterTool); return measurements; } - TrackExtensionAlg::CKFOptions TrackExtensionAlg::buildCKFOptions(const EventContext& context, const Acts::PerigeeSurface* perigeeSurface) const { - Acts::GeometryContext tgContext = m_trackingGeometryTool->getGeometryContext(context).context(); - Acts::MagneticFieldContext mfContext = m_extrapolationTool->getMagneticFieldContext(context); - - detail::TrackFindingMeasurements measurements = collectMeasurements(context); - - - ActsTrk::UncalibSourceLinkAccessor slAccessor(measurements.orderedGeoIds(), - measurements.measurementRanges()); - Acts::SourceLinkAccessorDelegate<ActsTrk::UncalibSourceLinkAccessor::Iterator> slAccessorDelegate; - slAccessorDelegate.connect<&ActsTrk::UncalibSourceLinkAccessor::range>(&slAccessor); - - - return CKFOptions(tgContext, - mfContext, - m_calibrationContext, - slAccessorDelegate, - m_ckfConfig->ckfExtensions, - m_ckfConfig->pOptions, - perigeeSurface); - } - } // EOF namespace diff --git a/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.h b/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.h index 08498930586b..4d5c27794aba 100644 --- a/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.h +++ b/Tracking/Acts/ActsTrackReconstruction/src/TrackExtensionAlg.h @@ -60,7 +60,6 @@ class TrackExtensionAlg : public AthReentrantAlgorithm { std::unique_ptr<detail::CKF_config> m_ckfConfig; std::unique_ptr<const Acts::Logger> m_logger; - CKFOptions buildCKFOptions(const EventContext& context, const Acts::PerigeeSurface* perigeeSurface) const; detail::TrackFindingMeasurements collectMeasurements(const EventContext& context) const; Acts::CalibrationContext m_calibrationContext; // this will change in future to be updatable event by event diff --git a/Tracking/Acts/ActsTrackReconstruction/src/TrackFindingData.h b/Tracking/Acts/ActsTrackReconstruction/src/TrackFindingData.h index 64e25991ab14..41938be78b14 100644 --- a/Tracking/Acts/ActsTrackReconstruction/src/TrackFindingData.h +++ b/Tracking/Acts/ActsTrackReconstruction/src/TrackFindingData.h @@ -266,7 +266,8 @@ namespace ActsTrk::detail { std::stringstream msg; msg << "Measurement with unexpected Acts geometryId: " << surface.geometryId() << " type = " << static_cast<unsigned int>(measurement->type()) - << " idHash=" << measurement->identifierHash(); + << " idHash=" << measurement->identifierHash() + << (geo_iter == m_orderedGeoIds.end() ? " not" :"") << " found GeoId in orderedGeoIds, that are of size " << m_orderedGeoIds.size(); throw std::runtime_error(msg.str()); } range_idx = geo_iter - m_orderedGeoIds.begin(); diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/CMakeLists.txt b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/CMakeLists.txt index a05810d95648..9cfe101dfae7 100755 --- a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/CMakeLists.txt +++ b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/CMakeLists.txt @@ -33,3 +33,7 @@ atlas_add_test( FPGATrackSimRegionSlices_test atlas_add_test( FPGATrackSimConfigFlags_test SCRIPT python -m FPGATrackSimConfTools.FPGATrackSimConfigFlags POST_EXEC_SCRIPT noerror.sh ) + +atlas_add_test( FPGATrackSimFromRDO_test + SCRIPT FPGATrackAnalysisOnRDO.sh + POST_EXEC_SCRIPT noerror.sh ) \ No newline at end of file diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackExtensionConfig.py b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackExtensionConfig.py index 205de126ef01..e8bc3f515b2d 100644 --- a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackExtensionConfig.py +++ b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackExtensionConfig.py @@ -10,9 +10,10 @@ def FPGATrackExtensionAlgCfg(flags, **kwargs): kwargs.setdefault("ACTSTracksLocation", "ExtendedFPGATracks") if "ExtrapolationTool" not in kwargs: from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg - kwargs["ExtrapolationTool"] = acc.popToolsAndMerge( - ActsExtrapolationToolCfg(flags, MaxSteps=100) - ) # PrivateToolHandle + kwargs.setdefault( + "ExtrapolationTool", + acc.popToolsAndMerge(ActsExtrapolationToolCfg(flags, MaxSteps=100)), + ) if 'ATLASConverterTool' not in kwargs: from ActsConfig.ActsEventCnvConfig import ActsToTrkConverterToolCfg kwargs["ATLASConverterTool"] = acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags)) diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py index 640b5a58d7a7..37cb2b310560 100755 --- a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py +++ b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py @@ -580,6 +580,7 @@ if __name__ == "__main__": ############################################ flags.Concurrency.NumThreads=1 flags.Scheduler.ShowDataDeps=True + # flags.Exec.DebugStage="exec" # useful option to debug the execution of the job - we want it commented out for production flags.fillFromArgs() flags.lock() flags = flags.cloneAndReplace("Tracking.ActiveConfig","Tracking.MainPass") @@ -616,8 +617,8 @@ if __name__ == "__main__": acc.merge(FPGAProtoTrackFitCfg(flags,stage='_1st')) # Run ACTS KF for 1st stage acc.merge(FPGATruthDecorationCfg(flags,FinalProtoTrackChainxAODTracksKey=FinalProtoTrackChainxAODTracksKey,stage='_1st')) # Run ACTS KF for 1st stage # TODO enable once debugged - # from FPGATrackSimConfTools.FPGATrackExtensionConfig import FPGATrackExtensionAlgCfg - # acc.merge(FPGATrackExtensionAlgCfg(flags, name="FPGATrackExtension", ProtoTracksLocation="ActsProtoTracks_1stFromFPGATrack", OutputLevel=2)) # run CKF track extension on FPGA tracks + from FPGATrackSimConfTools.FPGATrackExtensionConfig import FPGATrackExtensionAlgCfg + acc.merge(FPGATrackExtensionAlgCfg(flags, name="FPGATrackExtension", ProtoTracksLocation="ActsProtoTracks_1stFromFPGATrack", OutputLevel=2)) # run CKF track extension on FPGA tracks if flags.Trigger.FPGATrackSim.writeToAOD: acc.merge(WriteToAOD(flags, stage = '_1st')) if flags.Trigger.FPGATrackSim.Hough.secondStage : acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg_2nd', stage = '_2nd')) # Default disabled, doesn't work if enabled -- GitLab From ac5c2973755f1a10d2263b5fe01a8e45793d3182 Mon Sep 17 00:00:00 2001 From: tbold <tomasz.bold@cern.ch> Date: Sat, 20 Jul 2024 16:44:29 +0200 Subject: [PATCH 4/5] fix test issue --- .../python/FPGATrackSimAnalysisConfig.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py index 37cb2b310560..c57dbb04a5f8 100755 --- a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py +++ b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py @@ -553,10 +553,6 @@ if __name__ == "__main__": from AthenaConfiguration.TestDefaults import defaultGeometryTags flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN4 - if isinstance(flags.Trigger.FPGATrackSim.wrapperFileName, str): - log.info("wrapperFile is string, converting to list") - flags.Trigger.FPGATrackSim.wrapperFileName = [flags.Trigger.FPGATrackSim.wrapperFileName] - flags.Input.Files = lambda f: [f.Trigger.FPGATrackSim.wrapperFileName] ############################################ # Flags used in the prototrack chain @@ -582,6 +578,11 @@ if __name__ == "__main__": flags.Scheduler.ShowDataDeps=True # flags.Exec.DebugStage="exec" # useful option to debug the execution of the job - we want it commented out for production flags.fillFromArgs() + if isinstance(flags.Trigger.FPGATrackSim.wrapperFileName, str): + log.info("wrapperFile is string, converting to list") + flags.Trigger.FPGATrackSim.wrapperFileName = [flags.Trigger.FPGATrackSim.wrapperFileName] + flags.Input.Files = lambda f: [f.Trigger.FPGATrackSim.wrapperFileName] + flags.lock() flags = flags.cloneAndReplace("Tracking.ActiveConfig","Tracking.MainPass") acc=MainServicesCfg(flags) -- GitLab From b3f86259e844842e374870723b6337e8c275ecba Mon Sep 17 00:00:00 2001 From: tbold <tomasz.bold@cern.ch> Date: Mon, 22 Jul 2024 14:47:41 +0200 Subject: [PATCH 5/5] Remove debug output --- .../FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py | 2 +- .../test/FPGATrackWorkflow/FPGATrackAnalysisOnRDO.sh | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py index c57dbb04a5f8..23e678eeeb25 100755 --- a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py +++ b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/python/FPGATrackSimAnalysisConfig.py @@ -619,7 +619,7 @@ if __name__ == "__main__": acc.merge(FPGATruthDecorationCfg(flags,FinalProtoTrackChainxAODTracksKey=FinalProtoTrackChainxAODTracksKey,stage='_1st')) # Run ACTS KF for 1st stage # TODO enable once debugged from FPGATrackSimConfTools.FPGATrackExtensionConfig import FPGATrackExtensionAlgCfg - acc.merge(FPGATrackExtensionAlgCfg(flags, name="FPGATrackExtension", ProtoTracksLocation="ActsProtoTracks_1stFromFPGATrack", OutputLevel=2)) # run CKF track extension on FPGA tracks + acc.merge(FPGATrackExtensionAlgCfg(flags, name="FPGATrackExtension", ProtoTracksLocation="ActsProtoTracks_1stFromFPGATrack")) # run CKF track extension on FPGA tracks if flags.Trigger.FPGATrackSim.writeToAOD: acc.merge(WriteToAOD(flags, stage = '_1st')) if flags.Trigger.FPGATrackSim.Hough.secondStage : acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg_2nd', stage = '_2nd')) # Default disabled, doesn't work if enabled diff --git a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/test/FPGATrackWorkflow/FPGATrackAnalysisOnRDO.sh b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/test/FPGATrackWorkflow/FPGATrackAnalysisOnRDO.sh index 53c1d5cfb3b2..d81f4c2240c3 100755 --- a/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/test/FPGATrackWorkflow/FPGATrackAnalysisOnRDO.sh +++ b/Trigger/EFTracking/FPGATrackSim/FPGATrackSimConfTools/test/FPGATrackWorkflow/FPGATrackAnalysisOnRDO.sh @@ -17,8 +17,7 @@ python -m FPGATrackSimConfTools.FPGATrackSimAnalysisConfig \ Trigger.FPGATrackSim.mapsDir=${MAPS} \ Trigger.FPGATrackSim.tracking=True \ Trigger.FPGATrackSim.sampleType='singleMuons' \ - Trigger.FPGATrackSim.bankDir=${BANKS} \ - Trigger.FPGATrackSim.doEDMConversion=True + Trigger.FPGATrackSim.bankDir=${BANKS} ls -l echo "... analysis on RDO, this part is done ..." -- GitLab