BOSS 7.0.9
BESIII Offline Software System
Loading...
Searching...
No Matches
BesEvtGen-00-04-08/src/EvtGen/EvtGenBase/EvtDiracSpinor.hh
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: EvtGen/EvtDiracSpinor.hh
12//
13// Description:Class to manipulate dirac spinors
14//
15// Modification history:
16//
17// DJL/RYD September 25, 1996 Module created
18//
19//------------------------------------------------------------------------
20
21#ifndef EVTDIRACSPINOR_HH
22#define EVTDIRACSPINOR_HH
23
24#include "EvtGenBase/EvtComplex.hh"
25//#include "EvtGenBase/EvtVector4C.hh"
26//#include "EvtGenBase/EvtTensor4C.hh"
27#include "EvtGenBase/EvtVector4R.hh"
28#include "EvtGenBase/EvtVector3R.hh"
29
30class EvtTensor4C;
31class EvtVector4C;
32class EvtDiracSpinor ;
34 double alpha,double beta,double gamma);
36 const EvtVector4R p4);
38 const EvtVector3R boost);
45EvtTensor4C EvtLeptonTg5Current(const EvtDiracSpinor& d,const EvtDiracSpinor& dp);// u-bar sigma^{mu,nu} gamma_5 v,pingrg
46inline EvtDiracSpinor operator+(const EvtDiracSpinor& u1, const EvtDiracSpinor& u2);
47inline EvtDiracSpinor operator-(const EvtDiracSpinor& u1, const EvtDiracSpinor& u2);
48std::ostream& operator<<(std::ostream& s, const EvtDiracSpinor& c);
50
51//=====================
52class EvtDiracSpinor {
53
55 double alpha,double beta,double gamma);
56 friend EvtDiracSpinor boostTo(const EvtDiracSpinor& sp,
57 const EvtVector4R p4);
58 friend EvtDiracSpinor boostTo(const EvtDiracSpinor& sp,
59 const EvtVector3R boost);
61 (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
63 (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
65 (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
67 (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
69 (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
71 (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
73 (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
75 const EvtDiracSpinor& u2);
77 const EvtDiracSpinor& u2);
78 friend EvtDiracSpinor operator*(const EvtComplex& c,
79 const EvtDiracSpinor& d);
80
81 friend std::ostream& operator<<(std::ostream& s, const EvtDiracSpinor& c);
82
83public:
84
86 EvtDiracSpinor(const EvtComplex& sp0,const EvtComplex& sp1,
87 const EvtComplex& sp2,const EvtComplex& sp3);
88 virtual ~EvtDiracSpinor();
89 inline EvtDiracSpinor(const EvtDiracSpinor& dspinor);
90 inline EvtDiracSpinor& operator=(const EvtDiracSpinor& dspinor);
91
94
95 void set(const EvtComplex& sp0,const EvtComplex& sp1,
96 const EvtComplex& sp2,const EvtComplex& sp3);
97 void set_spinor(int i,const EvtComplex& sp);
98 const EvtComplex& get_spinor(int i) const;
100 void applyRotateEuler(double alpha,double beta,double gamma);
101 void applyBoostTo(const EvtVector4R& p4);
102 void applyBoostTo(const EvtVector3R& boost);
104
105private:
106
107 EvtComplex spinor[4];
108
109};
110
112
113 spinor[0]=EvtComplex(); spinor[1]=EvtComplex();
114 spinor[2]=EvtComplex(); spinor[3]=EvtComplex();
115
116}
117
119
120 spinor[0]=dspinor.spinor[0];
121 spinor[1]=dspinor.spinor[1];
122 spinor[2]=dspinor.spinor[2];
123 spinor[3]=dspinor.spinor[3];
124
125}
126
128
129 spinor[0]=dspinor.spinor[0];
130 spinor[1]=dspinor.spinor[1];
131 spinor[2]=dspinor.spinor[2];
132 spinor[3]=dspinor.spinor[3];
133
134 return *this;
135
136}
137
139
140 spinor[0]+=u2.spinor[0];
141 spinor[1]+=u2.spinor[1];
142 spinor[2]+=u2.spinor[2];
143 spinor[3]+=u2.spinor[3];
144
145 return *this;
146}
147
149 const EvtDiracSpinor& u2){
150
151 return EvtDiracSpinor(u1)+=u2;
152
153}
154
156
157 spinor[0]-=u2.spinor[0];
158 spinor[1]-=u2.spinor[1];
159 spinor[2]-=u2.spinor[2];
160 spinor[3]-=u2.spinor[3];
161
162 return *this;
163}
164
166 const EvtDiracSpinor& u2){
167
168 return EvtDiracSpinor(u1)-=u2;
169
170}
171
172#endif
173
174
EvtDiracSpinor operator*(const EvtComplex &c, const EvtDiracSpinor &d)
std::ostream & operator<<(std::ostream &s, const EvtDiracSpinor &c)
EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtTensor4C EvtLeptonTCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtDiracSpinor operator+(const EvtDiracSpinor &u1, const EvtDiracSpinor &u2)
EvtVector4C EvtLeptonACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtDiracSpinor operator-(const EvtDiracSpinor &u1, const EvtDiracSpinor &u2)
EvtTensor4C EvtLeptonTg5Current(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtDiracSpinor rotateEuler(const EvtDiracSpinor &sp, double alpha, double beta, double gamma)
EvtComplex EvtLeptonSCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtComplex EvtLeptonPCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
const double alpha
XmlRpcServer s
Definition: HelloServer.cpp:11
friend EvtDiracSpinor operator*(const EvtComplex &c, const EvtDiracSpinor &d)
EvtDiracSpinor & operator+=(const EvtDiracSpinor &u2)
friend std::ostream & operator<<(std::ostream &s, const EvtDiracSpinor &c)
friend EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtDiracSpinor conj() const
friend EvtTensor4C EvtLeptonTCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
friend EvtDiracSpinor operator+(const EvtDiracSpinor &u1, const EvtDiracSpinor &u2)
friend EvtVector4C EvtLeptonACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtDiracSpinor(const EvtComplex &sp0, const EvtComplex &sp1, const EvtComplex &sp2, const EvtComplex &sp3)
friend EvtDiracSpinor operator-(const EvtDiracSpinor &u1, const EvtDiracSpinor &u2)
friend EvtTensor4C EvtLeptonTg5Current(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtDiracSpinor & operator-=(const EvtDiracSpinor &u2)
const EvtComplex & get_spinor(int i) const
void set(const EvtComplex &sp0, const EvtComplex &sp1, const EvtComplex &sp2, const EvtComplex &sp3)
EvtDiracSpinor & operator=(const EvtDiracSpinor &dspinor)
friend EvtDiracSpinor rotateEuler(const EvtDiracSpinor &sp, double alpha, double beta, double gamma)
EvtDiracSpinor adjoint() const
friend EvtComplex EvtLeptonSCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
friend EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
void applyRotateEuler(double alpha, double beta, double gamma)
EvtDiracSpinor(const EvtDiracSpinor &dspinor)
void applyBoostTo(const EvtVector4R &p4)
void applyBoostTo(const EvtVector3R &boost)
virtual ~EvtDiracSpinor()
friend EvtComplex EvtLeptonPCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
friend EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
void set_spinor(int i, const EvtComplex &sp)