25 const std::vector<double> & values,
26 const std::map<
unsigned int, std::pair<double, double> > & bounds) :
34 unsigned int ntot =
NTot();
35 assert ( types.size() == ntot );
38 for (
unsigned int i = 0; i < ntot; ++i ) {
39 if (types[i] ==
kFix )
47 std::map<unsigned int, std::pair<double,double> >::const_iterator itr = bounds.find(i);
48 assert ( itr != bounds.end() );
49 double low = itr->second.first;
50 double up = itr->second.second;
66 unsigned int nfree =
fIndex.size();
72 for (
unsigned int i = 0; i < nfree; ++i ) {
73 unsigned int extIndex =
fIndex[i];
78 xext[ extIndex ] =
x[i];
89 for (
unsigned int i = 0; i <
NDim(); ++i ) {
90 unsigned int extIndex =
fIndex[i];
96 xInt[ i ] = xExt[extIndex];
102 for (
unsigned int i = 0; i <
NDim(); ++i ) {
103 unsigned int extIndex =
fIndex[i];
108 double x2 =
x[extIndex] + sExt[extIndex];
110 x2 =
x[extIndex] - sExt[extIndex];
114 sInt[i] = std::abs( x2int - xint);
117 sInt[ i ] = sExt[extIndex];
123 unsigned int nfree =
fIndex.size();
124 for (
unsigned int i = 0; i < nfree; ++i ) {
125 unsigned int extIndex =
fIndex[i];
131 gInt[i] = gExt[ extIndex ];
140 unsigned int nfree =
fIndex.size();
141 unsigned int ntot =
NTot();
142 for (
unsigned int i = 0; i < nfree; ++i ) {
143 unsigned int iext =
fIndex[i];
148 for (
unsigned int j = 0; j < nfree; ++j ) {
149 unsigned int jext =
fIndex[j];
153 covExt[ iext * ntot + jext] = ddi * ddj * covInt[ i * nfree + j];
static const double x2[5]
Interface (abstract class) for multi-dimensional functions providing a gradient calculation.
Namespace for new Math classes and functions.
Namespace for new ROOT classes and functions.