diff --git a/Event/PhysEvent/CMakeLists.txt b/Event/PhysEvent/CMakeLists.txt
index feda598ce4ed5d05e1a5d8833e4b19efd89c55fb..8b79cd897b4fdf1cf575f1809bd5c4e5736db3ad 100644
--- a/Event/PhysEvent/CMakeLists.txt
+++ b/Event/PhysEvent/CMakeLists.txt
@@ -17,6 +17,7 @@ gaudi_add_library(PhysEvent
     SOURCES
         src/Particle.cpp
         src/Vertex.cpp
+        src/Tagger.cpp
     LINK
         PUBLIC
             Gaudi::GaudiKernel
diff --git a/Event/PhysEvent/include/Event/Tagger.h b/Event/PhysEvent/include/Event/Tagger.h
index 8c09528c234bc19d33e736a8157b7ebf00904e3c..fbd23e3103404970ba77575dffcb811882afa609 100644
--- a/Event/PhysEvent/include/Event/Tagger.h
+++ b/Event/PhysEvent/include/Event/Tagger.h
@@ -12,7 +12,6 @@
 
 // Include files
 #include "GaudiKernel/SmartRefVector.h"
-#include "GaudiKernel/VectorMap.h"
 #include <Event/Particle.h>
 #include <algorithm>
 #include <ostream>
@@ -33,7 +32,7 @@ namespace LHCb {
    *
    */
 
-  class Tagger {
+  class Tagger final {
   public:
     /// The type of tagger which has produced this decision
     enum TaggerType {
@@ -55,6 +54,7 @@ namespace LHCb {
       OS_Charm             = 15,
       SS_PionBDT           = 16,
       Inclusive_Tagger     = 17,
+      Development_Tagger   = 18,
       OSMuon               = 10100,
       OSMuonLatest         = 10101,
       OSMuonLatestB2OC     = 10102,
@@ -93,31 +93,22 @@ namespace LHCb {
       SSLambdaDev          = 20499,
       InclusiveTagger      = 30100,
       InclusiveTaggerDev   = 30199,
+      DevelopmentTagger    = 40100,
+      DevelopmentTaggerDev = 40199,
     };
 
-    /// Copy Constructor
-    Tagger( const Tagger& c )
-        : m_type( c.type() )
-        , m_decision( c.decision() )
-        , m_omega( c.omega() )
-        , m_mvaValue( c.mvaValue() )
-        , m_charge( c.charge() )
-        , m_taggerParts( c.taggerParts() ) {}
-
-    /// Default Constructor
-    Tagger() : m_type( 0 ), m_decision( 0 ), m_omega( 0.50 ), m_mvaValue( 0.0 ), m_charge( 0.0 ) {}
-
-    /// Default Destructor
-    virtual ~Tagger() {}
+    Tagger()                  = default;
+    Tagger( const Tagger& c ) = default;
+    ~Tagger()                 = default;
 
     /// Fill the ASCII output stream
-    virtual std::ostream& fillStream( std::ostream& s ) const;
+    std::ostream& fillStream( std::ostream& s ) const;
 
     /// conversion of string to enum for type TaggerType
     static LHCb::Tagger::TaggerType TaggerTypeToType( const std::string& aName );
 
     /// conversion to string for enum type TaggerType
-    static const std::string& TaggerTypeToString( int aEnum );
+    static const std::string& TaggerTypeToString( Tagger::TaggerType aEnum );
 
     /// Retrieve const  The type of tagger
     unsigned short int type() const;
@@ -125,6 +116,9 @@ namespace LHCb {
     /// Update  The type of tagger
     void setType( unsigned short int value );
 
+    /// Update  The type of tagger
+    void setType( TaggerType value );
+
     /// Retrieve const  decision of tagger
     short int decision() const;
 
@@ -171,260 +165,68 @@ namespace LHCb {
 
   protected:
   private:
-    unsigned short int             m_type;        ///< The type of tagger
-    short int                      m_decision;    ///< decision of tagger
-    float                          m_omega;       ///< wrong tag fraction of tagger from MC tuning
-    float                          m_mvaValue;    ///< raw output of the mva
-    float                          m_charge;      ///< (weighted) charge of the tagging particle
-    SmartRefVector<LHCb::Particle> m_taggerParts; ///< Vector of Particle(s) used to build the Tagger
-
-    static const GaudiUtils::VectorMap<std::string, TaggerType>& s_TaggerTypeTypMap();
+    unsigned short int             m_type     = TaggerType::none; ///< The type of tagger
+    short int                      m_decision = 0;                ///< decision of tagger
+    float                          m_omega    = 0.5;              ///< wrong tag fraction of tagger from MC tuning
+    float                          m_mvaValue = 0;                ///< raw output of the mva
+    float                          m_charge   = 0;                ///< (weighted) charge of the tagging particle
+    SmartRefVector<LHCb::Particle> m_taggerParts;                 ///< Vector of Particle(s) used to build the Tagger
 
   }; // class Tagger
 
-  inline std::ostream& operator<<( std::ostream& s, LHCb::Tagger::TaggerType e ) {
-    switch ( e ) {
-    case LHCb::Tagger::none:
-      return s << "none";
-    case LHCb::Tagger::unknown:
-      return s << "unknown";
-    case LHCb::Tagger::OS_Muon:
-      return s << "OS_Muon";
-    case LHCb::Tagger::OS_Electron:
-      return s << "OS_Electron";
-    case LHCb::Tagger::OS_Kaon:
-      return s << "OS_Kaon";
-    case LHCb::Tagger::SS_Kaon:
-      return s << "SS_Kaon";
-    case LHCb::Tagger::SS_Pion:
-      return s << "SS_Pion";
-    case LHCb::Tagger::jetCharge:
-      return s << "jetCharge";
-    case LHCb::Tagger::OS_jetCharge:
-      return s << "OS_jetCharge";
-    case LHCb::Tagger::SS_jetCharge:
-      return s << "SS_jetCharge";
-    case LHCb::Tagger::VtxCharge:
-      return s << "VtxCharge";
-    case LHCb::Tagger::Topology:
-      return s << "Topology";
-    case LHCb::Tagger::OS_nnetKaon:
-      return s << "OS_nnetKaon";
-    case LHCb::Tagger::SS_nnetKaon:
-      return s << "SS_nnetKaon";
-    case LHCb::Tagger::SS_Proton:
-      return s << "SS_Proton";
-    case LHCb::Tagger::OS_Charm:
-      return s << "OS_Charm";
-    case LHCb::Tagger::SS_PionBDT:
-      return s << "SS_PionBDT";
-    case LHCb::Tagger::Inclusive_Tagger:
-      return s << "InclusiveTagger";
-    case LHCb::Tagger::OSMuon:
-      return s << "OSMuon";
-    case LHCb::Tagger::OSMuonLatest:
-      return s << "OSMuonLatest";
-    case LHCb::Tagger::OSMuonLatestB2OC:
-      return s << "OSMuonLatestB2OC";
-    case LHCb::Tagger::OSMuonLatestB2CC:
-      return s << "OSMuonLatestB2CC";
-    case LHCb::Tagger::OSMuonDev:
-      return s << "OSMuonDev";
-    case LHCb::Tagger::OSElectron:
-      return s << "OSElectron";
-    case LHCb::Tagger::OSElectronLatest:
-      return s << "OSElectronLatest";
-    case LHCb::Tagger::OSElectronLatestB2OC:
-      return s << "OSElectronLatestB2OC";
-    case LHCb::Tagger::OSElectronLatestB2CC:
-      return s << "OSElectronLatestB2CC";
-    case LHCb::Tagger::OSElectronDev:
-      return s << "OSElectronDev";
-    case LHCb::Tagger::OSKaon:
-      return s << "OSKaon";
-    case LHCb::Tagger::OSKaonLatest:
-      return s << "OSKaonLatest";
-    case LHCb::Tagger::OSKaonLatestB2OC:
-      return s << "OSKaonLatestB2OC";
-    case LHCb::Tagger::OSKaonLatestB2CC:
-      return s << "OSKaonLatestB2CC";
-    case LHCb::Tagger::OSKaonDev:
-      return s << "OSKaonDev";
-    case LHCb::Tagger::OSVtxCh:
-      return s << "OSVtxCh";
-    case LHCb::Tagger::OSVtxChLatest:
-      return s << "OSVtxChLatest";
-    case LHCb::Tagger::OSVtxChDev:
-      return s << "OSVtxChDev";
-    case LHCb::Tagger::OSCharm:
-      return s << "OSCharm";
-    case LHCb::Tagger::OSCharmLatest:
-      return s << "OSCharmLatest";
-    case LHCb::Tagger::OSCharmDev:
-      return s << "OSCharmDev";
-    case LHCb::Tagger::OSProton:
-      return s << "OSProton";
-    case LHCb::Tagger::OSProtonLatest:
-      return s << "OSProtonLatest";
-    case LHCb::Tagger::OSProtonDev:
-      return s << "OSProtonDev";
-    case LHCb::Tagger::SSKaon:
-      return s << "SSKaon";
-    case LHCb::Tagger::SSKaonLatest:
-      return s << "SSKaonLatest";
-    case LHCb::Tagger::SSKaonDev:
-      return s << "SSKaonDev";
-    case LHCb::Tagger::SSPion:
-      return s << "SSPion";
-    case LHCb::Tagger::SSPionLatest:
-      return s << "SSPionLatest";
-    case LHCb::Tagger::SSPionDev:
-      return s << "SSPionDev";
-    case LHCb::Tagger::SSProton:
-      return s << "SSProton";
-    case LHCb::Tagger::SSProtonLatest:
-      return s << "SSProtonLatest";
-    case LHCb::Tagger::SSProtonDev:
-      return s << "SSProtonDev";
-    case LHCb::Tagger::SSLambda:
-      return s << "SSLambda";
-    case LHCb::Tagger::SSLambdaLatest:
-      return s << "SSLambdaLatest";
-    case LHCb::Tagger::SSLambdaDev:
-      return s << "SSLambdaDev";
-    case LHCb::Tagger::InclusiveTagger:
-      return s << "IFT";
-    case LHCb::Tagger::InclusiveTaggerDev:
-      return s << "IFTDev";
-    default:
-      return s << "ERROR wrong value " << int( e ) << " for enum LHCb::Tagger::TaggerType";
-    }
+  inline std::ostream& operator<<( std::ostream& s, Tagger::TaggerType e );
+
+  // -----------------------------------------------------------------------------
+  // end of class
+  // -----------------------------------------------------------------------------
+
+  // Including forward declarations
+
+  inline std::ostream& LHCb::Tagger::fillStream( std::ostream& s ) const {
+    s << "{ "
+      << "type :	" << m_type << std::endl
+      << "decision :	" << m_decision << std::endl
+      << "omega :	" << m_omega << std::endl
+      << "mvaValue :	" << m_mvaValue << std::endl
+      << "charge :	" << m_charge << std::endl
+      << " }";
+    return s;
   }
 
-} // namespace LHCb
+  inline unsigned short int Tagger::type() const { return m_type; }
+
+  inline void Tagger::setType( unsigned short int value ) { m_type = value; }
+
+  inline void Tagger::setType( TaggerType value ) { m_type = static_cast<unsigned short>( value ); }
+
+  inline short int Tagger::decision() const { return m_decision; }
+
+  inline void Tagger::setDecision( short int value ) { m_decision = value; }
 
-// -----------------------------------------------------------------------------
-// end of class
-// -----------------------------------------------------------------------------
-
-// Including forward declarations
-
-inline std::ostream& LHCb::Tagger::fillStream( std::ostream& s ) const {
-  s << "{ "
-    << "type :	" << m_type << std::endl
-    << "decision :	" << m_decision << std::endl
-    << "omega :	" << m_omega << std::endl
-    << "mvaValue :	" << m_mvaValue << std::endl
-    << "charge :	" << m_charge << std::endl
-    << " }";
-  return s;
-}
-
-inline const GaudiUtils::VectorMap<std::string, LHCb::Tagger::TaggerType>& LHCb::Tagger::s_TaggerTypeTypMap() {
-  static const GaudiUtils::VectorMap<std::string, TaggerType> m = {{"none", none},
-                                                                   {"unknown", unknown},
-                                                                   {"OS_Muon", OS_Muon},
-                                                                   {"OS_Electron", OS_Electron},
-                                                                   {"OS_Kaon", OS_Kaon},
-                                                                   {"SS_Kaon", SS_Kaon},
-                                                                   {"SS_Pion", SS_Pion},
-                                                                   {"jetCharge", jetCharge},
-                                                                   {"OS_jetCharge", OS_jetCharge},
-                                                                   {"SS_jetCharge", SS_jetCharge},
-                                                                   {"VtxCharge", VtxCharge},
-                                                                   {"Topology", Topology},
-                                                                   {"OS_nnetKaon", OS_nnetKaon},
-                                                                   {"SS_nnetKaon", SS_nnetKaon},
-                                                                   {"SS_Proton", SS_Proton},
-                                                                   {"OS_Charm", OS_Charm},
-                                                                   {"SS_PionBDT", SS_PionBDT},
-                                                                   {"InclusiveTagger", Inclusive_Tagger},
-                                                                   {"OSMuon", OSMuon},
-                                                                   {"OSMuonLatest", OSMuonLatest},
-                                                                   {"OSMuonLatestB2OC", OSMuonLatestB2OC},
-                                                                   {"OSMuonLatestB2CC", OSMuonLatestB2CC},
-                                                                   {"OSMuonDev", OSMuonDev},
-                                                                   {"OSElectron", OSElectron},
-                                                                   {"OSElectronLatest", OSElectronLatest},
-                                                                   {"OSElectronLatestB2OC", OSElectronLatestB2OC},
-                                                                   {"OSElectronLatestB2CC", OSElectronLatestB2CC},
-                                                                   {"OSElectronDev", OSElectronDev},
-                                                                   {"OSKaon", OSKaon},
-                                                                   {"OSKaonLatest", OSKaonLatest},
-                                                                   {"OSKaonLatestB2OC", OSKaonLatestB2OC},
-                                                                   {"OSKaonLatestB2CC", OSKaonLatestB2CC},
-                                                                   {"OSKaonDev", OSKaonDev},
-                                                                   {"OSVtxCh", OSVtxCh},
-                                                                   {"OSVtxChLatest", OSVtxChLatest},
-                                                                   {"OSVtxChDev", OSVtxChDev},
-                                                                   {"OSCharm", OSCharm},
-                                                                   {"OSCharmLatest", OSCharmLatest},
-                                                                   {"OSCharmDev", OSCharmDev},
-                                                                   {"OSProton", OSProton},
-                                                                   {"OSProtonLatest", OSProtonLatest},
-                                                                   {"OSProtonDev", OSProtonDev},
-                                                                   {"SSKaon", SSKaon},
-                                                                   {"SSKaonLatest", SSKaonLatest},
-                                                                   {"SSKaonDev", SSKaonDev},
-                                                                   {"SSPion", SSPion},
-                                                                   {"SSPionLatest", SSPionLatest},
-                                                                   {"SSPionDev", SSPionDev},
-                                                                   {"SSProton", SSProton},
-                                                                   {"SSProtonLatest", SSProtonLatest},
-                                                                   {"SSProtonDev", SSProtonDev},
-                                                                   {"SSLambda", SSLambda},
-                                                                   {"SSLambdaLatest", SSLambdaLatest},
-                                                                   {"SSLambdaDev", SSLambdaDev},
-                                                                   {"IFT", InclusiveTagger},
-                                                                   {"IFTDev", InclusiveTaggerDev}};
-  return m;
-}
-
-inline LHCb::Tagger::TaggerType LHCb::Tagger::TaggerTypeToType( const std::string& aName ) {
-  auto iter = s_TaggerTypeTypMap().find( aName );
-  return iter != s_TaggerTypeTypMap().end() ? iter->second : unknown;
-}
-
-inline const std::string& LHCb::Tagger::TaggerTypeToString( int aEnum ) {
-  static const std::string s_unknown = "unknown";
-  auto                     iter      = std::find_if( s_TaggerTypeTypMap().begin(), s_TaggerTypeTypMap().end(),
-                            [&]( const std::pair<const std::string, TaggerType>& i ) { return i.second == aEnum; } );
-  return iter != s_TaggerTypeTypMap().end() ? iter->first : s_unknown;
-}
-
-inline unsigned short int LHCb::Tagger::type() const { return m_type; }
-
-inline void LHCb::Tagger::setType( unsigned short int value ) { m_type = value; }
-
-inline short int LHCb::Tagger::decision() const { return m_decision; }
-
-inline void LHCb::Tagger::setDecision( short int value ) { m_decision = value; }
-
-inline float LHCb::Tagger::omega() const { return m_omega; }
-
-inline void LHCb::Tagger::setOmega( float value ) { m_omega = value; }
-
-inline float LHCb::Tagger::mvaValue() const { return m_mvaValue; }
-
-inline void LHCb::Tagger::setMvaValue( float value ) { m_mvaValue = value; }
-
-inline float LHCb::Tagger::charge() const { return m_charge; }
-
-inline void LHCb::Tagger::setCharge( float value ) { m_charge = value; }
-
-inline const SmartRefVector<LHCb::Particle>& LHCb::Tagger::taggerParts() const { return m_taggerParts; }
-
-inline void LHCb::Tagger::setTaggerParts( const SmartRefVector<LHCb::Particle>& value ) { m_taggerParts = value; }
-
-inline void LHCb::Tagger::addToTaggerParts( const SmartRef<LHCb::Particle>& value ) {
-  m_taggerParts.push_back( value );
-}
-
-inline void LHCb::Tagger::addToTaggerParts( const LHCb::Particle* value ) { m_taggerParts.push_back( value ); }
-
-inline void LHCb::Tagger::removeFromTaggerParts( const SmartRef<LHCb::Particle>& value ) {
-  auto i = std::remove( m_taggerParts.begin(), m_taggerParts.end(), value );
-  m_taggerParts.erase( i, m_taggerParts.end() );
-}
-
-inline void LHCb::Tagger::clearTaggerParts() { m_taggerParts.clear(); }
+  inline float Tagger::omega() const { return m_omega; }
+
+  inline void Tagger::setOmega( float value ) { m_omega = value; }
+
+  inline float Tagger::mvaValue() const { return m_mvaValue; }
+
+  inline void Tagger::setMvaValue( float value ) { m_mvaValue = value; }
+
+  inline float Tagger::charge() const { return m_charge; }
+
+  inline void Tagger::setCharge( float value ) { m_charge = value; }
+
+  inline const SmartRefVector<Particle>& Tagger::taggerParts() const { return m_taggerParts; }
+
+  inline void Tagger::setTaggerParts( const SmartRefVector<Particle>& value ) { m_taggerParts = value; }
+
+  inline void Tagger::addToTaggerParts( const SmartRef<Particle>& value ) { m_taggerParts.push_back( value ); }
+
+  inline void Tagger::addToTaggerParts( const Particle* value ) { m_taggerParts.push_back( value ); }
+
+  inline void Tagger::removeFromTaggerParts( const SmartRef<Particle>& value ) {
+    auto i = std::remove( m_taggerParts.begin(), m_taggerParts.end(), value );
+    m_taggerParts.erase( i, m_taggerParts.end() );
+  }
+
+  inline void Tagger::clearTaggerParts() { m_taggerParts.clear(); }
+} // namespace LHCb
diff --git a/Event/PhysEvent/src/Tagger.cpp b/Event/PhysEvent/src/Tagger.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cb3f738bd3d556c85c2b9694cf5d471fc429f1c2
--- /dev/null
+++ b/Event/PhysEvent/src/Tagger.cpp
@@ -0,0 +1,93 @@
+/*****************************************************************************\
+* (c) Copyright 2025 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.                                       *
+\*****************************************************************************/
+#include "Event/Tagger.h"
+#include "GaudiKernel/VectorMap.h"
+
+namespace {
+  using TType                                                       = LHCb::Tagger::TaggerType;
+  const GaudiUtils::VectorMap<std::string, TType> m_tagger_type_map = {
+      {"none", TType::none},
+      {"unknown", TType::unknown},
+      {"OS_Muon", TType::OS_Muon},
+      {"OS_Electron", TType::OS_Electron},
+      {"OS_Kaon", TType::OS_Kaon},
+      {"SS_Kaon", TType::SS_Kaon},
+      {"SS_Pion", TType::SS_Pion},
+      {"jetCharge", TType::jetCharge},
+      {"OS_jetCharge", TType::OS_jetCharge},
+      {"SS_jetCharge", TType::SS_jetCharge},
+      {"VtxCharge", TType::VtxCharge},
+      {"Topology", TType::Topology},
+      {"OS_nnetKaon", TType::OS_nnetKaon},
+      {"SS_nnetKaon", TType::SS_nnetKaon},
+      {"SS_Proton", TType::SS_Proton},
+      {"OS_Charm", TType::OS_Charm},
+      {"SS_PionBDT", TType::SS_PionBDT},
+      {"InclusiveTagger", TType::Inclusive_Tagger},
+      {"DevelopmentTagger", TType::Development_Tagger},
+      {"OSMuon", TType::OSMuon},
+      {"OSMuonLatest", TType::OSMuonLatest},
+      {"OSMuonLatestB2OC", TType::OSMuonLatestB2OC},
+      {"OSMuonLatestB2CC", TType::OSMuonLatestB2CC},
+      {"OSMuonDev", TType::OSMuonDev},
+      {"OSElectron", TType::OSElectron},
+      {"OSElectronLatest", TType::OSElectronLatest},
+      {"OSElectronLatestB2OC", TType::OSElectronLatestB2OC},
+      {"OSElectronLatestB2CC", TType::OSElectronLatestB2CC},
+      {"OSElectronDev", TType::OSElectronDev},
+      {"OSKaon", TType::OSKaon},
+      {"OSKaonLatest", TType::OSKaonLatest},
+      {"OSKaonLatestB2OC", TType::OSKaonLatestB2OC},
+      {"OSKaonLatestB2CC", TType::OSKaonLatestB2CC},
+      {"OSKaonDev", TType::OSKaonDev},
+      {"OSVtxCh", TType::OSVtxCh},
+      {"OSVtxChLatest", TType::OSVtxChLatest},
+      {"OSVtxChDev", TType::OSVtxChDev},
+      {"OSCharm", TType::OSCharm},
+      {"OSCharmLatest", TType::OSCharmLatest},
+      {"OSCharmDev", TType::OSCharmDev},
+      {"OSProton", TType::OSProton},
+      {"OSProtonLatest", TType::OSProtonLatest},
+      {"OSProtonDev", TType::OSProtonDev},
+      {"SSKaon", TType::SSKaon},
+      {"SSKaonLatest", TType::SSKaonLatest},
+      {"SSKaonDev", TType::SSKaonDev},
+      {"SSPion", TType::SSPion},
+      {"SSPionLatest", TType::SSPionLatest},
+      {"SSPionDev", TType::SSPionDev},
+      {"SSProton", TType::SSProton},
+      {"SSProtonLatest", TType::SSProtonLatest},
+      {"SSProtonDev", TType::SSProtonDev},
+      {"SSLambda", TType::SSLambda},
+      {"SSLambdaLatest", TType::SSLambdaLatest},
+      {"SSLambdaDev", TType::SSLambdaDev},
+      {"InclusiveTagger", TType::InclusiveTagger},
+      {"InclusiveTaggerDev", TType::InclusiveTaggerDev},
+      {"DevelopmentTagger", TType::DevelopmentTagger},
+      {"DevelopmentTaggerDev", TType::DevelopmentTaggerDev}};
+} // namespace
+
+std::ostream& operator<<( std::ostream& s, LHCb::Tagger::TaggerType e ) {
+  s << LHCb::Tagger::TaggerTypeToString( e );
+  return s;
+}
+
+LHCb::Tagger::TaggerType LHCb::Tagger::TaggerTypeToType( const std::string& aName ) {
+  auto iter = m_tagger_type_map.find( aName );
+  return iter != m_tagger_type_map.end() ? iter->second : TaggerType::unknown;
+}
+
+const std::string& LHCb::Tagger::TaggerTypeToString( Tagger::TaggerType aEnum ) {
+  static const std::string s_unknown = "unknown";
+  auto                     iter      = std::find_if( m_tagger_type_map.begin(), m_tagger_type_map.end(),
+                            [aEnum]( const auto& pair ) { return pair.second == aEnum; } );
+  return iter != m_tagger_type_map.end() ? iter->first : s_unknown;
+}