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