ThePEG
2.2.1
|
The LorentzSpinor class is designed to store a spinor. More...
#include <LorentzSpinor.h>
Public Member Functions | |
template<typename U > | |
LorentzSpinor (const LorentzSpinor< U > &other) | |
template<typename ValueB > | |
auto | sigma (const LorentzSpinorBar< ValueB > &fb) const -> LorentzTensor< decltype(fb.s1() *this->s1())> |
Calculate the product with , i.e. More... | |
Standard constructors. | |
LorentzSpinor (SpinorType t=SpinorType::unknown) | |
Default zero constructor, optionally specifying t, the type. | |
LorentzSpinor (complex< Value > a, complex< Value > b, complex< Value > c, complex< Value > d, SpinorType s=SpinorType::unknown) | |
Constructor with complex numbers specifying the components, optionally specifying s, the type. | |
Access the components. | |
complex< Value > | operator[] (int i) const |
Subscript operator to return spinor components. | |
complex< Value > | operator() (int i) const |
Subscript operator to return spinor components. | |
complex< Value > & | operator() (int i) |
Set components by index. | |
complex< Value > & | operator[] (int i) |
Set components by index. | |
complex< Value > | s1 () const |
Get first component. | |
complex< Value > | s2 () const |
Get second component. | |
complex< Value > | s3 () const |
Get third component. | |
complex< Value > | s4 () const |
Get fourth component. | |
void | setS1 (complex< Value > in) |
Set first component. | |
void | setS2 (complex< Value > in) |
Set second component. | |
void | setS3 (complex< Value > in) |
Set third component. | |
void | setS4 (complex< Value > in) |
Set fourth component. | |
Mathematical assignment operators. | |
template<typename ValueB > | |
LorentzSpinor< Value > & | operator+= (const LorentzSpinor< ValueB > &a) |
template<typename ValueB > | |
LorentzSpinor< Value > & | operator-= (const LorentzSpinor< ValueB > &a) |
LorentzSpinor< Value > & | operator*= (double a) |
LorentzSpinor< Value > & | operator/= (double a) |
Transformations. | |
LorentzSpinorBar< Value > | bar () const |
Return the barred spinor. | |
LorentzSpinor | conjugate () const |
Return the conjugated spinor . More... | |
LorentzSpinor & | boost (double, double, double) |
Standard Lorentz boost specifying the components of the beta vector. | |
LorentzSpinor & | boost (const Boost &) |
Standard Lorentz boost specifying the beta vector. | |
LorentzSpinor & | transform (const SpinHalfLorentzRotation &) |
General Lorentz transformation. | |
LorentzSpinor & | transform (const LorentzRotation &r) |
General Lorentz transformation. | |
Functions related to type. | |
SpinorType | Type () const |
Return the type of the spinor. | |
Functions to apply the projection operator | |
template<typename ValueB > | |
auto | projectionOperator (const LorentzVector< ValueB > &p, const ValueB &m) const -> LorentzSpinor< decltype(m *Value())> |
Apply . | |
LorentzSpinor | helicityProjectionOperator (const Complex &gL, const Complex &gR) const |
Apply . | |
Functions to calculate certain currents. | |
template<typename ValueB > | |
auto | slash (const LorentzVector< ValueB > &p) const -> LorentzSpinor< decltype(p.t() *Value())> |
Apply . | |
template<typename ValueB > | |
auto | slash (const LorentzVector< complex< ValueB > > &p) const -> LorentzSpinor< decltype(ValueB() *Value())> |
Apply . | |
template<typename ValueB > | |
auto | leftCurrent (const LorentzSpinorBar< ValueB > &fb) const -> LorentzVector< decltype(fb.s3() *this->s2())> |
Calculate the left-handed current . More... | |
template<typename ValueB > | |
auto | rightCurrent (const LorentzSpinorBar< ValueB > &fb) const -> LorentzVector< decltype(fb.s1() *this->s4())> |
Calculate the right-handed current . More... | |
template<typename ValueB > | |
auto | vectorCurrent (const LorentzSpinorBar< ValueB > &fb) const -> LorentzVector< decltype(fb.s1() *this->s4())> |
Calculate the vector current . More... | |
template<typename ValueB > | |
auto | generalCurrent (const LorentzSpinorBar< ValueB > &fb, Complex left, Complex right) const -> LorentzVector< decltype(fb.s3() *this->s2())> |
Calculate a general current with arbitary left and right couplings, i.e. More... | |
Functions to calculate certain scalars. | |
template<typename ValueB > | |
auto | leftScalar (const LorentzSpinorBar< ValueB > &fb) const -> decltype(fb.s1() *this->s1()) |
Calculate the left-handed scalar . More... | |
template<typename ValueB > | |
auto | rightScalar (const LorentzSpinorBar< ValueB > &fb) const -> decltype(fb.s3() *this->s3()) |
Calculate the right-handed scalar . More... | |
template<typename ValueB > | |
auto | scalar (const LorentzSpinorBar< ValueB > &fb) const -> decltype(fb.s1() *this->s1()) |
Calculate the scalar . More... | |
template<typename ValueB > | |
auto | pseudoScalar (const LorentzSpinorBar< ValueB > &fb) const -> decltype(fb.s1() *this->s1()) |
Calculate the pseudoscalar . More... | |
template<typename ValueB > | |
auto | generalScalar (const LorentzSpinorBar< ValueB > &fb, Complex left, Complex right) const -> decltype(left *fb.s1() *this->s1()) |
Calculate a general scalar product with arbitary left and right couplings, i.e. More... | |
Private Attributes | |
SpinorType | _type |
Type of spinor. | |
std::array< complex< Value >, 4 > | _spin |
Storage of the components. | |
The LorentzSpinor class is designed to store a spinor.
In addition to storing the components of the spinor, information is stored on the representation of the type of spinor, for example u or v type.
At the moment only one choice of the Dirac matrix representation is supported. For high-energy calculations the choice made by the HELAS collaboration is more efficient for numerical calculations. In this representation
The type of the spinor is also stored using the SpinorType enumeration. There are three types supported SpinorType::u, SpinorType::v, SpinorType::unknown. This information is intended mainly for use in the case of Majorana particles where matrix elements can be calculated with either u or v type spinors and knowledge of which was used will be needed in order to give the correct correlations. The SpinorType::unknowne is intended for cases where either the spinor for an off-shell line in a matrix element calculation or the information is genuinely unknown.
The LorentzSpinorBar class is also provided to store the barred spinor.
Definition at line 71 of file LorentzSpinor.h.
LorentzSpinor ThePEG::Helicity::LorentzSpinor< Value >::conjugate | ( | ) | const |
Return the conjugated spinor .
This operation transforms u-spinors to v-spinors and vice-versa and is required when dealing with majorana particles.
Referenced by ThePEG::Helicity::SpinorWaveFunction::conjugate(), and ThePEG::Helicity::LorentzSpinor< double >::setS4().
|
inline |
Calculate a general current with arbitary left and right couplings, i.e.
fb | The barred spinor. |
left | The left coupling, . |
right | The right coupling, . |
Definition at line 392 of file LorentzSpinor.h.
|
inline |
Calculate a general scalar product with arbitary left and right couplings, i.e.
fb | The barred spinor. |
left | The left coupling, . |
right | The right coupling, . |
Definition at line 471 of file LorentzSpinor.h.
|
inline |
Calculate the left-handed current .
fb | The barred spinor. |
Definition at line 327 of file LorentzSpinor.h.
|
inline |
Calculate the left-handed scalar .
fb | The barred spinor. |
Definition at line 422 of file LorentzSpinor.h.
|
inline |
Calculate the pseudoscalar .
fb | The barred spinor. |
Definition at line 456 of file LorentzSpinor.h.
|
inline |
Calculate the right-handed current .
fb | The barred spinor. |
Definition at line 347 of file LorentzSpinor.h.
|
inline |
Calculate the right-handed scalar .
fb | The barred spinor. |
Definition at line 433 of file LorentzSpinor.h.
|
inline |
Calculate the scalar .
fb | The barred spinor. |
Definition at line 444 of file LorentzSpinor.h.
|
inline |
|
inline |
Calculate the vector current .
fb | The barred spinor. |
Definition at line 367 of file LorentzSpinor.h.