BOSS 7.0.4
BESIII Offline Software System
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
EvtKine.hh File Reference

Go to the source code of this file.

Functions

double EvtDecayAngle (const EvtVector4R &, const EvtVector4R &, const EvtVector4R &)
 
double EvtDecayAngleChi (const EvtVector4R &, const EvtVector4R &, const EvtVector4R &, const EvtVector4R &, const EvtVector4R &)
 
double EvtDecayPlaneNormalAngle (const EvtVector4R &p, const EvtVector4R &q, const EvtVector4R &d1, const EvtVector4R &d2)
 
double EvtDecayAnglePhi (const EvtVector4R &g, const EvtVector4R &p, const EvtVector4R &q, const EvtVector4R &d)
 
EvtComplex wignerD (int j, int m1, int m2, double phi, double theta, double gamma)
 

Function Documentation

◆ EvtDecayAngle()

double EvtDecayAngle ( const EvtVector4R p,
const EvtVector4R q,
const EvtVector4R d 
)

Definition at line 33 of file EvtKine.cc.

34 {
35
36 double pd=p*d;
37 double pq=p*q;
38 double qd=q*d;
39 double mp2=p.mass2();
40 double mq2=q.mass2();
41 double md2=d.mass2();
42
43 double cost=(pd*mq2-pq*qd)/sqrt((pq*pq-mq2*mp2)*(qd*qd-mq2*md2));
44
45 return cost;
46
47}
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
Definition: KKsem.h:33
double mass2() const
Definition: EvtVector4R.hh:116

Referenced by EvtMHelAmp::amplitude(), and EvtResonance::resAmpl().

◆ EvtDecayAngleChi()

double EvtDecayAngleChi ( const EvtVector4R p4_p,
const EvtVector4R p4_d1,
const EvtVector4R p4_d2,
const EvtVector4R p4_h1,
const EvtVector4R p4_h2 
)

Definition at line 49 of file EvtKine.cc.

51 {
52
53 EvtVector4R p4_d1p,p4_h1p,p4_h2p,p4_d2p;
54
55
56 // boost all vectors parent restframe
57
58 p4_d1p=boostTo(p4_d1,p4_p);
59 p4_d2p=boostTo(p4_d2,p4_p);
60 p4_h1p=boostTo(p4_h1,p4_p);
61 p4_h2p=boostTo(p4_h2,p4_p);
62
63
64 EvtVector4R d1_perp,d1_prime,h1_perp;
66
67 D=p4_d1p+p4_d2p;
68
69 d1_perp=p4_d1p-(D.dot(p4_d1p)/D.dot(D))*D;
70 h1_perp=p4_h1p-(D.dot(p4_h1p)/D.dot(D))*D;
71
72 // orthogonal to both D and d1_perp
73
74 d1_prime=D.cross(d1_perp);
75
76 d1_perp= d1_perp/d1_perp.d3mag();
77 d1_prime= d1_prime/d1_prime.d3mag();
78
79 double x,y;
80
81 x=d1_perp.dot(h1_perp);
82 y=d1_prime.dot(h1_perp);
83
84 double chi=atan2(y,x);
85
86 if (chi<0.0) chi+=EvtConst::twoPi;
87
88 return chi;
89
90}
Double_t x[10]
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
static const double twoPi
Definition: EvtConst.hh:29
double dot(const EvtVector4R &v2) const
Definition: EvtVector4R.cc:199
EvtVector4R cross(const EvtVector4R &v2)
Definition: EvtVector4R.cc:171
double d3mag() const
Definition: EvtVector4R.cc:186

◆ EvtDecayAnglePhi()

double EvtDecayAnglePhi ( const EvtVector4R g,
const EvtVector4R p,
const EvtVector4R q,
const EvtVector4R d 
)

Definition at line 111 of file EvtKine.cc.

113{
114 double eq = (p * q) / p.mass();
115 double ed = (p * d) / p.mass();
116 double mq = q.mass();
117 double q2 = p.mag2r3(q);
118 double qd = p.dotr3(q,d);
119 double zq = p.dotr3(z,q);
120 double zd = p.dotr3(z,d);
121 double alpha = (eq - mq)/(q2 * mq) * qd - ed/mq;
122
123 double y = p.scalartripler3(z,q,d) + alpha * p.scalartripler3(z,q,q);
124 double x = (zq * (qd + alpha * q2) - q2 * (zd + alpha * zq)) / sqrt(q2);
125
126 double phi = atan2(y,x);
127
128 return phi<0 ? (phi+EvtConst::twoPi) : phi;
129}
const double alpha
double mass() const
Definition: EvtVector4R.cc:39
double dotr3(const EvtVector4R &p1, const EvtVector4R &p2) const
Definition: EvtVector4R.cc:229
double scalartripler3(const EvtVector4R &p1, const EvtVector4R &p2, const EvtVector4R &p3) const
Definition: EvtVector4R.cc:217
double mag2r3(const EvtVector4R &p1) const
Definition: EvtVector4R.cc:236

Referenced by EvtMHelAmp::amplitude().

◆ EvtDecayPlaneNormalAngle()

double EvtDecayPlaneNormalAngle ( const EvtVector4R p,
const EvtVector4R q,
const EvtVector4R d1,
const EvtVector4R d2 
)

Definition at line 94 of file EvtKine.cc.

95 {
96
97 EvtVector4C lc=dual(directProd(d1,d2)).cont2(q);
98
99 EvtVector4R l(real(lc.get(0)),real(lc.get(1)),
100 real(lc.get(2)),real(lc.get(3)));
101
102 double pq=p*q;
103
104 return q.mass()*(p*l)/sqrt(-(pq*pq-p.mass2()*q.mass2())*l.mass2());
105
106
107}
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtTensor4C dual(const EvtTensor4C &t2)
Definition: EvtTensor4C.cc:379
EvtVector4C cont2(const EvtVector4C &v4) const
Definition: EvtTensor4C.cc:474
const EvtComplex & get(int) const
Definition: EvtVector4C.hh:131

◆ wignerD()

EvtComplex wignerD ( int  j,
int  m1,
int  m2,
double  phi,
double  theta,
double  gamma 
)

Definition at line 132 of file EvtKine.cc.

134{
135 EvtComplex gp(0.0, -phi*m1);
136 EvtComplex gm(0.0, -gamma*m2);
137 //double d = EvtdFunction::d(j, m1, m2, theta);
138
139 return exp( gp ) * EvtdFunction::d(2*j, 2*m1,2*m2, theta) * exp( gm ); //pingrg, 2010-11-29, d(j,m1,m2,theta)->d(2*j,2*m1,2*m2,theta)consistent with Djmn in EvtHelSys
140}
EvtComplex exp(const EvtComplex &c)
Definition: EvtComplex.hh:252
static double d(int j, int m1, int m2, double theta)
Definition: EvtdFunction.cc:30

Referenced by EvtMHelAmp::amplitude().