BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
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 "EvtComplex.hh"
25// #include "EvtVector4C.hh"
26// #include "EvtTensor4C.hh"
27#include "EvtVector3R.hh"
28#include "EvtVector4R.hh"
29
30class EvtTensor4C;
31class EvtVector4C;
32class EvtDiracSpinor;
33EvtDiracSpinor rotateEuler( const EvtDiracSpinor& sp, double alpha, double beta,
34 double gamma );
36EvtDiracSpinor boostTo( const EvtDiracSpinor& sp, const EvtVector3R boost );
44 const EvtDiracSpinor& dp ); // u-bar sigma^{mu,nu} gamma_5
45 // 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//=====================
53
54 friend EvtDiracSpinor rotateEuler( const EvtDiracSpinor& sp, double alpha, double beta,
55 double gamma );
56 friend EvtDiracSpinor boostTo( const EvtDiracSpinor& sp, const EvtVector4R p4 );
57 friend EvtDiracSpinor boostTo( const EvtDiracSpinor& sp, const EvtVector3R boost );
58 friend EvtVector4C EvtLeptonVACurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp );
59 friend EvtVector4C EvtLeptonVCurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp );
60 friend EvtVector4C EvtLeptonACurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp );
61 friend EvtComplex EvtLeptonSCurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp );
62 friend EvtComplex EvtLeptonPCurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp );
63 friend EvtTensor4C EvtLeptonTCurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp );
65 friend EvtDiracSpinor operator+( const EvtDiracSpinor& u1, const EvtDiracSpinor& u2 );
66 friend EvtDiracSpinor operator-( const EvtDiracSpinor& u1, const EvtDiracSpinor& u2 );
67 friend EvtDiracSpinor operator*( const EvtComplex& c, const EvtDiracSpinor& d );
68
69 friend std::ostream& operator<<( std::ostream& s, const EvtDiracSpinor& c );
70
71public:
72 inline EvtDiracSpinor();
73 EvtDiracSpinor( const EvtComplex& sp0, const EvtComplex& sp1, const EvtComplex& sp2,
74 const EvtComplex& sp3 );
75 virtual ~EvtDiracSpinor();
76 inline EvtDiracSpinor( const EvtDiracSpinor& dspinor );
77 inline EvtDiracSpinor& operator=( const EvtDiracSpinor& dspinor );
78
79 inline EvtDiracSpinor& operator+=( const EvtDiracSpinor& u2 );
80 inline EvtDiracSpinor& operator-=( const EvtDiracSpinor& u2 );
81
82 void set( const EvtComplex& sp0, const EvtComplex& sp1, const EvtComplex& sp2,
83 const EvtComplex& sp3 );
84 void set_spinor( int i, const EvtComplex& sp );
85 const EvtComplex& get_spinor( int i ) const;
86 EvtDiracSpinor conj() const;
87 void applyRotateEuler( double alpha, double beta, double gamma );
88 void applyBoostTo( const EvtVector4R& p4 );
89 void applyBoostTo( const EvtVector3R& boost );
90 EvtDiracSpinor adjoint() const;
91
92private:
93 EvtComplex spinor[4];
94};
95
97
98 spinor[0] = EvtComplex();
99 spinor[1] = EvtComplex();
100 spinor[2] = EvtComplex();
101 spinor[3] = EvtComplex();
102}
103
105
106 spinor[0] = dspinor.spinor[0];
107 spinor[1] = dspinor.spinor[1];
108 spinor[2] = dspinor.spinor[2];
109 spinor[3] = dspinor.spinor[3];
110}
111
113
114 spinor[0] = dspinor.spinor[0];
115 spinor[1] = dspinor.spinor[1];
116 spinor[2] = dspinor.spinor[2];
117 spinor[3] = dspinor.spinor[3];
118
119 return *this;
120}
121
123
124 spinor[0] += u2.spinor[0];
125 spinor[1] += u2.spinor[1];
126 spinor[2] += u2.spinor[2];
127 spinor[3] += u2.spinor[3];
128
129 return *this;
130}
131
133
134 return EvtDiracSpinor( u1 ) += u2;
135}
136
138
139 spinor[0] -= u2.spinor[0];
140 spinor[1] -= u2.spinor[1];
141 spinor[2] -= u2.spinor[2];
142 spinor[3] -= u2.spinor[3];
143
144 return *this;
145}
146
148
149 return EvtDiracSpinor( u1 ) -= u2;
150}
151
152#endif
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)
double alpha
XmlRpcServer s
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)
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)
void applyBoostTo(const EvtVector4R &p4)
friend EvtComplex EvtLeptonPCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
friend EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
virtual ~EvtDiracSpinor()
void set_spinor(int i, const EvtComplex &sp)