CGEM BOSS 6.6.5.h
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtHelSys Class Reference

#include <EvtHelSys.hh>

Public Member Functions

virtual ~EvtHelSys ()
 
 EvtHelSys ()
 
 EvtHelSys (const EvtVector4R &p4p, const EvtVector4R &p4d)
 
double getHelAng (int i)
 
double Angles (EvtVector4R, int)
 
EvtVector4R checkparent ()
 
EvtVector4R checkdaug ()
 
EvtVector4R checkst (int i)
 
EvtVector4R Helrotate (EvtVector4R p1, double phi, double theta)
 

Friends

double djmn (int j, int m, int n, double theta)
 
double djmn (double j, double m, double n, double theta)
 
EvtComplex Djmn (int j, int m, int n, double phi, double theta, double gamma)
 
EvtComplex Djmn (double j, double m, double n, double phi, double theta, double gamma)
 

Detailed Description

Definition at line 43 of file EvtHelSys.hh.

Constructor & Destructor Documentation

◆ ~EvtHelSys()

EvtHelSys::~EvtHelSys ( )
virtual

Definition at line 43 of file EvtHelSys.cc.

43 {
44}

◆ EvtHelSys() [1/2]

EvtHelSys::EvtHelSys ( )

Definition at line 51 of file EvtHelSys.cc.

51 {
52 }

◆ EvtHelSys() [2/2]

EvtHelSys::EvtHelSys ( const EvtVector4R & p4p,
const EvtVector4R & p4d )

Definition at line 46 of file EvtHelSys.cc.

46 {
47 _p4parent=p4p; // parent momentum in its parent CM system
48 _p4daug =p4d; // daughter momentum in its parent CM system
49 }

Member Function Documentation

◆ Angles()

double EvtHelSys::Angles ( EvtVector4R bbst,
int i )

Definition at line 108 of file EvtHelSys.cc.

108 {
109
110double rxy=sqrt(pow(bbst.get(1),2.)+pow(bbst.get(2),2.));
111 if(bbst.d3mag()<=1e-10) {
112 if(i==0) return 0.;
113 else if (i==1) return 0.;
114 else if (i==2) return 0.;
115 else {cout<<"Angles(i): i<=2"<<endl;abort();}
116 }
117 else if(rxy<=1e-10){
118 if(i==0) return bbst.d3mag();
119 if(i==1) return 0.;
120 if(i==2) return 0.;
121 else {cout<<"Angles(i): i<=2"<<endl;abort();}
122 }
123 else {
124 double theta=acos(bbst.get(3)/bbst.d3mag());
125 double csphi=bbst.get(1)/bbst.d3mag()/sin(theta);
126 if(fabs(csphi)>1.0) csphi=csphi/fabs(csphi);
127 double phi=acos(csphi);
128 if(bbst.get(2)<0.0) phi=2*3.1415926-phi;
129 if(i==0) return bbst.d3mag();
130 else if (i==1) return theta;
131 else if (i==2) return phi;
132 else {cout<<"Angles(i): i<=2"<<endl;abort();}
133 }
134
135}
double sin(const BesAngle a)
Definition BesAngle.h:210
double get(int i) const
double d3mag() const

Referenced by rhopi::amps1(), rhopifull::amps1(), VVS::amps1(), and getHelAng().

◆ checkdaug()

EvtVector4R EvtHelSys::checkdaug ( )

Definition at line 86 of file EvtHelSys.cc.

86{ return _p4daug;}

◆ checkparent()

EvtVector4R EvtHelSys::checkparent ( )

Definition at line 85 of file EvtHelSys.cc.

85{ return _p4parent;}

◆ checkst()

EvtVector4R EvtHelSys::checkst ( int i)

Definition at line 87 of file EvtHelSys.cc.

87 {
88getHelAng(1);
89if(i==0) return _bp4p; //parent momentum used to boost the daughter to the CM sys.
90if(i==1) return _rotatep4p; //the parent momentum in Hel system by rotation
91if(i==2) return _rotatep4d; //the daughter momentum in Hel. system by rotation
92if(i==3) return _bst; //_bst:daughter momentum in helicity system
93}
double getHelAng(int i)
Definition EvtHelSys.cc:54

◆ getHelAng()

double EvtHelSys::getHelAng ( int i)

Definition at line 54 of file EvtHelSys.cc.

