thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
ThePEG::Helicity::LorentzSpinor< Value > Class Template Reference

The LorentzSpinor class is designed to store a spinor. More...

#include <LorentzSpinor.h>

Inheritance diagram for ThePEG::Helicity::LorentzSpinor< Value >:

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 $\sigma^{\mu\nu}$, 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 $u_c=C\bar{u}^T$. More...
 
LorentzSpinorboost (double, double, double)
 Standard Lorentz boost specifying the components of the beta vector.
 
LorentzSpinorboost (const Boost &)
 Standard Lorentz boost specifying the beta vector.
 
LorentzSpinortransform (const SpinHalfLorentzRotation &)
 General Lorentz transformation.
 
LorentzSpinortransform (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$. More...
 
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$. More...
 
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$. 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 $\bar{f}P_Lf$. More...
 
template<typename ValueB >
auto rightScalar (const LorentzSpinorBar< ValueB > &fb) const -> decltype(fb.s3() *this->s3())
 Calculate the right-handed scalar $\bar{f}P_Rf$. More...
 
template<typename ValueB >
auto scalar (const LorentzSpinorBar< ValueB > &fb) const -> decltype(fb.s1() *this->s1())
 Calculate the scalar $\bar{f}f$. More...
 
template<typename ValueB >
auto pseudoScalar (const LorentzSpinorBar< ValueB > &fb) const -> decltype(fb.s1() *this->s1())
 Calculate the pseudoscalar $\bar{f}\gamma_5f$. 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.
 

Detailed Description

template<typename Value>
class ThePEG::Helicity::LorentzSpinor< Value >

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.

See also
LorentzSpinorBar
Author
Peter Richardson

Definition at line 71 of file LorentzSpinor.h.

Member Function Documentation

◆ conjugate()

template<typename Value>
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(), and ThePEG::Helicity::LorentzSpinor< double >::setS4().

◆ generalCurrent()

template<typename Value>
template<typename ValueB >
auto ThePEG::Helicity::LorentzSpinor< Value >::generalCurrent ( const LorentzSpinorBar< ValueB > &  fb,
Complex  left,
Complex  right 
) const -> LorentzVector<decltype(fb.s3()*this->s2())>
inline

Calculate a general current with arbitary left and right couplings, i.e.

$\bar{f}\gamma^\mu(c_lP_L+c_RP_R)f$

Parameters
fbThe barred spinor.
leftThe left coupling, $c_L$.
rightThe right coupling, $c_R$.

Definition at line 392 of file LorentzSpinor.h.

◆ generalScalar()

template<typename Value>
template<typename ValueB >
auto ThePEG::Helicity::LorentzSpinor< Value >::generalScalar ( const LorentzSpinorBar< ValueB > &  fb,
Complex  left,
Complex  right 
) const -> decltype(left*fb.s1()*this->s1())
inline

Calculate a general scalar product with arbitary left and right couplings, i.e.

$\bar{f}c_lP_L+c_RP_Rf$

Parameters
fbThe barred spinor.
leftThe left coupling, $c_L$.
rightThe right coupling, $c_R$.

Definition at line 471 of file LorentzSpinor.h.

◆ leftCurrent()

template<typename Value>
template<typename ValueB >
auto ThePEG::Helicity::LorentzSpinor< Value >::leftCurrent ( const LorentzSpinorBar< ValueB > &  fb) const -> LorentzVector<decltype(fb.s3()*this->s2())>
inline

Calculate the left-handed current $\bar{f}\gamma^\mu P_Lf$.

Parameters
fbThe barred spinor.

Definition at line 327 of file LorentzSpinor.h.

◆ leftScalar()

template<typename Value>
template<typename ValueB >
auto ThePEG::Helicity::LorentzSpinor< Value >::leftScalar ( const LorentzSpinorBar< ValueB > &  fb) const -> decltype(fb.s1()*this->s1())
inline

Calculate the left-handed scalar $\bar{f}P_Lf$.

Parameters
fbThe barred spinor.

Definition at line 422 of file LorentzSpinor.h.

◆ pseudoScalar()

template<typename Value>
template<typename ValueB >
auto ThePEG::Helicity::LorentzSpinor< Value >::pseudoScalar ( const LorentzSpinorBar< ValueB > &  fb) const -> decltype(fb.s1()*this->s1())
inline

Calculate the pseudoscalar $\bar{f}\gamma_5f$.

Parameters
fbThe barred spinor.

Definition at line 456 of file LorentzSpinor.h.

◆ rightCurrent()

template<typename Value>
template<typename ValueB >
auto ThePEG::Helicity::LorentzSpinor< Value >::rightCurrent ( const LorentzSpinorBar< ValueB > &  fb) const -> LorentzVector<decltype(fb.s1()*this->s4())>
inline

Calculate the right-handed current $\bar{f}\gamma^\mu P_Rf$.

Parameters
fbThe barred spinor.

Definition at line 347 of file LorentzSpinor.h.

◆ rightScalar()

template<typename Value>
template<typename ValueB >
auto ThePEG::Helicity::LorentzSpinor< Value >::rightScalar ( const LorentzSpinorBar< ValueB > &  fb) const -> decltype(fb.s3()*this->s3())
inline

Calculate the right-handed scalar $\bar{f}P_Rf$.

Parameters
fbThe barred spinor.

Definition at line 433 of file LorentzSpinor.h.

◆ scalar()

template<typename Value>
template<typename ValueB >
auto ThePEG::Helicity::LorentzSpinor< Value >::scalar ( const LorentzSpinorBar< ValueB > &  fb) const -> decltype(fb.s1()*this->s1())
inline

Calculate the scalar $\bar{f}f$.

Parameters
fbThe barred spinor.

Definition at line 444 of file LorentzSpinor.h.

◆ sigma()

template<typename Value>
template<typename ValueB >
auto ThePEG::Helicity::LorentzSpinor< Value >::sigma ( const LorentzSpinorBar< ValueB > &  fb) const -> LorentzTensor<decltype(fb.s1()*this->s1())>
inline

Calculate the product with $\sigma^{\mu\nu}$, i.e.

$\bar{f}\sigma^{\mu\nu}f$

Definition at line 485 of file LorentzSpinor.h.

◆ vectorCurrent()

template<typename Value>
template<typename ValueB >
auto ThePEG::Helicity::LorentzSpinor< Value >::vectorCurrent ( const LorentzSpinorBar< ValueB > &  fb) const -> LorentzVector<decltype(fb.s1()*this->s4())>
inline

Calculate the vector current $\bar{f}\gamma^\mu f$.

Parameters
fbThe barred spinor.

Definition at line 367 of file LorentzSpinor.h.


The documentation for this class was generated from the following file: