BOSS 8.0.0
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 44 of file EvtHelSys.hh.

Constructor & Destructor Documentation

◆ ~EvtHelSys()

EvtHelSys::~EvtHelSys ( )
virtual

Definition at line 43 of file EvtHelSys.cc.

43{}

◆ EvtHelSys() [1/2]

EvtHelSys::EvtHelSys ( )

Definition at line 50 of file EvtHelSys.cc.

50{}

◆ EvtHelSys() [2/2]

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

Definition at line 45 of file EvtHelSys.cc.

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

Member Function Documentation

◆ Angles()

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

Definition at line 110 of file EvtHelSys.cc.

110 {
111
112 double rxy = sqrt( pow( bbst.get( 1 ), 2. ) + pow( bbst.get( 2 ), 2. ) );
113 if ( bbst.d3mag() <= 1e-10 )
114 {
115 if ( i == 0 ) return 0.;
116 else if ( i == 1 ) return 0.;
117 else if ( i == 2 ) return 0.;
118 else
119 {
120 cout << "Angles(i): i<=2" << endl;
121 abort();
122 }
123 }
124 else if ( rxy <= 1e-10 )
125 {
126 if ( i == 0 ) return bbst.d3mag();
127 if ( i == 1 ) return 0.;
128 if ( i == 2 ) return 0.;
129 else
130 {
131 cout << "Angles(i): i<=2" << endl;
132 abort();
133 }
134 }
135 else
136 {
137 double theta = acos( bbst.get( 3 ) / bbst.d3mag() );
138 double csphi = bbst.get( 1 ) / bbst.d3mag() / sin( theta );
139 if ( fabs( csphi ) > 1.0 ) csphi = csphi / fabs( csphi );
140 double phi = acos( csphi );
141 if ( bbst.get( 2 ) < 0.0 ) phi = 2 * 3.1415926 - phi;
142 if ( i == 0 ) return bbst.d3mag();
143 else if ( i == 1 ) return theta;
144 else if ( i == 2 ) return phi;
145 else
146 {
147 cout << "Angles(i): i<=2" << endl;
148 abort();
149 }
150 }
151}
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 85 of file EvtHelSys.cc.

85{ return _p4daug; }

◆ checkparent()

EvtVector4R EvtHelSys::checkparent ( )

Definition at line 84 of file EvtHelSys.cc.

84{ return _p4parent; }

◆ checkst()

EvtVector4R EvtHelSys::checkst ( int i)

Definition at line 86 of file EvtHelSys.cc.

86 {
87 getHelAng( 1 );
88 if ( i == 0 ) return _bp4p; // parent momentum used to boost the daughter to the CM sys.
89 if ( i == 1 ) return _rotatep4p; // the parent momentum in Hel system by rotation
90 if ( i == 2 ) return _rotatep4d; // the daughter momentum in Hel. system by rotation
91 if ( i == 3 ) return _bst; //_bst:daughter momentum in helicity system
92
93 std::cerr << __FILE__ << ":" << __LINE__ << ": should not reach here" << std::endl;
94 exit( 1 );
95}
double getHelAng(int i)
Definition EvtHelSys.cc:52

◆ getHelAng()

double EvtHelSys::getHelAng ( int i)

Definition at line 52 of file EvtHelSys.cc.

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

Referenced by 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(), EvtTauGamMu::decay(), EvtEvalHelAmp::evalAmp(), EvtConExc::meson_sampling(), EvtRexc::meson_sampling(), EvtConExc::VP_sampling(), and EvtRexc::VP_sampling().

◆ Helrotate()

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

Definition at line 97 of file EvtHelSys.cc.

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

Referenced by getHelAng().

◆ Djmn [1/2]

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

Definition at line 179 of file EvtHelSys.cc.

179 {
180 int j2 = (int)( j * 2 * 1.1 ), m2 = (int)( m * 2 * 1.1 ), n2 = (int)( n * 2 * 1.1 );
181 EvtComplex gp( cos( -phi * m ), -sin( phi * m ) );
182 EvtComplex gm( cos( -gamma * n ), -sin( gamma * n ) );
183 double tp3 = EvtdFunction::d( j2, m2, n2, theta );
184 EvtComplex temp = gp * tp3 * gm;
185 return temp;
186}
const Int_t n
int n2
Definition SD0Tag.cxx:59
static double d(int j, int m1, int m2, double theta)
double double * m2
Definition qcdloop1.h:83

◆ Djmn [2/2]

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

Definition at line 165 of file EvtHelSys.cc.

165 {
166 int j2 = j * 2, m2 = m * 2, n2 = n * 2;
167 EvtComplex gp( cos( -phi * m ), -sin( phi * m ) );
168 EvtComplex gm( cos( -gamma * n ), -sin( gamma * n ) );
169 double tp3 = EvtdFunction::d( j2, m2, n2, theta );
170
171 // EvtComplex temp=wignerD(j2,m2,n2,phi,theta,gamma); //wignerD is corrected by pingrg,
172 // 2007,04,28, it gives the same result as this definition
173
174 EvtComplex temp = gp * tp3 * gm;
175
176 return temp;
177}

◆ djmn [1/2]

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

Definition at line 159 of file EvtHelSys.cc.

159 {
160 int j2 = (int)( j * 2 * 1.1 ), m2 = (int)( m * 2 * 1.1 ), n2 = (int)( n * 2 * 1.1 );
161 double temp = EvtdFunction::d( j2, m2, n2, theta );
162 return temp;
163}

◆ djmn [2/2]

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

Definition at line 153 of file EvtHelSys.cc.

153 {
154 int j2 = j * 2, m2 = m * 2, n2 = n * 2;
155 double temp = EvtdFunction::d( j2, m2, n2, theta );
156 return temp;
157}

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