PandaRoot
KinTools Namespace Reference

Functions

Double_t breakup (Double_t M, Double_t m1, Double_t m2)
 
Double_t BarrierP (Double_t q, Double_t q0, Int_t L, Double_t d=5.07)
 
Double_t Barrier (Double_t q, Int_t L, Double_t d=5.07)
 
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)
 
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)
 
Double_t lambda (Double_t x, Double_t y, Double_t z)
 
Double_t simin (Int_t i, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
 
Double_t simax (Int_t i, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
 
Double_t s2min (Double_t s1, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
 
Double_t s2max (Double_t s1, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
 
Double_t s3min (Double_t s1, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
 
Double_t s3max (Double_t s1, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
 
Double_t s1min (Double_t s2, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
 
Double_t s1max (Double_t s2, Double_t m0, Double_t m1, Double_t m2, Double_t m3)
 
void palette2 (Int_t mode=0)
 
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.)
 
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)
 
TComplex getAmp (CRes *r, Double_t m, Double_t m1, Double_t m2, Double_t qR, Double_t qM)
 
TComplex getAmpEvt (CRes *r, double sab, double sac, double sbc, double ma, double mb, double mc)
 

Function Documentation

◆ Barrier()

Double_t KinTools::Barrier ( Double_t  q,
Int_t  L,
Double_t  d = 5.07 
)
inline

Definition at line 69 of file KinTools.h.

References sqrt().

Referenced by getAmp().

70 {
71  Double_t result = 1.0;
72 
73  Double_t z = q * q * d * d;
74 
75  switch (L) {
76  case 1: result = sqrt(2. * z / (1. + z)); break;
77 
78  case 2: result = sqrt((13. * z * z) / ((z - 3.) * (z - 3.) + 9. * z)); break;
79 
80  default: break;
81  }
82 
83  return result;
84 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40

◆ BarrierP()

Double_t KinTools::BarrierP ( Double_t  q,
Double_t  q0,
Int_t  L,
Double_t  d = 5.07 
)
inline

Definition at line 51 of file KinTools.h.

References sqrt().

Referenced by BWGamma(), and getAmp().

52 {
53  Double_t result = 1.0;
54 
55  Double_t z0 = q0 * q0 * d * d;
56  Double_t z = q * q * d * d;
57 
58  switch (L) {
59  case 1: result = sqrt((1. + z0) / (1. + z)); break;
60 
61  case 2: result = sqrt(((z0 - 3.) * (z0 - 3.) + 9. * z0) / ((z - 3.) * (z - 3.) + 9. * z)); break;
62 
63  default: break;
64  }
65 
66  return result;
67 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40

◆ breakup()

Double_t KinTools::breakup ( Double_t  M,
Double_t  m1,
Double_t  m2 
)
inline

Definition at line 38 of file KinTools.h.

References sqrt().

Referenced by BWGamma(), and getAmp().

39 {
40  Double_t sum12 = m1 + m2;
41  Double_t dif12 = m1 - m2;
42 
43  Double_t q = 0.;
44 
45  if (M > sum12)
46  q = sqrt((M * M - sum12 * sum12) * (M * M - dif12 * dif12)) / (2. * M);
47 
48  return q;
49 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40

◆ BreitWigner()

TComplex KinTools::BreitWigner ( Double_t  m,
Double_t  m0,
Double_t  Gamma0,
Double_t  m1,
Double_t  m2,
Int_t  L,
Double_t  d = 5.07 
)
inline

Definition at line 109 of file KinTools.h.

References BWGamma().

Referenced by getAmp().

110 {
111  TComplex I(0., 1.);
112  TComplex G(BWGamma(m, m0, Gamma0, m1, m2, L, d));
113 
114  TComplex BW = G / (m0 * m0 - m * m - I * m0 * G);
115 
116  return BW;
117 }
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)
Definition: KinTools.h:86
__m128 m
Definition: P4_F32vec4.h:38

◆ BWGamma()

Double_t KinTools::BWGamma ( Double_t  m,
Double_t  m0,
Double_t  Gamma0,
Double_t  m1,
Double_t  m2,
Int_t  L,
Double_t  d = 5.07 
)
inline

Definition at line 86 of file KinTools.h.

References BarrierP(), breakup(), and m.

Referenced by BreitWigner().

87 {
88  Double_t q0 = breakup(m0, m1, m2);
89  Double_t q = breakup(m, m1, m2);
90 
91  if (0. == q)
92  return 0.;
93 
94  Double_t phsp = q / q0;
95 
96  switch (L) {
97  case 1: phsp = phsp * phsp * phsp; break;
98  case 2: phsp = phsp * phsp * phsp * phsp * phsp; break;
99  default: break;
100  }
101 
102  Double_t bar = BarrierP(q, q0, L, d);
103 
104  Double_t G = Gamma0 * phsp * (m0 / m) * bar * bar;
105 
106  return G;
107 }
__m128 m
Definition: P4_F32vec4.h:38
Double_t BarrierP(Double_t q, Double_t q0, Int_t L, Double_t d=5.07)
Definition: KinTools.h:51
Double_t breakup(Double_t M, Double_t m1, Double_t m2)
Definition: KinTools.h:38

◆ getAmp()

TComplex KinTools::getAmp ( CRes r,
Double_t  m,
Double_t  m1,
Double_t  m2,
Double_t  qR,
Double_t  qM 
)
inline

Definition at line 317 of file KinTools.h.

References Barrier(), BarrierP(), breakup(), BreitWigner(), CRes::GetCoeff(), CRes::GetG0(), CRes::GetJ(), CRes::GetM0(), and sqrt().

318 {
319  TComplex bw1 = BreitWigner(m, r->GetM0(), r->GetG0(), m1, m2, r->GetJ());
320  TComplex c = r->GetCoeff();
321  c *= 1. / sqrt(r->GetG0()); // weight taking into account width (give narrow resonances more weight)
322  Double_t bar1 = Barrier(qR, r->GetJ());
323  Double_t bar2 = BarrierP(qM, breakup(r->GetM0(), m1, m2), r->GetJ());
324  return bar1 * bar2 * c * bw1;
325 }
Int_t GetJ()
Definition: CRes.h:44
Double_t GetM0()
Definition: CRes.h:40
Double_t Barrier(Double_t q, Int_t L, Double_t d=5.07)
Definition: KinTools.h:69
__m128 m
Definition: P4_F32vec4.h:38
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40
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)
Definition: KinTools.h:109
Double_t BarrierP(Double_t q, Double_t q0, Int_t L, Double_t d=5.07)
Definition: KinTools.h:51
Double_t breakup(Double_t M, Double_t m1, Double_t m2)
Definition: KinTools.h:38
Double_t GetG0()
Definition: CRes.h:41
TComplex GetCoeff()
Definition: CRes.h:57

◆ getAmpEvt()

TComplex KinTools::getAmpEvt ( CRes r,
double  sab,
double  sac,
double  sbc,
double  ma,
double  mb,
double  mc 
)
inline

Definition at line 327 of file KinTools.h.

References CRes::GetCoeff(), CRes::GetG0(), CRes::GetJ(), CRes::GetM0(), and sqrt().

328 {
329  double mAB2 = sab;
330  // double mBC2 = sbc;
331  // double mAC2 = sac;
332  double mA2 = ma * ma;
333  double mB2 = mb * mb;
334  double mC2 = mc * mc;
335  double mD2 = sab + sac + sbc - mA2 - mB2 - mC2;
336 
337  double mR = r->GetM0();
338  double mR2 = mR * mR;
339  double gammaR = r->GetG0();
340  // double mdenom = mR;
341 
342  double pAB = sqrt((((mAB2 - mA2 - mB2) * (mAB2 - mA2 - mB2) / 4.0) - mA2 * mB2) / (mAB2));
343  double pR = sqrt((((mR2 - mA2 - mB2) * (mR2 - mA2 - mB2) / 4.0) - mA2 * mB2) / (mR2));
344  double pD = (((mD2 - mR2 - mC2) * (mD2 - mR2 - mC2) / 4.0) - mR2 * mC2) / (mD2);
345  if (pD > 0) {
346  pD = sqrt(pD);
347  } else {
348  pD = 0;
349  }
350  double pDAB = sqrt((((mD2 - mAB2 - mC2) * (mD2 - mAB2 - mC2) / 4.0) - mAB2 * mC2) / (mD2));
351 
352  double fR = 1;
353  double fD = 1;
354  int power = 0;
355  int _spin = r->GetJ();
356  switch (_spin) {
357  case 0:
358  fR = 1.0;
359  fD = 1.0;
360  power = 1;
361  break;
362  case 1:
363  fR = sqrt(1.0 + 1.5 * 1.5 * pR * pR) / sqrt(1.0 + 1.5 * 1.5 * pAB * pAB);
364  fD = sqrt(1.0 + 5.0 * 5.0 * pD * pD) / sqrt(1.0 + 5.0 * 5.0 * pDAB * pDAB);
365  power = 3;
366  break;
367  case 2:
368  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)));
369  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)));
370  power = 5;
371  break;
372  }
373 
374  double gammaAB = gammaR * pow(pAB / pR, power) * (mR / sqrt(mAB2)) * fR * fR;
375 
376  TComplex ampl = sqrt(r->GetG0()) * r->GetCoeff() * fR * fD / (mR2 - mAB2 - TComplex(0.0, mR * gammaAB));
377 
378  return ampl;
379 }
Int_t GetJ()
Definition: CRes.h:44
Double_t GetM0()
Definition: CRes.h:40
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40
Double_t GetG0()
Definition: CRes.h:41
TComplex GetCoeff()
Definition: CRes.h:57

