ROOT
master
Reference Guide
Loading...
Searching...
No Matches
ExternalInternalGradientCalculator.cxx
Go to the documentation of this file.
1
// @(#)root/minuit2:$Id$
2
// Authors: M. Winkler, F. James, L. Moneta, A. Zsenei, E.G.P. Bos 2003-2017
3
4
/**********************************************************************
5
* *
6
* Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT *
7
* *
8
**********************************************************************/
9
10
#include <vector>
11
#include "
Minuit2/ExternalInternalGradientCalculator.h
"
12
#include "
Minuit2/FCNBase.h
"
13
#include "
Minuit2/MnUserTransformation.h
"
14
#include "
Minuit2/FunctionGradient.h
"
15
#include "
Minuit2/MinimumParameters.h
"
16
#include "
Minuit2/MnPrint.h
"
17
18
namespace
ROOT
{
19
namespace
Minuit2 {
20
21
FunctionGradient
ExternalInternalGradientCalculator::operator()
(
const
MinimumParameters
&par)
const
22
{
23
std::vector<double>
par_vec
;
24
par_vec
.resize(par.
Vec
().size());
25
for
(std::size_t ix = 0; ix < par.
Vec
().
size
(); ++ix) {
26
par_vec
[ix] = par.
Vec
()(ix);
27
}
28
29
std::vector<double> grad =
fGradFunc
.Gradient(
par_vec
);
30
assert
(grad.size() ==
fTransformation
.Parameters().size());
31
32
MnAlgebraicVector
v
(par.
Vec
().size());
33
for
(
unsigned
int
i = 0; i < par.
Vec
().
size
(); i++) {
34
unsigned
int
ext
=
fTransformation
.ExtOfInt(i);
35
v
(i) = grad[
ext
];
36
}
37
38
MnPrint
print(
"ExternalInternalGradientCalculator"
);
39
print.
Debug
(
"User given gradient in Minuit2"
,
v
);
40
41
return
FunctionGradient
(
v
);
42
}
43
44
FunctionGradient
45
ExternalInternalGradientCalculator::operator()
(
const
MinimumParameters
&par,
const
FunctionGradient
&
functionGradient
)
const
46
{
47
std::vector<double>
par_vec
;
48
par_vec
.resize(par.
Vec
().size());
49
for
(std::size_t ix = 0; ix < par.
Vec
().
size
(); ++ix) {
50
par_vec
[ix] = par.
Vec
()(ix);
51
}
52
53
std::vector<double>
previous_grad
(
functionGradient
.Grad().Data(),
functionGradient
.Grad().Data() +
functionGradient
.Grad().size());
54
std::vector<double>
previous_g2
(
functionGradient
.G2().Data(),
functionGradient
.G2().Data() +
functionGradient
.G2().size());
55
std::vector<double>
previous_gstep
(
functionGradient
.Gstep().Data(),
functionGradient
.Gstep().Data() +
functionGradient
.Gstep().size());
56
57
std::vector<double> grad =
fGradFunc
.GradientWithPrevResult(
par_vec
,
previous_grad
.data(),
previous_g2
.data(),
previous_gstep
.data());
58
assert
(grad.size() ==
fTransformation
.Parameters().size());
59
60
MnAlgebraicVector
v
(par.
Vec
().size());
61
MnAlgebraicVector
v_g2
(par.
Vec
().size());
62
MnAlgebraicVector
v_gstep
(par.
Vec
().size());
63
for
(
unsigned
int
i = 0; i < par.
Vec
().
size
(); i++) {
64
unsigned
int
ext
=
fTransformation
.ExtOfInt(i);
65
v
(i) = grad[
ext
];
66
v_g2
(i) =
previous_g2
[
ext
];
67
v_gstep
(i) =
previous_gstep
[
ext
];
68
}
69
70
MnPrint
print(
"ExternalInternalGradientCalculator"
);
71
print.
Debug
(
"User given gradient in Minuit2"
,
v
,
"g2"
,
v_g2
,
"step size"
,
v_gstep
);
72
73
return
FunctionGradient
(
v
,
v_g2
,
v_gstep
);
74
}
75
76
}
// namespace Minuit2
77
}
// namespace ROOT
ExternalInternalGradientCalculator.h
FCNBase.h
FunctionGradient.h
MinimumParameters.h
MnPrint.h
MnUserTransformation.h
size
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
TRangeDynCast
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Definition
TCollection.h:358
ROOT::Detail::TRangeCast
Definition
TCollection.h:311
ROOT::Minuit2::AnalyticalGradientCalculator::fTransformation
const MnUserTransformation & fTransformation
Definition
AnalyticalGradientCalculator.h:48
ROOT::Minuit2::AnalyticalGradientCalculator::fGradFunc
const FCNBase & fGradFunc
Definition
AnalyticalGradientCalculator.h:47
ROOT::Minuit2::ExternalInternalGradientCalculator::operator()
FunctionGradient operator()(const MinimumParameters &) const override
Definition
ExternalInternalGradientCalculator.cxx:21
ROOT::Minuit2::FunctionGradient
Definition
FunctionGradient.h:21
ROOT::Minuit2::LAVector
Definition
MnMatrix.h:827
ROOT::Minuit2::MinimumParameters
Definition
MinimumParameters.h:21
ROOT::Minuit2::MinimumParameters::Vec
const MnAlgebraicVector & Vec() const
Definition
MinimumParameters.h:53
ROOT::Minuit2::MnPrint
Definition
MnPrint.h:69
ROOT::Minuit2::MnPrint::Debug
void Debug(const Ts &... args)
Definition
MnPrint.h:135
ROOT
Definition
EExecutionPolicy.hxx:4
v
@ v
Definition
rootcling_impl.cxx:3683
math
minuit2
src
ExternalInternalGradientCalculator.cxx
ROOT master - Reference Guide Generated on Mon Oct 13 2025 15:02:39 (GVA Time) using Doxygen 1.10.0