Parent Directory
|
Revision Log
import changes from math development branches for subdirectory math. List of changes in detail:
mathcore:
---------
MinimizerOptions:
new class for storing Minimizer option, with static default values that can be
changed by the user
FitConfig:
- use default values from MinimizerOption class
- rename method to create parameter settings from a function
FitUtil.cxx:
improve the derivative calculations used in the effective chi2 and in Fumili and
fix a bug for evaluation of likelihood or chi2 terms.
In EvaluatePdf() work and return the log of the pdf.
FitResult:
- improve the class by adding extra information like, num. of free parameters,
minimizer status, global correlation coefficients, information about fixed
and bound parameters.
- add method for getting fit confidence intervals
- improve print method
DataRange:
add method SetRange to distinguish from AddRange. SetRange deletes the existing
ranges.
ParamsSettings: make few methods const
FCN functions (Chi2FCN, LogLikelihoodFCN, etc..)
move some common methods and data members in base class (FitMethodFunction)
RootFinder: add template Solve() for any callable function.
mathmore:
--------
minimizer classes: fill status information
GSLNLSMinimizer: return error and covariance matrix
minuit2:
-------
Minuit2Minimizer: fill status information
DavidonErrorUpdator: check that delgam or gvg are not zero ( can happen when dg = 0)
FumiliFCNAdapter: work on the log of pdf
minuit:
-------
TLinearMinimizer: add support for robust fitting
TMinuitMinimizer: fill status information and fix a bug in filling the correlation matrix.
fumili:
------
add TFumiliMinimizer:
wrapper class for TFumili using Minimizer interface
// @(#)root/minuit2:$Id$
// Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005
/**********************************************************************
* *
* Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT *
* *
**********************************************************************/
#ifndef ROOT_Minuit2_MnApplication
#define ROOT_Minuit2_MnApplication
#include "Minuit2/MnUserParameterState.h"
#include "Minuit2/MnStrategy.h"
namespace ROOT {
namespace Minuit2 {
class FunctionMinimum;
class MinuitParameter;
class MnMachinePrecision;
class ModularFunctionMinimizer;
class FCNBase;
class FCNGradientBase;
//___________________________________________________________________________
/**
application interface class for minimizers (migrad, simplex, Minimize,
Scan)
User normally instantiates the derived class like ROOT::Minuit2::MnMigrad
for using Migrad for minimization
*/
class MnApplication {
public:
/// constructor from non-gradient functions
MnApplication(const FCNBase& fcn, const MnUserParameterState& state, const MnStrategy& stra, unsigned int nfcn = 0);
/// constructor from gradient function
MnApplication(const FCNGradientBase& fcn, const MnUserParameterState& state, const MnStrategy& stra, unsigned int nfcn = 0);
virtual ~MnApplication() { }
/**
Minimize the function
@param maxfcn : max number of function calls (if = 0) default is used which is set to
200 + 100 * npar + 5 * npar**2
@param tolerance : value used for terminating iteration procedure.
For example, MIGRAD will stop iterating when edm (expected distance from minimum) will be:
edm < tolerance * 10**-3
Default value of tolerance used is 0.1
*/
virtual FunctionMinimum operator()(unsigned int maxfcn = 0, double tolerance = 0.1);
virtual const ModularFunctionMinimizer& Minimizer() const = 0;
const MnMachinePrecision& Precision() const {return fState.Precision();}
const MnUserParameterState& State() const {return fState;}
const MnUserParameters& Parameters() const {return fState.Parameters();}
const MnUserCovariance& Covariance() const {return fState.Covariance();}
virtual const FCNBase& Fcnbase() const {return fFCN;}
const MnStrategy& Strategy() const {return fStrategy;}
unsigned int NumOfCalls() const {return fNumCall;}
protected:
const FCNBase& fFCN;
MnUserParameterState fState;
MnStrategy fStrategy;
unsigned int fNumCall;
bool fUseGrad;
public:
// facade: forward interface of MnUserParameters and MnUserTransformation
// via MnUserParameterState
//access to parameters (row-wise)
const std::vector<ROOT::Minuit2::MinuitParameter>& MinuitParameters() const;
//access to parameters and errors in column-wise representation
std::vector<double> Params() const;
std::vector<double> Errors() const;
//access to single Parameter
const MinuitParameter& Parameter(unsigned int i) const;
//add free Parameter
void Add(const char* Name, double val, double err);
//add limited Parameter
void Add(const char* Name, double val, double err, double , double);
//add const Parameter
void Add(const char*, double);
//interaction via external number of Parameter
void Fix(unsigned int);
void Release(unsigned int);
void SetValue(unsigned int, double);
void SetError(unsigned int, double);
void SetLimits(unsigned int, double, double);
void RemoveLimits(unsigned int);
double Value(unsigned int) const;
double Error(unsigned int) const;
//interaction via Name of Parameter
void Fix(const char*);
void Release(const char*);
void SetValue(const char*, double);
void SetError(const char*, double);
void SetLimits(const char*, double, double);
void RemoveLimits(const char*);
void SetPrecision(double);
double Value(const char*) const;
double Error(const char*) const;
//convert Name into external number of Parameter
unsigned int Index(const char*) const;
//convert external number into Name of Parameter
const char* Name(unsigned int) const;
// transformation internal <-> external
double Int2ext(unsigned int, double) const;
double Ext2int(unsigned int, double) const;
unsigned int IntOfExt(unsigned int) const;
unsigned int ExtOfInt(unsigned int) const;
unsigned int VariableParameters() const;
};
} // namespace Minuit2
} // namespace ROOT
#endif // ROOT_Minuit2_MnApplication
| Subversion Admin | ViewVC Help |
| Powered by ViewVC 1.0.9 |