32 }
else if ( ee < w.ee ) {
58 double epsilon)
const {
59 double limit = std::fabs(pp.
dot(w.pp));
60 limit += .25*((ee+w.ee)*(ee+w.ee));
61 limit *= epsilon*epsilon;
62 double delta = (pp - w.pp).
mag2();
63 delta += (ee-w.ee)*(ee-w.ee);
64 return (delta <= limit );
68 double wdw = std::fabs(pp.
dot(w.pp)) + .25*((ee+w.ee)*(ee+w.ee));
69 double delta = (pp - w.pp).
mag2() + (ee-w.ee)*(ee-w.ee);
70 if ( (wdw > 0) && (delta < wdw) ) {
71 return std::sqrt (delta/wdw);
72 }
else if ( (wdw == 0) && (delta == 0) ) {
87 double tTotal = (ee + w.ee);
89 double vTotal2 = vTotal.
mag2();
91 if ( vTotal2 >= tTotal*tTotal ) {
100 return (
isNear(w, epsilon));
105 double tRecip = 1./tTotal;
116 double b2 = vTotal2*tRecip*tRecip;
118 register double ggamma = std::sqrt(1./(1.-b2));
119 register double boostDotV1 = bboost.
dot(pp);
120 register double gm1_b2 = (ggamma-1)/b2;
123 ggamma * (ee + boostDotV1) );
125 register double boostDotV2 = bboost.
dot(w.pp);
127 ggamma * (w.ee + boostDotV2) );
129 return (w1.
isNear(w2, epsilon));
135 double tTotal = (ee + w.ee);
137 double vTotal2 = vTotal.
mag2();
139 if ( vTotal2 >= tTotal*tTotal ) {
151 if ( vTotal2 == 0 ) {
157 double tRecip = 1./tTotal;
168 double b2 = vTotal2*tRecip*tRecip;
173 register double ggamma = std::sqrt(1./(1.-b2));
174 register double boostDotV1 = bboost.
dot(pp);
175 register double gm1_b2 = (ggamma-1)/b2;
178 ggamma * (ee + boostDotV1) );
180 register double boostDotV2 = bboost.
dot(w.pp);
182 ggamma * (w.ee + boostDotV2) );
197 double a =
eta() - w.
eta();
200 return std::sqrt ( a*a + b*b );
245 return (x1 < 1) ? x1 : 1;
251 double twoT2 = 2*ee*ee;
double dot(const Hep3Vector &) const
double deltaPhi(const Hep3Vector &v2) const
int compare(const Hep3Vector &v) const
bool isParallel(const HepLorentzVector &w, double epsilon=tolerance) const
bool isNearCM(const HepLorentzVector &w, double epsilon=tolerance) const
int compare(const HepLorentzVector &w) const
double howParallel(const HepLorentzVector &w) const
bool operator<=(const HepLorentzVector &w) const
double deltaR(const HepLorentzVector &v) const
double euclideanNorm() const
double howNear(const HepLorentzVector &w) const
double howLightlike() const
double howNearCM(const HepLorentzVector &w) const
bool operator<(const HepLorentzVector &w) const
double euclideanNorm2() const
bool isNear(const HepLorentzVector &w, double epsilon=tolerance) const
bool operator>(const HepLorentzVector &w) const
bool operator>=(const HepLorentzVector &w) const