29 weightsPrecision_( weightsPrecision )
44 abscissas.resize(numPoints);
45 weights.resize(numPoints);
47 Int_t m = (numPoints+1)/2;
48 Double_t dnumPoints(numPoints);
49 Double_t dnumPointsPlusHalf =
static_cast<Double_t
>(numPoints + 0.5);
51 Double_t
p1(0.0),
p2(0.0),
p3(0.0), pp(0.0), z(0.0), zSq(0.0), z1(0.0), di(0.0);
53 for (i = 1; i <= m; i++){
55 di =
static_cast<Double_t
>(i);
66 for (j = 1; j <= numPoints; j++){
69 p1 = (( 2.0*j - 1.0) * z *
p2 - (j - 1.0)*
p3)/static_cast<Double_t>(j);
73 pp = dnumPoints * (z*
p1 -
p2)/(zSq - 1.0);
81 abscissas[numPoints-i] = abscissas[i-1];
82 weights[i-1] = 2.0/((1.0 - zSq)*pp*pp);
83 weights[numPoints-i] = weights[i-1];
97 abscissas.resize(numPoints); weights.resize(numPoints);
99 Int_t m = (numPoints+1)/2;
100 Double_t dnumPoints(numPoints);
101 Int_t i(0), j(0), its(0);
102 Double_t
p1(0.0),
p2(0.0),
p3(0.0), pp(0.0), z(0.0), z1(0.0);
103 Double_t numPointsTerm(2*numPoints+1);
107 for (i = 1; i <= m; i++) {
111 z = TMath::Sqrt(numPointsTerm) - 1.85575*TMath::Power(numPointsTerm, -0.16667);
114 z -= 1.14*TMath::Power(dnumPoints, 0.426)/z;
117 z = 1.86*z - 0.86*abscissas[0];
120 z = 1.91*z - 0.91*abscissas[1];
123 z = 2.0*z - abscissas[i-3];
126 for (its = 1; its <= 10; its++) {
130 for (j = 1; j <= numPoints; j++) {
134 p1 = z*TMath::Sqrt(2.0/dj)*
p2 - TMath::Sqrt((dj-1.0)/dj)*
p3;
137 pp = TMath::Sqrt(2.0*dnumPoints)*
p2;
139 if (pp > 1e-10) {z = z1 -
p1/pp;}
146 abscissas[numPoints-i] = -z;
147 weights[i-1] = 2.0/(pp*pp);
148 weights[numPoints-i] = weights[i-1];
static double p1(double t, double a, double b)
Class for performing numerical integration routines.
void calcGaussHermiteWeights(const Int_t numPoints, std::vector< Double_t > &abscissas, std::vector< Double_t > &weights)
Calculate the Gauss-Hermite weights.
void calcGaussLegendreWeights(const Int_t numPoints, std::vector< Double_t > &abscissas, std::vector< Double_t > &weights)
Calculate the Gauss-Legendre weights.
static double p3(double t, double a, double b, double c, double d)
static double p2(double t, double a, double b, double c)
Double_t weightsPrecision_
The precision to which the weights should be calculated.
File containing LauConstants namespace.
File containing declaration of LauIntegrals class.
virtual ~LauIntegrals()
Destructor.
const Double_t pim4
One over Pi to the one-fourth.