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