76 Log() << kWARNING <<
"<Root> initial interval w/o root: "
77 <<
"(a=" <<
a <<
", b=" <<
b <<
"),"
78 <<
" (Eff_a=" <<
fMethod->GetValueForRoot(
a )
79 <<
", Eff_b=" <<
fMethod->GetValueForRoot(
b ) <<
"), "
80 <<
"(fa=" << fa <<
", fb=" << fb <<
"), "
81 <<
"refValue = " << refValue <<
Endl;
89 if ((fb < 0 && fc < 0) || (fb > 0 && fc > 0)) {
100 fa = fb; fb = fc; fc = fa;
114 if (ac_equal) { p = 2 *
m * s;
q = 1 - s; }
116 q = fa / fc;
r = fb / fc;
117 p = s * (2 *
m *
q * (
q -
r) - (
b -
a) * (
r - 1));
118 q = (
q - 1) * (
r - 1) * (s - 1);
126 if (2 * p < (min1 < min2 ? min1 : min2)) {
130 else {
d =
m;
e =
m; }
136 else b += (
m > 0 ? +tol : -tol);
138 fb =
fMethod->GetValueForRoot(
b ) - refValue;
143 Log() << kWARNING <<
"<Root> maximum iterations (" <<
fMaxIter
144 <<
") reached before convergence" <<
Endl;
int Int_t
Signed integer 4 bytes (int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
Virtual base Class for all MVA method.
ostringstream derivative to redirect and format output
Double_t fRootMax
maximum root value
virtual ~RootFinder(void)
destructor
MsgLogger * fLogger
! message logger
Double_t fRootMin
minimum root value
Double_t Root(Double_t refValue)
Root finding using Brents algorithm; taken from CERNLIB function RZERO.
Double_t fAbsTol
absolute tolerance deviation
Int_t fMaxIter
maximum number of iterations
RootFinder(MethodBase *method, Double_t rootMin, Double_t rootMax, Int_t maxIterations=100, Double_t absTolerance=0.0)
constructor
MsgLogger & Endl(MsgLogger &ml)
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.