ガウス関数でフィットしたい(TF1::Fit with "gaus")
1#include <TH1D.h>
2#include <TF1.h>
3#include <TRandom3.h>
4#include <TCanvas.h>
5
6// テスト用にガウス分布のヒストグラムを作成
7TH1D *h = new TH1D("h", "Gaussian Distribution", 100, 0, 100);
8
9TRandom3 random;
10for (int i = 0; i < 10000; i++) {
11 h->Fill(random.Gaus(50, 10));
12}
13
14// ガウス関数を定義してフィッティング
15TF1 *gaussian = new TF1("gaussian", "gaus", 20, 80);
16h->Fit(gaussian);
17
18TCanvas *c = new TCanvas("c", "canvas", 800, 600);
19h->Draw();
20gaussian->Draw("same");
ガウス関数"gaus"を使用してヒストグラムをフィットします。
"gaus"はROOTが提供する組み込み関数で、3つのパラメーター(正規化、平均値、標準偏差)を持ちます。
1from ROOT import TH1D, TF1, TRandom3, TCanvas
2
3# テスト用にガウス分布のヒストグラムを作成
4h = TH1D("h", "Gaussian Distribution", 100, 0, 100)
5
6random = TRandom3()
7for i in range(10000):
8 h.Fill(random.Gaus(50, 10))
9
10# ガウス関数を定義してフィッティング
11gaussian = TF1("gaussian", "gaus", 20, 80)
12h.Fit(gaussian)
13
14c = TCanvas("c", "canvas", 800, 600)
15h.Draw()
16gaussian.Draw("same")
ガウス関数
\[f(x) = N \cdot \exp\left( - \frac{ (x- \mu)^{2}}{ 2 \sigma^{2} } \right)\]
パラメーター
ガウス関数"gaus"は以下の3つのパラメーターで定義されます。
パラメーター |
インデックス |
説明 |
デフォルト値 |
|---|---|---|---|
\(N\) : 正規化係数(Normalization) |
[0] |
ガウス曲線の高さ |
ヒストグラムから自動設定 |
\(\mu\) : 平均値(Mean) |
[1] |
分布の中心 |
ヒストグラムから自動設定 |
\(\sigma\) : 標準偏差(Sigma) |
[2] |
分布の幅 |
ヒストグラムから自動設定 |
複数のガウス関数でフィットしたい
1#include <TH1D.h>
2#include <TF1.h>
3#include <TRandom3.h>
4
5// テスト用 : 2つのピークを持つヒストグラムを作成
6TH1D *h = new TH1D("h", "bimodal data", 100, -10, 10);
7
8TRandom3 random;
9for (int i = 0; i < 5000; i++) {
10 if (random.Uniform() < 0.5) {
11 h->Fill(random.Gaus(-3, 1));
12 } else {
13 h->Fill(random.Gaus(3, 1));
14 }
15}
16
17// 2つのガウス関数の和
18TF1 *f = new TF1("f", "gaus(0) + gaus(3)", -10, 10);
19
20// 各ガウス関数のパラメーターを初期化
21f->SetParameter(0, 250); // 第1ガウスの正規化
22f->SetParameter(1, -3); // 第1ガウスの平均値
23f->SetParameter(2, 1); // 第1ガウスの標準偏差
24
25f->SetParameter(3, 250); // 第2ガウスの正規化
26f->SetParameter(4, 3); // 第2ガウスの平均値
27f->SetParameter(5, 1); // 第2ガウスの標準偏差
28
29h->Fit(f);
30f->Draw();
複数のガウス関数を組み合わせることで、複雑な分布をフィットできます。
関連メソッド
TF1 - 関数を定義
TH1::Fit - ヒストグラムをフィット
GetParameter - パラメーター値を取得
SetParameter - パラメーター値を設定
FixParameter - パラメーターを固定