対話型マクロ作成のための小技

bin関係

現在表示しているヒストグラムのポインタを取得する

TH1* h1 = (TH1*)gPad->GetListOfPrimitives()->At(1);

現在開いているファイルの一覧を取得する

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風のコマンドを使う

なにかに使えるかもしれない

うるせえ! そんな情報いちいち表示すんな! というとき

Info in <TCanvas::Print>: pdf file c1.pdf has been created などを表示しない方法

Fit関係


最終更新 : 令和 5年 12月 7日 (木) 21:25:49