diff --git a/Pr/PrPixel/src/VPClus.cpp b/Pr/PrPixel/src/VPClus.cpp
index 222a0e4e2f5f3afc1763e54bd3c25993337ec38b..0f9aea6276ff5d91a0f1ea9df3d81b370c8c1c2e 100644
--- a/Pr/PrPixel/src/VPClus.cpp
+++ b/Pr/PrPixel/src/VPClus.cpp
@@ -1,5 +1,5 @@
 /*****************************************************************************\
-* (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration      *
+* (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration      *
 *                                                                             *
 * This software is distributed under the terms of the GNU General Public      *
 * Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING".   *
@@ -8,20 +8,70 @@
 * granted to it by virtue of its status as an Intergovernmental Organization  *
 * or submit itself to any jurisdiction.                                       *
 \*****************************************************************************/
-// LHCb
+#include "Detector/VP/VPChannelID.h"
+#include "Event/RawBank.h"
 #include "Event/RawEvent.h"
 #include "Event/StateParameters.h"
 #include "Event/Track.h"
+#include "Event/VPLightCluster.h"
+#include "Kernel/STLExtensions.h"
 #include "Kernel/VPConstants.h"
+#include "LHCbAlgs/Transformer.h"
 #include "PrKernel/PrPixelUtils.h"
+#include "PrKernel/VeloPixelInfo.h"
 #include "VPDAQ/VPRetinaClusterConstants.h"
-
-// Local
-#include "VPClus.h"
+#include <VPDet/DeVP.h>
 #include <VPDet/VPDetPaths.h>
 #include <algorithm>
+#include <array>
 #include <cstdint>
 #include <iomanip>
+#include <tuple>
+#include <vector>
+
+// FIXME still need to handle nx and ny for the clusters
+
+// Namespace for locations in TDS
+namespace LHCb {
+  namespace VPClusterLocation {
+    inline const std::string Offsets = "Raw/VP/LightClustersOffsets";
+  }
+} // namespace LHCb
+
+namespace LHCb::Pr::Velo {
+
+  class VPClus : public LHCb::Algorithm::MultiTransformer<
+                     std::tuple<std::vector<VPLightCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>>(
+                         const RawBank::View&, const DeVP& ),
+                     LHCb::Algorithm::Traits::usesConditions<DeVP>> {
+
+  public:
+    /// Standard constructor
+    VPClus( const std::string& name, ISvcLocator* pSvcLocator );
+
+    /// Algorithm execution
+    std::tuple<std::vector<VPLightCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>>
+    operator()( const RawBank::View&, const DeVP& ) const override;
+
+  private:
+    /// Maximum allowed cluster size (no effect when running on lite clusters).
+    unsigned int m_maxClusterSize = 999999999;
+
+    std::bitset<VP::NModules>                  m_modulesToSkipMask;
+    Gaudi::Property<std::vector<unsigned int>> m_modulesToSkip{this,
+                                                               "ModulesToSkip",
+                                                               {},
+                                                               [this]( auto& ) {
+                                                                 m_modulesToSkipMask.reset();
+                                                                 for ( auto i : m_modulesToSkip )
+                                                                   m_modulesToSkipMask.set( i );
+                                                               },
+                                                               Gaudi::Details::Property::ImmediatelyInvokeHandler{true},
+                                                               "List of modules that should be skipped in decoding"};
+
+    mutable Gaudi::Accumulators::SummingCounter<> m_nbClustersCounter{this, "Nb of Produced Clusters"};
+  };
+} // namespace LHCb::Pr::Velo
 
 DECLARE_COMPONENT_WITH_ID( LHCb::Pr::Velo::VPClus, "VPClus" )
 
