//////////////////////////////////// // KRATTA progress bar // for the Asy-Eos experiment // TKratProgressBar DEFINITION // Apr 2013 // revison 04/2013 // E.d.F ver 1.0 // sebastian.kupny@uj.edu.pl // Description: // // Changes: //////////////////////////////////// #include "TKratProgressBar.h" using std::cout; using std::endl; //______________________________________________________________________ TKratProgressBar::TKratProgressBar (int max, int len) : fLen(len), fMax(max), fMeter(new char[len+1]), fUpdateFrequency(10000) { Reset( max ); } //______________________________________________________________________ void TKratProgressBar::Reset (int max ) { fMax = max; memset (fMeter, ' ', fLen); fMeter[fLen] = 0; time(&fStart); } //______________________________________________________________________ bool TKratProgressBar::UpdateAndWrite(int iev){ iev++; if (iev % fUpdateFrequency == 0 || iev== fMax){ int proc = iev*100/fMax; double elapsed = difftime(time(0), fStart); time_t estimated = elapsed/iev*fMax - elapsed; struct tm * T = gmtime(&estimated); memset( fMeter,'#',proc*fLen/100); std::cout << "\rProgress: " << iev << "/" << fMax << " (" << proc << " %)" << " in " <tm_hour << ":" << std::setfill ('0') << std::setw (2) << T->tm_min << ":" << std::setfill ('0') << std::setw (2) << T->tm_sec << " " << " [" << fMeter << "]" << std::flush; if(iev==fMax){ std::cout << "\rCompleted"<< std::endl; return false; } } return true; } ClassImp( TKratProgressBar )