From 31a5511b514866bb0e8bd6d7352cb7287d4ff586 Mon Sep 17 00:00:00 2001
From: deserevi <deserevi@nptool>
Date: Thu, 3 Feb 2011 22:24:04 +0000
Subject: [PATCH] * New features in RootOutput class    + TAsciiFile classes
 containing input files are now files here and not      in Simulation.cc
 anymore

---
 NPAnalysis/must2/RunToTreat.txt |  2 +-
 NPLib/IORoot/RootInput.cxx      |  9 ++++++-
 NPLib/IORoot/RootInput.h        |  2 +-
 NPLib/IORoot/RootOutput.cxx     | 47 ++++++++++++++++++++++++++++-----
 NPLib/IORoot/RootOutput.h       | 12 ++++++---
 NPLib/Tools/NPOptionManager.cxx | 16 +++++++----
 NPLib/Tools/NPOptionManager.h   | 24 +++++++++++++----
 NPSimulation/Simulation.cc      | 20 +++-----------
 8 files changed, 92 insertions(+), 40 deletions(-)

diff --git a/NPAnalysis/must2/RunToTreat.txt b/NPAnalysis/must2/RunToTreat.txt
index 62920d22a..28febc902 100644
--- a/NPAnalysis/must2/RunToTreat.txt
+++ b/NPAnalysis/must2/RunToTreat.txt
@@ -2,5 +2,5 @@ TTreeName
 	SimulatedTree
 RootFileName 
 %	../../Outputs/Simulation/myResult.root
-	../../Outputs/Simulation/pipo.root
+	../../Outputs/Simulation/dummy.root
 %	../../Outputs/Simulation/fe60dp_1mg.root
diff --git a/NPLib/IORoot/RootInput.cxx b/NPLib/IORoot/RootInput.cxx
index 61f5f2950..5b3fbe1e0 100644
--- a/NPLib/IORoot/RootInput.cxx
+++ b/NPLib/IORoot/RootInput.cxx
@@ -41,6 +41,7 @@ RootInput* RootInput::getInstance(string configFileName)
 }
 
 
+
 void RootInput::Destroy()
 {
    if (instance != 0) {
@@ -49,6 +50,8 @@ void RootInput::Destroy()
    }
 }
 
+
+
 // fileNameBase doit etre le nom du TChain.
 RootInput::RootInput(string configFileName)
 {
@@ -110,7 +113,9 @@ RootInput::RootInput(string configFileName)
       cout << "WARNING: Token not found for InputTree Declaration : Input Tree may not be instantiate properly" << endl;
 }
 
-void RootInput::AddFriendChain( string RunToAdd)
+
+
+void RootInput::AddFriendChain(string RunToAdd)
 {
    NumberOfFriend++;
    ostringstream suffix_buffer;
@@ -180,6 +185,8 @@ void RootInput::AddFriendChain( string RunToAdd)
    cout << "/////////////////////////////////" << endl;
 }
 