◆ lambda()

Double_t KinTools::lambda ( Double_t  x,
Double_t  y,
Double_t  z 
)
inline

Definition at line 119 of file KinTools.h.

Referenced by s1max(), s1min(), s2max(), s2min(), s3max(), and s3min().

120 {
121  return x * x + y * y + z * z - 2. * x * y - 2. * y * z - 2. * z * x;
122 }

◆ palette2()

void KinTools::palette2 ( Int_t  mode = 0)
inline

Definition at line 208 of file KinTools.h.

References i.

209 {
210  const int ncol = 99;
211  static Int_t col0[99], col1[99], col2[99], col3[99];
212  static Bool_t initialized = kFALSE;
213 
214  if (!initialized) {
215  {
216  Double_t blu[3] = {1, 0.2, 0};
217  Double_t red[3] = {1, 0.2, 0};
218  Double_t grn[3] = {1, 0.2, 0};
219  Double_t stp[3] = {0, 0.5, 1};
220 
221  Int_t FI = TColor::CreateGradientColorTable(3, stp, red, grn, blu, ncol);
222  for (int i = 0; i < ncol; i++)
223  col0[i] = FI + i;
224  }
225  {
226  Double_t blu2[6] = {1, 1, 1, 0, 0, 0};
227  Double_t red2[6] = {1, 0, 0, 0, 1, 1};
228  Double_t grn2[6] = {1, 0, 1, 1, 1, 0};
229  Double_t stp2[6] = {0.0, 0.12, 0.34, 0.56, 0.78, 1.0};
230 
231  Int_t FI = TColor::CreateGradientColorTable(6, stp2, red2, grn2, blu2, ncol);
232  for (int i = 0; i < ncol; i++)
233  col1[i] = FI + i;
234  }
235  {
236  Double_t blu3[5] = {0, 0, 1, 0, 0};
237  Double_t red3[5] = {0, 1, 1, 0, 0};
238  Double_t grn3[5] = {0, 0, 1, 1, 0};
239  Double_t stp3[5] = {0., 0.25, 0.5, 0.75, 1.0};
240 
241  Int_t FI = TColor::CreateGradientColorTable(5, stp3, red3, grn3, blu3, ncol);
242  for (int i = 0; i < ncol; i++)
243  col2[i] = FI + i;
244  }
245  {
246  Double_t blu4[6] = {1, 0, 0, 0, 0.06, 0};
247  Double_t red4[6] = {1, 1, 1, 0.5, 0.55, 0};
248  Double_t grn4[6] = {1, 1, 0.5, 0.25, 0.10, 0};
249  Double_t stp4[6] = {0., 0.2, 0.4, 0.60, 0.75, 1.0};
250 
251  Int_t FI = TColor::CreateGradientColorTable(6, stp4, red4, grn4, blu4, ncol);
252  for (int i = 0; i < ncol; i++)
253  col3[i] = FI + i;
254  }
255  initialized = kTRUE;
256  }
257 
258  switch (mode) {
259  case 0: gStyle->SetPalette(ncol, col0); break;
260  case 1: gStyle->SetPalette(ncol, col1); break;
261  case 2: gStyle->SetPalette(ncol, col2); break;
262  case 3: gStyle->SetPalette(56, 0); break;
263  }
264 }
unsigned int i
Definition: P4_F32vec4.h:33

