Locked History Actions

Diff for "ANAROOT/Manual/HowTo"

Differences between revisions 17 and 18
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
使い方についてざっくばらんに About How to do something.
Line 11: Line 11:
root[i] .x hoge.C // マクロを実行
root[i] .q // rootを終了
root[i] .x hoge.C // execute macro
root[i] .q // finish root
Line 37: Line 37:
root[i] push("ridf/run0002.ridf") // いつでもpushできる root[i] push("ridf/run0002.ridf") // you can push at anytime
Line 40: Line 40:
root[i] pop(2) // 二個目に解析を待っているridfを削除
root[i] next() // 次のridfファイルの解析に移る
root[i] pop(2) // delete 2nd ridf file waiting analyzed
root[i] next() // go to next ridf file at once
Line 52: Line 52:
root[i] stop() // stopしないと刻一刻とevent数が増えていくのでわけがわからなくなる root[i] stop() // you have to stop because event number will increase every moment
Line 65: Line 65:
もしzone()しているのなら、 if you are dividing canvas、
Line 68: Line 68:
root[i] hht(2, "same") // hhなんたらは次のpadに進まずに描画 root[i] hht(2, "same") // hh something means draw histogram without going to next pad
Line 107: Line 107:
==== macro内でanaloopをまわして解析 ==== ==== analysis in macro ====
Line 111: Line 111:
    oss << "nebula" << std::setw(4) << std::setfill('0') << i; nebula0002とか     oss << "nebula" << std::setw(4) << std::setfill('0') << i; like nebula0002
Line 114: Line 114:
    push(("ridf/nebula/"+name+".ridf").c_str(),1000); //1000events     push(("ridf/nebula/"+name+".ridf").c_str(),1000); // 1000events
Line 116: Line 116:
    join(); // これで処理が終わるのをまつ     join(); // wait analysis finish

About How to do something.

login to anaroot

$ anarootlogin username
$ root -l
root[i] .x hoge.C // execute macro
root[i] .q // finish root

analysis ridf

using anafile.

root[i] book(new TAlNEBULAExample, "ana/example.ana")
root[i] push("ridf/run0001.ridf")
root[i] start()
...

not using anafile

root[i] book(new TAlSAMURAIExample)
root[i] push("ridf/run0001.ridf")
root[i] start()
...

analysis several ridf files

root[i] book(new TAlNEBULAExample, "ana/example.ana")
root[i] push("ridf/run0001.ridf")
root[i] start()
root[i] push("ridf/run0002.ridf") // you can push at anytime
root[i] push("ridf/run0003.ridf")
root[i] status()
root[i] pop(2) // delete 2nd ridf file waiting analyzed
root[i] next() // go to next ridf file at once

draw id i to j

root[i] zone(2,3)
root[i] ht(1,6)

count events

root[i] stop() // you have to stop because event number will increase every moment
root[i] ls()
root[i] ht(5)
root[i] xsta() // for 1D
root[i] xysta() // for 2D
root[i] start() // resume

Draw same

root[i] ht(1)
root[i] ht(2, "same")

if you are dividing canvas、

root[i] ht(1)
root[i] hht(2, "same") // hh something means draw histogram without going to next pad

save/read hist

...
root[i] hstore("hist.root") // save
root[i] fetch("hist.root") // read

access to current hist

gH1 is pointer of current hist

root[i] gH1->GetName()
root[i] gH1->Draw("COLZ")

access to hist by ID

root[i] gethist(i)->GetName()
root[i] gethist(i)->Draw("same")

fit 2D hist by polynomial

root[i] ht(2)
root[i] pfx()
root[i] fitp(1) //linear

get fit result

root[i] ht(3)
root[i] TFitResultPtr frp = fitp(1)
root[i] std::cout << frp->Parameter(0) << " " << frp->ParError(0) << std::endl;
root[i] std::cout << frp->Parameter(1) << " " << frp->ParError(1) << std::endl;
root[i] std::cout << frp->Parameter(2) << " " << frp->ParError(2) << std::endl;

analysis in macro

  for(int i=0; i<10; ++i){
    std::ostringstream oss;
    oss << "nebula" << std::setw(4) << std::setfill('0') << i; like nebula0002
    std::string name = oss.str();
    clear();book(new TAlNEBULAExample, "ana/hoge.ana");
    push(("ridf/nebula/"+name+".ridf").c_str(),1000); // 1000events
    start();
    join(); // wait analysis finish
    hstore(("root/"+name+".root").c_str());
  }