From 561ab1015544459eece40db2e4bfad038a46c533 Mon Sep 17 00:00:00 2001
From: Mohcine Chraibi <m.chraibi@fz-juelich.de>
Date: Fri, 18 May 2018 18:40:14 +0200
Subject: [PATCH] Method D returns too early

---
 methods/Method_D.cpp | 33 +++++++++++++++++----------------
 methods/PedData.cpp  |  2 +-
 2 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/methods/Method_D.cpp b/methods/Method_D.cpp
index 39ccc0ba..7444010f 100644
--- a/methods/Method_D.cpp
+++ b/methods/Method_D.cpp
@@ -72,6 +72,7 @@ Method_D::~Method_D()
 // };
 bool Method_D::Process (const PedData& peddata,const std::string& scriptsLocation, const double& zPos_measureArea)
 {
+     bool return_value = true;
      _scriptsLocation = scriptsLocation;
      _peds_t = peddata.GetPedsFrame();
      _trajName = peddata.GetTrajName();
@@ -81,7 +82,7 @@ bool Method_D::Process (const PedData& peddata,const std::string& scriptsLocatio
      int mycounter = 0;
      int minFrame = peddata.GetMinFrame();
      Log->Write("INFO:\tMethod D: frame rate fps: <%.2f>, start: <%d>, stop: <%d> (minFrame = %d)", _fps, _startFrame, _stopFrame, minFrame);
-     if(_startFrame!=_stopFrame)
+     if(_startFrame != _stopFrame)
      {
           if(_startFrame==-1)
           {
@@ -106,10 +107,17 @@ bool Method_D::Process (const PedData& peddata,const std::string& scriptsLocatio
 
           }
      }
-     OpenFileMethodD();
+
+     if(!OpenFileMethodD())
+     {
+          return_value = false;
+     }
      if(_calcIndividualFD)
      {
-          OpenFileIndividualFD();
+          if (!OpenFileIndividualFD())
+          {
+               return_value = false;
+          }
      }
      Log->Write("------------------------Analyzing with Method D-----------------------------");
      //for(int frameNr = 0; frameNr < peddata.GetNumFrames(); frameNr++ )
@@ -122,7 +130,6 @@ bool Method_D::Process (const PedData& peddata,const std::string& scriptsLocatio
           std::ostringstream ss;
           ss << std::setw(5) << std::setfill('0') << frid;
           const std::string str_frid = ss.str();
-
           if(!(frid%10))
           {
                Log->Write("frame ID = %d",frid);
@@ -148,7 +155,6 @@ bool Method_D::Process (const PedData& peddata,const std::string& scriptsLocatio
           }
           int NumPeds = IdInFrame.size();
           //---------------------------------------------------------------------------------------------------------------
-          // std::cout << "NumPeds: " << NumPeds << "  Frame: "<< frid << "\n";
           if(NumPeds>3)
           {
                if(_isOneDimensional)
@@ -179,7 +185,7 @@ bool Method_D::Process (const PedData& peddata,const std::string& scriptsLocatio
                          OutputVoronoiResults(polygons, str_frid, VInFrame); // TODO polygons_id
                          if(_calcIndividualFD)
                          {
-                              if(false==_isOneDimensional)
+                              if(!_isOneDimensional)
                               {
                                    GetIndividualFD(polygons,VInFrame, IdInFrame, _areaForMethod_D->_poly, str_frid); // TODO polygons_id
                               }
@@ -195,22 +201,17 @@ bool Method_D::Process (const PedData& peddata,const std::string& scriptsLocatio
                     }
                     else
                     {
-
                          for(int i=0;i<(int)IdInFrame.size();i++)
                          {
                               std::cout << XInFrame[i]*CMtoM << "   " << YInFrame[i]*CMtoM <<  "   "  << IdInFrame[i] << "\n";
                          }
-                         Log->Write("WARNING: \tVoronoi Diagrams are not obtained!. Frame: %d\n", frid);
-                              return true; // todo: return false and
-                                           // check when does
-                                           // intersetion with circle fail
+                         Log->Write("WARNING: \tVoronoi Diagrams are not obtained!. Frame: %d (minFrame = %d)\n", frid, minFrame);
                     }
                }
-          }
+          } // if N >3
           else
           {
-               Log->Write("DEBUG: \tThe number of the pedestrians is less than 2. Frame = %d\n", frid);
-               return true;
+               Log->Write("INFO: \tThe number of the pedestrians is less than 2. Frame = %d (minFrame = %d)\n", frid, minFrame);
           }
      }
      fclose(_fVoronoiRhoV);
@@ -218,7 +219,7 @@ bool Method_D::Process (const PedData& peddata,const std::string& scriptsLocatio
      {
           fclose(_fIndividualFD);
      }
-     return true;
+     return return_value;
 }
 
 bool Method_D::OpenFileMethodD()
@@ -246,7 +247,7 @@ bool Method_D::OpenFileMethodD()
 bool Method_D::OpenFileIndividualFD()
 {
      string Individualfundment=_projectRootDir+"./Output/Fundamental_Diagram/Individual_FD/IndividualFD"+_trajName+"_id_"+_measureAreaId+".dat";
-     if((_fIndividualFD=Analysis::CreateFile(Individualfundment))==NULL)
+     if((_fIndividualFD=Analysis::CreateFile(Individualfundment))==nullptr)
      {
           Log->Write("ERROR:\tcannot open the file individual\n");
           return false;
diff --git a/methods/PedData.cpp b/methods/PedData.cpp
index 731b668e..5cae0000 100644
--- a/methods/PedData.cpp
+++ b/methods/PedData.cpp
@@ -63,7 +63,7 @@ bool PedData::ReadData(const string& projectRootDir, const string& path, const s
           TiXmlDocument docGeo(fullTrajectoriesPathName);
           if (!docGeo.LoadFile()) {
                Log->Write("ERROR: \t%s", docGeo.ErrorDesc());
-               Log->Write("ERROR: \t could not parse the trajectories file <%s>",fullTrajectoriesPathName.c_str());
+               Log->Write("ERROR: \tcould not parse the trajectories file <%s>",fullTrajectoriesPathName.c_str());
                return false;
           }
           TiXmlElement* xRootNode = docGeo.RootElement();
-- 
GitLab