From f1006384790f50dfa2dcf5f8ecc5de6a39970cca Mon Sep 17 00:00:00 2001 From: decianm Date: Thu, 12 Jun 2025 18:04:34 +0200 Subject: [PATCH 1/3] prototype for running downstream tracking over leftover tracks and hits --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index 7c7ea16016c..913c3dbee53 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -1463,7 +1463,7 @@ def make_pr_kf_light_reco_best_tracks( hits_ft=ft_hits, ) - best_down = make_TrackBestTrackCreator_tracks( + best_down1 = make_TrackBestTrackCreator_tracks( tracks=[fitted_down], name="TBTC_down_{hash}", get_ghost_tools=get_GhostProbabilityTools(track_type="Downstream"), @@ -1478,7 +1478,7 @@ def make_pr_kf_light_reco_best_tracks( seed_decloned_pr = PrCloneKillerSeedDown( TracksInContainer=seed_vs_bestlong, - TracksRefContainer=best_down, + TracksRefContainer=best_down1, ).TracksOutContainer seed_decloned = fromPrSeedingTracksV1Tracks( @@ -1486,6 +1486,35 @@ def make_pr_kf_light_reco_best_tracks( TrackAddClusterTool=clusters_on_track_tool(), ).OutputTracksLocation + + ### + seed_for_leftover_down = { "Pr" : seed_decloned_pr, "v1" : seed_decloned } + + make_residual_uthits = partial(make_ReducePrUTHits_fromLong, tracks["Match"]) + + leftover_down = make_PrLongLivedTracking_tracks(seed_for_leftover_down, make_ut_hits = make_residual_uthits) + fitted_leftover_down = make_PrKalmanFilter_Downstream_tracks( + input_tracks=leftover_down["Pr"], + hits_ut=ut_hits, + hits_ft=ft_hits, + ) + + best_down2 = make_TrackBestTrackCreator_tracks( + tracks=[fitted_leftover_down], + name="TBTC_leftover_down_{hash}", + get_ghost_tools=get_GhostProbabilityTools(track_type="Downstream"), + do_not_refit=True, + fit_tracks=False, + )["Best"] + + best_down = TrackContainersMerger(InputLocations=[best_down1, best_down2]).OutputLocation + ### + + #seed_decloned = fromPrSeedingTracksV1Tracks( + # InputTracksLocation=seed_decloned_pr, + # TrackAddClusterTool=clusters_on_track_tool(), + #).OutputTracksLocation + # these are used by the monitoring/mcchecking seed_fitted = make_PrKalmanFilter_Seed_tracks( input_tracks=tracks["Seed"]["Pr"], hits_ft=ft_hits -- GitLab From 03c4e97604b2c515659ea6325d503f051db07409 Mon Sep 17 00:00:00 2001 From: decianm Date: Fri, 13 Jun 2025 09:35:41 +0200 Subject: [PATCH 2/3] fix UT hit container --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index 913c3dbee53..2dc08b66673 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -1491,11 +1491,12 @@ def make_pr_kf_light_reco_best_tracks( seed_for_leftover_down = { "Pr" : seed_decloned_pr, "v1" : seed_decloned } make_residual_uthits = partial(make_ReducePrUTHits_fromLong, tracks["Match"]) + leftover_down = make_PrLongLivedTracking_tracks(seed_for_leftover_down, make_ut_hits = make_residual_uthits) fitted_leftover_down = make_PrKalmanFilter_Downstream_tracks( input_tracks=leftover_down["Pr"], - hits_ut=ut_hits, + hits_ut=make_residual_uthits(), hits_ft=ft_hits, ) -- GitLab From 4709850b3a333e09cd410ef140947cc93bace094 Mon Sep 17 00:00:00 2001 From: decianm Date: Fri, 13 Jun 2025 21:53:44 +0200 Subject: [PATCH 3/3] Use hits from fitted long, up and downstream stracks to veto UT hits --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 66 +++++++++++-------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index 2dc08b66673..92ce4c901e5 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -35,6 +35,7 @@ from PyConf.Algorithms import ( PrLongLivedTracking, PrMatchNN, PrResidualPrUTHits, + PrResidualPrUTHits_v1Tracks, PrResidualSciFiHits, PrResidualSeedingLong, PrResidualVeloTracks, @@ -1487,35 +1488,6 @@ def make_pr_kf_light_reco_best_tracks( ).OutputTracksLocation - ### - seed_for_leftover_down = { "Pr" : seed_decloned_pr, "v1" : seed_decloned } - - make_residual_uthits = partial(make_ReducePrUTHits_fromLong, tracks["Match"]) - - - leftover_down = make_PrLongLivedTracking_tracks(seed_for_leftover_down, make_ut_hits = make_residual_uthits) - fitted_leftover_down = make_PrKalmanFilter_Downstream_tracks( - input_tracks=leftover_down["Pr"], - hits_ut=make_residual_uthits(), - hits_ft=ft_hits, - ) - - best_down2 = make_TrackBestTrackCreator_tracks( - tracks=[fitted_leftover_down], - name="TBTC_leftover_down_{hash}", - get_ghost_tools=get_GhostProbabilityTools(track_type="Downstream"), - do_not_refit=True, - fit_tracks=False, - )["Best"] - - best_down = TrackContainersMerger(InputLocations=[best_down1, best_down2]).OutputLocation - ### - - #seed_decloned = fromPrSeedingTracksV1Tracks( - # InputTracksLocation=seed_decloned_pr, - # TrackAddClusterTool=clusters_on_track_tool(), - #).OutputTracksLocation - # these are used by the monitoring/mcchecking seed_fitted = make_PrKalmanFilter_Seed_tracks( input_tracks=tracks["Seed"]["Pr"], hits_ft=ft_hits @@ -1568,6 +1540,34 @@ def make_pr_kf_light_reco_best_tracks( fit_tracks=False, )["Best"] + ### + best_for_ut_hits = TrackContainersMerger(InputLocations=[best_long, best_down1, best_up]).OutputLocation + + seed_for_leftover_down = { "Pr" : seed_decloned_pr, "v1" : seed_decloned } + + leftover_ut_hits = { "v1" : best_for_ut_hits } + + make_residual_uthits = partial(make_ReducePrUTHits_fromV1, leftover_ut_hits) + + + leftover_down = make_PrLongLivedTracking_tracks(seed_for_leftover_down, make_ut_hits = make_residual_uthits) + fitted_leftover_down = make_PrKalmanFilter_Downstream_tracks( + input_tracks=leftover_down["Pr"], + hits_ut=make_residual_uthits(), + hits_ft=ft_hits, + ) + + best_down2 = make_TrackBestTrackCreator_tracks( + tracks=[fitted_leftover_down], + name="TBTC_leftover_down_{hash}", + get_ghost_tools=get_GhostProbabilityTools(track_type="Downstream"), + do_not_refit=True, + fit_tracks=False, + )["Best"] + + best_down = TrackContainersMerger(InputLocations=[best_down1, best_down2]).OutputLocation + ### + velo_fitted = make_PrKalmanFilter_Velo_tracks( input_tracks=tracks["Velo"]["Pr"], hits_vp=vp_hits, @@ -1923,6 +1923,14 @@ def make_ReducePrUTHits_fromLong(input_tracks, make_ut_hits=make_PrStorePrUTHits TracksLocation=input_tracks["Pr"], PrUTHitsLocation=make_ut_hits() ).PrUTHitsOutput +@configurable +def make_ReducePrUTHits_fromV1(input_tracks, make_ut_hits=make_PrStorePrUTHits_hits): + """ + Function to remove PrUTHits used by Long tracks and create a new PrUTHits container for the residual PrUTHits, which are later used as input to PrLongLivedTracking or PrForwardTracking + """ + return PrResidualPrUTHits_v1Tracks( + TracksLocation=input_tracks["v1"], PrUTHitsLocation=make_ut_hits() + ).PrUTHitsOutput def get_fast_hlt2_tracks(): """Function to get fast set of tracks reconstructed in HLT2 -- GitLab