diff --git a/NPAnalysis/10He_Riken/src/Analysis.cc b/NPAnalysis/10He_Riken/src/Analysis.cc
index 283525a783dccb584090849b8c6225093350134c..087aecf1b585fd949bee61877db0eab779ede5ef 100644
--- a/NPAnalysis/10He_Riken/src/Analysis.cc
+++ b/NPAnalysis/10He_Riken/src/Analysis.cc
@@ -3,17 +3,35 @@ using namespace std;
 
 int main(int argc,char** argv)
 {	
+   // command line parsing
+   NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc,argv);
+
+   // Instantiate RootInput
+   string runToReadfileName = myOptionManager->GetRunToReadFile();
+   RootInput:: getInstance(runToReadfileName);
+
+   // if input files are not given, use those from TAsciiFile
+   if (myOptionManager->IsDefault("EventGenerator")) {
+      string name = RootInput::getInstance()->DumpAsciiFile("EventGenerator");
+      myOptionManager->SetReactionFile(name);
+   }
+   if (myOptionManager->IsDefault("DetectorConfiguration")) {
+      string name = RootInput::getInstance()->DumpAsciiFile("DetectorConfiguration");
+      myOptionManager->SetDetectorFile(name);
+   }
+
+   // Instantiate RootOutput
+   RootOutput::getInstance("Analysis/Paris_AnalyzedData", "AnalysedTree");
+
+   // get input files from NPOptionManager
+   string reactionfileName    = myOptionManager->GetReactionFile();
+   string detectorfileName    = myOptionManager->GetDetectorFile();
+   string calibrationfileName = myOptionManager->GetCalibrationFile();
+   string OutputfileName      = myOptionManager->GetOutputFile();
+
+   // Instantiate RootOutput singleton classes
+   RootOutput::getInstance("Analysis/10He_AnalysedData", "AnalyzedTree");
 
-	NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc,argv)  ;
-	string detectorfileName 		= myOptionManager->GetDetectorFile()	      ;
-	string calibrationfileName 	= myOptionManager->GetCalibrationFile()	    ;
-	string runToReadfileName 		= myOptionManager->GetRunToReadFile()       ;
-	
-	//	First of All instantiate RootInput and Output
-	//	Detector will be attached later
-	RootInput:: getInstance(runToReadfileName)	;
-	RootOutput::getInstance("Analysis/10HeRiken_AnalyzedData", "AnalyzedTree")	;
-	
 	//	Instantiate some Reaction
 	NPL::Reaction*  He10Reaction = new Reaction								;
 	He10Reaction	->	ReadConfigurationFile("10He.reaction")	;
@@ -244,6 +262,8 @@ int main(int argc,char** argv)
 	cout << endl << "/////////////////////////////////"<< endl<< endl ;
 	myHist1D->Write();
 	RootOutput::getInstance()->Destroy();
+	RootInput::getInstance()->Destroy();
+   NPOptionManager::getInstance()->Destroy();
 	return 0	;
 }
 
diff --git a/NPAnalysis/Gaspard/src/Analysis.cc b/NPAnalysis/Gaspard/src/Analysis.cc
index 89f73c390bea21bb36143df61bdd9309f04e5234..d7f3fa73f4a6d462bd66e8cda12838133d01d744 100644
--- a/NPAnalysis/Gaspard/src/Analysis.cc
+++ b/NPAnalysis/Gaspard/src/Analysis.cc
@@ -7,17 +7,33 @@ int main(int argc,char** argv)
 {	
    // command line parsing
    NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc,argv);
-   string reactionfileName          = myOptionManager->GetReactionFile();
-	string detectorfileName          = myOptionManager->GetDetectorFile();
-	string calibrationfileName       = myOptionManager->GetCalibrationFile();
-	string runToReadfileName         = myOptionManager->GetRunToReadFile();
-	string OutputfileName            = myOptionManager->GetOutputFile();
 
-   // Instantiate RootInput and RootOutput singleton classes
+   // Instantiate RootInput
+   string runToReadfileName = myOptionManager->GetRunToReadFile();
    RootInput:: getInstance(runToReadfileName);
-//   RootOutput::getInstance("Analysis/"+OutputfileName, "AnalyzedTree")	;
+
+   // if input files are not given, use those from TAsciiFile
+   if (myOptionManager->IsDefault("EventGenerator")) {
+      string name = RootInput::getInstance()->DumpAsciiFile("EventGenerator");
+      myOptionManager->SetReactionFile(name);
+   }
+   if (myOptionManager->IsDefault("DetectorConfiguration")) {
+      string name = RootInput::getInstance()->DumpAsciiFile("DetectorConfiguration");
+      myOptionManager->SetDetectorFile(name);
+   }
+
+   // Instantiate RootOutput
+   RootOutput::getInstance("Analysis/Paris_AnalyzedData", "AnalysedTree");
+
+   // get input files from NPOptionManager
+   string reactionfileName    = myOptionManager->GetReactionFile();
+   string detectorfileName    = myOptionManager->GetDetectorFile();
+   string calibrationfileName = myOptionManager->GetCalibrationFile();
+   string OutputfileName      = myOptionManager->GetOutputFile();
+
+   // Instantiate RootOutput singleton classes
    RootOutput::getInstance("Analysis/Gaspard_AnalyzedData", "AnalyzedTree");
