HOMEROOT
解析する

●bin関係

h1->FindBin(x軸の数値) //あるxでのビン番号 h1->GetBinCenter(ビン番号) //ビン番号の中心値(x) h1->GetBinContent(ビン番号) //そのビンのEntry数(y) h1->GetNbinsX() //ビン番号の最大値(ビンの個数)

・bin番号は1から始まる。0はunderflow binで最大値+1はoverflow binらしい。
https://www-he.scphys.kyoto-u.ac.jp/member/shotakaha/dokuwiki/doku.php?id=toolbox:root:histograms:start


●統計ボックス

gStyle->SetOptStat("i"); //bin数(integralを表示) gStyle->SetOptFit(10001); //fit情報(だけ)を表示


●Friend Tree

Tree解析で、既存のツリーにブランチを追加する方法を調べていたら、 Freiend Treeを追加するという機能があるらしい。→ Ntuple [KamonoWiki]/AddFriend・treeに別のtreeのBranchを追加する
追加したFreiend Treeの確認方法は
tree->GetListOfFriends()->Print()


●fit関係

範囲を指定してfit (ガウス関数は初めから定義されている関数なので単にgausと書けばOK)
h1->Fit("gaus","","",940,980)

統計ボックスにフィット情報を表示
gStyle->SetOptStat(1000000000); //統計情報を表示しない(ボックスのみ表示)
gStyle->SetOptFit(0101);

(コマンドライン上で)フィッティングパラメータを表示
gaus->GetParameter(0) //Constant
gaus->GetParameter(1) //Mean
gaus->GetParameter(2) //Sigma

ガウス関数の積分値
gaus->GetParameter(0)*gaus->GetParameter(2)*TMath::Sqrt(2*TMath::Pi())

FitPanelを使った場合
PrevFitTMP->GetParameter(0)*PrevFitTMP->GetParameter(2)*TMath::Sqrt(2*TMath::Pi())

フィッティングパラメータをテキストファイルに書き込む
cout<<gaus->GetParameter(0)<<"\t"<<gaus->GetParameter(1)<<"\t"<<gaus->GetParameter(2)<<" coments\n"; >>temp.txt


60Co較正用簡易計算機
1173keV: 1332keV:
Gain(a): Offset(b):



●1次元ヒストグラム同士のちょっと複雑な演算

簡単な演算はこれ→ https://www-he.scphys.kyoto-u.ac.jp/member/n.kamo/wiki/doku.php?id=study:software:root:main#%E3%83%92%E3%82%B9%E3%83%88%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E6%BC%94%E7%AE%97

Tmode3->Draw("(kCrystal1E[39]+kCrystal0E[39])>>h2(5000,0,5000)","kCrystal1E[39]>100",""); Tmode3->Draw("kCrystal1E[39]>>h1(5000,0,5000)","kCrystal1E[39]>100","same"); TH1F *h10 = new TH1F("h10","h10",5000,0,5000); float w;for(int i=0;i<5000;i++){w=h2->GetBinContent(i)/h1->GetBinContent(i); if(h2->GetBinContent(i)>20&&h1->GetBinContent(i)>20){h10->Fill(i,w);}} h10->Draw();

●kromekのMCAで取ったKSpect形式のファイルをrootのヒストグラムにする

{ int initial=11;//はじめのチャンネルの行番号 int end =4106;//最後のチャンネルの行番号 TH1F *hist = new TH1F("h1","h1",(end-initial),0,(end-initial)); ifstream ifs("20190429_137Cs-NaI.spe");//読み込むkspectファイル string buf; int a,c; c=1; while ( !ifs.eof() ){ getline(ifs, buf); if(c>=initial && c<=end){ a=atoi(buf.c_str()); hist->Fill(c-initial,a); } c++; } hist->Draw(); }


最終更新 2019/12/11