26 inline Double_t
breakup(Double_t M, Double_t m1, Double_t m2)
28 Double_t sum12 = m1 + m2;
29 Double_t dif12 = m1 - m2;
34 q =
sqrt((M * M - sum12 * sum12) * (M * M - dif12 * dif12)) / (2. * M);
39 inline Double_t
BarrierP(Double_t q, Double_t q0, Int_t L, Double_t d = 5.07)
41 Double_t result = 1.0;
43 Double_t z0 = q0 * q0 * d * d;
44 Double_t z = q * q * d * d;
47 case 1: result =
sqrt((1. + z0) / (1. + z));
break;
49 case 2: result =
sqrt(((z0 - 3.) * (z0 - 3.) + 9. * z0) / ((z - 3.) * (z - 3.) + 9. * z));
break;
57 inline Double_t
Barrier(Double_t q, Int_t L, Double_t d = 5.07)
59 Double_t result = 1.0;
61 Double_t z = q * q * d * d;
64 case 1: result =
sqrt(2. * z / (1. + z));
break;
66 case 2: result =
sqrt((13. * z * z) / ((z - 3.) * (z - 3.) + 9. * z));
break;
74 inline Double_t
BWGamma(Double_t
m, Double_t m0, Double_t Gamma0, Double_t m1, Double_t m2, Int_t L, Double_t d = 5.07)
76 Double_t q0 =
breakup(m0, m1, m2);
77 Double_t q =
breakup(m, m1, m2);
82 Double_t phsp = q / q0;
85 case 1: phsp = phsp * phsp * phsp;
break;
86 case 2: phsp = phsp * phsp * phsp * phsp * phsp;
break;
90 Double_t bar =
BarrierP(q, q0, L, d);
92 Double_t G = Gamma0 * phsp * (m0 /
m) * bar * bar;
97 inline TComplex
BreitWigner(Double_t
m, Double_t m0, Double_t Gamma0, Double_t m1, Double_t m2, Int_t L, Double_t d = 5.07)
100 TComplex G(
BWGamma(m, m0, Gamma0, m1, m2, L, d));
102 TComplex BW = G / (m0 * m0 - m * m - I * m0 * G);
107 inline Double_t
lambda(Double_t x, Double_t y, Double_t z)
109 return x * x + y * y + z * z - 2. * x * y - 2. * y * z - 2. * z * x;
112 inline Double_t
simin(Int_t
i, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
114 Double_t result = 0.;
117 case 1: result = (m2 + m3) * (m2 + m3);
break;
118 case 2: result = (m1 + m3) * (m1 + m3);
break;
119 case 3: result = (m1 + m2) * (m1 + m2);
break;
124 inline Double_t
simax(Int_t
i, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
126 Double_t result = 0.;
129 case 1: result = (m0 - m1) * (m0 - m1);
break;
130 case 2: result = (m0 - m2) * (m0 - m2);
break;
131 case 3: result = (m0 - m3) * (m0 - m3);
break;
136 inline Double_t
s2min(Double_t s1, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
138 Double_t s = m0 * m0;
141 Double_t result = m1 * m1 + m3 * m3 + ((s - s1 - m1 * m1) * (s1 - m2 * m2 + m3 * m3) - lamterm) / (2. * s1);
146 inline Double_t
s2max(Double_t s1, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
148 Double_t s = m0 * m0;
151 Double_t result = m1 * m1 + m3 * m3 + ((s - s1 - m1 * m1) * (s1 - m2 * m2 + m3 * m3) + lamterm) / (2. * s1);
156 inline Double_t
s3min(Double_t s1, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
158 Double_t s = m0 * m0;
161 Double_t result = m1 * m1 + m2 * m2 + ((s - s1 - m1 * m1) * (s1 - m1 * m1 + m2 * m2) - lamterm) / (2. * s1);
166 inline Double_t
s3max(Double_t s1, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
168 Double_t s = m0 * m0;
171 Double_t result = m1 * m1 + m2 * m2 + ((s - s1 - m1 * m1) * (s1 - m1 * m1 + m3 * m3) + lamterm) / (2. * s1);
176 inline Double_t
s1min(Double_t s2, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
178 Double_t s = m0 * m0;
181 Double_t result = m2 * m2 + m3 * m3 + ((s - s2 - m2 * m2) * (s2 - m1 * m1 + m3 * m3) - lamterm) / (2. * s2);
186 inline Double_t
s1max(Double_t s2, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
188 Double_t s = m0 * m0;
191 Double_t result = m2 * m2 + m3 * m3 + ((s - s2 - m2 * m2) * (s2 - m1 * m1 + m3 * m3) + lamterm) / (2. * s2);
199 static Int_t col0[99], col1[99], col2[99], col3[99];
200 static Bool_t initialized = kFALSE;
204 Double_t blu[3] = {1, 0.2, 0};
205 Double_t red[3] = {1, 0.2, 0};
206 Double_t grn[3] = {1, 0.2, 0};
207 Double_t stp[3] = {0, 0.5, 1};
209 Int_t FI = TColor::CreateGradientColorTable(3, stp, red, grn, blu, ncol);
210 for (
int i = 0;
i < ncol;
i++)
214 Double_t blu2[6] = {1, 1, 1, 0, 0, 0};
215 Double_t red2[6] = {1, 0, 0, 0, 1, 1};
216 Double_t grn2[6] = {1, 0, 1, 1, 1, 0};
217 Double_t stp2[6] = {0.0, 0.12, 0.34, 0.56, 0.78, 1.0};
219 Int_t FI = TColor::CreateGradientColorTable(6, stp2, red2, grn2, blu2, ncol);
220 for (
int i = 0;
i < ncol;
i++)
224 Double_t blu3[5] = {0, 0, 1, 0, 0};
225 Double_t red3[5] = {0, 1, 1, 0, 0};
226 Double_t grn3[5] = {0, 0, 1, 1, 0};
227 Double_t stp3[5] = {0., 0.25, 0.5, 0.75, 1.0};
229 Int_t FI = TColor::CreateGradientColorTable(5, stp3, red3, grn3, blu3, ncol);
230 for (
int i = 0;
i < ncol;
i++)
234 Double_t blu4[6] = {1, 0, 0, 0, 0.06, 0};
235 Double_t red4[6] = {1, 1, 1, 0.5, 0.55, 0};
236 Double_t grn4[6] = {1, 1, 0.5, 0.25, 0.10, 0};
237 Double_t stp4[6] = {0., 0.2, 0.4, 0.60, 0.75, 1.0};
239 Int_t FI = TColor::CreateGradientColorTable(6, stp4, red4, grn4, blu4, ncol);
240 for (
int i = 0;
i < ncol;
i++)
247 case 0: gStyle->SetPalette(ncol, col0);
break;
248 case 1: gStyle->SetPalette(ncol, col1);
break;
249 case 2: gStyle->SetPalette(ncol, col2);
break;
250 case 3: gStyle->SetPalette(56, 0);
break;
254 inline Double_t
Z_Ralt(Double_t s, Double_t smin, Double_t smax, Int_t J,
double m_R = 0.,
double m_ab = 0.,
double m_c = 0.)
258 Double_t x = (s - smin) / (smax - smin) * 2. - 1.0;
260 double relcorr = 1.0, xi2 = 1.;
263 xi2 = pow((m_R * m_R + m_ab * m_ab - m_c * m_c) / (2 * m_ab * m_R), 2) - 1;
270 relcorr =
sqrt(1. + xi2);
273 res = 5. * (x * x - 1. / 3.) * (x * x - 1. / 3.) * 9. / 4.;
275 relcorr =
sqrt(xi2 + 1.5);
279 return relcorr *
sqrt(res);
282 inline Double_t
Z_R(Double_t s, Double_t sab, Double_t sac, Double_t sbc,
int i, Double_t mR, Int_t J,
double fma,
double fmb,
double fmc)
291 double mA2 = fma * fma, mB2 = fmb * fmb, mC2 = fmc * fmc;
295 res = sac - sbc + (s - mC2) * (mA2 - mB2) / mR2;
298 res = pow(sbc - sac + ((s - mC2) * (mA2 - mB2) / mR), 2) - 1. / 3. * (sab - 2 * s - 2 * mC2 + pow((s - mC2) / mR, 2)) * (sab - 2 * mA2 - 2 * mB2 + pow((mA2 - mB2) / mR, 2));
305 inline TComplex
getAmp(
CRes *r, Double_t
m, Double_t m1, Double_t m2, Double_t qR, Double_t qM)
312 return bar1 * bar2 * c * bw1;
315 inline TComplex
getAmpEvt(
CRes *r,
double sab,
double sac,
double sbc,
double ma,
double mb,
double mc)
320 double mA2 = ma * ma;
321 double mB2 = mb * mb;
322 double mC2 = mc * mc;
323 double mD2 = sab + sac + sbc - mA2 - mB2 - mC2;
325 double mR = r->
GetM0();
326 double mR2 = mR * mR;
327 double gammaR = r->
GetG0();
330 double pAB =
sqrt((((mAB2 - mA2 - mB2) * (mAB2 - mA2 - mB2) / 4.0) - mA2 * mB2) / (mAB2));
331 double pR =
sqrt((((mR2 - mA2 - mB2) * (mR2 - mA2 - mB2) / 4.0) - mA2 * mB2) / (mR2));
332 double pD = (((mD2 - mR2 - mC2) * (mD2 - mR2 - mC2) / 4.0) - mR2 * mC2) / (mD2);
338 double pDAB =
sqrt((((mD2 - mAB2 - mC2) * (mD2 - mAB2 - mC2) / 4.0) - mAB2 * mC2) / (mD2));
343 int _spin = r->
GetJ();
351 fR =
sqrt(1.0 + 1.5 * 1.5 * pR * pR) /
sqrt(1.0 + 1.5 * 1.5 * pAB * pAB);
352 fD =
sqrt(1.0 + 5.0 * 5.0 * pD * pD) /
sqrt(1.0 + 5.0 * 5.0 * pDAB * pDAB);
356 fR =
sqrt((9 + 3 * pow((1.5 * pR), 2) + pow((1.5 * pR), 4)) / (9 + 3 * pow((1.5 * pAB), 2) + pow((1.5 * pAB), 4)));
357 fD =
sqrt((9 + 3 * pow((5.0 * pD), 2) + pow((5.0 * pD), 4)) / (9 + 3 * pow((5.0 * pDAB), 2) + pow((5.0 * pDAB), 4)));
362 double gammaAB = gammaR * pow(pAB / pR, power) * (mR /
sqrt(mAB2)) * fR * fR;
364 TComplex ampl =
sqrt(r->
GetG0()) * r->
GetCoeff() * fR * fD / (mR2 - mAB2 - TComplex(0.0, mR * gammaAB));
friend F32vec4 sqrt(const F32vec4 &a)