diff --git a/src/ZddDetector.cxx b/src/ZddDetector.cxx
index 118a2f6ef50b113170c1642c332f434f1e2a8764..4326ba01a882aa1c545771b67797fd0e90184845 100644
--- a/src/ZddDetector.cxx
+++ b/src/ZddDetector.cxx
@@ -381,6 +381,7 @@ void ZddDetector::InitializeDataInputRaw(
 void ZddDetector::InitializeDataInputPhysics(
     std::shared_ptr<nptool::VDataInput> input) {
   input->Attach("zdd", "zdd::ZddPhysics", &m_PhysicsData);
+  input->Attach("zdd", "zdd::ZddData", &m_RawData);
 }
 ////////////////////////////////////////////////////////////////////////////////
 void ZddDetector::InitializeDataOutputRaw(
@@ -390,6 +391,7 @@ void ZddDetector::InitializeDataOutputRaw(
 ////////////////////////////////////////////////////////////////////////////////
 void ZddDetector::InitializeDataOutputPhysics(
     std::shared_ptr<nptool::VDataOutput> output) {
+  output->Attach("zdd", "zdd::ZddData", &m_RawData);
   output->Attach("zdd", "zdd::ZddPhysics", &m_PhysicsData);
 }
 
diff --git a/src/ZddSpectra.cxx b/src/ZddSpectra.cxx
index 30d7facc2c8e451f8010c89b2bec71e2dda7212a..4077c2f5b6227c23b696b49fc8957e1647629fd5 100644
--- a/src/ZddSpectra.cxx
+++ b/src/ZddSpectra.cxx
@@ -99,7 +99,7 @@ ZddSpectra::ZddSpectra() {
   
   hist_name = "ZDD_IC_E_PL_E_phy";
   m_phy_hist[hist_name] = new TH2F(hist_name.c_str(), hist_name.c_str(),
-        4000, 0, 20000,2000,0,10000);
+        4000, 0, 60000, 2000,0,10000);
   
   unsigned int PlSize = 5;
   for(unsigned int i = 0 ; i < PlSize ; i++){
@@ -153,19 +153,24 @@ void ZddSpectra::FillPhy() {
     }
   }
   unsigned int size_PL = m_PhysicsData->PL_E.size();
+  std::set<int> tmp_IC_Nbr(m_PhysicsData->IC_Nbr.begin(), m_PhysicsData->IC_Nbr.end());
   for(unsigned int i = 0 ;i< size_PL ; i++){
     if(m_PhysicsData->PL_E[i]>0){
-    std::string hist_name = "ZDD_PL_phy_" +  nptool::itoa(m_PhysicsData->PL_Nbr[i]); 
-    m_phy_hist[hist_name]->Fill(m_PhysicsData->PL_E[i]);
-    if(m_PhysicsData->ICSum>0&&m_PhysicsData->PL_Nbr[i] == 2){
-      std::string hist_name = "ZDD_IC_E_PL_E_phy";
-      m_phy_hist[hist_name]->Fill(m_PhysicsData->PL_E[i],m_PhysicsData->ICSum);
+      std::string hist_name = "ZDD_PL_phy_" +  nptool::itoa(m_PhysicsData->PL_Nbr[i]); 
+      m_phy_hist[hist_name]->Fill(m_PhysicsData->PL_E[i]);
+      if(m_PhysicsData->ICSum>0&&m_PhysicsData->PL_Nbr[i] == 2){
+        if(std::all_of(m_PhysicsData->IC_E.cbegin(), m_PhysicsData->IC_E.cend(), [](auto i){ return i > 0; }) && tmp_IC_Nbr.size() == 5){
+          std::string hist_name = "ZDD_IC_E_PL_E_phy";
+          m_phy_hist[hist_name]->Fill(m_PhysicsData->PL_E[i],m_PhysicsData->ICSum);
+        }
       }
     }
   }
   if(m_PhysicsData->ICSum>0){
-    std::string hist_name = "IC_phy_Sum"; 
-    m_phy_hist[hist_name]->Fill(m_PhysicsData->ICSum);
+    if(std::all_of(m_PhysicsData->IC_E.cbegin(), m_PhysicsData->IC_E.cend(), [](auto i){ return i > 0 ;}) && tmp_IC_Nbr.size() == 5){
+      std::string hist_name = "IC_phy_Sum"; 
+      m_phy_hist[hist_name]->Fill(m_PhysicsData->ICSum);
+    }
   }
 }