BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtTensorParticle.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of the EvtGen package developed jointly
5// for the BaBar and CLEO collaborations. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/COPYRIGHT
9// Copyright (C) 1998 Caltech, UCSB
10//
11// Module: EvtTensorParticle.cc
12//
13// Description: Class to describe spin 2 particles.
14//
15// Modification history:
16//
17// DJL/RYD September 25,1996 Module created
18//
19//------------------------------------------------------------------------
20//
22#include <stdlib.h>
23#include <iostream>
24#include <math.h>
31
33
35
36 init(part_n,p4.get(0),p4.get(1)
37 ,p4.get(2),p4.get(3));
38
40
41
42}
43
44void EvtTensorParticle::init(EvtId part_n,double e,double px,double py,double pz){
45
46 _validP4=true;
47 setp(e,px,py,pz);
48 setpart_num(part_n);
49
50 eps[0].setdiag(0.0,-1.0/sqrt(6.0),-1.0/sqrt(6.0),
51 2.0/sqrt(6.0));
52 eps[1].setdiag(0.0,1.0/sqrt(2.0),-1.0/sqrt(2.0),0.0);
53 eps[2].setdiag(0.0,0.0,0.0,0.0);
54 eps[3].setdiag(0.0,0.0,0.0,0.0);
55 eps[4].setdiag(0.0,0.0,0.0,0.0);
56
57 eps[2].set(1,2,EvtComplex(1.0/sqrt(2.0),0.0));
58 eps[2].set(2,1,EvtComplex(1.0/sqrt(2.0),0.0));
59 eps[3].set(1,3,EvtComplex(1.0/sqrt(2.0),0.0));
60 eps[3].set(3,1,EvtComplex(1.0/sqrt(2.0),0.0));
61 eps[4].set(2,3,EvtComplex(1.0/sqrt(2.0),0.0));
62 eps[4].set(3,2,EvtComplex(1.0/sqrt(2.0),0.0));
63
65
66}
67
69
70 EvtTensor4C temp=eps[i];
71
72 temp.applyBoostTo(this->getP4());
73 return temp;
74
75} //epsParent
76
77
79
80 return eps[i];
81
82} //eps
83
84
85
87
88
89 static EvtVector4C eplus(0.0,-1.0/sqrt(2.0),EvtComplex(0.0,-1.0/sqrt(2.0)),0.0);
90 static EvtVector4C ezero(0.0,0.0,0.0,1.0);
91 static EvtVector4C eminus(0.0,1.0/sqrt(2.0),EvtComplex(0.0,-1.0/sqrt(2.0)),0.0);
92
93 static EvtTensor4C dPpp(directProd(eplus,eplus));
94 static EvtTensor4C dPp0(directProd(eplus,ezero));
95 static EvtTensor4C dP0p(directProd(ezero,eplus));
96 static EvtTensor4C dPpm(directProd(eplus,eminus));
97 static EvtTensor4C dP00(directProd(ezero,ezero));
98 static EvtTensor4C dPmp(directProd(eminus,eplus));
99 static EvtTensor4C dPmm(directProd(eminus,eminus));
100 static EvtTensor4C dPm0(directProd(eminus,ezero));
101 static EvtTensor4C dP0m(directProd(ezero,eminus));
102
103 static EvtTensor4C es0(conj(dPpp));
104 static EvtTensor4C es1(conj((1/sqrt(2.0))*dPp0 +(1/sqrt(2.0))*dP0p));
105 static EvtTensor4C es2(conj((1/sqrt(6.0))*dPpm +(2/sqrt(6.0))*dP00 +(1/sqrt(6.0))*dPmp));
106 static EvtTensor4C es3(conj((1/sqrt(2.0))*dPm0 +(1/sqrt(2.0))*dP0m));
107 static EvtTensor4C es4(conj(dPmm));
108
109
111 R.SetDim(5);
112
113 for (int j=0; j<5; j++) {
114 R.Set(0,j,cont(es0,eps[j]));
115 R.Set(1,j,cont(es1,eps[j]));
116 R.Set(2,j,cont(es2,eps[j]));
117 R.Set(3,j,cont(es3,eps[j]));
118 R.Set(4,j,cont(es4,eps[j]));
119 }
120 return R;
121
122}
123
124
126 double beta,
127 double gamma) const{
128
129 EvtTensor4C es[5];
130
131 static EvtVector4C eplus(0.0,-1.0/sqrt(2.0),EvtComplex(0.0,-1.0/sqrt(2.0)),0.0);
132 static EvtVector4C ezero(0.0,0.0,0.0,1.0);
133 static EvtVector4C eminus(0.0,1.0/sqrt(2.0),EvtComplex(0.0,-1.0/sqrt(2.0)),0.0);
134
135 eplus.applyRotateEuler(alpha,beta,gamma);
136 ezero.applyRotateEuler(alpha,beta,gamma);
137 eminus.applyRotateEuler(alpha,beta,gamma);
138
139 for (int i=0; i<5; i++) es[i].zero();
140
141 es[0]=directProd(eplus,eplus);
142 es[1] =(1/sqrt(2.0))*directProd(eplus,ezero)
143 +(1/sqrt(2.0))*directProd(ezero,eplus);
144 es[2] =(1/sqrt(6.0))*directProd(eplus,eminus)
145 +(2/sqrt(6.0))*directProd(ezero,ezero)
146 +(1/sqrt(6.0))*directProd(eminus,eplus);
147 es[3] =(1/sqrt(2.0))*directProd(eminus,ezero)
148 +(1/sqrt(2.0))*directProd(ezero,eminus);
149 es[4]=directProd(eminus,eminus);
150
151 for (int i=0; i<5; i++) es[i]=conj(es[i]);
152
154 R.SetDim(5);
155
156 for (int i=0; i<5; i++)
157 for (int j=0; j<5; j++)
158 R.Set(i,j,cont(es[i],eps[j]));
159
160 return R;
161
162}
163
164
165
166
167
168
169
170
Evt3Rank3C conj(const Evt3Rank3C &t2)
Definition: Evt3Rank3C.cc:175
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtComplex cont(const EvtTensor4C &t1, const EvtTensor4C &t2)
Definition: EvtTensor4C.cc:312
const double alpha
const DifNumber zero
Definition: EvtId.hh:27
void setLifetime()
Definition: EvtParticle.cc:93
const EvtVector4R & getP4() const
Definition: EvtParticle.cc:121
void setp(double e, double px, double py, double pz)
Definition: EvtParticle.hh:398
void setpart_num(EvtId particle_number)
Definition: EvtParticle.hh:400
void setdiag(double t00, double t11, double t22, double t33)
Definition: EvtTensor4C.cc:218
void set(int i, int j, const EvtComplex &c)
Definition: EvtTensor4C.hh:122
void applyBoostTo(const EvtVector4R &p4)
Definition: EvtTensor4C.cc:107
EvtTensor4C epsTensorParent(int i) const
EvtTensor4C epsTensor(int i) const
virtual ~EvtTensorParticle()
void init(EvtId part_n, double e, double px, double py, double pz)
EvtSpinDensity rotateToHelicityBasis() const
void applyRotateEuler(double alpha, double beta, double gamma)
Definition: EvtVector4C.cc:136
double get(int i) const
Definition: EvtVector4R.hh:179