+
+
 RootInput::~RootInput()
 {
    delete pRootChain;
diff --git a/NPLib/IORoot/RootInput.h b/NPLib/IORoot/RootInput.h
index c5d76d097..4bda2c705 100644
--- a/NPLib/IORoot/RootInput.h
+++ b/NPLib/IORoot/RootInput.h
@@ -68,7 +68,7 @@ public:
    TChain*	GetChain() {return pRootChain;};
    
    // Add a Friend chain to the input chain
-   void     AddFriendChain( string RunToAdd);
+   void     AddFriendChain(string RunToAdd);
 
 private:
    TChain	*pRootChain;
diff --git a/NPLib/IORoot/RootOutput.cxx b/NPLib/IORoot/RootOutput.cxx
index 2dba73969..32a145fcc 100644
--- a/NPLib/IORoot/RootOutput.cxx
+++ b/NPLib/IORoot/RootOutput.cxx
@@ -9,12 +9,13 @@
  * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
  *                                                                           *
  * Creation Date  : 21/07/09                                                 *
- * Last update    :                                                          *
+ * Last update    : 03/02/11                                                 *
  *---------------------------------------------------------------------------*
  * Decription: This class is a singleton class which deals with the ROOT     *
  *             output file and tree both for NPSimulation and NPAnalysis.    *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
+ *   + 03/02/11: Add support for TAsciiFile objects (N. de Sereville)        *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
@@ -23,6 +24,7 @@
 #include <cstdlib>
 
 #include "RootOutput.h"
+#include "NPOptionManager.h"
 
 using namespace std;
 
@@ -53,18 +55,51 @@ RootOutput::RootOutput(TString fileNameBase, TString treeNameBase)
 {
    // The file extension is added to the file name:
    TString GlobalPath = getenv("NPTOOL");
-   TString fileName = GlobalPath + "/Outputs/" + fileNameBase + ".root";
+   TString fileName = GlobalPath + "/Outputs/";
+   if (fileNameBase.Contains("root")) fileName += fileNameBase;
+   else fileName += fileNameBase + ".root"; 
 
    // The ROOT file is created
    pRootFile = new TFile(fileName, "RECREATE");
-
    pRootTree = new TTree(treeNameBase, "Data created / analyzed with the NPTool package");
    pRootList = new TList();
 
-   pEventGenerator        = new TAsciiFile();
+   // Init TAsciiFile objects
+   InitAsciiFiles();
+}
+
+
+
+void RootOutput::InitAsciiFiles()
+{
+   // get NPOptionManager pointer
+   NPOptionManager* OptionManager  = NPOptionManager::getInstance();
+
+   // Event generator
+   // Get file name from NPOptionManager
+   TString fileNameEG = OptionManager->GetReactionFile();
+   pEventGenerator = new TAsciiFile();
+   pEventGenerator->SetNameTitle("EventGenerator", fileNameEG.Data());
+   pEventGenerator->Append(fileNameEG.Data());
+
+   // Detector configuration 
+   // Get file name from NPOptionManager
+   TString fileNameDC = OptionManager->GetDetectorFile();
    pDetectorConfiguration = new TAsciiFile();
-   pCalibrationFile       = new TAsciiFile();
-   pRunToTreatFile        = new TAsciiFile();
+   pDetectorConfiguration->SetNameTitle("DetectorConfiguration", fileNameDC.Data());
+   pDetectorConfiguration->Append(fileNameDC.Data());
+
+   // Run to treat file
+   // Get file name from NPOptionManager
+   TString fileNameRT = OptionManager->GetRunToReadFile();
+   pRunToTreatFile = new TAsciiFile();
+   if (fileNameRT != OptionManager->GetDefaultRunToReadFile()) {
+      pRunToTreatFile->SetNameTitle("RunToTreat", fileNameRT.Data());
+      pRunToTreatFile->Append(fileNameRT.Data());
+   }
+
+   // Calibration files
+   pCalibrationFile = new TAsciiFile();
 }
 
 
diff --git a/NPLib/IORoot/RootOutput.h b/NPLib/IORoot/RootOutput.h
index 8765d8ffe..630f30811 100644
--- a/NPLib/IORoot/RootOutput.h
+++ b/NPLib/IORoot/RootOutput.h
@@ -9,12 +9,13 @@
  * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
  *                                                                           *
  * Creation Date  : 21/07/09                                                 *
- * Last update    :                                                          *
+ * Last update    : 03/02/11                                                 *
  *---------------------------------------------------------------------------*
  * Decription: This class is a singleton class which deals with the ROOT     *
  *             output file and tree both for NPSimulation and NPAnalysis.    *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
+ *   + 03/02/11: Add support for TAsciiFile objects (N. de Sereville)        *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
@@ -63,10 +64,13 @@ private:
    // The static instance of the RootOutput class:
    static RootOutput* instance;
 
+private:
+   void InitAsciiFiles();
+
 public:
-   TFile*	GetFile() {return pRootFile;};
-   TTree*	GetTree() {return pRootTree;};
-   TList*	GetList() {return pRootList;};
+   TFile*	   GetFile()                           {return pRootFile;}
+   TTree*	   GetTree()                           {return pRootTree;}
+   TList*	   GetList()                           {return pRootList;}
    TAsciiFile* GetAsciiFileEventGenerator()        {return pEventGenerator;}
    TAsciiFile* GetAsciiFileDetectorConfiguration() {return pDetectorConfiguration;}
    TAsciiFile* GetAsciiFileCalibration()           {return pCalibrationFile;}
diff --git a/NPLib/Tools/NPOptionManager.cxx b/NPLib/Tools/NPOptionManager.cxx
index 982f267c4..51ff1e822 100644
--- a/NPLib/Tools/NPOptionManager.cxx
+++ b/NPLib/Tools/NPOptionManager.cxx
@@ -40,11 +40,17 @@ NPOptionManager* NPOptionManager::getInstance(int argc, char** argv)
 NPOptionManager::NPOptionManager(int argc, char** argv)
 {
    // Default Setting
-   fReactionFileName    = "myReaction.reaction"  ;
-   fDetectorFileName    = "myDetector.detector"  ;
-   fOutputFileName      = "myResult"             ;
-   fRunToReadFileName   = "RunToRead.txt"        ;
-   fCalibrationFileName = "Calibration.txt"      ;
+   fDefaultReactionFileName    = "defaultReaction.reaction";
+   fDefaultDetectorFileName    = "defaultDetector.detector";
+   fDefaultOutputFileName      = "myResult.root";
+   fDefaultRunToReadFileName   = "defaultRunToTreat.txt";
+   fDefaultCalibrationFileName = "Calibration.txt";
+   // Assigned values
+   fReactionFileName           = fDefaultReactionFileName;
+   fDetectorFileName           = fDefaultDetectorFileName;
+   fOutputFileName             = fDefaultOutputFileName;
+   fRunToReadFileName          = fDefaultRunToReadFileName;
+   fCalibrationFileName        = fDefaultCalibrationFileName;
    fDisableAllBranchOption = false;
 
    for (int i = 0; i < argc; i++) {
diff --git a/NPLib/Tools/NPOptionManager.h b/NPLib/Tools/NPOptionManager.h
index b8ee494a8..3265ffb8a 100644
--- a/NPLib/Tools/NPOptionManager.h
+++ b/NPLib/Tools/NPOptionManager.h
@@ -65,14 +65,28 @@ class NPOptionManager
       void CheckDetectorConfiguration();
 
    public:
-      string GetReactionFilePath()        {return fReactionFileName;}
-      string GetDetectorFilePath()        {return fDetectorFileName;}
-      string GetRunToReadFilePath()       {return fRunToReadFileName;}
-      string GetCalibrationFilePath()     {return fCalibrationFileName;}
-      string GetOutputFilePath()          {return fOutputFileName;}
+      // default values
+      string GetDefaultReactionFile()     {return fDefaultReactionFileName;}
+      string GetDefaultDetectorFile()     {return fDefaultDetectorFileName;}
+      string GetDefaultRunToReadFile()    {return fDefaultRunToReadFileName;}
+      string GetDefaultCalibrationFile()  {return fDefaultCalibrationFileName;}
+      string GetDefaultOutputFile()       {return fDefaultOutputFileName;}
+      // assigned values
+      string GetReactionFile()            {return fReactionFileName;}
+      string GetDetectorFile()            {return fDetectorFileName;}
+      string GetRunToReadFile()           {return fRunToReadFileName;}
+      string GetCalibrationFile()         {return fCalibrationFileName;}
+      string GetOutputFile()              {return fOutputFileName;}
       bool   GetDisableAllBranchOption()  {return fDisableAllBranchOption;}
 
    private:
+      // default values
+      string fDefaultReactionFileName;
+      string fDefaultDetectorFileName;
+      string fDefaultRunToReadFileName;
+      string fDefaultCalibrationFileName;
+      string fDefaultOutputFileName;
+      // assigned values
       string fReactionFileName;
       string fDetectorFileName;
       string fRunToReadFileName;
diff --git a/NPSimulation/Simulation.cc b/NPSimulation/Simulation.cc
index 955073b91..36079094b 100644
--- a/NPSimulation/Simulation.cc
+++ b/NPSimulation/Simulation.cc
@@ -29,8 +29,8 @@ int main(int argc, char** argv)
 {
    // Initialize NPOptionManager object
    NPOptionManager* OptionManager  = NPOptionManager::getInstance(argc, argv);
-   G4String EventGeneratorFileName = OptionManager->GetReactionFilePath();
-   G4String DetectorFileName       = OptionManager->GetDetectorFilePath();
+   G4String EventGeneratorFileName = OptionManager->GetReactionFile();
+   G4String DetectorFileName       = OptionManager->GetDetectorFile();
 
    // my Verbose output class
    G4VSteppingVerbose::SetInstance(new SteppingVerbose);
@@ -53,21 +53,7 @@ int main(int argc, char** argv)
    ///////////////////////////////////////////////////////////////
    ///////////////// Initializing the Root Output ////////////////
    ///////////////////////////////////////////////////////////////
-   RootOutput::getInstance("Simulation/" + OptionManager->GetOutputFilePath());
-   // store configuration files
-   G4String GlobalPath = getenv("NPTOOL");
-   // event generator file
-   G4String PathEG = GlobalPath + "/Inputs/EventGenerator/";
-   G4String EGFileName = PathEG + EventGeneratorFileName;
-   TAsciiFile *asciiFileEG = RootOutput::getInstance()->GetAsciiFileEventGenerator();
-   asciiFileEG->SetNameTitle("EventGenerator", "EventGenerator input file");
-   asciiFileEG->Append(EGFileName);
-   // detector configuration file
-   G4String PathDC = GlobalPath + "/Inputs/DetectorConfiguration/";
-   G4String DCFileName = PathDC + DetectorFileName;
-   TAsciiFile *asciiFileDC = RootOutput::getInstance()->GetAsciiFileDetectorConfiguration();
-   asciiFileDC->SetNameTitle("DetectorConfiguration", "DetectorConfiguration input file");
-   asciiFileDC->Append(DCFileName);
+   RootOutput::getInstance("Simulation/" + OptionManager->GetOutputFile());
 
    ///////////////////////////////////////////////////////////////
    ////////////// Reading Detector Configuration /////////////////
-- 
GitLab