From 5050abf586dbff8b19c485b1536ca9ff5c388634 Mon Sep 17 00:00:00 2001
From: Gerhard Raven <gerhard.raven@nikhef.nl>
Date: Fri, 7 Mar 2025 23:45:38 +0100
Subject: [PATCH] prefer std::ranges over range::v3

---
 Muon/MuonMatch/CMakeLists.txt                     |  1 -
 Muon/MuonMatch/src/MuonMatchVeloUTNtuple.cpp      |  5 ++---
 Muon/MuonMatch/src/MuonMatchVeloUTSoA.cpp         | 10 +++++-----
 .../src/WeightedRelationTable.cpp                 |  1 -
 Pr/PrAlgorithms/CMakeLists.txt                    |  1 -
 Pr/PrAlgorithms/src/PrHybridSeeding.cpp           |  2 --
 Tr/TrackKernel/CMakeLists.txt                     |  6 ++----
 Tr/TrackKernel/src/TrackTraj.cpp                  | 15 +++++++--------
 Tr/TrackMonitors/CMakeLists.txt                   |  1 -
 Tr/TrackUtils/CMakeLists.txt                      |  1 -
 Tr/TrackUtils/src/TrackCloneKiller.cpp            |  1 -
 cmake/RecDependencies.cmake                       |  1 -
 12 files changed, 16 insertions(+), 29 deletions(-)

diff --git a/Muon/MuonMatch/CMakeLists.txt b/Muon/MuonMatch/CMakeLists.txt
index e0798caab58..d917f737c59 100644
--- a/Muon/MuonMatch/CMakeLists.txt
+++ b/Muon/MuonMatch/CMakeLists.txt
@@ -35,6 +35,5 @@ gaudi_add_module(MuonMatch
         LHCb::MuonDetLib
         LHCb::RecEvent
         LHCb::TrackEvent
-        Rangev3::rangev3
         ROOT::Matrix
 )
diff --git a/Muon/MuonMatch/src/MuonMatchVeloUTNtuple.cpp b/Muon/MuonMatch/src/MuonMatchVeloUTNtuple.cpp
index 036af7210c3..911a3a26136 100644
--- a/Muon/MuonMatch/src/MuonMatchVeloUTNtuple.cpp
+++ b/Muon/MuonMatch/src/MuonMatchVeloUTNtuple.cpp
@@ -38,9 +38,8 @@
 #include <GaudiKernel/StdArrayAsProperty.h>
 #include <LHCbAlgs/Consumer.h>
 
-#include "range/v3/view/transform.hpp"
-
 #include <iostream>
+#include <ranges>
 #include <sstream>
 #include <string>
 #include <type_traits>
