1 | // This may look like C code, but it is really -*- C++ -*-
|
---|
2 | #ifndef MINUITADAPT_SEEN
|
---|
3 | #define MINUITADAPT_SEEN
|
---|
4 |
|
---|
5 | #include "machdefs.h"
|
---|
6 | #include "tvector.h"
|
---|
7 | #include "tmatrix.h"
|
---|
8 |
|
---|
9 | namespace SOPHYA {
|
---|
10 |
|
---|
11 | class MinuitAdapt {
|
---|
12 | public:
|
---|
13 | MinuitAdapt(void (*myfcn)(int_4 *,double *,double *,double *,int_4 *,double (*f)(double *))
|
---|
14 | ,double (*myfutils)(double *)=NULL);
|
---|
15 | virtual ~MinuitAdapt(void);
|
---|
16 |
|
---|
17 | void SetTitle(char* title);
|
---|
18 | void Clear(void);
|
---|
19 | void Return(void);
|
---|
20 |
|
---|
21 | void PrintLevel(int_4 n=1);
|
---|
22 | void SetWidthPage(int_4 n=120);
|
---|
23 | void SetWarnings(bool w=true);
|
---|
24 | void SetErrorDef(double err=1.);
|
---|
25 | void SetEpsMachine(double eps=1.e-13);
|
---|
26 | void SetStrategy(int_4 n=1);
|
---|
27 | void SetGradient(int_4 n=-1);
|
---|
28 | void SetRandom(int_4 seed);
|
---|
29 |
|
---|
30 | void DefineParameter(int_4 n,char* name,double init,double step
|
---|
31 | ,double vmin=0.,double vmax=0.);
|
---|
32 | void SetParameter(int_4 n,double val);
|
---|
33 | void SetLimits(int_4 n,double val1=0.,double val2=0.);
|
---|
34 | void SetFix(int_4 n);
|
---|
35 | void Release(int_4 n);
|
---|
36 | void Restore(bool only_last_fixed=false);
|
---|
37 |
|
---|
38 | void DoFit(char *method="MIGRAD",int_4 maxcall=9999999,double tol=0.1);
|
---|
39 | inline void Migrad(int_4 maxcall=9999999,double tol=0.1)
|
---|
40 | {DoFit("MIGRAD",maxcall,tol);}
|
---|
41 | inline void Minimize(int_4 maxcall=-1,double tol=0.1)
|
---|
42 | {DoFit("MINIMIZE",maxcall,tol);}
|
---|
43 | inline void Simplex(int_4 maxcall=9999999,double tol=0.1)
|
---|
44 | {DoFit("SIMPLEX",maxcall,tol);}
|
---|
45 | void Improve(int_4 maxcall=9999999);
|
---|
46 | void Hesse(int_4 maxcall=9999999);
|
---|
47 | void Minos(int_4 maxcall=9999999);
|
---|
48 | void Seek(int_4 maxcall=9999999,double stdev=3.);
|
---|
49 |
|
---|
50 | void Call(int_4 iflag);
|
---|
51 | void DrawContour(int_4 n1,int_4 n2,int_4 npts=25);
|
---|
52 | int_4 GetContour(int_4 n1,int_4 n2,int_4 npts
|
---|
53 | ,TVector<r_8>& xpt,TVector<r_8>& ypt);
|
---|
54 | void Scan(int_4 n,double from,double to,int_4 npts=25);
|
---|
55 |
|
---|
56 | void ShowParameter(void);
|
---|
57 | void ShowRandom(void);
|
---|
58 | void ShowFcnValue(void);
|
---|
59 | void ShowCovariance(void);
|
---|
60 | void ShowCorrelations(void);
|
---|
61 | void ShowEigenValues(void);
|
---|
62 |
|
---|
63 | inline int_4 NPar(void) {return mNPar;}
|
---|
64 | inline int_4 ErrFlag(void) {return iErFlg;}
|
---|
65 | void GetParameter(int_4 n,string& name,double& val,double& err
|
---|
66 | ,double& bound1,double& bound2,int_4& ivarbl);
|
---|
67 | void GetErrors(int_4 n,double& eplus,double& eminus
|
---|
68 | ,double& eparab,double& globcc);
|
---|
69 | TMatrix<r_8> GetErrorsMatrix(void);
|
---|
70 |
|
---|
71 | protected:
|
---|
72 | int_4 mNPar,iErFlg;
|
---|
73 | void (*fcn)(int_4 *,double *,double *,double *,int_4 *,double (*f)(double *));
|
---|
74 | double (*futils)(double *);
|
---|
75 | };
|
---|
76 |
|
---|
77 | } // Fin du namespace
|
---|
78 |
|
---|
79 | #endif
|
---|