15 #pragma implementation
31 }
else if (
ee < w.
ee ) {
58 double limit = std::fabs(
pp.
dot(w.
pp));
63 return (delta <= limit );
69 if ( (wdw > 0) && (delta < wdw) ) {
70 return std::sqrt (delta/wdw);
71 }
else if ( (wdw == 0) && (delta == 0) ) {
86 double tTotal = (ee + w.
ee);
88 double vTotal2 = vTotal.
mag2();
90 if ( vTotal2 >= tTotal*tTotal ) {
99 return (isNear(w, epsilon));
104 double tRecip = 1./tTotal;
115 double b2 = vTotal2*tRecip*tRecip;
117 double ggamma = std::sqrt(1./(1.-b2));
118 double boostDotV1 = bboost.
dot(
pp);
119 double gm1_b2 = (ggamma-1)/b2;
122 ggamma * (ee + boostDotV1) );
124 double boostDotV2 = bboost.dot(w.
pp);
126 ggamma * (w.
ee + boostDotV2) );
128 return (w1.
isNear(w2, epsilon));
134 double tTotal = (
ee + w.
ee);
136 double vTotal2 = vTotal.
mag2();
138 if ( vTotal2 >= tTotal*tTotal ) {
150 if ( vTotal2 == 0 ) {
156 double tRecip = 1./tTotal;
167 double b2 = vTotal2*tRecip*tRecip;
172 double ggamma = std::sqrt(1./(1.-b2));
173 double boostDotV1 = bboost.
dot(
pp);
174 double gm1_b2 = (ggamma-1)/b2;
177 ggamma * (ee + boostDotV1) );
179 double boostDotV2 = bboost.dot(w.
pp);
181 ggamma * (w.
ee + boostDotV2) );
199 return std::sqrt ( a*a + b*b );
244 return (x1 < 1) ? x1 : 1;
250 double twoT2 = 2*
ee*
ee;