@@ -504,7 +503,7 @@ MuonMatchVeloUTNtuple::isDecayInFlightToMuon( const LHCb::MCParticle* mcparticle
 float MuonMatchVeloUTNtuple::impactParameter( const Track& track, const Vertices& pvs ) const {
   if ( !pvs.size() ) return -999.;
 
-  const auto ips2 = ranges::views::transform( pvs, [&track]( const Vertex& pv ) {
+  const auto ips2 = std::ranges::views::transform( pvs, [&track]( const Vertex& pv ) {
     const auto& pos   = pv.position();
     const auto& state = track.closestState( pos.Z() );
     const auto  line  = Gaudi::Math::Line{ state.position(), state.slopes() };
diff --git a/Muon/MuonMatch/src/MuonMatchVeloUTSoA.cpp b/Muon/MuonMatch/src/MuonMatchVeloUTSoA.cpp
index aeb3d5b8b65..8008b5ad2b0 100644
--- a/Muon/MuonMatch/src/MuonMatchVeloUTSoA.cpp
+++ b/Muon/MuonMatch/src/MuonMatchVeloUTSoA.cpp
@@ -9,7 +9,7 @@
  * or submit itself to any jurisdiction.                                       *
 \*****************************************************************************/
 #include "MuonMatchVeloUTSoA.h"
-#include "range/v3/view/transform.hpp"
+#include <ranges>
 
 DECLARE_COMPONENT( MuonMatchVeloUTSoA )
 
@@ -228,18 +228,18 @@ std::tuple<float, float> MuonMatchVeloUTSoA::fitHits( const Hits& hits, const Hi
                                                       const State& state ) const {
 
   float x_slope, x_chi2, x_ndof;
-  std::tie( x_slope, x_chi2, x_ndof ) = fitLinear( hits | ranges::views::transform( [&magnet_hit]( const Hit& h ) {
+  std::tie( x_slope, x_chi2, x_ndof ) = fitLinear( hits | std::ranges::views::transform( [&magnet_hit]( const Hit& h ) {
                                                      return std::make_tuple( h.z - magnet_hit.z, h.x, h.sx2 );
                                                    } ) );
 
   float y_chi2, y_ndof;
   std::tie( std::ignore, y_chi2, y_ndof ) =
-      m_fitY ? fitLinear( hits | ranges::views::transform( [&magnet_hit]( const Hit& h ) {
+      m_fitY ? fitLinear( hits | std::ranges::views::transform( [&magnet_hit]( const Hit& h ) {
                             return std::make_tuple( h.z - magnet_hit.z, h.y, h.sy2 );
                           } ) )
              : std::make_tuple( (float)state.ty, // no fit in y, just the chi2 between the slope before the magnet
                                                  // with the matched hits
-                                chi2( hits | ranges::views::transform( [&state, this]( const Hit& h ) {
+                                chi2( hits | std::ranges::views::transform( [&state, this]( const Hit& h ) {
                                         return std::make_tuple( h.y, extrapolateYInStraightLine( state, h.z ), h.sy2 );
                                       } ) ),
                                 (unsigned int)hits.size() );
@@ -269,7 +269,7 @@ std::tuple<float, float, unsigned int> MuonMatchVeloUTSoA::fitLinear( const Cont
   b /= Stt;
   const auto a = ( Sc - Sz * b ) / S;
 
-  const auto chisq = chi2( points | ranges::views::transform( [&a, &b]( const auto& point ) {
+  const auto chisq = chi2( points | std::ranges::views::transform( [&a, &b]( const auto& point ) {
                              const auto [z, c, s2] = point;
                              return std::make_tuple( c, a + b * z, s2 );
                            } ) );
diff --git a/Phys/RelatedInfoTools/src/WeightedRelationTable.cpp b/Phys/RelatedInfoTools/src/WeightedRelationTable.cpp
index f04dcce2c13..a3404c2546f 100644
--- a/Phys/RelatedInfoTools/src/WeightedRelationTable.cpp
+++ b/Phys/RelatedInfoTools/src/WeightedRelationTable.cpp
@@ -17,7 +17,6 @@
 #include "LHCbAlgs/Transformer.h"
 #include "Relations/Relation1D.h"
 #include "Relations/RelationWeighted1D.h"
-#include "range/v3/view/zip.hpp"
 
 namespace {
   using WeightedRelationTable = LHCb::RelationWeighted1D<LHCb::Particle, LHCb::Particle, float>;
diff --git a/Pr/PrAlgorithms/CMakeLists.txt b/Pr/PrAlgorithms/CMakeLists.txt
index 947c0d59445..de3251475df 100644
--- a/Pr/PrAlgorithms/CMakeLists.txt
+++ b/Pr/PrAlgorithms/CMakeLists.txt
@@ -50,7 +50,6 @@ gaudi_add_module(PrAlgorithms
         LHCb::UTDetLib
         LHCb::UTKernelLib
         LHCb::VPDetLib
-        Rangev3::rangev3
         Rec::PrKernel
         Rec::TrackInterfacesLib
         ROOT::MathCore
diff --git a/Pr/PrAlgorithms/src/PrHybridSeeding.cpp b/Pr/PrAlgorithms/src/PrHybridSeeding.cpp
index 44f8b976691..392f482cebb 100644
--- a/Pr/PrAlgorithms/src/PrHybridSeeding.cpp
+++ b/Pr/PrAlgorithms/src/PrHybridSeeding.cpp
@@ -40,8 +40,6 @@
 #include "PrTrackFitterXZ.h"
 #include "PrTrackFitterYZ.h"
 #include "TrackInterfaces/ITrackMomentumEstimate.h"
-#include <range/v3/algorithm/max.hpp>
-#include <range/v3/view/transform.hpp>
 
 #include "HoughSearch.h"
 namespace LHCb::Pr {
diff --git a/Tr/TrackKernel/CMakeLists.txt b/Tr/TrackKernel/CMakeLists.txt
index 4e03ddeed94..8795a61a8d1 100644
--- a/Tr/TrackKernel/CMakeLists.txt
+++ b/Tr/TrackKernel/CMakeLists.txt
@@ -18,7 +18,7 @@ gaudi_add_library(TrackKernel
         src/CubicStateInterpolationTraj.cpp
         src/CubicStateVectorInterpolationTraj.cpp
         src/LineDifTraj.cpp
-	src/PrimaryVertexUtils.cpp
+        src/PrimaryVertexUtils.cpp
         src/StateTraj.cpp
         src/Track1DTabFunc.cpp
         src/TrackStateVertex.cpp
@@ -34,11 +34,9 @@ gaudi_add_library(TrackKernel
             LHCb::TrackEvent
             ROOT::MathCore
             Rec::TrackFitEvent
-	    LHCb::MagnetLib
+            LHCb::MagnetLib
         PRIVATE
             Boost::headers
-            GSL::gsl
-            Rangev3::rangev3
 )
 
 gaudi_add_dictionary(TrackKernelDict
diff --git a/Tr/TrackKernel/src/TrackTraj.cpp b/Tr/TrackKernel/src/TrackTraj.cpp
index cf819150984..5ed590d6734 100644
--- a/Tr/TrackKernel/src/TrackTraj.cpp
+++ b/Tr/TrackKernel/src/TrackTraj.cpp
@@ -16,25 +16,24 @@
 #include "Kernel/STLExtensions.h"
 #include "TrackKernel/TrackFunctors.h"
 #include "gsl/gsl_integration.h"
-#include "range/v3/view/reverse.hpp"
-#include "range/v3/view/transform.hpp"
 #include <algorithm>
+#include <ranges>
 
 namespace {
-  template <typename T>
-  decltype( auto ) front( LHCb::span<T, gsl::dynamic_extent> s ) {
+  template <typename T, auto N>
+  decltype( auto ) front( LHCb::span<T, N> s ) {
     return s.first( 1 )[0];
   }
 
-  template <typename T>
-  decltype( auto ) back( LHCb::span<T, gsl::dynamic_extent> s ) {
+  template <typename T, auto N>
+  decltype( auto ) back( LHCb::span<T, N> s ) {
     return s.last( 1 )[0];
   }
 
   const auto append_range = []( auto& container, auto&& range ) {
     return container.insert( container.end(), range.begin(), range.end() );
   };
-  const auto take_address = ranges::views::transform( []( const auto& i ) { return &i; } );
+  const auto take_address = std::ranges::views::transform( []( const auto& i ) { return &i; } );
 } // namespace
 
 namespace LHCb {
@@ -130,7 +129,7 @@ namespace LHCb {
       if ( front( states ).z() < back( states ).z() ) {
         append_range( m_states, states | take_address );
       } else {
-        append_range( m_states, states | ranges::views::reverse | take_address );
+        append_range( m_states, states | std::ranges::views::reverse | take_address );
       }
     }
     // check states and initialize cache
diff --git a/Tr/TrackMonitors/CMakeLists.txt b/Tr/TrackMonitors/CMakeLists.txt
index 2f205a2d4f8..fffb7419700 100644
--- a/Tr/TrackMonitors/CMakeLists.txt
+++ b/Tr/TrackMonitors/CMakeLists.txt
@@ -66,7 +66,6 @@ gaudi_add_module(TrackMonitors
         LHCb::UTDetLib
         LHCb::VPDetLib
         LHCb::RichFutureUtils
-        Rangev3::rangev3
         Rec::TrackFitEvent
         Rec::TrackInterfacesLib
         Rec::TrackKernel
diff --git a/Tr/TrackUtils/CMakeLists.txt b/Tr/TrackUtils/CMakeLists.txt
index bb5b59d5b91..e754b0df4d0 100644
--- a/Tr/TrackUtils/CMakeLists.txt
+++ b/Tr/TrackUtils/CMakeLists.txt
@@ -64,7 +64,6 @@ gaudi_add_module(TrackUtils
         LHCb::PhysEvent
         LHCb::RecEvent
         LHCb::TrackEvent
-        Rangev3::rangev3
         Rec::LoKiPhysLib
         Rec::TrackFitEvent
         Rec::TrackInterfacesLib
diff --git a/Tr/TrackUtils/src/TrackCloneKiller.cpp b/Tr/TrackUtils/src/TrackCloneKiller.cpp
index 7d615b0a827..3433a695733 100644
--- a/Tr/TrackUtils/src/TrackCloneKiller.cpp
+++ b/Tr/TrackUtils/src/TrackCloneKiller.cpp
@@ -19,7 +19,6 @@
 #include "TrackInterfaces/ITrackCloneFinder.h"
 #include "TrackKernel/TrackCloneData.h"
 #include "TrackKernel/TrackFunctors.h"
-#include "range/v3/version.hpp"
 #include <algorithm>
 #include <array>
 #include <cassert>
diff --git a/cmake/RecDependencies.cmake b/cmake/RecDependencies.cmake
index 79572690624..d68b4134d0b 100644
--- a/cmake/RecDependencies.cmake
+++ b/cmake/RecDependencies.cmake
@@ -51,7 +51,6 @@ if(WITH_Rec_PRIVATE_DEPENDENCIES)
     find_package(GSL REQUIRED)
     find_package(nlohmann_json REQUIRED)
     find_package(Python REQUIRED Development Interpreter)
-    find_package(Rangev3 REQUIRED)
     find_package(ROOT REQUIRED
         Core
         GenVector
-- 
GitLab