From 4096befcbf92f99651b4091bd9747d3107125766 Mon Sep 17 00:00:00 2001
From: matta <matta@npt>
Date: Mon, 7 Feb 2011 18:19:37 +0000
Subject: [PATCH] * When running an Analysis, Calibration are now saved in a
 TAsciiFile in the RootOutput

---
 .../CalibrationManager/CalibrationManager.cxx | 74 ++++++++++++-------
 NPLib/IORoot/RootInput.cxx                    |  1 +
 NPLib/IORoot/RootOutput.cxx                   |  4 +
 NPLib/Tools/NPOptionManager.cxx               |  2 +-
 NPLib/Tools/TAsciiFile.cxx                    |  7 ++
 NPLib/Tools/TAsciiFile.h                      |  1 +
 6 files changed, 60 insertions(+), 29 deletions(-)

diff --git a/NPLib/CalibrationManager/CalibrationManager.cxx b/NPLib/CalibrationManager/CalibrationManager.cxx
index aee072e45..33217f8fe 100644
--- a/NPLib/CalibrationManager/CalibrationManager.cxx
+++ b/NPLib/CalibrationManager/CalibrationManager.cxx
@@ -20,6 +20,8 @@
  *                                                                           *
  *****************************************************************************/
 #include "CalibrationManager.h"
+#include "TAsciiFile.h"
+#include "RootOutput.h"
 
 //	STL
 #include <cstdlib>
@@ -106,6 +108,10 @@ void CalibrationManager::LoadParameterFromFile()
 		string	 DataBuffer	;
 		string   LineBuffer ;
 		
+		// Get pointer to the TAsciifile CalibrationFile in RootOuput
+		TAsciiFile* AcsiiCalibration = RootOutput::getInstance()->GetAsciiFileCalibration();
+		
+		
 		for(unsigned int i = 0 ; i < fFileList.size() ; i++)
 			{
 				CalibFile.open( fFileList[i].c_str() );
@@ -118,40 +124,52 @@ void CalibrationManager::LoadParameterFromFile()
 						cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
 					}
 					
-				else while( !CalibFile.eof() )
-					{
-						// Read the file Line by line
-						getline(CalibFile, LineBuffer);
+				else 
+				{
+				  // Append the Calibration File to the RootOuput for Back-up
+		      string comment = "%%% From File " + fFileList[i] + "%%%";
+		      AcsiiCalibration->AppendLine(comment.c_str());
+		      AcsiiCalibration->Append(fFileList[i].c_str());
+				
+				
+				  while( !CalibFile.eof() )
+					  {
+						  // Read the file Line by line
+						  getline(CalibFile, LineBuffer);
 						
-						// Create a istringstream to manipulate the line easely
-					  istringstream theLine (LineBuffer,istringstream::in);
-						theLine >> DataBuffer ;
+						  // Create a istringstream to manipulate the line easely
+					    istringstream theLine (LineBuffer,istringstream::in);
+						  theLine >> DataBuffer ;
 						
-						// Comment support, comment symbole is %
-						if(DataBuffer.compare(0, 1, "%") == 0) {
-						 	CalibFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
-						 	
-						//	Search word in the token list
-						it=fToken.find(DataBuffer);
+						  // Comment support, comment symbole is %
+						  if(DataBuffer.compare(0, 1, "%") == 0) {
+						   	CalibFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
+						   	
+						  //	Search word in the token list
+						  it=fToken.find(DataBuffer);
 						
-						//	if the word is find, values are read
-						if( it!=fToken.end() )
-							{
-								vector<double> Coeff ;
-								while( !theLine.eof() )
-									{
-										theLine >> DataBuffer ; Coeff.push_back( atof(DataBuffer.c_str()) ) ;
-									}
+						  //	if the word is find, values are read
+						  if( it!=fToken.end() )
+							  {
+								  vector<double> Coeff ;
+								  while( !theLine.eof() )
+									  {
+										  theLine >> DataBuffer ; Coeff.push_back( atof(DataBuffer.c_str()) ) ;
+									  }
 									
-								//	Check this parameter is not already define
-								if( fCalibrationCoeff.find(it->second) != fCalibrationCoeff.end() ) 
-									cout << "WARNING: Parameter " << it->second << " Already found. It will be rewritted " << endl;
+								  //	Check this parameter is not already define
+								  if( fCalibrationCoeff.find(it->second) != fCalibrationCoeff.end() ) 
+									  cout << "WARNING: Parameter " << it->second << " Already found. It will be rewritted " << endl;
 										
-								//	Add the list of Coeff to the Coeff map using Parameter Path as index
-								fCalibrationCoeff[ it->second ] = Coeff ;
-							}
+								  //	Add the list of Coeff to the Coeff map using Parameter Path as index
+								  fCalibrationCoeff[ it->second ] = Coeff ;
+							  }
 								
-					}
+					  }
+				
+				}
+				
+				
 				CalibFile.close() ;
 			}
 	}
