diff --git a/NPLib/Core/NPOptionManager.cxx b/NPLib/Core/NPOptionManager.cxx
index 7c797e36a31a8be2919cf8d6cd473227408753a2..914984518a4c8766f3902c3d9ac38d23224f1061 100644
--- a/NPLib/Core/NPOptionManager.cxx
+++ b/NPLib/Core/NPOptionManager.cxx
@@ -76,6 +76,7 @@ void NPOptionManager::ReadTheInputArgument(int argc, char** argv){
   fInputPhysicalTreeOption = false;
   fGenerateHistoOption = false ;
   fPROOFMode = false;
+  fCircularTree = false;
   fOnline = false;
   fG4BatchMode = false;
 #ifdef __linux__
@@ -159,6 +160,8 @@ void NPOptionManager::ReadTheInputArgument(int argc, char** argv){
 
     else if (argument == "--online")                              {fOnline = true ;fGenerateHistoOption=true;}
 
+    else if (argument == "--circular")                            {fCircularTree = true;}
+
 
     //else ;
   }
@@ -408,6 +411,7 @@ void NPOptionManager::DisplayHelp(){
   std::cout << "\t--last-res\t\t\tIgnore the list of Run to treat if any and analysed the last Result file" << std::endl ;
   std::cout << "\t--last-any\t\t\tIgnore the list of Run to treat if any and analysed the last generated root file" << std::endl ;
   std::cout << "\t--online  \t\t\tStart the spectra server" << std::endl ;
+  std::cout << "\t--circular \t\t\tSet the output tree a circular one" << std::endl ;
   std::cout << std::endl << "NPSimulation only:"<<std::endl;
   std::cout << "\t-M <arg>\t\t\tExecute Geant4 macro <arg> at startup" << std::endl ;
   std::cout << "\t-B <arg>\t\t\tExecute in batch mode (no ui) with Geant4 macro <arg> at startup" << std::endl ;
diff --git a/NPLib/Core/NPOptionManager.h b/NPLib/Core/NPOptionManager.h
index 88fe77f63d89942ce2319cc5b4a6a1c878e73103..937cc7c51e793731e4dfd2ca21f2430bcbe792bf 100644
--- a/NPLib/Core/NPOptionManager.h
+++ b/NPLib/Core/NPOptionManager.h
@@ -102,6 +102,7 @@ class NPOptionManager{
       bool   GetOnline()                   {return fOnline;}
       bool   GetPROOF()                    {return fPROOFMode;}
       bool   GetG4BatchMode()              {return fG4BatchMode;}
+      bool   GetCircularTree()                 {return fCircularTree;}
       int    GetVerboseLevel()             {return fVerboseLevel;}
       int    GetNumberOfEntryToAnalyse()   {return fNumberOfEntryToAnalyse;} 
       int    GetFirstEntryToAnalyse()      {return fFirstEntryToAnalyse;} 
@@ -141,6 +142,7 @@ class NPOptionManager{
       bool   fLastPhyFile;
       bool   fLastResFile;
       bool   fLastAnyFile;
+      bool   fCircularTree;
       int    fVerboseLevel; // 0 for not talk, 1 for talking
       int    fNumberOfEntryToAnalyse; // use to limit the number of analysed in NPA
       int    fFirstEntryToAnalyse; // use to set the first event analysed in NPA (total: fFirstEntryToAnalyse -> fFirstEntryToAnalyse + fNumberOfEntryToAnalyse)
diff --git a/NPLib/Core/RootOutput.cxx b/NPLib/Core/RootOutput.cxx
index e267880a2dbbaaa2e0155bb5129df7d23858116c..76d05c17beb7a024e6085bea645d7b3809021b51 100644
--- a/NPLib/Core/RootOutput.cxx
+++ b/NPLib/Core/RootOutput.cxx
@@ -125,6 +125,10 @@ RootOutput::RootOutput(std::string fileNameBase, std::string treeNameBase){
   // Init TAsciiFile objects
   InitAsciiFiles();
   gDirectory->cd(currentPath->GetPath()); 
+
+  if(!NPOptionManager::getInstance()->GetCircularTree()){
+    pRootTree->SetCircular(10000); 
+  }
 }