Pluto v6.3.0
Loading...
Searching...
No Matches
PKinematics.h
Go to the documentation of this file.
1// Author: M.A. Kagarlis
2// Written: 6.1.00
3// PKinematics Class Header
4
5#ifndef _PKINEMATICS_H_
6#define _PKINEMATICS_H_
7
8#include "PStaticData.h"
9
11 // useful static kinematics functions
12
13 public:
14 static double lambda(double M, double m1, double m2) {
15 // Kaellen function
16 double y = (m1+m2);
17 if (M<y) return 0.;
18 y *= y;
19 double x=M*M, z=(m1-m2)*(m1-m2), w=(x-y)*(x-z);
20 return (w>0.) ? w : 0.;
21 }
22
23 static double pcms2(double M, double m1, double m2) {
24 // cm momentum^2 for the decay of M to m1 and m2
25 return (M>0.) ? 0.25*lambda(M,m1,m2)/(M*M) : 0.;
26 }
27
28 static double pcms(double M, double m1, double m2) {
29 // cm momentum for the decay of M to m1 and m2
30 return sqrt(pcms2(M,m1,m2));
31 }
32
33 static double pcmt(double m, double t) {
34 const double mp = makeStaticData()->GetParticleMass("p"),
35 mp2 = mp*mp;
36 double m2 = m*m;
37 double arg = m2+mp2-t;
38 arg = 0.25*arg*arg/m2 - mp2;
39 return (arg>0.) ? sqrt(arg) : 0. ;
40 }
41
42 static void rotes(double c, double s, double c2, double s2, double *pr) {
43 // rotation used by GENBOD
44 double sa = *pr,
45 sb = *(pr+1),
46 a = sa*c-sb*s;
47 *(pr+1) = sa*s+sb*c;
48 double b = *(pr+2);
49 *pr = a*c2-b*s2;
50 *(pr+2) = a*s2+b*c2;
51 }
52};
53
54#endif // _KINEMATICS_H_
PStaticData * makeStaticData()
static double lambda(double M, double m1, double m2)
Definition PKinematics.h:14
static double pcms(double M, double m1, double m2)
Definition PKinematics.h:28
static void rotes(double c, double s, double c2, double s2, double *pr)
Definition PKinematics.h:42
static double pcmt(double m, double t)
Definition PKinematics.h:33
static double pcms2(double M, double m1, double m2)
Definition PKinematics.h:23
double GetParticleMass(const int &id)
PChannel * c[]
PParticle * s2[]
PChannel * c2
PProjector * m1
PParticle * s
Definition dp_mult.C:25
PParticle * w