Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ROOT / CERN ROOT book.pdf
Скачиваний:
1
Добавлен:
14.12.2025
Размер:
433.58 Кб
Скачать

20

Глава 5. Анализ данных и фитирование

5.2.2Фитирование пользовательской функцией

1// Определение функции сигнал + фон

2TF1* signal_bg = new TF1("signal_bg",

3"[0]*exp(-0.5*((x-[1])/[2])^2) + [3] + [4]*x", -5, 5);

4

5// Установка начальных значений параметров

6signal_bg->SetParameters(1000, 0, 1, 100, 0);

7

8// Установка имён параметров

9signal_bg->SetParNames("Amplitude", "Mean", "Sigma", "BG_const", "BG_slope");

10

11// Установка ограничений на параметры

12signal_bg->SetParLimits(0, 0, 10000); // Амплитуда > 0

13 signal_bg->SetParLimits(2, 0.1, 5);

// Разумная ширина

14

15// Фитирование

16h->Fit(signal_bg);

17

18// Анализ качества фита

19double chi2 = signal_bg->GetChisquare();

20int ndf = signal_bg->GetNDF();

21double prob = signal_bg->GetProb();

22

23cout << "Chi2/NDF = " << chi2/ndf << endl;

24cout << "Probability = " << prob << endl;

5.3Фитирование графиков

5.3.1Линейная регрессия

1 // Создание данных с линейной зависимостью

2const int n = 20;

3double x[n], y[n], ex[n], ey[n];

4

5 for(int i = 0; i < n; i++) {

6x[i] = i;

7 y[i] = 2.5 * x[i] + 3.0 + gRandom->Gaus(0, 1);

8ex[i] = 0;

9ey[i] = 1.0;

10 }

11

12 TGraphErrors* gr = new TGraphErrors(n, x, y, ex, ey);

13

14// Линейное фитирование

15TF1* line = new TF1("line", "[0] + [1]*x", 0, 20);

16gr->Fit(line);

17

18// Получение результатов

19double intercept = line->GetParameter(0);

Соседние файлы в папке ROOT