diff --git a/benchmarks/dvmp/analysis/dvmp.h b/benchmarks/dvmp/analysis/dvmp.h
index 20e6b9537a5a7c4478993f1bc74c1a3fb92b042e..0c79f8cd8b286919442ca9a2e79f7fbf91ede78e 100644
--- a/benchmarks/dvmp/analysis/dvmp.h
+++ b/benchmarks/dvmp/analysis/dvmp.h
@@ -38,6 +38,19 @@ namespace util {
     inv_quant quantities = {nu, Q2, Q2/2./P.mass()/nu, t};
     return quantities;
   }
+  //========================================test on using pid and re-structure the function========================
+  inline auto momenta_sim_ordered(const std::vector<eic::ReconstructedParticleData>& parts, std::string_view mother, std::string_view daughter){
+    std::vector<ROOT::Math::PxPyPzMVector> momenta{7};
+    //0:e0  1:p0    2:e1    3:p1    4:recoil system (without p1)    5:l1 from 4 6:l2 from 4
+    int order_map[7] = {0, 3, 2, 6, 5, 7, 8};             
+    //for(int i = 0 ; i < 7 ; i++) order_map[i] = -1;//-1 by default, meaning absense
+    for(int i = 0 ; i < 7 ; i++){
+        momenta[i].SetXYZM(parts[order_map[i]].p.x, parts[order_map[i]].p.y, parts[order_map[i]].p.z, parts[order_map[i]].p.mass);
+    }
+    return momenta;
+  }
+  
+  
   
  //for Dummy rc
   inline inv_quant calc_inv_quant_rec(const std::vector<ROOT::Math::PxPyPzMVector>& parts, const double pdg_mass, const double daughter_mass){
diff --git a/benchmarks/dvmp/analysis/vm_invar.cxx b/benchmarks/dvmp/analysis/vm_invar.cxx
index 21be3710106ac4495b03c26ae5a9d2eed4499b80..73a33a8039134a1426908e628f32dd459718cb3f 100644
--- a/benchmarks/dvmp/analysis/vm_invar.cxx
+++ b/benchmarks/dvmp/analysis/vm_invar.cxx
@@ -74,7 +74,9 @@ int vm_invar(const std::string& config_name)
   auto calc_inv_quant_rec = [vm_mass, decay_mass](const std::vector<ROOT::Math::PxPyPzMVector>& parts) {
     return util::calc_inv_quant_rec(parts, vm_mass, decay_mass);
   };
-
+  auto momenta_sim_ordered = [vm_name, decay_name](const std::vector<eic::ReconstructedParticleData>& parts){
+    return util::momenta_sim_ordered(momenta_sim_ordered, vm_name, decay_name);
+  };
   //====================================================================
 
   // Define analysis flow