絶望2


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

現在の最新版ver1.3.8(本家)
detuned version(本家からいくつか機能を取り除いて安全性を重視したもの)

使い方

適当なディレクトリで解凍。
ROOTを起動したら
.L xxx/yyy/zzz/zetsubou.C+ (zetsubou.C のある場所を指定)
"+"をつけるとROOT様が正しくコンパイルして下さる。("++"としてもよい。)
zetsubou_C.soという共有ライブラリが作られる。
ただしROOTのバージョンが古いと失敗するかも。
次回からは
gSystem -> Load("/xxx/yyy/zzz/zetsubou_C.so");
で使える。
毎回このコマンドを打つのがメンドイ人。rootlogon.Cというファイルを作って作業ディレクトリにいれときましょう。中身の書き方は現物(下にアップロード)を見て。
○オブジェクトを宣言
zetsubouクラスのオブジェクトを好きなように宣言。ここではA2の習慣で"as"を使ってるが、別に"z"でも"he"でもよい。
zetsubou as
こうするとオブジェクト"as"にzetsubouクラスの内容が反映され、"as.DrawHist(..."のようにして定義された関数が使用可能になる。

○一次元ヒストの書き方
例:as.DrawHist("run0200.dat","run0200","E","h3",100,3000,4000)
左から読むファイル名。つけたいタイトル。EかdEどちらのブランチか選択。ヒストのオブジェクト名、h0,h1,・・・,h10と名づけるとキャンバスの名前も対応してc0,c1・・・となっていく。ビンの数。min。max。

h3->なんたらかんたら
でヒストを操れる。

範囲選択: as.DrawHist("run0200.dat","run0200","dE","h0",100,0,1000,100,3000)
対応するブランチの範囲を後ろにつけたす。
ver1.3よりタイトル省略可。この場合タイトルは自動で"run0200"とかになる。
ver1.3.2より斜め切り機能追加
as.HistCut(X1,Y1,X2,Y2,X3,Y3,X4,Y4);
をヒストを書いた後に実行すると任意の四角で切れる。左下、右下、右上、左上の順に頂点の座標を指定。

キャンバス名が"c1"なら
c1->SaveAs("*****.ps")でスクリーンショット作成可。jpg等も作成可。

○散布図 + E、dEの全体ヒスト
as.DrawScat("run0200.dat","run0200 ","s1")

"s1"のところは散布図のオブジェクト名。これも好きなように名づけて。
さらに範囲をしぼったものを右下に表示
as.DrawScat("run0200.dat","run0200 ","s1",100,2000,100,1000)
ver1.3よりタイトル省略可。
○フィット
シングルガウシアン手抜き:as.gfit(xmin,xmax)
シングルガウシアン:as.gfit(xmin,xmax,height,mean,sigma)
等など。
フィットすると画面にevent数が表示。これはビン幅に依らない仕様。
他χ2乗、NDF、meanなぞも表示。
「ランダウ分布とガウシアンのたたみ込み積分したものでフィット」機能も一応ついてるが初期値の見当のつけかたがさっぱり。
as.lgfit(xmin,xmax,width,MP,area,gsigma)

○TTreeを使いたい
TTree *tr=as.GetTree() ("tr"のところは好きなもので)
これでtr->(種々のコマンド)使用可 今回は初めにTreeを作ってからヒストを書く仕様なので。

tr->Print() :今treeに入ってるデータのサイズ表示
tr->Scan() :生データ表示

ヒストをひとつ書けば、それに対応したtreeが出来上がってる。ヒストを書かずにtreeを使いたい場合

as.MakeTree("run0200.dat")
TTree *tr=as.GetTree()
で作成可。
○設定変更

基本zetsubou.Cのコンストラクタ部分(19行目から始まる関数)を変えればOK
キャンバスの大きさ。
Hist_canvas_width,Hist_canvas_length,Scat_canvas_width,Scat_canvas_lengthの値を変える
フィットの線の色
fitlinecolor

○Tspfit
TSpectrumクラスを利用した自動フィット。
まずフィットしたいピークがあるヒストを書く。この段階で割と範囲をしぼっとくのが大事。
次に
as.Tspfit(範囲min,範囲max)
で、フィットしたい範囲を指定。最大で3つまで勝手にピークをみつけてガウシアンでフィットする。
◆うまくいかない場合。
  • ヒストの範囲を変える
  • as.Tspfit(範囲min,範囲max,threshold)でthresholdの値を変える。デフォルト値が0.1で0〜1の範囲で変えられる。threshold*highest_peak以下のピークはフィットされない。
  • as.Tspfit(範囲min,範囲max,threshold,resolution)でresolutionの値を変える。デフォルト値1。
  • あきらめてgfitでフィット

○上にテキスト追加(ver1.3.4)(本家のみ)
as.Text("*****")で画面上部にテキスト追加。
一次元ヒストにのみ対応