- 
+
    // Initialize the reaction
    NPL::Reaction* myReaction = new Reaction();
    myReaction->ReadConfigurationFile(reactionfileName);
diff --git a/NPAnalysis/Hyde/src/Analysis.cc b/NPAnalysis/Hyde/src/Analysis.cc
index 89c2098284e2c9d08cfb4795b133eac73b9dd8bb..ed0b9fc24382636157ccb362cdf55bf0f3f0cb92 100644
--- a/NPAnalysis/Hyde/src/Analysis.cc
+++ b/NPAnalysis/Hyde/src/Analysis.cc
@@ -189,6 +189,7 @@ int main(int argc,char** argv)
    // delete singleton classes
    RootOutput::getInstance()->Destroy();
    RootInput::getInstance()->Destroy();
+   NPOptionManager::getInstance()->Destroy();
 
    return 0;
 }
diff --git a/NPAnalysis/Paris/src/Analysis.cc b/NPAnalysis/Paris/src/Analysis.cc
index a7a44608a0cf99cdec9cb0aeac7cccb4359c0732..cfb1ef3cdb9a2146470d3b770cea42e268e64146 100644
--- a/NPAnalysis/Paris/src/Analysis.cc
+++ b/NPAnalysis/Paris/src/Analysis.cc
@@ -6,16 +6,32 @@ using namespace std;
 
 int main(int argc,char** argv)
 {	
+   // command line parsing
+   NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc,argv);
 
-  NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc,argv)  ;
-	string detectorfileName 		= myOptionManager->GetDetectorFile()	      ;
-	string reactionfileName 	  = myOptionManager->GetCalibrationFile()	    ;
-	string runToReadfileName 		= myOptionManager->GetRunToReadFile()       ;
-	
-   // Instantiate RootInput and RootOutput singleton classes
+   // Instantiate RootInput
+   string runToReadfileName = myOptionManager->GetRunToReadFile();
    RootInput:: getInstance(runToReadfileName);
-   RootOutput::getInstance("Analysis/Paris_AnalyzedData", "AnalyzedTree");
 
+   // if input files are not given, use those from TAsciiFile
+   if (myOptionManager->IsDefault("EventGenerator")) {
+      string name = RootInput::getInstance()->DumpAsciiFile("EventGenerator");
+      myOptionManager->SetReactionFile(name);
+   }
+   if (myOptionManager->IsDefault("DetectorConfiguration")) {
+      string name = RootInput::getInstance()->DumpAsciiFile("DetectorConfiguration");
+      myOptionManager->SetDetectorFile(name);
+   }
+
+   // Instantiate RootOutput
+   RootOutput::getInstance("Analysis/Paris_AnalyzedData", "AnalysedTree");
+
+   // get input files from NPOptionManager
+   string reactionfileName    = myOptionManager->GetReactionFile();
+   string detectorfileName    = myOptionManager->GetDetectorFile();
+   string calibrationfileName = myOptionManager->GetCalibrationFile();
+   string OutputfileName      = myOptionManager->GetOutputFile();
+	
    // Initialize the reaction
    NPL::Reaction* myReaction = new Reaction();
    myReaction->ReadConfigurationFile(reactionfileName);
@@ -177,6 +193,7 @@ int main(int argc,char** argv)
    // delete singleton classes
    RootOutput::getInstance()->Destroy();
    RootInput::getInstance()->Destroy();
+   NPOptionManager::getInstance()->Destroy();
 
 
 
diff --git a/NPAnalysis/Template/src/Analysis.cc b/NPAnalysis/Template/src/Analysis.cc
index dc93cb4a19d553f9f296cfda43b11b5a432888bc..8da4c154f2bb1c48294acf5a14e8c21c53e57c5c 100644
--- a/NPAnalysis/Template/src/Analysis.cc
+++ b/NPAnalysis/Template/src/Analysis.cc
@@ -4,17 +4,31 @@ using namespace std;
 
 int main(int argc, char** argv)
 {
-   // Parse command line
-   NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc, argv);
-   string detectorfileName          = myOptionManager->GetDetectorFile();
-   string reactionfileName          = myOptionManager->GetCalibrationFile();
-   string calibrationfileName       = myOptionManager->GetCalibrationFile();
-   string runToReadfileName         = myOptionManager->GetRunToReadFile();
-
-   // First of All instantiate RootInput and Output
-   // Detector will be attached later
+   // command line parsing
+   NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc,argv);
+
+   // Instantiate RootInput
+   string runToReadfileName = myOptionManager->GetRunToReadFile();
    RootInput:: getInstance(runToReadfileName);
