diff --git a/src/core/identificationgroup.cpp b/src/core/identificationgroup.cpp
index 6f21a31e2b4fe0706ce54900450140ad39b6a58f..2be63cefb66f3f25cb4de98f7c3cfa5c0b8b6520 100644
--- a/src/core/identificationgroup.cpp
+++ b/src/core/identificationgroup.cpp
@@ -385,6 +385,36 @@ IdentificationGroup::collectMhDelta(
         }
     }
 }
+
+
+void
+IdentificationGroup::collectTargetDecoyMhDelta(
+  std::vector<pappso::pappso_double> &delta_list,
+  pappso::PrecisionUnit unit,
+  ValidationState state) const
+{
+  std::set<const PeptideEvidence *> peptide_evidence_list;
+  for(auto &p_protein_match : _protein_match_list)
+    {
+      if(p_protein_match->getValidationState() == state)
+        {
+          p_protein_match->collectPeptideEvidences(peptide_evidence_list,
+                                                   state);
+        }
+    }
+  for(const PeptideEvidence *p_peptide_evidence : peptide_evidence_list)
+    {
+      if(unit == pappso::PrecisionUnit::ppm)
+        {
+          delta_list.push_back(p_peptide_evidence->getPpmDeltaMass());
+        }
+      else
+        {
+          delta_list.push_back(p_peptide_evidence->getDeltaMass());
+        }
+    }
+}
+
 void
 IdentificationGroup::startGrouping(
   ContaminantRemovalMode contaminantRemovalMode,
diff --git a/src/core/identificationgroup.h b/src/core/identificationgroup.h
index 35bd50db5f7b636807499c0bfc52250ca27c14d8..8a285a5b7b3aa17ef92e0a37b6125631b90ec885 100644
--- a/src/core/identificationgroup.h
+++ b/src/core/identificationgroup.h
@@ -157,14 +157,33 @@ class IdentificationGroup
   bool containSample(const QString &sample) const;
 
 
-  /** @brief collect mass delta between theoretical mass and observed mass
-   * each peptide evidence is only counted once
+  /** @brief collect mass delta between theoretical mass and observed mass for
+   * target sequences
+   *
+   * each peptide evidence is only counted once it counts only
+   * peptide evidence for target Sequences
+   * @param delta_list list of mass delta
+   * @param unit precision unit, ppm or dalton
+   * @param state validation state of the peptides to collect
    */
   void collectMhDelta(std::vector<pappso::pappso_double> &delta_list,
                       pappso::PrecisionUnit unit,
                       ValidationState state) const;
 
 
+  /** @brief collect mass delta between theoretical mass and observed mass
+   *
+   * each peptide evidence is only counted once it counts target or decoy
+   * peptide evidence
+   * @param delta_list list of mass delta
+   * @param unit precision unit, ppm or dalton
+   * @param state validation state of the peptides to collect
+   */
+  void collectTargetDecoyMhDelta(std::vector<pappso::pappso_double> &delta_list,
+                                 pappso::PrecisionUnit unit,
+                                 ValidationState state) const;
+
+
   /** @brief look for a peptide in the same XIC
    * @param peptide_evidence_list the peptide evidence list to build
    * @param p_msrun MSrun to look for