diff --git a/FTagDumper/src/JetTrackDecorator.cxx b/FTagDumper/src/JetTrackDecorator.cxx
index 4e7951e5bd7f77705ea0ff5b721dde5a5ab45375..913a4baab5b9b9d6b0fb377a0e3547aff8aea6f8 100644
--- a/FTagDumper/src/JetTrackDecorator.cxx
+++ b/FTagDumper/src/JetTrackDecorator.cxx
@@ -8,6 +8,15 @@ JetTrackDecorator::JetTrackDecorator(const std::string& suffix,
 				     const std::string& writer_name)
   : m_ftagTruthOriginLabel("ftagTruthOriginLabel"+suffix),
     m_n_tracks("n_"+writer_name),
+    m_n_b_tracks("n_b_"+writer_name),
+    m_n_c_tracks("n_c_"+writer_name),
+    m_n_bc_tracks("n_bc_"+writer_name),
+    m_n_hf_tracks("n_hf_"+writer_name),
+    m_n_tau_tracks("n_tau_"+writer_name),
+    m_n_pv_tracks("n_pv_"+writer_name),
+    m_n_othersec_tracks("n_othersec_"+writer_name),
+    m_n_pu_tracks("n_pu_"+writer_name),
+    m_n_fake_tracks("n_fake_"+writer_name),
     m_PU_track_fraction("PU_fraction_"+writer_name) {}
 
 // this call actually does the work on the jet
@@ -15,15 +24,62 @@ void JetTrackDecorator::decorate
 (const xAOD::Jet& jet,
  const std::vector<const xAOD::TrackParticle*>& tracks) const {
 
-  int n_PU_tracks = 0;
+  int n_pu_tracks = 0;
+  int n_fake_tracks = 0;
+  int n_b_tracks = 0;
+  int n_bc_tracks = 0;
+  int n_c_tracks = 0;
+  int n_pv_tracks = 0;
+  int n_tau_tracks = 0;
+  int n_other_sec_tracks = 0;
   for(const auto& track : tracks){
-    if(m_ftagTruthOriginLabel.withDefault(*track, -1)==InDet::ExclusiveOrigin::Pileup ||
-       m_ftagTruthOriginLabel.withDefault(*track, -1)==InDet::ExclusiveOrigin::Fake)
-      n_PU_tracks++;
+    int origin = m_ftagTruthOriginLabel.withDefault(*track, -1);
+    switch(origin){
+      case InDet::ExclusiveOrigin::Pileup:
+        n_pu_tracks++;
+        break;
+      case InDet::ExclusiveOrigin::Fake:
+        n_fake_tracks++;
+        break;
+      case InDet::ExclusiveOrigin::Primary:
+        n_pv_tracks++;
+        break;
+      case InDet::ExclusiveOrigin::FromB:
+        n_b_tracks++;
+        break;
+      case InDet::ExclusiveOrigin::FromBC:
+        n_bc_tracks++;
+        break;
+      case InDet::ExclusiveOrigin::FromC:
+        n_c_tracks++;
+        break;
+      case InDet::ExclusiveOrigin::FromTau:
+        n_tau_tracks++;
+        break;
+      case InDet::ExclusiveOrigin::OtherSecondary:
+        n_other_sec_tracks++;
+        break;
+      case -1:
+      case -2:
+        break;
+      default:
+        throw std::runtime_error("Unknown ftagTruthOrigin label " + std::to_string(origin));
+    }
   }
+  int n_hf_tracks = n_b_tracks + n_bc_tracks + n_c_tracks;
 
   m_n_tracks(jet) = tracks.size();
+  m_n_b_tracks(jet) = n_b_tracks;
+  m_n_c_tracks(jet) = n_c_tracks;
+  m_n_bc_tracks(jet) = n_bc_tracks;
+  m_n_hf_tracks(jet) = n_hf_tracks;
+  m_n_tau_tracks(jet) = n_tau_tracks;
+  m_n_pv_tracks(jet) = n_pv_tracks;
+  m_n_othersec_tracks(jet) = n_other_sec_tracks;
+  m_n_pu_tracks(jet) = n_pu_tracks;
+  m_n_fake_tracks(jet) = n_fake_tracks;
 
-  m_PU_track_fraction(jet) = static_cast<float>(n_PU_tracks)/tracks.size();
+
+  m_PU_track_fraction(jet) = static_cast<float>(n_pu_tracks + n_fake_tracks)/tracks.size();
 
 }
diff --git a/FTagDumper/src/JetTrackDecorator.hh b/FTagDumper/src/JetTrackDecorator.hh
index 8cbb90fbc3b9966ed3de2d0411ef70b5235d442d..11ca681ed5921725d56112343c232af69927783b 100644
--- a/FTagDumper/src/JetTrackDecorator.hh
+++ b/FTagDumper/src/JetTrackDecorator.hh
@@ -17,7 +17,17 @@ class JetTrackDecorator {
  private:
   AE::ConstAccessor<int> m_ftagTruthOriginLabel;
 
+
   AE::Decorator<int> m_n_tracks;
+  AE::Decorator<int> m_n_b_tracks;
+  AE::Decorator<int> m_n_c_tracks;
+  AE::Decorator<int> m_n_bc_tracks;
+  AE::Decorator<int> m_n_hf_tracks;
+  AE::Decorator<int> m_n_tau_tracks;
+  AE::Decorator<int> m_n_pv_tracks;
+  AE::Decorator<int> m_n_othersec_tracks;
+  AE::Decorator<int> m_n_pu_tracks;
+  AE::Decorator<int> m_n_fake_tracks;
   AE::Decorator<float> m_PU_track_fraction;
 
 };
diff --git a/configs/GN3_dev.json b/configs/GN3_dev.json
index 04f7f344c03e2c1544f6f196bc4ce92320384b72..7b6152b040c8e5387399091dceb7ec5c4c90d676 100644
--- a/configs/GN3_dev.json
+++ b/configs/GN3_dev.json
@@ -26,7 +26,13 @@
         "file": "fragments/pflow-variables-slim.json",
         "default_mapping": {"file": "fragments/default-mapping.json"},
         "jet" : {
-            "ints" : ["n_tracks_dr", "n_tracks_ghost", "HadronConeExclTruthLabelIDFromNearestJet"],
+            "ints" : [
+                "n_tracks_dr", "n_tracks_ghost", "HadronConeExclTruthLabelIDFromNearestJet",
+                "n_b_tracks_ghost",
+                "n_bc_tracks_ghost",
+                "n_c_tracks_ghost",
+                "n_hf_tracks_ghost"
+            ],
             "uints": ["jetFoldHash", "jetFoldHash_noHits", "classifierParticleOutComeFromTruthTaus"],
             "floats": [
                 "ptFromTruthJet",