22 double mass(
int i)
const
24 return kdata[(i - 1) * (i + 2) / 2];
32 typedef union {
double d64; int64_t i64; } DI64;
44 static const uint64_t idelta = 5;
47 bool eq(
const double& a,
const double& b)
const
51 const int64_t diff = ia.i64 - ib.i64;
52 return diff == 0LL ||
static_cast<uint64_t
>(llabs(diff)) <= idelta;
55 bool neq(
const double& a,
const double& b)
const
59 const int64_t diff = ia.i64 - ib.i64;
60 return diff != 0LL &&
static_cast<uint64_t
>(llabs(diff)) > idelta;
63 static const int KLEN = R * (R + 1) / 2;
68 ip5, is34, is45, is15, im5,
78 for (
int i = 0; i < KLEN; i++) {
79 if (not eq(kdata[i], kinem.kdata[i]))
return false;
87 for (
int i = 0; i < KLEN; i++) {
93 class Kinem1 :
public Kinem<1> {
101 inline double m1()
const {
return kdata[im1]; }
105 class Kinem2 :
public Kinem<2> {
109 double xm1,
double xm2)
116 inline double p1()
const {
return kdata[ip1]; }
117 inline double m1()
const {
return kdata[im1]; }
118 inline double m2()
const {
return kdata[im2]; }
122 class Kinem3 :
public Kinem<3> {
125 Kinem3(
double xp1,
double xp2,
double xp3,
126 double xm1,
double xm2,
double xm3)
136 inline double p1()
const {
return kdata[ip1]; }
137 inline double p2()
const {
return kdata[ip2]; }
138 inline double p3()
const {
return kdata[ip3]; }
139 inline double m1()
const {
return kdata[im1]; }
140 inline double m2()
const {
return kdata[im2]; }
141 inline double m3()
const {
return kdata[im3]; }
145 class Kinem4 :
public Kinem<4> {
148 Kinem4(
double xp1,
double xp2,
double xp3,
double xp4,
149 double xs12,
double xs23,
150 double xm1,
double xm2,
double xm3,
double xm4)
164 inline double p1()
const {
return kdata[ip1]; }
165 inline double p2()
const {
return kdata[ip2]; }
166 inline double p3()
const {
return kdata[ip3]; }
167 inline double p4()
const {
return kdata[ip4]; }
168 inline double m1()
const {
return kdata[im1]; }
169 inline double m2()
const {
return kdata[im2]; }
170 inline double m3()
const {
return kdata[im3]; }
171 inline double m4()
const {
return kdata[im4]; }
172 inline double s12()
const {
return kdata[is12]; }
173 inline double s23()
const {
return kdata[is23]; }
177 class Kinem5 :
public Kinem<5> {
180 Kinem5(
double xp1,
double xp2,
double xp3,
double xp4,
double xp5,
181 double xs12,
double xs23,
double xs34,
double xs45,
double xs15,
182 double xm1,
double xm2,
double xm3,
double xm4,
double xm5)
201 inline double p1()
const {
return kdata[ip1]; }
202 inline double p2()
const {
return kdata[ip2]; }
203 inline double p3()
const {
return kdata[ip3]; }
204 inline double p4()
const {
return kdata[ip4]; }
205 inline double p5()
const {
return kdata[ip5]; }
206 inline double m1()
const {
return kdata[im1]; }
207 inline double m2()
const {
return kdata[im2]; }
208 inline double m3()
const {
return kdata[im3]; }
209 inline double m4()
const {
return kdata[im4]; }
210 inline double m5()
const {
return kdata[im5]; }
211 inline double s12()
const {
return kdata[is12]; }
212 inline double s23()
const {
return kdata[is23]; }
213 inline double s34()
const {
return kdata[is34]; }
214 inline double s45()
const {
return kdata[is45]; }
215 inline double s15()
const {
return kdata[is15]; }