-   RootOutput::getInstance("Analysis/Template_AnalyzedData", "AnalyzedTree");
+
+   // if input files are not given, use those from TAsciiFile
+   if (myOptionManager->IsDefault("EventGenerator")) {
+      string name = RootInput::getInstance()->DumpAsciiFile("EventGenerator");
+      myOptionManager->SetReactionFile(name);
+   }
+   if (myOptionManager->IsDefault("DetectorConfiguration")) {
+      string name = RootInput::getInstance()->DumpAsciiFile("DetectorConfiguration");
+      myOptionManager->SetDetectorFile(name);
+   }
+
+   // Instantiate RootOutput
+   RootOutput::getInstance("Analysis/Template_AnalyzedData", "AnalysedTree");
+
+   // get input files from NPOptionManager
+   string reactionfileName    = myOptionManager->GetReactionFile();
+   string detectorfileName    = myOptionManager->GetDetectorFile();
+   string calibrationfileName = myOptionManager->GetCalibrationFile();
+   string OutputfileName      = myOptionManager->GetOutputFile();
 
    // Instantiate a Reaction
    NPL::Reaction* myReaction = new Reaction();
@@ -66,5 +80,8 @@ int main(int argc, char** argv)
    cout << "A total of " << nentries << " event has been annalysed " << endl ;
 
    RootOutput::getInstance()->Destroy();
+   RootInput::getInstance()->Destroy();
+   NPOptionManager::getInstance()->Destroy();
+
    return 0 ;
 }
diff --git a/NPAnalysis/W1/src/Analysis.cc b/NPAnalysis/W1/src/Analysis.cc
index 532dd5012a40f6735abaaf36b55f6885e250682d..3434851aa8b1d3bc662dc356135d7dbb1e218daa 100644
--- a/NPAnalysis/W1/src/Analysis.cc
+++ b/NPAnalysis/W1/src/Analysis.cc
@@ -7,17 +7,30 @@ int main(int argc,char** argv)
 {	
    // command line parsing
    NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc,argv);
-   string reactionfileName          = myOptionManager->GetReactionFile();
-	string detectorfileName          = myOptionManager->GetDetectorFile();
-	string calibrationfileName       = myOptionManager->GetCalibrationFile();
-	string runToReadfileName         = myOptionManager->GetRunToReadFile();
-	string OutputfileName            = myOptionManager->GetOutputFile();
 
-   // Instantiate RootInput and RootOutput singleton classes
+   // Instantiate RootInput
+   string runToReadfileName = myOptionManager->GetRunToReadFile();
    RootInput:: getInstance(runToReadfileName);
-//   RootOutput::getInstance("Analysis/"+OutputfileName, "AnalyzedTree")	;
-   RootOutput::getInstance("Analysis/W1_AnalyzedData", "AnalyzedTree");
- 
+
+   // if input files are not given, use those from TAsciiFile
+   if (myOptionManager->IsDefault("EventGenerator")) {
+      string name = RootInput::getInstance()->DumpAsciiFile("EventGenerator");
+      myOptionManager->SetReactionFile(name);
+   }
+   if (myOptionManager->IsDefault("DetectorConfiguration")) {
+      string name = RootInput::getInstance()->DumpAsciiFile("DetectorConfiguration");
+      myOptionManager->SetDetectorFile(name);
+   }
+
+   // Instantiate RootOutput
+   RootOutput::getInstance("Analysis/Must2_AnalysedData", "AnalysedTree");
+
+   // get input files from NPOptionManager
+   string reactionfileName    = myOptionManager->GetReactionFile();
+   string detectorfileName    = myOptionManager->GetDetectorFile();
+   string calibrationfileName = myOptionManager->GetCalibrationFile();
+   string OutputfileName      = myOptionManager->GetOutputFile();
+
    // Initialize the reaction
    cout << endl << "/////////// Event generator ///////////" << endl;
    NPL::Reaction* myReaction = new Reaction();
diff --git a/NPAnalysis/must2/src/Analysis.cc b/NPAnalysis/must2/src/Analysis.cc
index 7aef0fccfa560774160ac47c0cf8ff6e868a54c7..3f9e7dac8155a73da4948068c45e2f8e6914860f 100644
--- a/NPAnalysis/must2/src/Analysis.cc
+++ b/NPAnalysis/must2/src/Analysis.cc
@@ -189,6 +189,7 @@ int main(int argc,char** argv)
    cout << endl << " ///////////////////////////////////// "<< endl<< endl ;
    RootOutput::getInstance()->Destroy();
    RootInput::getInstance()->Destroy();
+   NPOptionManager::getInstance()->Destroy();
    
    return 0;
 }