39 weightsPrecision_( weightsPrecision )
48 weightsPrecision_( rhs.weightsPrecision_ )
61 std::vector<Double_t>& abscissas,
62 std::vector<Double_t>& weights )
69 abscissas.resize( numPoints );
70 weights.resize( numPoints );
72 Int_t m = ( numPoints + 1 ) / 2;
73 Double_t dnumPoints( numPoints );
74 Double_t dnumPointsPlusHalf =
static_cast<Double_t
>( numPoints + 0.5 );
76 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 );
78 for ( i = 1; i <= m; i++ ) {
80 di =
static_cast<Double_t
>( i );
91 for ( j = 1; j <= numPoints; j++ ) {
94 p1 = ( ( 2.0 * j - 1.0 ) * z * p2 - ( j - 1.0 ) * p3 ) /
static_cast<Double_t
>( j );
98 pp = dnumPoints * ( z * p1 - p2 ) / ( zSq - 1.0 );
105 abscissas[i - 1] = z;
106 abscissas[numPoints - i] = abscissas[i - 1];
107 weights[i - 1] = 2.0 / ( ( 1.0 - zSq ) * pp * pp );
108 weights[numPoints - i] = weights[i - 1];
113 std::vector<Double_t>& abscissas,
114 std::vector<Double_t>& weights )
123 abscissas.resize( numPoints );
124 weights.resize( numPoints );
126 Int_t m = ( numPoints + 1 ) / 2;
127 Double_t dnumPoints( numPoints );
128 Int_t i( 0 ), j( 0 ), its( 0 );
129 Double_t p1( 0.0 ), p2( 0.0 ), p3( 0.0 ), pp( 0.0 ), z( 0.0 ), z1( 0.0 );
130 Double_t numPointsTerm( 2 * numPoints + 1 );
134 for ( i = 1; i <= m; i++ ) {
138 z = TMath::Sqrt( numPointsTerm ) - 1.85575 * TMath::Power( numPointsTerm, -0.16667 );
139 }
else if ( i == 2 ) {
141 z -= 1.14 * TMath::Power( dnumPoints, 0.426 ) / z;
142 }
else if ( i == 3 ) {
144 z = 1.86 * z - 0.86 * abscissas[0];
145 }
else if ( i == 4 ) {
147 z = 1.91 * z - 0.91 * abscissas[1];
150 z = 2.0 * z - abscissas[i - 3];
153 for ( its = 1; its <= 10; its++ ) {
157 for ( j = 1; j <= numPoints; j++ ) {
161 p1 = z * TMath::Sqrt( 2.0 / dj ) * p2 - TMath::Sqrt( ( dj - 1.0 ) / dj ) * p3;
164 pp = TMath::Sqrt( 2.0 * dnumPoints ) * p2;
175 abscissas[i - 1] = z;
176 abscissas[numPoints - i] = -z;
177 weights[i - 1] = 2.0 / ( pp * pp );
178 weights[numPoints - i] = weights[i - 1];