◆ s1max()

Double_t KinTools::s1max ( Double_t  s2,
Double_t  m0,
Double_t  m1,
Double_t  m2,
Double_t  m3 
)
inline

Definition at line 198 of file KinTools.h.

References lambda(), and sqrt().

199 {
200  Double_t s = m0 * m0;
201  Double_t lamterm = sqrt(lambda(s2, s, m2 * m2)) * sqrt(lambda(s2, m1 * m1, m3 * m3));
202 
203  Double_t result = m2 * m2 + m3 * m3 + ((s - s2 - m2 * m2) * (s2 - m1 * m1 + m3 * m3) + lamterm) / (2. * s2);
204 
205  return result;
206 }
Double_t lambda(Double_t x, Double_t y, Double_t z)
Definition: KinTools.h:119
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40

◆ s1min()

Double_t KinTools::s1min ( Double_t  s2,
Double_t  m0,
Double_t  m1,
Double_t  m2,
Double_t  m3 
)
inline

Definition at line 188 of file KinTools.h.

References lambda(), and sqrt().

189 {
190  Double_t s = m0 * m0;
191  Double_t lamterm = sqrt(lambda(s2, s, m2 * m2)) * sqrt(lambda(s2, m3 * m3, m1 * m1));
192 
193  Double_t result = m2 * m2 + m3 * m3 + ((s - s2 - m2 * m2) * (s2 - m1 * m1 + m3 * m3) - lamterm) / (2. * s2);
194 
195  return result;
196 }
Double_t lambda(Double_t x, Double_t y, Double_t z)
Definition: KinTools.h:119
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40

