CGEM BOSS 6.6.5.h
BESIII Offline Software System
Loading...
Searching...
No Matches
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

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
EvtVector4R cross(const EvtVector4R &v2)
double d3mag() const

◆ 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
double dotr3(const EvtVector4R &p1, const EvtVector4R &p2) const
double scalartripler3(const EvtVector4R &p1, const EvtVector4R &p2, const EvtVector4R &p3) const
double mag2r3(const EvtVector4R &p1) const

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)
double real(const EvtComplex &c)
EvtTensor4C dual(const EvtTensor4C &t2)
EvtVector4C cont2(const EvtVector4C &v4) const
const EvtComplex & get(int) const

◆ 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)
static double d(int j, int m1, int m2, double theta)

Referenced by EvtMHelAmp::amplitude().