@@ -146,23 +196,23 @@ namespace LHCb::Pr::Velo {
   // Standard constructor, initializes variables
   //=============================================================================
   VPClus::VPClus( const std::string& name, ISvcLocator* pSvcLocator )
-      : MultiTransformer(
-            name, pSvcLocator,
-            {KeyValue{"RawEventLocation", RawEventLocation::Default}, KeyValue{"DEVP", LHCb::Det::VP::det_path}},
-            {KeyValue{"ClusterLocation", VPClusterLocation::Light},
-             KeyValue{"ClusterOffsets", VPClusterLocation::Offsets}} ) {}
+      : MultiTransformer( name, pSvcLocator, {KeyValue{"RawBanks", ""}, KeyValue{"DEVP", LHCb::Det::VP::det_path}},
+                          {KeyValue{"ClusterLocation", VPClusterLocation::Light},
+                           KeyValue{"ClusterOffsets", VPClusterLocation::Offsets}} ) {}
 
   //=============================================================================
   // Main execution
   //=============================================================================
   std::tuple<std::vector<VPLightCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>> VPClus::
-                                                                                             operator()( const EventContext&, const RawEvent& rawEvent, const DeVP& devp ) const {
+                                                                                             operator()( const RawBank::View& rawBanks, const DeVP& devp ) const {
     auto result = std::tuple<std::vector<VPLightCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>>{};
 
-    const auto& tBanks = rawEvent.banks( RawBank::VP );
-    if ( tBanks.empty() ) return result;
+    if ( rawBanks.empty() ) return result;
+    if ( rawBanks.front()->type() != RawBank::VP ) {
+      throw GaudiException( "RawBank::Type not VP???", __PRETTY_FUNCTION__, StatusCode::FAILURE );
+    }
 
-    const unsigned int version = tBanks[0]->version();
+    const unsigned int version = rawBanks[0]->version();
     if ( version != 2 && version != 4 ) {
       warning() << "Unsupported raw bank version (" << version << ")" << endmsg;
       return result;
@@ -187,13 +237,15 @@ namespace LHCb::Pr::Velo {
     auto& [pool, offsets] = result;
     pool.reserve( 10000U );
 
-    const LHCb::RawBank* VPRawBanks[VP::NSensors] = {};
-
-    RawEvent rawEvent_sorted;
-    rawEvent_sorted.reserve( VP::NSensors );
+    std::array<const LHCb::RawBank*, VP::NSensors> VPRawBanks = {};
 
+    RawEvent rawEvent_sorted; // keep out of the loop below, because this instance
+                              // determines the lifetime of RawBanks it contains...
+                              // i.e. the pointers in VPRawBanks may point into
+                              // data this instance owns!
     if ( version > 3 ) {
-      for ( auto iterBank : tBanks ) {
+      rawEvent_sorted.reserve( VP::NSensors );
+      for ( auto iterBank : rawBanks ) {
         const uint32_t        sensor0 = ( ( iterBank->sourceID() ) & 0x1FFU ) << 1;
         const uint32_t        sensor1 = sensor0 + 1;
         std::vector<uint32_t> data0;
@@ -219,25 +271,16 @@ namespace LHCb::Pr::Velo {
         rawEvent_sorted.addBank( sensor0, LHCb::RawBank::VP, VPRetinaCluster::c_SPBankVersion, data0 );
         rawEvent_sorted.addBank( sensor1, LHCb::RawBank::VP, VPRetinaCluster::c_SPBankVersion, data1 );
       }
-    }
 
-    if ( version > 3 ) {
-      for ( auto iterBank = rawEvent_sorted.banks( RawBank::VP ).begin();
-            iterBank != rawEvent_sorted.banks( RawBank::VP ).end(); iterBank++ ) {
-        const uint32_t sensor = ( *iterBank )->sourceID();
-        VPRawBanks[sensor] = *iterBank;
-      }
+      for ( auto b : rawEvent_sorted.banks( RawBank::VP ) ) VPRawBanks[b->sourceID()] = b;
     } else {
-      for ( auto iterBank = tBanks.begin(); iterBank != tBanks.end(); iterBank++ ) {
-        const uint32_t sensor = ( *iterBank )->sourceID();
-        VPRawBanks[sensor] = *iterBank;
-      }
+      for ( auto b : rawBanks ) VPRawBanks[b->sourceID()] = b;
     }
 
     // Loop over VP RawBanks
     for ( uint32_t s = 0; s < VP::NSensors; s++ ) {
 
-      if ( VPRawBanks[s] == nullptr ) { continue; }
+      if ( !VPRawBanks[s] ) { continue; }
 
       const auto         sensor = Detector::VPChannelID::SensorID( s );
       const unsigned int module = 1 + ( s / VP::NSensorsPerModule );
@@ -246,23 +289,20 @@ namespace LHCb::Pr::Velo {
       // memset(m_sp_buffer,0,256*256*3*sizeof(std::uint8_t ));
       // the memset is too slow here. the occupancy is so low that
       // resetting a few elements is *much* faster.
-      const unsigned int nrc = pixel_idx.size();
-      for ( unsigned int irc = 0; irc < nrc; ++irc ) { buffer[pixel_idx[irc]] = false; }
+      for ( const auto& idx : pixel_idx ) { buffer[idx] = false; }
       pixel_idx.clear();
 
       const auto& ltg = devp.ltg( sensor );
 
-      const uint32_t* bank = ( VPRawBanks[s] )->data();
-      uint32_t        nsp;
-      if ( version > 3 ) {
-        nsp = ( ( VPRawBanks[s] )->range<uint32_t>() ).size();
-      } else {
-        nsp = *bank++;
+      auto data = VPRawBanks[s]->range<const uint32_t>();
+      if ( version <= 3 ) {
+        [[maybe_unused]] auto nsp = data.front();
+        data = data.subspan( 1 );
+        assert( data.size() == nsp );
       }
 
-      for ( unsigned int i = 0; i < nsp; ++i ) {
-        const uint32_t sp_word = *bank++;
-        uint8_t        sp = sp_word & 0xFFU;
+      for ( const uint32_t sp_word : data ) {
+        uint8_t sp = sp_word & 0xFFU;
 
         if ( 0 == sp ) continue; // protect against zero super pixels.
 
@@ -358,10 +398,7 @@ namespace LHCb::Pr::Velo {
 
       // the sensor buffer is filled, perform the clustering on
       // clusters that span several super pixels.
-      const unsigned int nidx = pixel_idx.size();
-      for ( unsigned int irc = 0; irc < nidx; ++irc ) {
-
-        const uint32_t idx = pixel_idx[irc];
+      for ( const uint32_t idx : pixel_idx ) {
 
         if ( !buffer[idx] ) continue; // pixel is used in another cluster
 
diff --git a/Pr/PrPixel/src/VPClus.h b/Pr/PrPixel/src/VPClus.h
deleted file mode 100644
index 98aac656fcad182d168da9d1c5390a09fba26315..0000000000000000000000000000000000000000
--- a/Pr/PrPixel/src/VPClus.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*****************************************************************************\
-* (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration      *
-*                                                                             *
-* This software is distributed under the terms of the GNU General Public      *
-* Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING".   *
-*                                                                             *
-* In applying this licence, CERN does not waive the privileges and immunities *
-* granted to it by virtue of its status as an Intergovernmental Organization  *
-* or submit itself to any jurisdiction.                                       *
-\*****************************************************************************/
-#pragma once
-
-#include <array>
-#include <tuple>
-#include <vector>
-
-// Gaudi
-#include "LHCbAlgs/Transformer.h"
-
-// LHCb
-#include "DetDesc/GenericConditionAccessorHolder.h"
-#include "Detector/VP/VPChannelID.h"
-#include "Event/RawEvent.h"
-#include "Event/VPLightCluster.h"
-#include "Kernel/STLExtensions.h"
-#include "PrKernel/VeloPixelInfo.h"
-#include "VPDet/DeVP.h"
-
-// FIXME still need to handle nx and ny for the clusters
-
-// Namespace for locations in TDS
-namespace LHCb {
-  namespace VPClusterLocation {
-    inline const std::string Offsets = "Raw/VP/LightClustersOffsets";
-  }
-} // namespace LHCb
-
-namespace LHCb::Pr::Velo {
-
-  class VPClus : public LHCb::Algorithm::MultiTransformer<
-                     std::tuple<std::vector<VPLightCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>>(
-                         const EventContext&, const RawEvent&, const DeVP& ),
-                     LHCb::DetDesc::usesConditions<DeVP>> {
-
-  public:
-    /// Standard constructor
-    VPClus( const std::string& name, ISvcLocator* pSvcLocator );
-
-    /// Algorithm execution
-    std::tuple<std::vector<VPLightCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>>
-    operator()( const EventContext&, const RawEvent&, const DeVP& ) const override;
-
-  private:
-    /// Maximum allowed cluster size (no effect when running on lite clusters).
-    unsigned int m_maxClusterSize = 999999999;
-
-    std::bitset<VP::NModules>                  m_modulesToSkipMask;
-    Gaudi::Property<std::vector<unsigned int>> m_modulesToSkip{this,
-                                                               "ModulesToSkip",
-                                                               {},
-                                                               [this]( auto& ) {
-                                                                 // if( msgLevel(MSG::DEBUG)){
-                                                                 //   info() << "Modules to skip size: " <<
-                                                                 //   m_modulesToSkip.size() << endmsg;
-                                                                 // }
-                                                                 m_modulesToSkipMask.reset();
-                                                                 for ( auto i : m_modulesToSkip ) {
-                                                                   // if( msgLevel(MSG::DEBUG)){
-                                                                   //   info() << "Skipping module " << moduleNumber <<
-                                                                   //   endmsg;
-                                                                   // }
-                                                                   m_modulesToSkipMask.set( i );
-                                                                 }
-                                                               },
-                                                               Gaudi::Details::Property::ImmediatelyInvokeHandler{true},
-                                                               "List of modules that should be skipped in decoding"};
-
-    mutable Gaudi::Accumulators::SummingCounter<> m_nbClustersCounter{this, "Nb of Produced Clusters"};
-  };
-} // namespace LHCb::Pr::Velo
diff --git a/Pr/PrPixel/src/VPClusFull.cpp b/Pr/PrPixel/src/VPClusFull.cpp
index 242bf9afca86ee1e12d09bfc02ccd854885dd2a9..37ec3ccede8aad85f9febf93662fce9a4f4377d8 100644
--- a/Pr/PrPixel/src/VPClusFull.cpp
+++ b/Pr/PrPixel/src/VPClusFull.cpp
@@ -8,22 +8,66 @@
 * granted to it by virtue of its status as an Intergovernmental Organization  *
 * or submit itself to any jurisdiction.                                       *
 \*****************************************************************************/
-// LHCb
+#include "Detector/VP/VPChannelID.h"
+#include "Event/RawEvent.h"
 #include "Event/StateParameters.h"
 #include "Event/Track.h"
+#include "Event/VPFullCluster.h"
+#include "Kernel/STLExtensions.h"
 #include "Kernel/VPConstants.h"
+#include "LHCbAlgs/Transformer.h"
 #include "VPDAQ/VPRetinaClusterConstants.h"
+#include "VPDet/DeVP.h"
 #include "VPKernel/PixelUtils.h"
-
-// Local
-#include "VPClusFull.h"
+#include "VPKernel/VeloPixelInfo.h"
 #include <VPDet/VPDetPaths.h>
-#include <cstdint>
+#include <array>
 #include <iomanip>
+#include <tuple>
+#include <vector>
+
+// FIXME still need to handle nx and ny for the clusters
 
-DECLARE_COMPONENT_WITH_ID( LHCb::Pr::Velo::VPClusFull, "VPClusFull" )
+// Namespace for locations in TDS
+namespace LHCb::VPFullClusterLocation {
+  inline const std::string Offsets = "Raw/VP/FullClustersOffsets";
+} // namespace LHCb::VPFullClusterLocation
 
 namespace LHCb::Pr::Velo {
+
+  class VPClusFull : public Algorithm::MultiTransformer<
+                         std::tuple<std::vector<VPFullCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>>(
+                             const RawBank::View&, const DeVP& ),
+                         Algorithm::Traits::usesConditions<DeVP>> {
+
+  public:
+    /// Standard constructor
+    VPClusFull( const std::string& name, ISvcLocator* pSvcLocator );
+
+    /// Algorithm execution
+    std::tuple<std::vector<VPFullCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>>
+    operator()( const RawBank::View&, const DeVP& ) const override;
+
+  private:
+    /// Maximum allowed cluster size (no effect when running on lite clusters).
+    unsigned int m_maxClusterSize = 999999999;
+
+    std::bitset<VP::NModules>                  m_modulesToSkipMask;
+    Gaudi::Property<std::vector<unsigned int>> m_modulesToSkip{this,
+                                                               "ModulesToSkip",
+                                                               {},
+                                                               [this]( auto& ) {
+                                                                 m_modulesToSkipMask.reset();
+                                                                 for ( auto i : m_modulesToSkip ) {
+                                                                   m_modulesToSkipMask.set( i );
+                                                                 }
+                                                               },
+                                                               Gaudi::Details::Property::ImmediatelyInvokeHandler{true},
+                                                               "List of modules that should be skipped in decoding"};
+  };
+
+  DECLARE_COMPONENT_WITH_ID( VPClusFull, "VPClusFull" )
+
   namespace {
     struct SPCache {
       std::array<float, 4> fxy;
@@ -142,25 +186,27 @@ namespace LHCb::Pr::Velo {
   // Standard constructor, initializes variables
   //=============================================================================
   VPClusFull::VPClusFull( const std::string& name, ISvcLocator* pSvcLocator )
-      : MultiTransformer(
-            name, pSvcLocator,
-            {KeyValue{"RawEventLocation", RawEventLocation::Default}, KeyValue{"DEVP", LHCb::Det::VP::det_path}},
-            {KeyValue{"ClusterLocation", VPFullClusterLocation::Default},
-             KeyValue{"ClusterOffsets", VPFullClusterLocation::Offsets}} ) {}
+      : MultiTransformer{name,
+                         pSvcLocator,
+                         {KeyValue{"RawBanks", {}}, KeyValue{"DEVP", Det::VP::det_path}},
+                         {KeyValue{"ClusterLocation", VPFullClusterLocation::Default},
+                          KeyValue{"ClusterOffsets", VPFullClusterLocation::Offsets}}} {}
 
   //=============================================================================
   // Main execution
   //=============================================================================
   std::tuple<std::vector<VPFullCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>> VPClusFull::
-                                                                                            operator()( const EventContext&, const RawEvent& rawEvent, const DeVP& devp ) const {
+                                                                                            operator()( const RawBank::View& rawBanks, const DeVP& devp ) const {
     // WARNING:
     // This clustering algorithm is designed to perform the Offline Clustering without checking any isolation flag
     auto result = std::tuple<std::vector<VPFullCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>>{};
 
-    const auto& tBanks = rawEvent.banks( RawBank::VP );
-    if ( tBanks.empty() ) return result;
+    if ( rawBanks.empty() ) return result;
+    if ( rawBanks[0]->type() != RawBank::VP ) {
+      throw GaudiException( "RawBank of wrong type!", __PRETTY_FUNCTION__, StatusCode::FAILURE );
+    }
 
-    const unsigned int version = tBanks[0]->version();
+    const unsigned int version = rawBanks[0]->version();
     if ( version != 2 && version != 4 ) {
       warning() << "Unsupported raw bank version (" << version << ")" << endmsg;
       return result;
@@ -190,13 +236,12 @@ namespace LHCb::Pr::Velo {
     std::vector<std::vector<Detector::VPChannelID>> channelIDs;
     channelIDs.reserve( 400 );
 
-    const LHCb::RawBank* VPRawBanks[VP::NSensors] = {};
+    std::array<const RawBank*, VP::NSensors> VPRawBanks = {};
 
     RawEvent rawEvent_sorted;
-    rawEvent_sorted.reserve( VP::NSensors );
-
     if ( version > 3 ) {
-      for ( auto iterBank : tBanks ) {
+      rawEvent_sorted.reserve( VP::NSensors );
+      for ( auto iterBank : rawBanks ) {
         const uint32_t        sensor0 = ( ( iterBank->sourceID() ) & 0x1FFU ) << 1;
         const uint32_t        sensor1 = sensor0 + 1;
         std::vector<uint32_t> data0;
@@ -215,28 +260,17 @@ namespace LHCb::Pr::Velo {
         std::sort( data0.begin(), data0.end(), SPLowerThan );
         std::sort( data1.begin(), data1.end(), SPLowerThan );
 
-        rawEvent_sorted.addBank( sensor0, LHCb::RawBank::VP, VPRetinaCluster::c_SPBankVersion, data0 );
-        rawEvent_sorted.addBank( sensor1, LHCb::RawBank::VP, VPRetinaCluster::c_SPBankVersion, data1 );
+        rawEvent_sorted.addBank( sensor0, RawBank::VP, VPRetinaCluster::c_SPBankVersion, data0 );
+        rawEvent_sorted.addBank( sensor1, RawBank::VP, VPRetinaCluster::c_SPBankVersion, data1 );
       }
     }
 
-    if ( version > 3 ) {
-      for ( auto iterBank = rawEvent_sorted.banks( RawBank::VP ).begin();
-            iterBank != rawEvent_sorted.banks( RawBank::VP ).end(); iterBank++ ) {
-        const uint32_t sensor = ( *iterBank )->sourceID();
-        VPRawBanks[sensor] = *iterBank;
-      }
-    } else {
-      for ( auto iterBank = tBanks.begin(); iterBank != tBanks.end(); iterBank++ ) {
-        const uint32_t sensor = ( *iterBank )->sourceID();
-        VPRawBanks[sensor] = *iterBank;
-      }
-    }
+    for ( auto const& b : version > 3 ? rawEvent_sorted.banks( RawBank::VP ) : rawBanks ) VPRawBanks[b->sourceID()] = b;
 
     // Loop over VP RawBanks
     for ( uint32_t s = 0; s < VP::NSensors; s++ ) {
 
-      if ( VPRawBanks[s] == nullptr ) { continue; }
+      if ( !VPRawBanks[s] ) { continue; }
 
       const auto         sensor = Detector::VPChannelID::SensorID( s );
       const unsigned int module = 1 + ( s / VP::NSensorsPerModule );
@@ -252,17 +286,15 @@ namespace LHCb::Pr::Velo {
 
       const auto& ltg = devp.ltg( sensor );
 
-      const uint32_t* bank = ( VPRawBanks[s] )->data();
-      uint32_t        nsp;
-      if ( version > 3 ) {
-        nsp = ( ( VPRawBanks[s] )->range<uint32_t>() ).size();
-      } else {
-        nsp = *bank++;
+      auto data = VPRawBanks[s]->range<const uint32_t>();
+      if ( version <= 3 ) {
+        [[maybe_unused]] auto nsp = data.front();
+        data = data.subspan( 1 );
+        assert( data.size() == nsp );
       }
 
-      for ( unsigned int i = 0; i < nsp; ++i ) {
-        const uint32_t sp_word = *bank++;
-        uint8_t        sp = sp_word & 0xFFU;
+      for ( const uint32_t sp_word : data ) {
+        uint8_t sp = sp_word & 0xFFU;
 
         if ( 0 == sp ) continue; // protect against zero super pixels.
 
diff --git a/Pr/PrPixel/src/VPClusFull.h b/Pr/PrPixel/src/VPClusFull.h
deleted file mode 100644
index 756b4692b4d162899163130069c504a3fad70b62..0000000000000000000000000000000000000000
--- a/Pr/PrPixel/src/VPClusFull.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*****************************************************************************\
-* (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration      *
-*                                                                             *
-* This software is distributed under the terms of the GNU General Public      *
-* Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING".   *
-*                                                                             *
-* In applying this licence, CERN does not waive the privileges and immunities *
-* granted to it by virtue of its status as an Intergovernmental Organization  *
-* or submit itself to any jurisdiction.                                       *
-\*****************************************************************************/
-#pragma once
-
-#include <array>
-#include <tuple>
-#include <vector>
-
-// Gaudi
-#include "LHCbAlgs/Transformer.h"
-
-// LHCb
-#include "DetDesc/GenericConditionAccessorHolder.h"
-#include "Detector/VP/VPChannelID.h"
-#include "Event/RawEvent.h"
-#include "Event/VPFullCluster.h"
-#include "Kernel/STLExtensions.h"
-#include "VPDet/DeVP.h"
-#include "VPKernel/VeloPixelInfo.h"
-
-// FIXME still need to handle nx and ny for the clusters
-
-// Namespace for locations in TDS
-namespace LHCb {
-  namespace VPFullClusterLocation {
-    inline const std::string Offsets = "Raw/VP/FullClustersOffsets";
-  }
-} // namespace LHCb
-
-namespace LHCb::Pr::Velo {
-
-  class VPClusFull : public LHCb::Algorithm::MultiTransformer<
-                         std::tuple<std::vector<VPFullCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>>(
-                             const EventContext&, const RawEvent&, const DeVP& ),
-                         LHCb::DetDesc::usesConditions<DeVP>> {
-
-  public:
-    /// Standard constructor
-    VPClusFull( const std::string& name, ISvcLocator* pSvcLocator );
-
-    /// Algorithm execution
-    std::tuple<std::vector<VPFullCluster>, std::array<unsigned, VeloInfo::Numbers::NOffsets>>
-    operator()( const EventContext&, const RawEvent&, const DeVP& ) const override;
-
-  private:
-    /// Maximum allowed cluster size (no effect when running on lite clusters).
-    unsigned int m_maxClusterSize = 999999999;
-
-    std::bitset<VP::NModules>                  m_modulesToSkipMask;
-    Gaudi::Property<std::vector<unsigned int>> m_modulesToSkip{this,
-                                                               "ModulesToSkip",
-                                                               {},
-                                                               [this]( auto& ) {
-                                                                 m_modulesToSkipMask.reset();
-                                                                 for ( auto i : m_modulesToSkip ) {
-                                                                   m_modulesToSkipMask.set( i );
-                                                                 }
-                                                               },
-                                                               Gaudi::Details::Property::ImmediatelyInvokeHandler{true},
-                                                               "List of modules that should be skipped in decoding"};
-  };
-} // namespace LHCb::Pr::Velo
diff --git a/Pr/PrPixel/src/VeloClusterTrackingSIMD.cpp b/Pr/PrPixel/src/VeloClusterTrackingSIMD.cpp
index a8e0f7b1b28a91c9383f074d9e48846b436c89a8..a3fbf47a5076558fd96d699045d26edead6722be 100644
--- a/Pr/PrPixel/src/VeloClusterTrackingSIMD.cpp
+++ b/Pr/PrPixel/src/VeloClusterTrackingSIMD.cpp
@@ -641,7 +641,7 @@ namespace LHCb::Pr::Velo {
   class ClusterTrackingSIMD
       : public LHCb::Algorithm::MultiTransformer<std::tuple<VP::Hits, Tracks, Tracks>(
                                                      const EventContext&, const RawBank::View&, const DeVP& ),
-                                                 LHCb::DetDesc::usesConditions<DeVP>> {
+                                                 LHCb::Algorithm::Traits::usesConditions<DeVP>> {
 
   public:
     //=============================================================================