Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
GSLMinimizer.h
Go to the documentation of this file.
1// @(#)root/mathmore:$Id$
2// Author: L. Moneta Wed Oct 18 11:48:00 2006
3
4 /**********************************************************************
5 * *
6 * Copyright (c) 2006 LCG ROOT Math Team, CERN/PH-SFT *
7 * *
8 * This library is free software; you can redistribute it and/or *
9 * modify it under the terms of the GNU General Public License *
10 * as published by the Free Software Foundation; either version 2 *
11 * of the License, or (at your option) any later version. *
12 * *
13 * This library is distributed in the hope that it will be useful, *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
16 * General Public License for more details. *
17 * *
18 * You should have received a copy of the GNU General Public License *
19 * along with this library (see file COPYING); if not, write *
20 * to the Free Software Foundation, Inc., 59 Temple Place, Suite *
21 * 330, Boston, MA 02111-1307 USA, or contact the author. *
22 * *
23 **********************************************************************/
24
25
26// Header file for class GSLMinimizer
27
28#ifndef ROOT_Math_GSLMinimizer
29#define ROOT_Math_GSLMinimizer
30
31#include "Math/Minimizer.h"
32
33#include "Math/IFunctionfwd.h"
34
36
37#include "Math/BasicMinimizer.h"
38
39
40namespace ROOT {
41
42namespace Math {
43
44
45 /**
46 enumeration specifying the types of GSL minimizers
47 @ingroup MultiMin
48 */
55 };
56
57
58 class GSLMultiMinimizer;
59
60 class MinimTransformFunction;
61
62
63//_____________________________________________________________________________________
64/**
65 GSLMinimizer class.
66 Implementation of the ROOT::Math::Minimizer interface using the GSL multi-dimensional
67 minimization algorithms.
68
69 See <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Multidimensional-Minimization.html">GSL doc</A>
70 from more info on the GSL minimization algorithms.
71
72 The class implements the ROOT::Math::Minimizer interface and can be instantiated using the
73 ROOT plugin manager (plugin name is "GSLMultiMin"). The varius minimization algorithms
74 (conjugatefr, conjugatepr, bfgs, etc..) can be passed as enumerations and also as a string.
75 The default algorithm is conjugatefr (Fletcher-Reeves conjugate gradient algorithm).
76
77 @ingroup MultiMin
78*/
80
81public:
82
83 /**
84 Default constructor
85 */
87
88 /**
89 Constructor with a string giving name of algorithm
90 */
91 GSLMinimizer (const char * type );
92
93 /**
94 Destructor
95 */
96 virtual ~GSLMinimizer ();
97
98private:
99 // usually copying is non trivial, so we make this unaccessible
100
101 /**
102 Copy constructor
103 */
105
106 /**
107 Assignment operator
108 */
110 if (this == &rhs) return *this; // time saving self-test
111 return *this;
112 }
113
114public:
115
116 /// set the function to minimize
117 virtual void SetFunction(const ROOT::Math::IMultiGenFunction & func);
118
119 /// set the function to minimize
121
122 /// method to perform the minimization
123 virtual bool Minimize();
124
125
126 /// return expected distance reached from the minimum
127 virtual double Edm() const { return 0; } // not impl. }
128
129
130 /// return pointer to gradient values at the minimum
131 virtual const double * MinGradient() const;
132
133 /// number of function calls to reach the minimum
134 virtual unsigned int NCalls() const;
135
136
137 /// minimizer provides error and error matrix
138 virtual bool ProvidesError() const { return false; }
139
140 /// return errors at the minimum
141 virtual const double * Errors() const {
142 return 0;
143 }
144
145 /** return covariance matrices elements
146 if the variable is fixed the matrix is zero
147 The ordering of the variables is the same as in errors
148 */
149 virtual double CovMatrix(unsigned int , unsigned int ) const { return 0; }
150
151
152
153
154protected:
155
156private:
157
158
160
161 double fLSTolerance; // Line Search Tolerance
162
163};
164
165 } // end namespace Fit
166
167} // end namespace ROOT
168
169
170
171#endif /* ROOT_Math_GSLMinimizer */
int type
Definition TGX11.cxx:121
Base Minimizer class, which defines the basic funcionality of various minimizer implementations (apar...
virtual void SetFunction(const ROOT::Math::IMultiGenFunction &func)
set the function to minimize
GSLMinimizer class.
virtual unsigned int NCalls() const
number of function calls to reach the minimum
virtual const double * MinGradient() const
return pointer to gradient values at the minimum
virtual double Edm() const
return expected distance reached from the minimum
ROOT::Math::GSLMultiMinimizer * fGSLMultiMin
virtual double CovMatrix(unsigned int, unsigned int) const
return covariance matrices elements if the variable is fixed the matrix is zero The ordering of the v...
GSLMinimizer & operator=(const GSLMinimizer &rhs)
Assignment operator.
virtual bool Minimize()
method to perform the minimization
virtual ~GSLMinimizer()
Destructor.
virtual void SetFunction(const ROOT::Math::IMultiGradFunction &func)
set the function to minimize
virtual bool ProvidesError() const
minimizer provides error and error matrix
GSLMinimizer(const GSLMinimizer &)
Copy constructor.
virtual void SetFunction(const ROOT::Math::IMultiGenFunction &func)
set the function to minimize
virtual const double * Errors() const
return errors at the minimum
GSLMultiMinimizer class , for minimizing multi-dimensional function using derivatives.
Documentation for the abstract class IBaseFunctionMultiDim.
Definition IFunction.h:62
Interface (abstract class) for multi-dimensional functions providing a gradient calculation.
Definition IFunction.h:327
EGSLMinimizerType
enumeration specifying the types of GSL minimizers
Namespace for new Math classes and functions.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...