16 #ifndef ROOT_Math_GaussIntegrator
17 #define ROOT_Math_GaussIntegrator
39 class GaussIntegrator:
public VirtualIntegratorOneDim {
45 virtual ~GaussIntegrator();
50 GaussIntegrator(
double absTol = -1,
double relTol = -1);
58 void AbsValue(
bool flag);
64 virtual void SetRelTolerance (
double eps) { fEpsRel = eps; }
67 virtual void SetAbsTolerance (
double eps) { fEpsAbs = eps; }
70 double Result ()
const;
73 double Error ()
const;
148 double Integral (
double a,
double b);
175 double IntegralUp (
double a);
189 double IntegralLow (
double b);
195 void SetFunction (
const IGenFunction &);
198 double Integral (
const std::vector< double > &pts);
201 double IntegralCauchy (
double a,
double b,
double c);
204 virtual ROOT::Math::IntegratorOneDimOptions Options()
const;
207 virtual void SetOptions(
const ROOT::Math::IntegratorOneDimOptions & opt);
216 virtual double DoIntegral (
double a,
double b,
const IGenFunction* func);
220 static bool fgAbsValue;
226 const IGenFunction* fFunction;
233 class IntegrandTransform :
public IGenFunction {
235 enum ESemiInfinitySign {kMinus = -1, kPlus = +1};
236 IntegrandTransform(
const IGenFunction* integrand);
237 IntegrandTransform(
const double boundary, ESemiInfinitySign sign,
const IGenFunction* integrand);
238 double operator()(
double x)
const;
239 double DoEval(
double x)
const;
240 IGenFunction* Clone()
const;
242 ESemiInfinitySign fSign;
243 const IGenFunction* fIntegrand;
245 bool fInfiniteInterval;
246 double DoEval(
double x,
double boundary,
int sign)
const;