◆ s2max()

Double_t KinTools::s2max ( Double_t  s1,
Double_t  m0,
Double_t  m1,
Double_t  m2,
Double_t  m3 
)
inline

Definition at line 158 of file KinTools.h.

References lambda(), and sqrt().

159 {
160  Double_t s = m0 * m0;
161  Double_t lamterm = sqrt(lambda(s1, s, m1 * m1)) * sqrt(lambda(s1, m2 * m2, m3 * m3));
162 
163  Double_t result = m1 * m1 + m3 * m3 + ((s - s1 - m1 * m1) * (s1 - m2 * m2 + m3 * m3) + lamterm) / (2. * s1);
164 
165  return result;
166 }
Double_t lambda(Double_t x, Double_t y, Double_t z)
Definition: KinTools.h:119
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40

◆ s2min()

Double_t KinTools::s2min ( Double_t  s1,
Double_t  m0,
Double_t  m1,
Double_t  m2,
Double_t  m3 
)
inline

Definition at line 148 of file KinTools.h.

References lambda(), and sqrt().

149 {
150  Double_t s = m0 * m0;
151  Double_t lamterm = sqrt(lambda(s1, s, m1 * m1)) * sqrt(lambda(s1, m2 * m2, m3 * m3));
152 
153  Double_t result = m1 * m1 + m3 * m3 + ((s - s1 - m1 * m1) * (s1 - m2 * m2 + m3 * m3) - lamterm) / (2. * s1);
154 
155  return result;
156 }
Double_t lambda(Double_t x, Double_t y, Double_t z)
Definition: KinTools.h:119
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40

◆ s3max()

Double_t KinTools::s3max ( Double_t  s1,
Double_t  m0,
Double_t  m1,
Double_t  m2,
Double_t  m3 
)
inline

Definition at line 178 of file KinTools.h.

References lambda(), and sqrt().

