/** \class ExRootProgressBar * * Class showing progress bar * * $Date: 2009-02-07 15:44:02 $ * $Revision: 1.3 $ * * * \author P. Demin - UCL, Louvain-la-Neuve * */ #include "ExRootProgressBar.h" #include "TSystem.h" #include #include using namespace std; ExRootProgressBar::ExRootProgressBar(Long64_t entries, Int_t width) : fEntries(entries), fWidth(width), fTime(0), fHashes(0), fBar(0) { fBar = new char[width + 1]; memset(fBar, '-', width); fBar[width] = 0; } //------------------------------------------------------------------------------ ExRootProgressBar::~ExRootProgressBar() { if(fBar) delete[] fBar; } //------------------------------------------------------------------------------ void ExRootProgressBar::Update(Long64_t entry) { ULong_t time = gSystem->Now(); if(time < fTime + 500 && entry < fEntries - 1) return; fTime = time; Int_t hashes = Int_t((entry + 1.0)/fEntries*fWidth); if(hashes > fHashes) { memset(fBar + fHashes, '$', hashes - fHashes); fHashes = hashes; } float frac=(entry + 1.0)/fEntries*100.0; if(frac<10) fprintf(stdout, "** [%s] %.2f%% processed **\r", fBar,(entry + 1.0)/fEntries*100.0); if(frac==100) fprintf(stdout, "** [%s] %.2f%% processed **\r", fBar,(entry + 1.0)/fEntries*100.0); else fprintf(stdout, "** [%s] %.2f%% processed **\r", fBar,(entry + 1.0)/fEntries*100.0); fflush(stdout); if(entry+1==fEntries) { char temp[500]; sprintf(temp, "** [%s] %.2f%% processed ", fBar,(entry + 1.0)/fEntries*100.0); string mystringName(temp); cout << mystringName <