| 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 | 
|---|