54 {
55 EvtVector4R b_p4p,rp4p, rp4d,boostdaug;
56 EvtVector3R GetHelAng;
57 while (_p4parent.d3mag()!=0) {
58
59 // b_p4p=-1 * _p4parent; //boost from Lab to HEL sys. required to reverse mom.Vec.
60 // b_p4p.set(0,_p4parent.get(0));
61 // _bp4p=b_p4p;
62
63// first to rotate the mother and daugher momentum to the helicity system
64 double theta=Angles(_p4parent,1);
65 double phi=Angles(_p4parent,2);
66
67
68 rp4p=Helrotate(_p4parent,phi,theta);
69 rp4d=Helrotate(_p4daug, phi,theta);
70
71// then boos to the CM system
72// EvtVector4R r_p4p=-1*rp4p; //boost from Lab to HEL sys. required to reverse mom.Vec.
73// r_p4p.set(0,rp4p.get(0));
74// boostdaug=boostTo(rp4d,r_p4p);
75
76 _rotatep4p=rp4p;
77 _rotatep4d=rp4d;
78 _bst=rp4d;
79 // _bp4p=r_p4p;
80 return Angles(_bst,i); //_bst:daughter momentum in helicity system, i=0==>|_bst|;i=1,2==>(theta,phi)
81 }
82 return Angles(_p4daug,i);
83}
EvtVector4R Helrotate(EvtVector4R p1, double phi, double theta)
Definition EvtHelSys.cc:96
double Angles(EvtVector4R, int)
Definition EvtHelSys.cc:108

Referenced by rhopi::amps1(), rhopifull::amps1(), VVS::amps1(), EvtPsi3Sdecay::AngSam(), EvtConExc::baryon_sampling(), checkst(), EvtAngSam::decay(), EvtAngSamX::decay(), EvtAV2GV::decay(), EvtChi0BB1::decay(), EvtChi0BB2::decay(), EvtChi1BB1::decay(), EvtChi1BB2::decay(), EvtChi2BB1::decay(), EvtChi2BB2::decay(), EvtDeBD::decay(), EvtHelPPJ::decay(), EvtHypWK::decay(), EvtJ2BB1::decay(), EvtJ2BB2::decay(), EvtJ2BB3::decay(), EvtJPE::decay(), EvtP2GC0::decay(), EvtP2GC1::decay(), EvtP2GC2::decay(), EvtSPL::decay(), EvtT2GV::decay(), EvtEvalHelAmp::evalAmp(), and EvtConExc::meson_sampling().

◆ Helrotate()

EvtVector4R EvtHelSys::Helrotate ( EvtVector4R p1,
double phi,
double theta )

Definition at line 96 of file EvtHelSys.cc.

96 {
98double cp=cos(phi);
99double sp=sin(phi);
100double ct=cos(theta);
101double st=sin(theta);
102double t=p1.get(0),x=p1.get(1), y=p1.get(2), z=p1.get(3);
103double xp=x*cp*ct+y*sp*ct-z*st,yp= -x*sp+y*cp,zp=x*cp*st+y*sp*st+z*ct;
104 Rp.set(t,xp,yp,zp);
105 return Rp;
106}
double cos(const BesAngle a)
Definition BesAngle.h:213
Double_t x[10]
void set(int i, double d)
int t()
Definition t.c:1

Referenced by getHelAng().

Friends And Related Symbol Documentation

◆ Djmn [1/2]

EvtComplex Djmn ( double j,
double m,
double n,
double phi,
double theta,
double gamma )
friend

Definition at line 165 of file EvtHelSys.cc.

165 {
166int j2=(int)(j*2*1.1),m2=(int)(m*2*1.1),n2=(int)(n*2*1.1);
167EvtComplex gp(cos(-phi*m ), -sin(phi*m));
168EvtComplex gm(cos(-gamma*n), -sin(gamma*n));
169double tp3=EvtdFunction::d(j2,m2,n2,theta);
170EvtComplex temp=gp * tp3 * gm;
171return temp;
172}
const Int_t n
int n2
Definition SD0Tag.cxx:55
static double d(int j, int m1, int m2, double theta)

◆ Djmn [2/2]

EvtComplex Djmn ( int j,
int m,
int n,
double phi,
double theta,
double gamma )
friend

Definition at line 151 of file EvtHelSys.cc.

151 {
152int j2=j*2,m2=m*2,n2=n*2;
153EvtComplex gp(cos(-phi*m ), -sin(phi*m));
154EvtComplex gm(cos(-gamma*n), -sin(gamma*n));
155double tp3=EvtdFunction::d(j2,m2,n2,theta);
156
157//EvtComplex temp=wignerD(j2,m2,n2,phi,theta,gamma); //wignerD is corrected by pingrg, 2007,04,28, it gives the same result as this definition
158
159EvtComplex temp=gp * tp3 * gm;
160
161return temp;
162}

◆ djmn [1/2]

double djmn ( double j,
double m,
double n,
double theta )
friend

Definition at line 144 of file EvtHelSys.cc.

144 {
145int j2=(int)(j*2*1.1),m2=(int)(m*2*1.1),n2=(int)(n*2*1.1);
146double temp=EvtdFunction::d(j2,m2,n2,theta);
147return temp;
148}

◆ djmn [2/2]

double djmn ( int j,
int m,
int n,
double theta )
friend

Definition at line 138 of file EvtHelSys.cc.

138 {
139int j2=j*2,m2=m*2,n2=n*2;
140double temp=EvtdFunction::d(j2,m2,n2,theta);
141return temp;
142}

The documentation for this class was generated from the following files: