部門 > ROOT > フィッティング

「部門/ROOT/フィッティング」の編集履歴(バックアップ)一覧に戻る

部門/ROOT/フィッティング - (2011/12/21 (水) 21:31:45) のソース

*フィッティングした関数に名前をつける
#highlight(c++){{h101->Fit("gaus","","",700,1000);  
TF1 *f101a = h101->GetFunction("gaus"); }}
のようにしてもできるはずだけど、なんかよく分からない。
#highlight(C){{f101a = new TF1("f101a","gaus",700,1000);
h101->Fit("f101a","","",700,1000); }}
でやったら動いて、判読性も高いように思うのでこっちのがいいと思う。

*フィッティングしたあとにパラメターを取得する
#highlight(C){{Float_t p[10];}}
などと宣言しておいて、フィッティングした関数をfuncだとすると、
#highlight(C){{func->GetParameters(p);}}
とするとp[0],p[1],p[3],... にパラメターの値が格納される。
**フィッティングパラメターの誤差を取得する
色々とやり方はあると思うが、僕が成功したのは以下の方法。2番目のパラメター(つまりp1)の誤差を得たいとして、それをFloat_t errorとすると、
#highlight(C){{error=func->GetParError(1);}}
とする。たとえばこれでエネルギースペクトルをガウシアンでフィッティングしたときの誤差を取得し、それを[[TGraphErrors>http://www47.atwiki.jp/cscd/pages/122.html]]にプロットしてエネルギーキャリブレーションをしたりする。

*色んな関数でフィッティング
**ダブルガウシアン
http://www.slac.stanford.edu/BFROOT/www/Computing/Offline/ROOT/info/dG.C

*パラメーターの表示
TStyle::SetOptFitで変える。
http://root.cern.ch/root/html/TStyle.html#TStyle:SetOptFit
*参考リンク
-http://root.cern.ch/root/html/TH1.html#TH1:Fit
-[[ROOTでフィッティング - HongoWiki>http://www-utheal.phys.s.u-tokyo.ac.jp/~yuasa/wiki/index.php/ROOT%E3%81%A7%E3%83%95%E3%82%A3%E3%83%83%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0]]


#right(){(OK)}