#include <EvtHelSys.hh>
Public Member Functions | |
double | Angles (EvtVector4R, int) |
EvtVector4R | checkdaug () |
EvtVector4R | checkparent () |
EvtVector4R | checkst (int i) |
EvtHelSys (const EvtVector4R &p4p, const EvtVector4R &p4d) | |
EvtHelSys () | |
double | getHelAng (int i) |
EvtVector4R | Helrotate (EvtVector4R p1, double phi, double theta) |
virtual | ~EvtHelSys () |
Private Attributes | |
EvtVector4R | _bp4p |
EvtVector4R | _bst |
EvtVector4R | _p4daug |
EvtVector4R | _p4parent |
EvtVector4R | _rotatep4d |
EvtVector4R | _rotatep4p |
Friends | |
EvtComplex | Djmn (double j, double m, double n, double phi, double theta, double gamma) |
EvtComplex | Djmn (int j, int m, int n, double phi, double theta, double gamma) |
double | djmn (double j, double m, double n, double theta) |
double | djmn (int j, int m, int n, double theta) |
|
00043 { 00044 }
|
|
00051 { 00052 }
|
|
00046 { 00047 _p4parent=p4p; // parent momentum in its parent CM system 00048 _p4daug =p4d; // daughter momentum in its parent CM system 00049 }
|
|
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 }
|
|
00086 { return _p4daug;}
|
|
00085 { return _p4parent;}
|
|
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 }
|
|
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 }
|
|
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 }
|
|
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 }
|
|
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 }
|
|
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 }
|
|
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 }
|
|
|
|
|
|
|
|
|
|
|
|
|