diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index 3c05ab04ca9c5b0f390dbe7f7965efba28c60988..79a516619c4c948e4f7b0f11b73c19a3e768c778 100755
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -657,7 +657,18 @@ bool MainWindow::addPedestrianGroup(int groupID,QString fileName)
     auto&& geometry = _visualisationThread->getGeometry();
 
     //try to get a geometry filename
-    QString geometry_file=SaxParser::extractGeometryFilename(fileName);
+    if(fileName.endsWith(".xml",Qt::CaseInsensitive))
+    {
+         Debug::Messages("Extract geometry file from <xml> trajectories");
+         QString geometry_file=SaxParser::extractGeometryFilename(fileName);
+    }
+    else
+    {
+         Debug::Messages("Extract geometry file from <txt> trajectories");
+         QString geometry_file=SaxParser::extractGeometryFilenameTXT(fileName);
+    }
+
+
     Debug::Messages("MainWindow::addPedestrianGroup: geometry name: <%s>", geometry_file.toStdString().c_str());
     // if xml is detected, just load and show the geometry then exit
     if(geometry_file.endsWith(".xml",Qt::CaseInsensitive)) {
diff --git a/src/SaxParser.cpp b/src/SaxParser.cpp
index 5f082b0105eb4eaa7cc8d0d9e53820b8d6bc397d..fca1609ff3ecf5ac37973062cc87d5d62dada851 100644
--- a/src/SaxParser.cpp
+++ b/src/SaxParser.cpp
@@ -1103,6 +1103,31 @@ QString SaxParser::extractGeometryFilename(QString &filename)
      return "";
 }
 
+QString SaxParser::extractGeometryFilenameTXT(QString &filename)
+{
+     QString extracted_geo_name="";
+     QFile file(filename);
+     QString line;
+     if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+          QTextStream in(&file);
+          while (!in.atEnd()) {
+               //look for a line with
+               line = in.readLine();
+               std::cout << " >> " >> line >> endl;
+               if(line.split(":").size()==2)
+               {
+                    if(line.split(":")[0] == "#geometry")
+                    {
+                         extracted_geo_name = line.split(":")[1]
+                    }
+               }
+          }// while
+     } // if open
+     cout << ">> geo: " <<   extracted_geo_name << endl;
+     return extracted_geo_name;
+}
+
+
 void SaxParser::parseGeometryXMLV04(QString filename, GeometryFactory& geoFac)
 {
      cout << "parsing 04\n" ;
@@ -1371,8 +1396,6 @@ bool SaxParser::ParseTxtFormat(const QString &fileName, SyncData* dataset, doubl
                int agentID=-1 ;
                int frameID=-1;
                double color=155 ;
-               std::cout << pieces.size() << "\n";
-
                switch(pieces.size())
                {
                case 5:
diff --git a/src/SaxParser.h b/src/SaxParser.h
index c953dcc2103a6c4e7c11ef3a9556c015bd22d18e..3ccc0d4ecad55c6e65be8fb65c399d1c469ca2da 100644
--- a/src/SaxParser.h
+++ b/src/SaxParser.h
@@ -77,7 +77,7 @@ public:
 
     /// take a large file and find the geometry file location.
     static QString extractGeometryFilename(QString& filename);
-
+     static QString SaxParser::extractGeometryFilenameTXT(QString &filename);
     /// parse the txt file format
     static bool ParseTxtFormat(const QString& fileName, SyncData* dataset, double * fps);