PAW fit
リンク
フィット結果取得
- パラメータの数として 0 を指定すると、初期値を設定せず、結果だけ vector に代入される。
vec/cre par(3) r hi/fit 101 g ! 0 par vec/pri par
Histogram からフィット情報を取得
HISTOGRAM/FITで histogram のフィットを行うと、フィット結果(パラメータ、エラー、χ2など)は COMMON メモリに格納されるとともに、histogram 自体にも保持される。COMMON メモリのフィット情報はフィット直後に参照しなければならないが、histogram に保持されるフィット情報は、HBOOK に保存しても保持される。このため、一度フィットした histogram を HBOOK ファイルに保存し、後からその HBOOK を読み込み、その histogram を表示すると、フィット結果も消えずに表示される。このフィット情報を PAW で取得するには、HBOOK のサブルーチン HGFIT を PAW の /FORTRAN/CALL コマンドで呼べば良い。ただし、フィットパラメータの名前は文字列であるため、/FORTRAN/CALL コマンドでは取得できない(PAW には文字列型の vector がないため、HGFIT の引数に文字列型配列を指定できない)。フィットパラメータの名前を取得するには /FORTRAN/COMIS 環境で文字列変数を用いて取得する。
例)HBOOK ファイルを読み込み、ヒストグラムのフィット情報を得る
上図のようなヒストグラム(ID = 101)が保存された HBOOK ファイル を読み込み、フィット情報を得るには、以下のようなマクロを書く。
hgfit_test.kumac [ download ]
macro hgfit_test * とりあえず今ある histogram をすべて削除 hi/del 0 * HBOOK ファイル (hgfit_test.hbk) の読み込み * ANAPAW ならば、cle f; fetch hgfit_test.hbk でもOK hi/file 3 ./hgfit_test.hbk hrin * f/clo 3 * とりあえず今ある vector をすべて削除 vec/del * * ヒストグラムID、フィットパラメータなどを格納するための vector をつくる vec/cre hid(1) 'i' vec/cre nfpar(1) 'i' vec/cre npfits(1) 'i' vec/cre fitchi(1) 'r' vec/cre fitpar(34) 'r' vec/cre fitsig(34) 'r' * hid にヒストグラムIDを代入 vec/input hid(1) 101 * nfpar, npfits などにフィット情報を代入 CALL HGFIT(hid,nfpar,npfits,fitchi,fitpar,fitsig,'dummy') * vector の中身を表示 vec/pri nfpar vec/pri npfits vec/pri fitchi vec/pri fitpar vec/pri fitsig return
- 実行結果
PAW > exe ./hgfit_test.kumac NFPAR(1) = 8 NPFITS(1) = 56 FITCHI(1) = 4.38659 FITPAR( 1) = 11.4847 FITPAR( 2) = -0.0043324 FITPAR( 3) = 2729.17 FITPAR( 4) = 1173.59 FITPAR( 5) = 37.4768 FITPAR( 6) = 2352.63 FITPAR( 7) = 1330.02 FITPAR( 8) = 37.3727 FITPAR( 9) ... FITPAR(34) = 0 FITSIG( 1) = 0.060541 FITSIG( 2) = 5.72484E-05 FITSIG( 3) = 26.6993 FITSIG( 4) = 0.343884 FITSIG( 5) = 0.374836 FITSIG( 6) = 22.0687 FITSIG( 7) = 0.347105 FITSIG( 8) = 0.330362 FITSIG( 9) ... FITSIG(34) = 0
- メモ1
- nfpar : フィットパラメータの数
- npfits : フィットしたデータ点の数
fitchi : reduced χ2 (=χ2 / ndf, カイ2乗を自由度で割ったもの)
- fitpar : フィットパラメータの値
- fitsig : フィットパラメータの値の標準偏差(エラー?)
- ndf : Number of Degree of Freedom (= npfits - nfpar = フィットしたデータ点の数 - フィットパラメータの数)
: カイ二乗
: フィットのパラメータ
: フィットする関数
: フィットしたいデータ
: フィットしたいデータのエラー
- メモ2
HBOOK のほとんどのサブルーチンは PAW から /FORTRAN/CALL コマンドで呼び出しが可能(/FORTRAN/CALLの"The following routines from the CERN Program Library can be called:"を参照。)
- PAW 上で HBOOK のサブルーチンを呼び出す場合、変数を引数にするには、vector の名前を指定すればよい。PAW 上(もっと詳しくいえば KUIP 上)では ()で要素を指定せずに vector 名だけを書くと vector のポインタ(参照?)を表すようだ。よって、vector が HBOOK のサブルーチンの引数となりうる。ただし、vector に文字列型はない為、文字列型を引数とするサブルーチンは使えない。COMIS 環境内ならば大丈夫。(vec/cre aa(1) 'c' は複素数型か?)