/* ------------------------------------------------ * loren4(S,A,X) * S, A, X は4-momenta (px, py, pz, E)の順 * Lab系で 4-momentum A の運動量を持った粒子の * Lab系で 4-momentum S の運動量を持った粒子の静止系での 4-momentum が * Xに戻る -------------------------------------------------- */ void loren4(float* s, float* a, float* x) { double ms=sqrt(s[3]*s[3]-s[0]*s[0]-s[1]*s[1]-s[2]*s[2]); double prod=s[3]*a[3]-s[0]*a[0]-s[1]*a[1]-s[2]*a[2]; x[3]=(double(a[3])*s[3]-prod)/ms; prod=(prod/(ms+double(s[3]))-double(a[3]))/ms; for(int i=0; i<3; ++i) { x[i]=double(a[i])+s[i]*prod; } }