対話型マクロ作成のための小技†
bin関係†
現在表示しているヒストグラムのポインタを取得する†
TH1* h1 = (TH1*)gPad->GetListOfPrimitives()->At(1);
- これで、登録されているヒストグラム名にかかわらずh1として扱える
現在開いているファイルの一覧を取得する†
gROOT->GetListOfFiles()->Capacity() // これで現在開いているファイルの個数がわかる
gROOT->GetListOfFiles()->At(0)->GetName() // 0番目のファイル名
gFile->GetName() // 現在選択されているファイル
現在開いているキャンバスの一覧を取得する†
gROOT->GetListOfCanvases()->Capacity() // これで現在開いているキャンバスの個数がわかる
gROOT->GetListOfCanvases()->At(0)->GetTitle() // 0番目のキャンバス名 (ウィンドウに表示されるタイトル)
gPad->GetCanvas()->GetTitle() // 現在選択されているキャンバス
((TCanvas*)gROOT->GetListOfCanvases()->At(1))->cd() // 1番目のキャンバスに移動
ヒストグラム名を使わずにDrawする方法†
ヒストグラム上でマウスの位置の座標を取得する†
gPad->GetEventX() // TCanvas上での現在マウスポインタがあるx座標(多分ピクセル単位)
gPad->GetEventY() // TCanvas上での現在マウスポインタがあるy座標(多分ピクセル単位)
gPad->AbsPixeltoX(gPad->GetEventX()) // ヒストグラム上の座標
- これらの単独利用は現実的ではない。で、「何かしらのイベントがあったときに実行する関数」を設定する
gPad->AddExec( "myexec" , "myexec()" );
void myexec(){
printf("%d %.1f %.1f \r",gPad->GetEvent(), gPad->AbsPixeltoX(gPad->GetEventX()), gPad->AbsPixeltoY(gPad->GetEventY()));
}
gPad->DeleteExec( "myexec");
現在設定中のx軸(SetRangeUserなどで設定した)の範囲を取得する†
hist->GetXaxis()->GetBinCenter(hist->GetXaxis()->GetFirst())
hist->GetXaxis()->GetBinCenter(hist->GetXaxis()->GetLast())
TPadに表示されているObjectの一覧を表示†
gPad->GetListOfPrimitives()->ls()
TCanvasの分割関係†
gDirectory, gPad, gROOT†
ANAPAW風のコマンドを使う†
- ROOTのコマンドは長ったらしくて打ち込むのがめんどくさい。
それに対し、ANAPAWは"ht"でヒストグラム表示、"hn"で次のヒストグラムを表示...などコマンドがシンプルで覚えやすい。
これをROOTで使えるように実装するマクロを開発中。-> こちら ANAPAW Commands for ROOT
なにかに使えるかもしれない†
うるせえ! そんな情報いちいち表示すんな! というとき†
Info in <TCanvas::Print>: pdf file c1.pdf has been created などを表示しない方法†
Fit関係†
- Fitオプションに Q を指定することで Quiet mode になる。(端末上にフィット結果を表示しなくなる)
- N を指定するとキャンバスにフィット結果の関数を描画しなくなる。