From 4eeca166d221c0b2b3f9fc94e365406d8ad791cd Mon Sep 17 00:00:00 2001 From: Penelope Hoffmann Date: Fri, 13 Jun 2025 16:13:42 +0200 Subject: [PATCH 01/17] Boolean Variable Introduction for new setup --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index 7c7ea16016c..dfed6598f41 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -504,7 +504,7 @@ def make_PrMatchNN_tracks( def make_PrLongLivedTracking_tracks( scifi_tracks, make_ut_hits=make_PrStorePrUTHits_hits, - clusters_on_track_tool=get_global_clusters_on_track_tool, + clusters_on_track_tool=get_global_clusters_on_track_tool, BSM = False, ): """Makes downstream tracks from SciFi seed tracks and UT hits using PrLongLivedTracking. @@ -516,9 +516,10 @@ def make_PrLongLivedTracking_tracks( Returns: A dict mapping v1 and v2 downstream tracks to ``'v1'`` and ``'v2'`` respectively. """ - downstream_tracks = PrLongLivedTracking( - InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits() - ).OutputLocation + with PrLongLivedTracking.bind(UseBSMTunings = BSM): + downstream_tracks = PrLongLivedTracking( + InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits() + ).OutputLocation downstream_tracks_v1 = fromPrDownstreamTracksV1Tracks( InputTracksLocation=downstream_tracks, @@ -1377,7 +1378,6 @@ def make_pr_kf_light_reco_best_tracks( Returns: DataHandles: dictionary of BestLong, BestDownstream, BestUpstream, SeedDecloned, BestSeed, BestVelo, BestVeloBackward """ - from PyConf.Algorithms import ( PrCloneKillerDown, PrCloneKillerLong, @@ -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,33 @@ 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, BSM = True) + 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 -- GitLab From 59000a28b3e90d9cf92aa3b7fafc4c7979303f7e Mon Sep 17 00:00:00 2001 From: Penelope Hoffmann Date: Mon, 16 Jun 2025 10:34:45 +0200 Subject: [PATCH 02/17] Clean Up of Boolean switch --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index dfed6598f41..c83317677d9 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -504,7 +504,7 @@ def make_PrMatchNN_tracks( def make_PrLongLivedTracking_tracks( scifi_tracks, make_ut_hits=make_PrStorePrUTHits_hits, - clusters_on_track_tool=get_global_clusters_on_track_tool, BSM = False, + clusters_on_track_tool=get_global_clusters_on_track_tool, highMassTunings = False, ): """Makes downstream tracks from SciFi seed tracks and UT hits using PrLongLivedTracking. @@ -516,10 +516,17 @@ def make_PrLongLivedTracking_tracks( Returns: A dict mapping v1 and v2 downstream tracks to ``'v1'`` and ``'v2'`` respectively. """ - with PrLongLivedTracking.bind(UseBSMTunings = BSM): + if (highMassTunings): + with PrLongLivedTracking.bind(UseHighMassTunings = highMassTunings, XPredTolConst = 220000., XPredTolOffset = 6.6, + YPredTolConst = 92000.0, YPredTolOffset = 10.25, WeightsFileName = "paramfile://data/GhostProbability/hlt2_PrLongLivedTracking_MLP_w_BSM.json"): + downstream_tracks = PrLongLivedTracking( + InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits() + ).OutputLocation + + else: downstream_tracks = PrLongLivedTracking( - InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits() - ).OutputLocation + InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits() + ).OutputLocation downstream_tracks_v1 = fromPrDownstreamTracksV1Tracks( InputTracksLocation=downstream_tracks, @@ -1490,7 +1497,7 @@ def make_pr_kf_light_reco_best_tracks( make_residual_uthits = partial(make_ReducePrUTHits_fromLong, tracks["Match"]) - leftover_down = make_PrLongLivedTracking_tracks(seed_for_leftover_down, make_ut_hits = make_residual_uthits, BSM = True) + leftover_down = make_PrLongLivedTracking_tracks(seed_for_leftover_down, make_ut_hits = make_residual_uthits, highMassTunings = True) fitted_leftover_down = make_PrKalmanFilter_Downstream_tracks( input_tracks=leftover_down["Pr"], hits_ut=make_residual_uthits(), -- GitLab From 3c906a6caaea4d5b9b0209c2ab06ceee26c55287 Mon Sep 17 00:00:00 2001 From: decianm Date: Thu, 12 Jun 2025 18:04:34 +0200 Subject: [PATCH 03/17] prototype for running downstream tracking over leftover tracks and hits Rebasing --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index c83317677d9..9889cc8eca8 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -1493,14 +1493,16 @@ 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, highMassTunings = True) + 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_ut=ut_hits, hits_ft=ft_hits, ) -- GitLab From 74d05a57398c460a3c03a3e10167304a6496605e Mon Sep 17 00:00:00 2001 From: decianm Date: Fri, 13 Jun 2025 09:35:41 +0200 Subject: [PATCH 04/17] 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 9889cc8eca8..1e3c8a98d78 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -1498,11 +1498,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 3e9c6feb86563b1d427db634e1cd14f2e5a435be Mon Sep 17 00:00:00 2001 From: decianm Date: Fri, 13 Jun 2025 21:53:44 +0200 Subject: [PATCH 05/17] 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 1e3c8a98d78..dc098b5df10 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, @@ -1494,35 +1495,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 @@ -1575,6 +1547,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, @@ -1930,6 +1930,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 From 3fdecc340f7aa0576a3bb13aa0bd7ccfb466a6b7 Mon Sep 17 00:00:00 2001 From: Penelope Hoffmann Date: Mon, 16 Jun 2025 11:22:59 +0200 Subject: [PATCH 06/17] Rebase fixes --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index dc098b5df10..4134bc01fab 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -1557,7 +1557,7 @@ def make_pr_kf_light_reco_best_tracks( 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) + leftover_down = make_PrLongLivedTracking_tracks(seed_for_leftover_down, make_ut_hits = make_residual_uthits, highMassTunings = True) fitted_leftover_down = make_PrKalmanFilter_Downstream_tracks( input_tracks=leftover_down["Pr"], hits_ut=make_residual_uthits(), -- GitLab From f14d2c06bca3d1f172f7ffacce2b9a7b68a9142f Mon Sep 17 00:00:00 2001 From: Penelope Hoffmann Date: Mon, 16 Jun 2025 13:28:57 +0200 Subject: [PATCH 07/17] Tightening the Ghost Rate Cut --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index 4134bc01fab..cfa0caa3e58 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -518,7 +518,7 @@ def make_PrLongLivedTracking_tracks( A dict mapping v1 and v2 downstream tracks to ``'v1'`` and ``'v2'`` respectively. """ if (highMassTunings): - with PrLongLivedTracking.bind(UseHighMassTunings = highMassTunings, XPredTolConst = 220000., XPredTolOffset = 6.6, + with PrLongLivedTracking.bind(UseHighMassTunings = highMassTunings, XPredTolConst = 220000., XPredTolOffset = 6.6, MaxGhostProb = 0.65, YPredTolConst = 92000.0, YPredTolOffset = 10.25, WeightsFileName = "paramfile://data/GhostProbability/hlt2_PrLongLivedTracking_MLP_w_BSM.json"): downstream_tracks = PrLongLivedTracking( InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits() -- GitLab From 0923edb7c5b7b57831a03a0ff4fdf62ece0d34f9 Mon Sep 17 00:00:00 2001 From: Gitlab CI Date: Mon, 16 Jun 2025 11:29:40 +0000 Subject: [PATCH 08/17] pre-commit fixes patch generated by https://gitlab.cern.ch/lhcb/Moore/-/jobs/57491752 --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 56 ++++++++++++------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index cfa0caa3e58..f13890d67d8 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -505,7 +505,8 @@ def make_PrMatchNN_tracks( def make_PrLongLivedTracking_tracks( scifi_tracks, make_ut_hits=make_PrStorePrUTHits_hits, - clusters_on_track_tool=get_global_clusters_on_track_tool, highMassTunings = False, + clusters_on_track_tool=get_global_clusters_on_track_tool, + highMassTunings=False, ): """Makes downstream tracks from SciFi seed tracks and UT hits using PrLongLivedTracking. @@ -517,17 +518,24 @@ def make_PrLongLivedTracking_tracks( Returns: A dict mapping v1 and v2 downstream tracks to ``'v1'`` and ``'v2'`` respectively. """ - if (highMassTunings): - with PrLongLivedTracking.bind(UseHighMassTunings = highMassTunings, XPredTolConst = 220000., XPredTolOffset = 6.6, MaxGhostProb = 0.65, - YPredTolConst = 92000.0, YPredTolOffset = 10.25, WeightsFileName = "paramfile://data/GhostProbability/hlt2_PrLongLivedTracking_MLP_w_BSM.json"): + if highMassTunings: + with PrLongLivedTracking.bind( + UseHighMassTunings=highMassTunings, + XPredTolConst=220000.0, + XPredTolOffset=6.6, + MaxGhostProb=0.65, + YPredTolConst=92000.0, + YPredTolOffset=10.25, + WeightsFileName="paramfile://data/GhostProbability/hlt2_PrLongLivedTracking_MLP_w_BSM.json", + ): downstream_tracks = PrLongLivedTracking( - InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits() - ).OutputLocation + InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits() + ).OutputLocation else: downstream_tracks = PrLongLivedTracking( - InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits() - ).OutputLocation + InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits() + ).OutputLocation downstream_tracks_v1 = fromPrDownstreamTracksV1Tracks( InputTracksLocation=downstream_tracks, @@ -1494,7 +1502,6 @@ def make_pr_kf_light_reco_best_tracks( 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 @@ -1548,16 +1555,19 @@ def make_pr_kf_light_reco_best_tracks( )["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 } + best_for_ut_hits = TrackContainersMerger( + InputLocations=[best_long, best_down1, best_up] + ).OutputLocation - leftover_ut_hits = { "v1" : best_for_ut_hits } - - make_residual_uthits = partial(make_ReducePrUTHits_fromV1, leftover_ut_hits) + 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, highMassTunings = True) + leftover_down = make_PrLongLivedTracking_tracks( + seed_for_leftover_down, make_ut_hits=make_residual_uthits, highMassTunings=True + ) fitted_leftover_down = make_PrKalmanFilter_Downstream_tracks( input_tracks=leftover_down["Pr"], hits_ut=make_residual_uthits(), @@ -1572,9 +1582,11 @@ def make_pr_kf_light_reco_best_tracks( fit_tracks=False, )["Best"] - best_down = TrackContainersMerger(InputLocations=[best_down1, best_down2]).OutputLocation - ### - + best_down = TrackContainersMerger( + InputLocations=[best_down1, best_down2] + ).OutputLocation + ### + velo_fitted = make_PrKalmanFilter_Velo_tracks( input_tracks=tracks["Velo"]["Pr"], hits_vp=vp_hits, @@ -1930,15 +1942,17 @@ 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 + """ + 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 From 4ec3c98863e2d7947ccda4068bbb6e251e133c60 Mon Sep 17 00:00:00 2001 From: Penelope Hoffmann Date: Tue, 17 Jun 2025 14:48:04 +0200 Subject: [PATCH 09/17] Y tol tuning --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index f13890d67d8..8a9c0372388 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -524,8 +524,8 @@ def make_PrLongLivedTracking_tracks( XPredTolConst=220000.0, XPredTolOffset=6.6, MaxGhostProb=0.65, - YPredTolConst=92000.0, - YPredTolOffset=10.25, + YPredTolConst=10.0, + YPredTolOffset=2.7, WeightsFileName="paramfile://data/GhostProbability/hlt2_PrLongLivedTracking_MLP_w_BSM.json", ): downstream_tracks = PrLongLivedTracking( -- GitLab From bb61df9805c04ffc6bb4beb83aa2e2d9b853ffa3 Mon Sep 17 00:00:00 2001 From: Gitlab CI Date: Tue, 17 Jun 2025 12:49:48 +0000 Subject: [PATCH 10/17] pre-commit fixes patch generated by https://gitlab.cern.ch/lhcb/Moore/-/jobs/57552437 --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index 8a9c0372388..2fd876f5a9c 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -524,8 +524,8 @@ def make_PrLongLivedTracking_tracks( XPredTolConst=220000.0, XPredTolOffset=6.6, MaxGhostProb=0.65, - YPredTolConst=10.0, - YPredTolOffset=2.7, + YPredTolConst=10.0, + YPredTolOffset=2.7, WeightsFileName="paramfile://data/GhostProbability/hlt2_PrLongLivedTracking_MLP_w_BSM.json", ): downstream_tracks = PrLongLivedTracking( -- GitLab From bb137f658418792fa5f46c1757e8e88c703d6667 Mon Sep 17 00:00:00 2001 From: Penelope Hoffmann Date: Wed, 18 Jun 2025 17:49:56 +0200 Subject: [PATCH 11/17] MinPt and GhostProb tunings --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index 2fd876f5a9c..5c370303061 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -526,6 +526,8 @@ def make_PrLongLivedTracking_tracks( MaxGhostProb=0.65, YPredTolConst=10.0, YPredTolOffset=2.7, + MinPt=200., + InitialMinPt=100., WeightsFileName="paramfile://data/GhostProbability/hlt2_PrLongLivedTracking_MLP_w_BSM.json", ): downstream_tracks = PrLongLivedTracking( @@ -1580,6 +1582,7 @@ def make_pr_kf_light_reco_best_tracks( get_ghost_tools=get_GhostProbabilityTools(track_type="Downstream"), do_not_refit=True, fit_tracks=False, + max_ghost_prob=0.2, )["Best"] best_down = TrackContainersMerger( -- GitLab From c70c003354932adba81e03def64073a9a141501d Mon Sep 17 00:00:00 2001 From: Gitlab CI Date: Wed, 18 Jun 2025 15:50:41 +0000 Subject: [PATCH 12/17] pre-commit fixes patch generated by https://gitlab.cern.ch/lhcb/Moore/-/jobs/57620357 --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index 5c370303061..27db7f2fce5 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -526,8 +526,8 @@ def make_PrLongLivedTracking_tracks( MaxGhostProb=0.65, YPredTolConst=10.0, YPredTolOffset=2.7, - MinPt=200., - InitialMinPt=100., + MinPt=200.0, + InitialMinPt=100.0, WeightsFileName="paramfile://data/GhostProbability/hlt2_PrLongLivedTracking_MLP_w_BSM.json", ): downstream_tracks = PrLongLivedTracking( -- GitLab From 3a41641d4ba33b57ce34b5ce100eaf6d6cd9369b Mon Sep 17 00:00:00 2001 From: Penelope Hoffmann Date: Thu, 19 Jun 2025 10:31:58 +0200 Subject: [PATCH 13/17] Fix warning --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index 27db7f2fce5..e2c0b9febdd 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -523,7 +523,7 @@ def make_PrLongLivedTracking_tracks( UseHighMassTunings=highMassTunings, XPredTolConst=220000.0, XPredTolOffset=6.6, - MaxGhostProb=0.65, + GhostProbCut=0.65, YPredTolConst=10.0, YPredTolOffset=2.7, MinPt=200.0, -- GitLab From 3480e54681eb01fe162739aff751591187a6b4ea Mon Sep 17 00:00:00 2001 From: Penelope Hoffmann Date: Mon, 30 Jun 2025 11:39:41 +0200 Subject: [PATCH 14/17] rm unneeded bind --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index e2c0b9febdd..7bc8a6d6c8c 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -519,7 +519,9 @@ def make_PrLongLivedTracking_tracks( A dict mapping v1 and v2 downstream tracks to ``'v1'`` and ``'v2'`` respectively. """ if highMassTunings: - with PrLongLivedTracking.bind( + + downstream_tracks = PrLongLivedTracking( + InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits(), UseHighMassTunings=highMassTunings, XPredTolConst=220000.0, XPredTolOffset=6.6, @@ -529,10 +531,7 @@ def make_PrLongLivedTracking_tracks( MinPt=200.0, InitialMinPt=100.0, WeightsFileName="paramfile://data/GhostProbability/hlt2_PrLongLivedTracking_MLP_w_BSM.json", - ): - downstream_tracks = PrLongLivedTracking( - InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits() - ).OutputLocation + ).OutputLocation else: downstream_tracks = PrLongLivedTracking( -- GitLab From 5dfe83b313dfbdfdb5190d26f0ecad4ba80f1ef2 Mon Sep 17 00:00:00 2001 From: Gitlab CI Date: Mon, 30 Jun 2025 09:40:27 +0000 Subject: [PATCH 15/17] pre-commit fixes patch generated by https://gitlab.cern.ch/lhcb/Moore/-/jobs/58097864 --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index 7bc8a6d6c8c..d5133c7dd73 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -519,9 +519,9 @@ def make_PrLongLivedTracking_tracks( A dict mapping v1 and v2 downstream tracks to ``'v1'`` and ``'v2'`` respectively. """ if highMassTunings: - downstream_tracks = PrLongLivedTracking( - InputLocation=scifi_tracks["Pr"], UTHits=make_ut_hits(), + InputLocation=scifi_tracks["Pr"], + UTHits=make_ut_hits(), UseHighMassTunings=highMassTunings, XPredTolConst=220000.0, XPredTolOffset=6.6, -- GitLab From 526893780987e238c0e8a60967ca026ad047e085 Mon Sep 17 00:00:00 2001 From: Maarten Van Veghel Date: Sun, 6 Jul 2025 10:21:53 +0200 Subject: [PATCH 16/17] fully declone ttracks wrt downstream --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 100 ++++++++++-------- 1 file changed, 58 insertions(+), 42 deletions(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index d5133c7dd73..1f3a1a30328 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -44,6 +44,7 @@ from PyConf.Algorithms import ( TrackCloneKiller, TrackContainersMerger, TrackContainerSplitter, + TrackContainersSharedMerger, TrackEventFitter, TrackSelectionMerger, TrackSelectionToContainer, @@ -1493,44 +1494,11 @@ def make_pr_kf_light_reco_best_tracks( TracksRefContainer=best_long, ).TracksOutContainer - seed_decloned_pr = PrCloneKillerSeedDown( + seed_vs_bestlong_down1 = PrCloneKillerSeedDown( TracksInContainer=seed_vs_bestlong, TracksRefContainer=best_down1, ).TracksOutContainer - 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 - ) - - best_seed = make_TrackBestTrackCreator_tracks( - tracks=[seed_fitted], - name="TBTC_Seed_{hash}", - do_not_refit=True, - get_ghost_tools=get_GhostProbabilityTools(track_type="Ttrack"), - fit_tracks=False, - )["Best"] - - decloned_seed_fitted = make_PrKalmanFilter_Seed_tracks( - input_tracks=seed_decloned_pr, hits_ft=ft_hits - ) - - decloned_filtered_seed_pr = TtracksMVAFilter( - InputLocation=seed_decloned_pr - ).OutputTracks - decloned_filtered_seed_rels = TtracksMVAFilter( - InputLocation=seed_decloned_pr - ).Relations - - decloned_filtered_seed_fitted = make_PrKalmanFilter_Seed_tracks( - input_tracks=decloned_filtered_seed_pr, hits_ft=ft_hits - ) - # NOTE: This de-cloning seemingly costs a lot of efficiency in "notLong" # categories, particularly at p > 5 GeV. This is because we actually have # a correct Long track matched to a MC particle, but it is *not* tagged @@ -1555,20 +1523,24 @@ 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} + ### second pass for non-SM long-lived / Downstream stracks - leftover_ut_hits = {"v1": best_for_ut_hits} + # NOTE! the 'v1' tracks here are only for reference, not decloned at all + seed_for_leftover_down = {"Pr": seed_vs_bestlong_down1, "v1": tracks["Seed"]["v1"]} - make_residual_uthits = partial(make_ReducePrUTHits_fromV1, leftover_ut_hits) + make_residual_uthits = partial( + make_ReducePrUTHits_fromV1, + { + "v1": TrackContainersSharedMerger( + InputLocations=[best_long, best_down1, best_up] + ).OutputLocation + }, + ) leftover_down = make_PrLongLivedTracking_tracks( seed_for_leftover_down, make_ut_hits=make_residual_uthits, highMassTunings=True ) + fitted_leftover_down = make_PrKalmanFilter_Downstream_tracks( input_tracks=leftover_down["Pr"], hits_ut=make_residual_uthits(), @@ -1584,9 +1556,53 @@ def make_pr_kf_light_reco_best_tracks( max_ghost_prob=0.2, )["Best"] + # combine with default Downstream to form one container + # history flag can be used to separate them afterwards best_down = TrackContainersMerger( InputLocations=[best_down1, best_down2] ).OutputLocation + + ### + + seed_decloned_pr = PrCloneKillerSeedDown( + TracksInContainer=seed_vs_bestlong_down1, + TracksRefContainer=best_down2, + ).TracksOutContainer + + 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 + ) + + best_seed = make_TrackBestTrackCreator_tracks( + tracks=[seed_fitted], + name="TBTC_Seed_{hash}", + do_not_refit=True, + get_ghost_tools=get_GhostProbabilityTools(track_type="Ttrack"), + fit_tracks=False, + )["Best"] + + decloned_seed_fitted = make_PrKalmanFilter_Seed_tracks( + input_tracks=seed_decloned_pr, hits_ft=ft_hits + ) + + # these are used in selections + decloned_filtered_seed_pr = TtracksMVAFilter( + InputLocation=seed_decloned_pr + ).OutputTracks + decloned_filtered_seed_rels = TtracksMVAFilter( + InputLocation=seed_decloned_pr + ).Relations + + decloned_filtered_seed_fitted = make_PrKalmanFilter_Seed_tracks( + input_tracks=decloned_filtered_seed_pr, hits_ft=ft_hits + ) + ### velo_fitted = make_PrKalmanFilter_Velo_tracks( -- GitLab From c760d911a67ba915c705eff7628c0d45eb6f32d2 Mon Sep 17 00:00:00 2001 From: Maarten Van Veghel Date: Sun, 6 Jul 2025 10:34:00 +0200 Subject: [PATCH 17/17] unify ghostprob cut downstream --- Hlt/RecoConf/python/RecoConf/hlt2_tracking.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py index 1f3a1a30328..310cd6225cc 100644 --- a/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py +++ b/Hlt/RecoConf/python/RecoConf/hlt2_tracking.py @@ -1553,7 +1553,6 @@ def make_pr_kf_light_reco_best_tracks( get_ghost_tools=get_GhostProbabilityTools(track_type="Downstream"), do_not_refit=True, fit_tracks=False, - max_ghost_prob=0.2, )["Best"] # combine with default Downstream to form one container -- GitLab