ThePEG 2.3.0
|
The LorentzSpinor class is designed to store a spinor. More...
#include <LorentzSpinor.h>
Public Member Functions | |
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. | |
template<typename U > | |
LorentzSpinor (const LorentzSpinor< U > &other) | |
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 \(u_c=C\bar{u}^T\). | |
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 \(p\!\!\!\!\!\not\,\,\,+m\). | |
LorentzSpinor | helicityProjectionOperator (const Complex &gL, const Complex &gR) const |
Apply \(g^LP_L+g^RP_R\). | |
Functions to calculate certain currents. | |
template<typename ValueB > | |
auto | slash (const LorentzVector< ValueB > &p) const -> LorentzSpinor< decltype(p.t() *Value())> |
Apply \(p\!\!\!\!\!\not\). | |
template<typename ValueB > | |
auto | slash (const LorentzVector< complex< ValueB > > &p) const -> LorentzSpinor< decltype(ValueB() *Value())> |
Apply \(p\!\!\!\!\!\not\). | |
template<typename ValueB > | |
auto | leftCurrent (const LorentzSpinorBar< ValueB > &fb) const -> LorentzVector< decltype(fb.s3() *this->s2())> |
Calculate the left-handed current \(\bar{f}\gamma^\mu P_Lf\). | |
template<typename ValueB > | |
auto | rightCurrent (const LorentzSpinorBar< ValueB > &fb) const -> LorentzVector< decltype(fb.s1() *this->s4())> |
Calculate the right-handed current \(\bar{f}\gamma^\mu P_Rf\). | |
template<typename ValueB > | |
auto | vectorCurrent (const LorentzSpinorBar< ValueB > &fb) const -> LorentzVector< decltype(fb.s1() *this->s4())> |
Calculate the vector current \(\bar{f}\gamma^\mu f\). | |
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. | |
Functions to calculate certain scalars. | |
SpinorType | _type |
Type of spinor. | |
std::array< complex< Value >, 4 > | _spin |
Storage of the components. | |
template<typename ValueB > | |
auto | leftScalar (const LorentzSpinorBar< ValueB > &fb) const -> decltype(fb.s1() *this->s1()) |
Calculate the left-handed scalar \(\bar{f}P_Lf\). | |
template<typename ValueB > | |
auto | rightScalar (const LorentzSpinorBar< ValueB > &fb) const -> decltype(fb.s3() *this->s3()) |
Calculate the right-handed scalar \(\bar{f}P_Rf\). | |
template<typename ValueB > | |
auto | scalar (const LorentzSpinorBar< ValueB > &fb) const -> decltype(fb.s1() *this->s1()) |
Calculate the scalar \(\bar{f}f\). | |
template<typename ValueB > | |
auto | pseudoScalar (const LorentzSpinorBar< ValueB > &fb) const -> decltype(fb.s1() *this->s1()) |
Calculate the pseudoscalar \(\bar{f}\gamma_5f\). | |
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. | |
template<typename ValueB > | |
auto | sigma (const LorentzSpinorBar< ValueB > &fb) const -> LorentzTensor< decltype(ValueB() *Value())> |
Calculate the product with \(\sigma^{\mu\nu}\), i.e. | |
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
\[ \gamma_{i=1,2,3}=\left(\begin{array}{cc} 0 & \sigma_i \\ -\sigma_i & 0 \end{array}\right) \quad \gamma_0=\left(\begin{array}{cc} 0 & 1 \\ 1 & 0 \end{array}\right) \quad \gamma_5=\left(\begin{array}{cc} -1 & 0 \\ 0 & 1 \end{array}\right) \]
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.
|
inline |
Default zero constructor, optionally specifying t, the type.
Definition at line 79 of file LorentzSpinor.h.
|
inline |
Constructor with complex numbers specifying the components, optionally specifying s, the type.
Definition at line 85 of file LorentzSpinor.h.
|
inline |
Definition at line 91 of file LorentzSpinor.h.
LorentzSpinor ThePEG::Helicity::LorentzSpinor< Value >::conjugate | ( | ) | const |
Return the conjugated spinor \(u_c=C\bar{u}^T\).
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().
|
inline |
Calculate a general current with arbitary left and right couplings, i.e.
\(\bar{f}\gamma^\mu(c_lP_L+c_RP_R)f\)
fb | The barred spinor. |
left | The left coupling, \(c_L\). |
right | The right coupling, \(c_R\). |
Definition at line 392 of file LorentzSpinor.h.
References ThePEG::left(), and ThePEG::right().
|
inline |
Calculate a general scalar product with arbitary left and right couplings, i.e.
\(\bar{f}c_lP_L+c_RP_Rf\)
fb | The barred spinor. |
left | The left coupling, \(c_L\). |
right | The right coupling, \(c_R\). |
Definition at line 471 of file LorentzSpinor.h.
References ThePEG::left(), and ThePEG::right().
|
inline |
Apply \(g^LP_L+g^RP_R\).
Definition at line 269 of file LorentzSpinor.h.
References ThePEG::Helicity::LorentzSpinor< Value >::setS1(), ThePEG::Helicity::LorentzSpinor< Value >::setS2(), ThePEG::Helicity::LorentzSpinor< Value >::setS3(), and ThePEG::Helicity::LorentzSpinor< Value >::setS4().
|
inline |
Calculate the left-handed current \(\bar{f}\gamma^\mu P_Lf\).
fb | The barred spinor. |
Definition at line 327 of file LorentzSpinor.h.
|
inline |
Calculate the left-handed scalar \(\bar{f}P_Lf\).
fb | The barred spinor. |
Definition at line 422 of file LorentzSpinor.h.
|
inline |
Set components by index.
Definition at line 115 of file LorentzSpinor.h.
|
inline |
Subscript operator to return spinor components.
Definition at line 107 of file LorentzSpinor.h.
|
inline |
Definition at line 183 of file LorentzSpinor.h.
|
inline |
Definition at line 172 of file LorentzSpinor.h.
|
inline |
Definition at line 178 of file LorentzSpinor.h.
|
inline |
Definition at line 188 of file LorentzSpinor.h.
|
inline |
Set components by index.
Definition at line 123 of file LorentzSpinor.h.
|
inline |
Subscript operator to return spinor components.
Definition at line 99 of file LorentzSpinor.h.
|
inline |
Apply \(p\!\!\!\!\!\not\,\,\,+m\).
Definition at line 248 of file LorentzSpinor.h.
|
inline |
Calculate the pseudoscalar \(\bar{f}\gamma_5f\).
fb | The barred spinor. |
Definition at line 456 of file LorentzSpinor.h.
|
inline |
Calculate the right-handed current \(\bar{f}\gamma^\mu P_Rf\).
fb | The barred spinor. |
Definition at line 347 of file LorentzSpinor.h.
|
inline |
Calculate the right-handed scalar \(\bar{f}P_Rf\).
fb | The barred spinor. |
Definition at line 433 of file LorentzSpinor.h.
|
inline |
Get first component.
Definition at line 131 of file LorentzSpinor.h.
Referenced by ThePEG::Helicity::SpinorWaveFunction::s1().
|
inline |
Get second component.
Definition at line 136 of file LorentzSpinor.h.
Referenced by ThePEG::Helicity::SpinorWaveFunction::s2().
|
inline |
Get third component.
Definition at line 141 of file LorentzSpinor.h.
Referenced by ThePEG::Helicity::SpinorWaveFunction::s3().
|
inline |
Get fourth component.
Definition at line 146 of file LorentzSpinor.h.
Referenced by ThePEG::Helicity::SpinorWaveFunction::s4().
|
inline |
Calculate the scalar \(\bar{f}f\).
fb | The barred spinor. |
Definition at line 444 of file LorentzSpinor.h.
|
inline |
Set first component.
Definition at line 151 of file LorentzSpinor.h.
Referenced by ThePEG::Helicity::LorentzSpinor< Value >::helicityProjectionOperator().
|
inline |
Set second component.
Definition at line 156 of file LorentzSpinor.h.
Referenced by ThePEG::Helicity::LorentzSpinor< Value >::helicityProjectionOperator().
|
inline |
Set third component.
Definition at line 161 of file LorentzSpinor.h.
Referenced by ThePEG::Helicity::LorentzSpinor< Value >::helicityProjectionOperator().
|
inline |
Set fourth component.
Definition at line 166 of file LorentzSpinor.h.
Referenced by ThePEG::Helicity::LorentzSpinor< Value >::helicityProjectionOperator().
|
inline |
Calculate the product with \(\sigma^{\mu\nu}\), i.e.
\(\bar{f}\sigma^{\mu\nu}f\)
Definition at line 485 of file LorentzSpinor.h.
References ThePEG::ZERO.
|
inline |
Apply \(p\!\!\!\!\!\not\).
Definition at line 306 of file LorentzSpinor.h.
|
inline |
Apply \(p\!\!\!\!\!\not\).
Definition at line 286 of file LorentzSpinor.h.
|
inline |
General Lorentz transformation.
Definition at line 226 of file LorentzSpinor.h.
References ThePEG::LorentzRotation::half().
|
inline |
Return the type of the spinor.
Definition at line 237 of file LorentzSpinor.h.
Referenced by ThePEG::Helicity::SpinorWaveFunction::dimensionedWf().
|
inline |
Calculate the vector current \(\bar{f}\gamma^\mu f\).
fb | The barred spinor. |
Definition at line 367 of file LorentzSpinor.h.
|
private |
Storage of the components.
Definition at line 524 of file LorentzSpinor.h.
|
private |
Type of spinor.
Definition at line 519 of file LorentzSpinor.h.