From 429a15302c6d27d855bac2754e420b8b16764618 Mon Sep 17 00:00:00 2001 From: adrien-matta <a.matta@surrey.ac.uk> Date: Thu, 9 Apr 2015 10:22:48 +0100 Subject: [PATCH] * Fixing bug in progress display * make the programm sleep a milli second after the thread started --- NPLib/Core/NPDetectorManager.cxx | 8 +++--- NPLib/Core/RootInput.cxx | 46 ++++++++++++-------------------- NPLib/Utility/npanalysis.cxx | 20 +++++++------- 3 files changed, 30 insertions(+), 44 deletions(-) diff --git a/NPLib/Core/NPDetectorManager.cxx b/NPLib/Core/NPDetectorManager.cxx index 2cde4fda5..722894c8a 100644 --- a/NPLib/Core/NPDetectorManager.cxx +++ b/NPLib/Core/NPDetectorManager.cxx @@ -68,20 +68,17 @@ void NPA::DetectorManager::ReadConfigurationFile(string Path) { // All The detector will then add to it their parameter (see AddDetector) CalibrationManager::getInstance(NPOptionManager::getInstance()->GetCalibrationFile()); - // Access the DetectorFactory and ask it to load the Class List string classlist = getenv("NPTOOL"); classlist += "/NPLib/DetectorClassList.txt"; NPA::DetectorFactory* theFactory = NPA::DetectorFactory::getInstance(); theFactory->ReadClassList(classlist); - ifstream ConfigFile; ConfigFile.open(Path.c_str()); string LineBuffer; set<string> check; - if (ConfigFile.is_open()) { cout << endl << "/////////// Detector geometry ///////////" << endl; cout << "Configuration file " << Path << " loading " << endl; @@ -290,8 +287,9 @@ void NPA::DetectorManager::InitThreadPool(){ th.detach(); } - cout << "\033[1;33m Detector Manager : Started " << i << " Threads \033[0m" << endl ; - + cout << "\033[1;33m**** Detector Manager : Started " << i << " Threads ****\033[0m" << endl ; + // Sleep to let the time to the thread to start + this_thread::sleep_for (std::chrono::milliseconds(1)); } //////////////////////////////////////////////////////////////////////////////// diff --git a/NPLib/Core/RootInput.cxx b/NPLib/Core/RootInput.cxx index b754c4b56..44bae05e4 100644 --- a/NPLib/Core/RootInput.cxx +++ b/NPLib/Core/RootInput.cxx @@ -31,9 +31,8 @@ #include "TAsciiFile.h" RootInput* RootInput::instance = 0; - -RootInput* RootInput::getInstance(string configFileName) -{ +//////////////////////////////////////////////////////////////////////////////// +RootInput* RootInput::getInstance(string configFileName){ // A new instance of RootInput is created if it does not exist: if (instance == 0) { instance = new RootInput(configFileName); @@ -43,21 +42,16 @@ RootInput* RootInput::getInstance(string configFileName) return instance; } - - -void RootInput::Destroy() -{ +//////////////////////////////////////////////////////////////////////////////// +void RootInput::Destroy(){ if (instance != 0) { delete instance; instance = 0; } } - - -// fileNameBase doit etre le nom du TChain. -RootInput::RootInput(string configFileName) -{ +//////////////////////////////////////////////////////////////////////////////// +RootInput::RootInput(string configFileName){ NumberOfFriend = 0; bool CheckTreeName = false; bool CheckRootFileName = false; @@ -77,8 +71,8 @@ RootInput::RootInput(string configFileName) cout << "Initializing input TChain" << endl; if (!inputConfigFile) { - cout << "Run to Read file :" << configFileName << " not found " << endl; - return; + cout << "\033[1;31mError : Run to Read file :" << configFileName << " not found\033[0m" << endl; + exit(1); } else { while (!inputConfigFile.eof()) { @@ -143,12 +137,11 @@ RootInput::RootInput(string configFileName) if (!CheckRootFileName || !CheckTreeName) cout << "\033[1;33mWARNING: Token not found for InputTree Declaration : Input Tree may not be instantiate properly\033[0m" << endl; -} - +} -void RootInput::AddFriendChain(string RunToAdd) -{ +//////////////////////////////////////////////////////////////////////////////// +void RootInput::AddFriendChain(string RunToAdd){ NumberOfFriend++; ostringstream suffix_buffer; suffix_buffer << "_" << NumberOfFriend ; @@ -217,10 +210,8 @@ void RootInput::AddFriendChain(string RunToAdd) cout << "/////////////////////////////////" << endl; } - - -string RootInput::DumpAsciiFile(const char* type, const char* folder) -{ +//////////////////////////////////////////////////////////////////////////////// +string RootInput::DumpAsciiFile(const char* type, const char* folder){ string name; string sfolder = folder; @@ -283,10 +274,8 @@ string RootInput::DumpAsciiFile(const char* type, const char* folder) return name; } - - -RootInput::~RootInput() -{ +//////////////////////////////////////////////////////////////////////////////// +RootInput::~RootInput(){ // delete default directory ./.tmp struct stat dirInfo; int res = stat("./.tmp", &dirInfo); @@ -298,9 +287,8 @@ RootInput::~RootInput() //delete pRootChain; } -///////////////////////////////////////////////////////////////////// -TChain* MakeFriendTrees(string RunToRead1,string RunToRead2) -{ +//////////////////////////////////////////////////////////////////////////////// +TChain* MakeFriendTrees(string RunToRead1,string RunToRead2){ RootInput:: getInstance(RunToRead1) ; RootInput:: getInstance()->AddFriendChain(RunToRead2); return RootInput:: getInstance()->GetChain(); diff --git a/NPLib/Utility/npanalysis.cxx b/NPLib/Utility/npanalysis.cxx index d21633f10..eb9d0f783 100644 --- a/NPLib/Utility/npanalysis.cxx +++ b/NPLib/Utility/npanalysis.cxx @@ -84,20 +84,19 @@ int main(int argc , char** argv){ unsigned int treated = 0; if(UserAnalysis==NULL){ for (unsigned int i = 0 ; i < nentries; i++) { - ProgressDisplay(begin,end,treated,inter,nentries); // Get the raw Data Chain -> GetEntry(i); // Build the current event myDetector->BuildPhysicalEvent(); // Fill the tree tree->Fill(); + ProgressDisplay(begin,end,treated,inter,nentries); } } else{ for (unsigned int i = 0 ; i < nentries; i++) { - ProgressDisplay(begin,end,treated,inter,nentries); - // Get the raw Data + // Get the raw Data Chain -> GetEntry(i); // Build the current event myDetector->BuildPhysicalEvent(); @@ -105,6 +104,7 @@ int main(int argc , char** argv){ UserAnalysis->TreatEvent(); // Fill the tree tree->Fill(); + ProgressDisplay(begin,end,treated,inter,nentries); } UserAnalysis->End(); } @@ -128,21 +128,21 @@ void ProgressDisplay(clock_t& begin, clock_t& end, unsigned int& treated,unsigne char* timer; if(remain>60) - asprintf(&timer,"%.dmin",(int)(remain/60.)); + asprintf(&timer,"%dmin",(int)(remain/60.)); else - asprintf(&timer,"%.ds",(int)(remain)); + asprintf(&timer,"%ds",(int)(remain)); - if(treated!=total){ - printf("\r "); + if(treated!=total) printf("\r \033[1;31m ******* Progress: %.1f%% | Rate: %.1fk evt/s | Remain: %s *******\033[0m", percent,event_rate/1000.,timer); - } + else printf("\r \033[1;32m ******* Progress: %.1f%% | Rate: %.1fk evt/s | Remain: %s *******\033[0m", percent,event_rate/1000.,timer); - + fflush(stdout); begin = clock() ; inter=0; } - treated++; + + treated++; inter++; } -- GitLab