EvtGen
2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Toggle main menu visibility
Loading...
Searching...
No Matches
EvtGenBase
EvtDiracSpinor.hh
Go to the documentation of this file.
1
2
/***********************************************************************
3
* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4
* *
5
* This file is part of EvtGen. *
6
* *
7
* EvtGen is free software: you can redistribute it and/or modify *
8
* it under the terms of the GNU General Public License as published by *
9
* the Free Software Foundation, either version 3 of the License, or *
10
* (at your option) any later version. *
11
* *
12
* EvtGen is distributed in the hope that it will be useful, *
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15
* GNU General Public License for more details. *
16
* *
17
* You should have received a copy of the GNU General Public License *
18
* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19
***********************************************************************/
20
21
#ifndef EVTDIRACSPINOR_HH
22
#define EVTDIRACSPINOR_HH
23
24
#include "
EvtGenBase/EvtComplex.hh
"
25
#include "
EvtGenBase/EvtVector3R.hh
"
26
#include "
EvtGenBase/EvtVector4R.hh
"
27
28
class
EvtTensor4C
;
29
class
EvtVector4C
;
30
class
EvtDiracSpinor
;
31
32
class
EvtDiracSpinor
final {
33
friend
EvtDiracSpinor
rotateEuler
(
const
EvtDiracSpinor
& sp,
double
alpha,
34
double
beta,
double
gamma );
35
friend
EvtDiracSpinor
boostTo
(
const
EvtDiracSpinor
& sp,
36
const
EvtVector4R
p4 );
37
friend
EvtDiracSpinor
boostTo
(
const
EvtDiracSpinor
& sp,
38
const
EvtVector3R
boost );
39
friend
EvtVector4C
EvtLeptonVACurrent
(
const
EvtDiracSpinor
& d,
40
const
EvtDiracSpinor
& dp );
41
friend
EvtVector4C
EvtLeptonVCurrent
(
const
EvtDiracSpinor
& d,
42
const
EvtDiracSpinor
& dp );
43
friend
EvtVector4C
EvtLeptonACurrent
(
const
EvtDiracSpinor
& d,
44
const
EvtDiracSpinor
& dp );
45
friend
EvtComplex
EvtLeptonSCurrent
(
const
EvtDiracSpinor
& d,
46
const
EvtDiracSpinor
& dp );
47
friend
EvtComplex
EvtLeptonPCurrent
(
const
EvtDiracSpinor
& d,
48
const
EvtDiracSpinor
& dp );
49
friend
EvtTensor4C
EvtLeptonTCurrent
(
const
EvtDiracSpinor
& d,
50
const
EvtDiracSpinor
& dp );
51
friend
EvtDiracSpinor
operator+
(
const
EvtDiracSpinor
& u1,
52
const
EvtDiracSpinor
& u2 );
53
friend
EvtDiracSpinor
operator-
(
const
EvtDiracSpinor
& u1,
54
const
EvtDiracSpinor
& u2 );
55
friend
EvtDiracSpinor
operator*
(
const
EvtComplex
& c,
56
const
EvtDiracSpinor
& d );
57
58
friend
EvtComplex
operator*
(
const
EvtDiracSpinor
& d,
59
const
EvtDiracSpinor
& dp );
60
61
friend
std::ostream&
operator<<
( std::ostream& s,
const
EvtDiracSpinor
& c );
62
63
public
:
64
inline
EvtDiracSpinor
();
65
EvtDiracSpinor
(
const
EvtComplex
& sp0,
const
EvtComplex
& sp1,
66
const
EvtComplex
& sp2,
const
EvtComplex
& sp3 );
67
inline
EvtDiracSpinor
(
const
EvtDiracSpinor
& dspinor );
68
inline
EvtDiracSpinor
&
operator=
(
const
EvtDiracSpinor
& dspinor );
69
70
inline
EvtDiracSpinor
&
operator+=
(
const
EvtDiracSpinor
& u2 );
71
inline
EvtDiracSpinor
&
operator-=
(
const
EvtDiracSpinor
& u2 );
72
73
void
set
(
const
EvtComplex
& sp0,
const
EvtComplex
& sp1,
74
const
EvtComplex
& sp2,
const
EvtComplex
& sp3 );
75
void
set_spinor
(
int
i,
const
EvtComplex
& sp );
76
const
EvtComplex
&
get_spinor
(
int
i )
const
;
77
EvtDiracSpinor
conj
()
const
;
78
void
applyRotateEuler
(
double
alpha,
double
beta,
double
gamma );
79
void
applyBoostTo
(
const
EvtVector4R
& p4 );
80
void
applyBoostTo
(
const
EvtVector3R
& boost );
81
EvtDiracSpinor
adjoint
()
const
;
82
83
private
:
84
EvtComplex
m_spinor
[4];
85
};
86
87
EvtDiracSpinor::EvtDiracSpinor
()
88
{
89
m_spinor
[0] =
EvtComplex
();
90
m_spinor
[1] =
EvtComplex
();
91
m_spinor
[2] =
EvtComplex
();
92
m_spinor
[3] =
EvtComplex
();
93
}
94
95
EvtDiracSpinor::EvtDiracSpinor
(
const
EvtDiracSpinor
& dspinor )
96
{
97
m_spinor
[0] = dspinor.
m_spinor
[0];
98
m_spinor
[1] = dspinor.
m_spinor
[1];
99
m_spinor
[2] = dspinor.
m_spinor
[2];
100
m_spinor
[3] = dspinor.
m_spinor
[3];
101
}
102
103
EvtDiracSpinor
&
EvtDiracSpinor::operator=
(
const
EvtDiracSpinor
& dspinor )
104
{
105
m_spinor
[0] = dspinor.
m_spinor
[0];
106
m_spinor
[1] = dspinor.
m_spinor
[1];
107
m_spinor
[2] = dspinor.
m_spinor
[2];
108
m_spinor
[3] = dspinor.
m_spinor
[3];
109
110
return
*
this
;
111
}
112
113
inline
EvtDiracSpinor
&
EvtDiracSpinor::operator+=
(
const
EvtDiracSpinor
& u2 )
114
{
115
m_spinor
[0] += u2.
m_spinor
[0];
116
m_spinor
[1] += u2.
m_spinor
[1];
117
m_spinor
[2] += u2.
m_spinor
[2];
118
m_spinor
[3] += u2.
m_spinor
[3];
119
120
return
*
this
;
121
}
122
123
inline
EvtDiracSpinor
operator+
(
const
EvtDiracSpinor
& u1,
124
const
EvtDiracSpinor
& u2 )
125
{
126
return
EvtDiracSpinor
( u1 ) += u2;
127
}
128
129
inline
EvtDiracSpinor
&
EvtDiracSpinor::operator-=
(
const
EvtDiracSpinor
& u2 )
130
{
131
m_spinor
[0] -= u2.
m_spinor
[0];
132
m_spinor
[1] -= u2.
m_spinor
[1];
133
m_spinor
[2] -= u2.
m_spinor
[2];
134
m_spinor
[3] -= u2.
m_spinor
[3];
135
136
return
*
this
;
137
}
138
139
inline
EvtDiracSpinor
operator-
(
const
EvtDiracSpinor
& u1,
140
const
EvtDiracSpinor
& u2 )
141
{
142
return
EvtDiracSpinor
( u1 ) -= u2;
143
}
144
145
#endif
EvtComplex.hh
operator+
EvtDiracSpinor operator+(const EvtDiracSpinor &u1, const EvtDiracSpinor &u2)
Definition
EvtDiracSpinor.hh:123
operator-
EvtDiracSpinor operator-(const EvtDiracSpinor &u1, const EvtDiracSpinor &u2)
Definition
EvtDiracSpinor.hh:139
EvtVector3R.hh
EvtVector4R.hh
EvtComplex
Definition
EvtComplex.hh:29
EvtDiracSpinor
Definition
EvtDiracSpinor.hh:32
EvtDiracSpinor::operator*
friend EvtDiracSpinor operator*(const EvtComplex &c, const EvtDiracSpinor &d)
Definition
EvtDiracSpinor.cpp:317
EvtDiracSpinor::operator+=
EvtDiracSpinor & operator+=(const EvtDiracSpinor &u2)
Definition
EvtDiracSpinor.hh:113
EvtDiracSpinor::operator<<
friend std::ostream & operator<<(std::ostream &s, const EvtDiracSpinor &c)
EvtDiracSpinor::EvtLeptonVACurrent
friend EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
Definition
EvtDiracSpinor.cpp:178
EvtDiracSpinor::conj
EvtDiracSpinor conj() const
Definition
EvtDiracSpinor.cpp:168
EvtDiracSpinor::EvtLeptonTCurrent
friend EvtTensor4C EvtLeptonTCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
Definition
EvtDiracSpinor.cpp:271
EvtDiracSpinor::m_spinor
EvtComplex m_spinor[4]
Definition
EvtDiracSpinor.hh:84
EvtDiracSpinor::operator+
friend EvtDiracSpinor operator+(const EvtDiracSpinor &u1, const EvtDiracSpinor &u2)
Definition
EvtDiracSpinor.hh:123
EvtDiracSpinor::EvtLeptonACurrent
friend EvtVector4C EvtLeptonACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
Definition
EvtDiracSpinor.cpp:223
EvtDiracSpinor::operator-
friend EvtDiracSpinor operator-(const EvtDiracSpinor &u1, const EvtDiracSpinor &u2)
Definition
EvtDiracSpinor.hh:139
EvtDiracSpinor::operator-=
EvtDiracSpinor & operator-=(const EvtDiracSpinor &u2)
Definition
EvtDiracSpinor.hh:129
EvtDiracSpinor::get_spinor
const EvtComplex & get_spinor(int i) const
Definition
EvtDiracSpinor.cpp:60
EvtDiracSpinor::set
void set(const EvtComplex &sp0, const EvtComplex &sp1, const EvtComplex &sp2, const EvtComplex &sp3)
Definition
EvtDiracSpinor.cpp:39
EvtDiracSpinor::operator=
EvtDiracSpinor & operator=(const EvtDiracSpinor &dspinor)
Definition
EvtDiracSpinor.hh:103
EvtDiracSpinor::rotateEuler
friend EvtDiracSpinor rotateEuler(const EvtDiracSpinor &sp, double alpha, double beta, double gamma)
Definition
EvtDiracSpinor.cpp:65
EvtDiracSpinor::EvtDiracSpinor
EvtDiracSpinor()
Definition
EvtDiracSpinor.hh:87
EvtDiracSpinor::adjoint
EvtDiracSpinor adjoint() const
Definition
EvtDiracSpinor.cpp:327
EvtDiracSpinor::EvtLeptonSCurrent
friend EvtComplex EvtLeptonSCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
Definition
EvtDiracSpinor.cpp:247
EvtDiracSpinor::EvtLeptonVCurrent
friend EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
Definition
EvtDiracSpinor.cpp:208
EvtDiracSpinor::applyRotateEuler
void applyRotateEuler(double alpha, double beta, double gamma)
Definition
EvtDiracSpinor.cpp:139
EvtDiracSpinor::applyBoostTo
void applyBoostTo(const EvtVector4R &p4)
Definition
EvtDiracSpinor.cpp:87
EvtDiracSpinor::EvtLeptonPCurrent
friend EvtComplex EvtLeptonPCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
Definition
EvtDiracSpinor.cpp:259
EvtDiracSpinor::boostTo
friend EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
Definition
EvtDiracSpinor.cpp:73
EvtDiracSpinor::set_spinor
void set_spinor(int i, const EvtComplex &sp)
Definition
EvtDiracSpinor.cpp:48
EvtTensor4C
Definition
EvtTensor4C.hh:38
EvtVector3R
Definition
EvtVector3R.hh:26
EvtVector4C
Definition
EvtVector4C.hh:30
EvtVector4R
Definition
EvtVector4R.hh:29
Generated by
1.17.0