diff --git a/NPLib/IORoot/RootInput.cxx b/NPLib/IORoot/RootInput.cxx
index d9f02048d..55d13fcde 100644
--- a/NPLib/IORoot/RootInput.cxx
+++ b/NPLib/IORoot/RootInput.cxx
@@ -25,6 +25,7 @@
 #include <limits>
 #include <sys/stat.h>
 #include <stdlib.h>
+
 #include "RootInput.h"
 #include "TAsciiFile.h"
 
diff --git a/NPLib/IORoot/RootOutput.cxx b/NPLib/IORoot/RootOutput.cxx
index fe1966ce3..21e4b531e 100644
--- a/NPLib/IORoot/RootOutput.cxx
+++ b/NPLib/IORoot/RootOutput.cxx
@@ -100,6 +100,10 @@ void RootOutput::InitAsciiFiles()
 
    // Calibration files
    pCalibrationFile = new TAsciiFile();
+   if (!OptionManager->IsDefault("Calibration")) {
+      TString fileNameCal = OptionManager->GetCalibrationFile();
+      pCalibrationFile->SetNameTitle("Calibration", fileNameCal.Data());
+   }
 }
 
 
diff --git a/NPLib/Tools/NPOptionManager.cxx b/NPLib/Tools/NPOptionManager.cxx
index c9d607d1f..82fd97a46 100644
--- a/NPLib/Tools/NPOptionManager.cxx
+++ b/NPLib/Tools/NPOptionManager.cxx
@@ -44,7 +44,7 @@ NPOptionManager::NPOptionManager(int argc, char** argv)
    fDefaultDetectorFileName    = "defaultDetector.detector";
    fDefaultOutputFileName      = "myResult.root";
    fDefaultRunToReadFileName   = "defaultRunToTreat.txt";
-   fDefaultCalibrationFileName = "Calibration.txt";
+   fDefaultCalibrationFileName = "defaultCalibration.txt";
    // Assigned values
    fReactionFileName           = fDefaultReactionFileName;
    fDetectorFileName           = fDefaultDetectorFileName;
diff --git a/NPLib/Tools/TAsciiFile.cxx b/NPLib/Tools/TAsciiFile.cxx
index 8210921a7..b2df7c4ba 100644
--- a/NPLib/Tools/TAsciiFile.cxx
+++ b/NPLib/Tools/TAsciiFile.cxx
@@ -77,6 +77,13 @@ void TAsciiFile::Append(const char* inputAsciiFile)
 }
 
 
+void TAsciiFile::AppendLine(const char* AsciiLine)
+{
+  string line = AsciiLine ;
+  
+  fLines.push_back(line);
+}
+
 
 void TAsciiFile::WriteToFile(const char* outputAsciiFile) const
 {
diff --git a/NPLib/Tools/TAsciiFile.h b/NPLib/Tools/TAsciiFile.h
index e578f8c68..a448b9a17 100644
--- a/NPLib/Tools/TAsciiFile.h
+++ b/NPLib/Tools/TAsciiFile.h
@@ -44,6 +44,7 @@ class TAsciiFile : public TNamed {
    virtual ~TAsciiFile();
 
    void Append(const char* inputAsciiFile);
+   void AppendLine(const char* AsciiLine);
    void WriteToFile(const char* outputAsciiFile) const;
    void WriteToFile(const char* outputAsciiFile, UInt_t begin, UInt_t end) const;
    void Print(const Option_t*) const {}; 
-- 
GitLab