-
Administrator authoredAdministrator authored
LKFMinuit.h 1.33 KiB
/* Copyright (C) 2015-2020 PI-UHd, GSI
SPDX-License-Identifier: GPL-3.0-only
Authors: Norbert Herrmann [committer], Florian Uhlig, Pierre-Alain Loizeau */
#ifndef LKFMinuit_h
#define LKFMinuit_h
#include "TFitter.h"
#include "TMath.h"
#include "TMinuit.h"
#include "TRandom.h"
#include <TGraph2D.h>
#include <TGraph2DErrors.h>
#include <TMath.h>
#include <TPolyLine3D.h>
#include <iostream>
#include <Math/Vector3D.h>
class TFitter;
class LKFMinuit {
public: // oeffentlich
inline static LKFMinuit* Instance() { return fInstance; }
LKFMinuit(); // der Default-Konstruktor
int DoFit(TGraph2DErrors* gr, double pStart[]);
int Initialize();
double SumDistance2(double par[]);
double distance2(double x, double y, double z, double* p);
double distance2err(double x, double y, double z, double ex, double ey, double ez, double* p);
void line(double t, double* p, double& x, double& y, double& z);
inline double* GetParFit() { return fparFit; }
inline double GetChi2() { return fChi2; }
inline double GetChi2DoF() { return fChi2DoF; }
private:
static LKFMinuit* fInstance;
static TGraph2DErrors* fgr;
static TFitter* fMyFit;
double fparFit[4];
double fChi2;
double fChi2DoF;
double myFunction(double);
static void minuitFunction(int& nDim, double* gout, double& result, double par[], int flg);
};
#endif