この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン | |||
ja:root:wantto4 [2018/07/27 00:51] kota |
ja:root:wantto4 [2018/07/27 00:57] (現在) kota |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ===== Progress Bar を表示させたい ===== | + | ===== イベントループの進行状況を表示させたい ===== |
- | Tree から1イベントずつ取ってきて処理するような解析をよくやるが、その時にprogress bar を表示させたい。 | + | Tree から1イベントずつ取ってきて処理するような解析をよくやるが、その時にイベントループの進行状況を表示させたい。 |
<code c> | <code c> | ||
const Long64_t nentry = tree->GetEntries(); // Loopさせるイベント数を取得 | const Long64_t nentry = tree->GetEntries(); // Loopさせるイベント数を取得 | ||
- | const Long64_t n_100 = nentry/100; // イベント数÷100 を定義しておく | + | const Long64_t n_100 = nentry/100; // イベント数÷100 を定義しておく |
cout << "# events : " << nentry << endl; | cout << "# events : " << nentry << endl; | ||
for( Long64_t ientry = 0 ; ientry < nentry ; ++ientry ){ | for( Long64_t ientry = 0 ; ientry < nentry ; ++ientry ){ | ||
- | + | if( nentry>100 ){ | |
- | if((ientry % n_100 == 0) && (ientry != 0)){ | + | if( (ientry%n_100==0) && (ientry!=0) ){ |
- | if( ientry % (n_100 * 10) == 0 ) | + | if( ientry % (n_100 * 10) == 0 ) |
- | std::cerr << (ientry / n_100) << "% processed. " << std::endl; // 10%毎に表示、改行。 | + | std::cerr << (ientry / n_100) << "% processed. " << std::endl; // 10%毎に表示、改行。 |
- | else if( ientry / n_100 < 10 ) | + | else if( ientry / n_100 < 10 ) |
- | std::cerr << " " << (ientry / n_100) << "% " << std::flush; // 1%毎に表示。改行なし。1桁数(1〜9)の前に空白。 | + | std::cerr << " " << (ientry / n_100) << "% " << std::flush; // 1%毎に表示。改行なし。1桁数(1〜9)の前に空白。 |
- | else | + | else |
- | std::cerr << (ientry / n_100) << "% " << std::flush; // 1%毎に表示。改行なし。 | + | std::cerr << (ientry / n_100) << "% " << std::flush; // 1%毎に表示。改行なし。 |
+ | } | ||
} | } | ||
- | + | tree->GetEntry(ientry); | |
... | ... | ||
</code> | </code> | ||
coutじゃなくてcerrを使うと良いとかどうとか。。。 | coutじゃなくてcerrを使うと良いとかどうとか。。。 |