diff --git a/NPAnalysis/must2/RunToTreat.txt b/NPAnalysis/must2/RunToTreat.txt index 62920d22a796d2d7cde2032d6ae40875b4fc7366..28febc902cda5cc9564bfa3cbf50f3590b97aa2d 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 61f5f295092cf09867642c5e7862663768cbf780..5b3fbe1e06bca84e28d934241eb5c294154dcc30 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 c5d76d097b9cf673fd52f169a1c16f7c88922ebb..4bda2c705cfd22dcde42c0caf1a40db9176d3697 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 2dba73969e9cf07355c6a69c7cf1ec5e80139edc..32a145fccda60abe61a5a6d4154dcf3b8f849a57 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 8765d8ffefa038a4288ac190c80adbec14e6bfed..630f30811e05edfb8b3864714b6d1661d2a861d4 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 982f267c4a820b54f9931b64c99ca5cf38499fc6..51ff1e822ad20bcaf57ca24bfcc8921de362c9b6 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 b8ee494a8790c88cbafbac7b0311a703fca417cf..3265ffb8a7360da4900511e91d52d959ab21f9db 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 955073b91dbe5335f1c2e4b86b3a1f9fe6a4baea..36079094b8fdb27fd6a13d8492a34292303346d9 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 /////////////////