179 {
180  Double_t s = m0 * m0;
181  Double_t lamterm = sqrt(lambda(s1, s, m1 * m1)) * sqrt(lambda(s1, m3 * m3, m1 * m1));
182 
183  Double_t result = m1 * m1 + m2 * m2 + ((s - s1 - m1 * m1) * (s1 - m1 * m1 + m3 * m3) + lamterm) / (2. * s1);
184 
185  return result;
186 }
Double_t lambda(Double_t x, Double_t y, Double_t z)
Definition: KinTools.h:119
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40

◆ s3min()

Double_t KinTools::s3min ( Double_t  s1,
Double_t  m0,
Double_t  m1,
Double_t  m2,
Double_t  m3 
)
inline

Definition at line 168 of file KinTools.h.

References lambda(), and sqrt().

169 {
170  Double_t s = m0 * m0;
171  Double_t lamterm = sqrt(lambda(s1, s, m1 * m1)) * sqrt(lambda(s1, m3 * m3, m1 * m1));
172 
173  Double_t result = m1 * m1 + m2 * m2 + ((s - s1 - m1 * m1) * (s1 - m1 * m1 + m2 * m2) - lamterm) / (2. * s1);
174 
175  return result;
176 }
Double_t lambda(Double_t x, Double_t y, Double_t z)
Definition: KinTools.h:119
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40

◆ simax()

Double_t KinTools::simax ( Int_t  i,
Double_t  m0,
Double_t  m1,
Double_t  m2,
Double_t  m3 
)
inline

Definition at line 136 of file KinTools.h.

137 {
138  Double_t result = 0.;
139 
140  switch (i) {
141  case 1: result = (m0 - m1) * (m0 - m1); break;
142  case 2: result = (m0 - m2) * (m0 - m2); break;
143  case 3: result = (m0 - m3) * (m0 - m3); break;
144  }
145  return result;
146 }
unsigned int i
Definition: P4_F32vec4.h:33

◆ simin()

Double_t KinTools::simin ( Int_t  i,
Double_t  m0,
Double_t  m1,
Double_t  m2,
Double_t  m3 
)
inline

Definition at line 124 of file KinTools.h.

125 {
126  Double_t result = 0.;
127 
128  switch (i) {
129  case 1: result = (m2 + m3) * (m2 + m3); break;
130  case 2: result = (m1 + m3) * (m1 + m3); break;
131  case 3: result = (m1 + m2) * (m1 + m2); break;
132  }
133  return result;
134 }
unsigned int i
Definition: P4_F32vec4.h:33

◆ Z_R()

Double_t KinTools::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 
)
inline

Definition at line 294 of file KinTools.h.

295 {
296  double res = 1.;
297 
298  if (J == 0)
299  return res;
300 
301  double mR2 = 2 * mR;
302 
303  double mA2 = fma * fma, mB2 = fmb * fmb, mC2 = fmc * fmc;
304 
305  switch (J) {
306  case 1:
307  res = sac - sbc + (s - mC2) * (mA2 - mB2) / mR2; //(mAC*mAC-mBC*mBC+((mD*mD-mC*mC)*(mB*mB-mA*mA)/(mdenom*mdenom)))
308  break;
309  case 2:
310  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));
311  break;
312  }
313 
314  return res;
315 }

◆ Z_Ralt()

Double_t KinTools::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. 
)
inline

Definition at line 266 of file KinTools.h.

References sqrt().

267 {
268  Double_t res = 1.0;
269 
270  Double_t x = (s - smin) / (smax - smin) * 2. - 1.0;
271 
272  double relcorr = 1.0, xi2 = 1.;
273 
274  if (m_R > 1e-6) {
275  xi2 = pow((m_R * m_R + m_ab * m_ab - m_c * m_c) / (2 * m_ab * m_R), 2) - 1;
276  }
277 
278  switch (J) {
279  case 1:
280  res = 3. * x * x;
281  if (m_R > 1e-6)
282  relcorr = sqrt(1. + xi2);
283  break;
284  case 2:
285  res = 5. * (x * x - 1. / 3.) * (x * x - 1. / 3.) * 9. / 4.;
286  if (m_R > 1e-6)
287  relcorr = sqrt(xi2 + 1.5);
288  break;
289  }
290 
291  return relcorr * sqrt(res); // *** new: return now sqrt(angle) to cope for computation of the intensity = amp*amp
292 }
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40