Locked History Actions

PAW_fit

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 ファイルを読み込み、ヒストグラムのフィット情報を得る

    • hgfit_test.png

    • 上図のようなヒストグラム(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 = フィットしたデータ点の数 - フィットパラメータの数)
        • $$\chi^2(\alpha)=\sum_{i=1}^{n}\frac{(f(x_i,\alpha)-e_i)^2}{\sigma_i^2}$$

          • $$\chi^2$$ : カイ二乗

          • $$\alpha$$ : フィットのパラメータ

          • $$f(x_i,\alpha)$$ : フィットする関数

          • $$e_i$$ : フィットしたいデータ

          • $$\sigma_i$$ : フィットしたいデータのエラー

      • メモ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' は複素数型か?)