#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) |
Private Attributes | |
EvtVector4R | _p4parent |
EvtVector4R | _p4daug |
EvtVector4R | _bp4p |
EvtVector4R | _rotatep4p |
EvtVector4R | _rotatep4d |
EvtVector4R | _bst |
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) |
Definition at line 43 of file EvtHelSys.hh.
EvtHelSys::~EvtHelSys | ( | ) | [virtual] |
EvtHelSys::EvtHelSys | ( | ) |
EvtHelSys::EvtHelSys | ( | const EvtVector4R & | p4p, | |
const EvtVector4R & | p4d | |||
) |
double EvtHelSys::Angles | ( | EvtVector4R | , | |
int | ||||
) |
Definition at line 108 of file EvtHelSys.cc.
References EvtVector4R::d3mag(), EvtVector4R::get(), and sin().
Referenced by rhopifull::amps1(), rhopi::amps1(), VVS::amps1(), and getHelAng().
00108 { 00109 00110 double rxy=sqrt(pow(bbst.get(1),2.)+pow(bbst.get(2),2.)); 00111 if(bbst.d3mag()<=1e-10) { 00112 if(i==0) return 0.; 00113 else if (i==1) return 0.; 00114 else if (i==2) return 0.; 00115 else {cout<<"Angles(i): i<=2"<<endl;abort();} 00116 } 00117 else if(rxy<=1e-10){ 00118 if(i==0) return bbst.d3mag(); 00119 if(i==1) return 0.; 00120 if(i==2) return 0.; 00121 else {cout<<"Angles(i): i<=2"<<endl;abort();} 00122 } 00123 else { 00124 double theta=acos(bbst.get(3)/bbst.d3mag()); 00125 double csphi=bbst.get(1)/bbst.d3mag()/sin(theta); 00126 if(fabs(csphi)>1.0) csphi=csphi/fabs(csphi); 00127 double phi=acos(csphi); 00128 if(bbst.get(2)<0.0) phi=2*3.1415926-phi; 00129 if(i==0) return bbst.d3mag(); 00130 else if (i==1) return theta; 00131 else if (i==2) return phi; 00132 else {cout<<"Angles(i): i<=2"<<endl;abort();} 00133 } 00134 00135 }
EvtVector4R EvtHelSys::checkdaug | ( | ) |
EvtVector4R EvtHelSys::checkparent | ( | ) |
EvtVector4R EvtHelSys::checkst | ( | int | i | ) |
Definition at line 87 of file EvtHelSys.cc.
References _bp4p, _bst, _rotatep4d, _rotatep4p, and getHelAng().
00087 { 00088 getHelAng(1); 00089 if(i==0) return _bp4p; //parent momentum used to boost the daughter to the CM sys. 00090 if(i==1) return _rotatep4p; //the parent momentum in Hel system by rotation 00091 if(i==2) return _rotatep4d; //the daughter momentum in Hel. system by rotation 00092 if(i==3) return _bst; //_bst:daughter momentum in helicity system 00093 }
double EvtHelSys::getHelAng | ( | int | i | ) |
Definition at line 54 of file EvtHelSys.cc.
References _bst, _p4daug, _p4parent, _rotatep4d, _rotatep4p, Angles(), EvtVector4R::d3mag(), and Helrotate().
Referenced by EvtPsi3Sdecay::AngSam(), EvtConExc::baryon_sampling(), checkst(), EvtTauGamMu::decay(), EvtT2GV::decay(), EvtSPL::decay(), EvtP2GC2::decay(), EvtP2GC1::decay(), EvtP2GC0::decay(), EvtJPE::decay(), EvtJ2BB3::decay(), EvtJ2BB2::decay(), EvtJ2BB1::decay(), EvtHypWK::decay(), EvtHelPPJ::decay(), EvtDeBD::decay(), EvtChi2BB2::decay(), EvtChi2BB1::decay(), EvtChi1BB2::decay(), EvtChi1BB1::decay(), EvtChi0BB2::decay(), EvtChi0BB1::decay(), EvtAV2GV::decay(), EvtAngSamX::decay(), EvtAngSam::decay(), EvtEvalHelAmp::evalAmp(), EvtConExc::meson_sampling(), and EvtConExc::VP_sampling().
00054 { 00055 EvtVector4R b_p4p,rp4p, rp4d,boostdaug; 00056 EvtVector3R GetHelAng; 00057 while (_p4parent.d3mag()!=0) { 00058 00059 // b_p4p=-1 * _p4parent; //boost from Lab to HEL sys. required to reverse mom.Vec. 00060 // b_p4p.set(0,_p4parent.get(0)); 00061 // _bp4p=b_p4p; 00062 00063 // first to rotate the mother and daugher momentum to the helicity system 00064 double theta=Angles(_p4parent,1); 00065 double phi=Angles(_p4parent,2); 00066 00067 00068 rp4p=Helrotate(_p4parent,phi,theta); 00069 rp4d=Helrotate(_p4daug, phi,theta); 00070 00071 // then boos to the CM system 00072 // EvtVector4R r_p4p=-1*rp4p; //boost from Lab to HEL sys. required to reverse mom.Vec. 00073 // r_p4p.set(0,rp4p.get(0)); 00074 // boostdaug=boostTo(rp4d,r_p4p); 00075 00076 _rotatep4p=rp4p; 00077 _rotatep4d=rp4d; 00078 _bst=rp4d; 00079 // _bp4p=r_p4p; 00080 return Angles(_bst,i); //_bst:daughter momentum in helicity system, i=0==>|_bst|;i=1,2==>(theta,phi) 00081 } 00082 return Angles(_p4daug,i); 00083 }
EvtVector4R EvtHelSys::Helrotate | ( | EvtVector4R | p1, | |
double | phi, | |||
double | theta | |||
) |
Definition at line 96 of file EvtHelSys.cc.
References cos(), EvtVector4R::get(), EvtVector4R::set(), sin(), t(), and x.
Referenced by getHelAng().
00096 { 00097 EvtVector4R Rp; 00098 double cp=cos(phi); 00099 double sp=sin(phi); 00100 double ct=cos(theta); 00101 double st=sin(theta); 00102 double t=p1.get(0),x=p1.get(1), y=p1.get(2), z=p1.get(3); 00103 double xp=x*cp*ct+y*sp*ct-z*st,yp= -x*sp+y*cp,zp=x*cp*st+y*sp*st+z*ct; 00104 Rp.set(t,xp,yp,zp); 00105 return Rp; 00106 }
EvtComplex Djmn | ( | double | j, | |
double | m, | |||
double | n, | |||
double | phi, | |||
double | theta, | |||
double | gamma | |||
) | [friend] |
Definition at line 165 of file EvtHelSys.cc.
00165 { 00166 int j2=(int)(j*2*1.1),m2=(int)(m*2*1.1),n2=(int)(n*2*1.1); 00167 EvtComplex gp(cos(-phi*m ), -sin(phi*m)); 00168 EvtComplex gm(cos(-gamma*n), -sin(gamma*n)); 00169 double tp3=EvtdFunction::d(j2,m2,n2,theta); 00170 EvtComplex temp=gp * tp3 * gm; 00171 return temp; 00172 }
EvtComplex Djmn | ( | int | j, | |
int | m, | |||
int | n, | |||
double | phi, | |||
double | theta, | |||
double | gamma | |||
) | [friend] |
Definition at line 151 of file EvtHelSys.cc.
00151 { 00152 int j2=j*2,m2=m*2,n2=n*2; 00153 EvtComplex gp(cos(-phi*m ), -sin(phi*m)); 00154 EvtComplex gm(cos(-gamma*n), -sin(gamma*n)); 00155 double tp3=EvtdFunction::d(j2,m2,n2,theta); 00156 00157 //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 00158 00159 EvtComplex temp=gp * tp3 * gm; 00160 00161 return temp; 00162 }
double djmn | ( | double | j, | |
double | m, | |||
double | n, | |||
double | theta | |||
) | [friend] |
Definition at line 144 of file EvtHelSys.cc.
00144 { 00145 int j2=(int)(j*2*1.1),m2=(int)(m*2*1.1),n2=(int)(n*2*1.1); 00146 double temp=EvtdFunction::d(j2,m2,n2,theta); 00147 return temp; 00148 }
double djmn | ( | int | j, | |
int | m, | |||
int | n, | |||
double | theta | |||
) | [friend] |
Definition at line 138 of file EvtHelSys.cc.
00138 { 00139 int j2=j*2,m2=m*2,n2=n*2; 00140 double temp=EvtdFunction::d(j2,m2,n2,theta); 00141 return temp; 00142 }
EvtVector4R EvtHelSys::_bp4p [private] |
EvtVector4R EvtHelSys::_bst [private] |
EvtVector4R EvtHelSys::_p4daug [private] |
Definition at line 65 of file EvtHelSys.hh.
Referenced by checkdaug(), EvtHelSys(), and getHelAng().
EvtVector4R EvtHelSys::_p4parent [private] |
Definition at line 65 of file EvtHelSys.hh.
Referenced by checkparent(), EvtHelSys(), and getHelAng().
EvtVector4R EvtHelSys::_rotatep4d [private] |
EvtVector4R EvtHelSys::_rotatep4p [private] |