Documentation of MARTY
A Modern ARtificial Theoretical phYsicist
Public Member Functions | Protected Attributes | Friends
mty::Irrep Class Reference

Handles the irreducible representation of a given semi-simple algebra. More...

#include <representation.h>

Public Member Functions

 Irrep ()
 Default constructor. Initializes an empty irrep.
 
 Irrep (const SemiSimpleAlgebra *t_algebra, const std::vector< AlgebraState > &t_rep, const std::vector< int > &multiplicities)
 Constructor with 3 parameters. More...
 
 ~Irrep ()
 Destructor.
 
size_t size () const
 Returns the size of the Irrep, i.e. the number of different states. More...
 
bool empty () const
 Tells if the Irrep is empty, i.e. contains no state. More...
 
std::vector< AlgebraState >::iterator begin ()
 
std::vector< AlgebraState >::const_iterator begin () const
 
std::vector< AlgebraState >::iterator end ()
 
std::vector< AlgebraState >::const_iterator end () const
 
const SemiSimpleAlgebragetAlgebra () const
 
int getDim () const
 The dimension of the representation is the sum of multiplicities of all states in it. More...
 
csl::Expr getCharge () const
 Returns the charge (csl::Expr, can be a fraction) of a \( U(1) \) representation. More...
 
AlgebraState getHighestWeight () const
 Returns the highest weight state of the representation. More...
 
std::vector< AlgebraStategetRep () const
 Returns all the states in the representation. More...
 
std::vector< int > getMult () const
 Returns the multiplicities in a std::vector of integers. More...
 
Irrep getConjugatedRep () const
 Creates and returns the conjugated rep, i.e. the rep with inverted dinkin labels. More...
 
AlgebraStateoperator[] (int i)
 Returns the state in position i. Bound checks are done. More...
 
AlgebraState operator[] (int i) const
 Returns the state in position i. Bound checks are done. More...
 
bool operator< (const Irrep &other) const
 Comparison operator, compares the dimension of the two Irrep in order to sort Irrep objects by their dimension. More...
 
bool operator> (const Irrep &other) const
 Comparison operator, compares the dimension of the two Irrep in order to sort Irrep objects by their dimension. More...
 
bool operator>= (const Irrep &other) const
 Comparison operator, compares the dimension of the two Irrep in order to sort Irrep objects by their dimension. More...
 
bool operator<= (const Irrep &other) const
 Comparison operator, compares the dimension of the two Irrep in order to sort Irrep objects by their dimension. More...
 
bool operator== (const Irrep &other) const
 Compares two Irreps. More...
 
bool operator!= (const Irrep &other) const
 Inverse of Irrep::operator==(). More...
 
SumIrrep operator+ (const Irrep &other) const
 Implements the sum of the Irrep with another (other), stores it in a SumIrrep and returns it. More...
 
SumIrrep operator+ (const SumIrrep &other) const
 Implements the sum of the Irrep with a SumIrrep (other), stores it in a SumIrrep and returns it. More...
 
SumIrrep operator* (const Irrep &other) const
 Calculates and returns the product of ***this** and other in the form of a sum of irreducible representations. More...
 
SumIrrep operator* (const SumIrrep &other) const
 Calculates and returns the product of ***this** and other in the form of a sum of irreducible representations. other being already a sum, the product is developped before being calculated. More...
 

Protected Attributes

int dim
 Dimension of the Irrep, i.e. the sum of all AlgebraState's mutiplicities.
 
const SemiSimpleAlgebraalgebra
 Pointer to the SemiSimpleAlgebra from which the Irrep is a representation.
 
AlgebraState highestWeight
 Highest weight state of the representation.
 
std::vector< AlgebraStaterep
 Set of AlgebraState in the representation, in a std::vector. The highest weight state is in position 0.
 
std::vector< int > mult
 Set of multiplicities in the the representation, to each state is associated a multiplicity. The highest weight's multiplicity is one.
 

Friends

std::ostream & operator<< (std::ostream &fout, const Irrep &irrep)
 Overload of the operator<< for Irrep. Displays the highest weight and the dimension. More...
 

Detailed Description

Handles the irreducible representation of a given semi-simple algebra.

The irrep is defined by a highest weight state, and all derived states (related by annihilation operators) with their multiplicities. This class is mostly a containor for the set of states (and their multiplicities) in the representation. Computations are done by SemiSimpleAlgebra.

Constructor & Destructor Documentation

◆ Irrep()

mty::Irrep::Irrep ( const SemiSimpleAlgebra t_algebra,
const std::vector< AlgebraState > &  t_rep,
const std::vector< int > &  multiplicities 
)

Constructor with 3 parameters.

Parameters
t_algebraA pointer to the SemiSimpleAlgebra of the Irrep.
t_repThe set of AlgebraState in the representation in a std::vector. The highest weight state should be in the first position.
multiplicitiesThe multiplicities of each state in rep. The multiplicity of the highest weight state (position 0) should be 1.

Member Function Documentation

◆ begin() [1/2]

vector< AlgebraState >::iterator mty::Irrep::begin ( )
Returns
An iterator to the beginning of rep, the std::vector of AlgebraState.

◆ begin() [2/2]

vector< AlgebraState >::const_iterator mty::Irrep::begin ( ) const
Returns
A const_iterator to the beginning of rep, the std::vector of AlgebraState.

◆ empty()

bool mty::Irrep::empty ( ) const

Tells if the Irrep is empty, i.e. contains no state.

Returns
True if the Irrep is empty.
False else.

◆ end() [1/2]

vector< AlgebraState >::iterator mty::Irrep::end ( )
Returns
An iterator to the end of rep, the std::vector of AlgebraState.

◆ end() [2/2]

vector< AlgebraState >::const_iterator mty::Irrep::end ( ) const
Returns
A const_iterator to the end of rep, the std::vector of AlgebraState.

◆ getAlgebra()

const SemiSimpleAlgebra * mty::Irrep::getAlgebra ( ) const
Returns
The pointer to the (const) SemiSimpleAlgebra of the Irrep.

◆ getCharge()

csl::Expr mty::Irrep::getCharge ( ) const

Returns the charge (csl::Expr, can be a fraction) of a \( U(1) \) representation.

This function should be called only for an Irrep of the R algebra, i.e. a \( U(1) \) representation. The function returns then a csl::Expr pointing to a csl::Integer (or a csl::IntFraction if the denominator is not one). The numerator is stored in highestWeight[0] and the denominator is stored in highestWeight[1].

Returns
The expression of the charge of the \( U(1) \) representation.

◆ getConjugatedRep()

Irrep mty::Irrep::getConjugatedRep ( ) const

Creates and returns the conjugated rep, i.e. the rep with inverted dinkin labels.

For a reprentation of labels \( a_i \), \(i\) from 0 to \(l-1\), the conjugated representation has labels \( c_i = a_{l-i-1} \).

Returns
The conjugated representation.

◆ getDim()

int mty::Irrep::getDim ( ) const

The dimension of the representation is the sum of multiplicities of all states in it.

This functions returns the total dimension of the representation , counting multiplicities. This is the physically relevant number we use to define representations (triplet, octet, doublet, ...).

Returns
The dimension of the representation.

◆ getHighestWeight()

AlgebraState mty::Irrep::getHighestWeight ( ) const

Returns the highest weight state of the representation.

The highest weight is the starting point to find all states in the representation applying annihilation operators. Its multiplicity is always 1. It is placed in the first position of the set of states in the representation. In particular, if irrep is an Irrep, irrep[0] and irrep.getHighestWeight() return the same state.

Returns
The highest weight state (an AlgebraState) of the Irrep.

◆ getMult()

vector< int > mty::Irrep::getMult ( ) const

Returns the multiplicities in a std::vector of integers.

Each multiplicity may be equal to 1 or greater. The multiplicity of the highesst weight state (in first position) is always 1. There is a 1 to 1 correspondance between the multiplicities returned by this function and the AlgebraStates returned by Irrep::getRep(). Taking the sum of the multiplicities, one gets the total dimension of the Irrep ( also given by Irrep::getDim()):

\[d = \sum _{s}m_s,\]

\( m_s \) the multiplicity of the state \( s \) summed over all states in the representation.

Returns
The set of multiplicities of all the states in the rep, mult.

◆ getRep()

vector< AlgebraState > mty::Irrep::getRep ( ) const

Returns all the states in the representation.

The highest weight state is always in first position, then come all states found in the chain rules. See SemiSimpleAlgebra::highestWeightRep() to have more informations about the process. Note that taking the number of states in the Irrep does not yield its dimension as some states may have a multiplicity different than \( 1 \). To have the dimension of the representation see Irrep::getDim().

Returns
The set of states in the Irrep, rep, in a std::vector.

◆ operator!=()

bool mty::Irrep::operator!= ( const Irrep other) const

Inverse of Irrep::operator==().

Parameters
otherIrrep to compare.
Returns
True if the two irreps are different.
False else.

◆ operator*() [1/2]

SumIrrep mty::Irrep::operator* ( const Irrep other) const

Calculates and returns the product of ***this** and other in the form of a sum of irreducible representations.

For more details on how the decomposition is determined from the two initial Irrep objects, see SemiSimpleAlgebra::tensorProduct(). For example in \( SU(3) \) we have

\[ 8\times 8=1\oplus 8\oplus 8\oplus 10 \oplus 10\oplus 27.\]

The two initial Irrep of dimension 8 give a total dimension of 64, decomposing into 5 irreducible representations of total dimension \(1+8+8+10+10+27=64\).

Parameters
otherRight operand in the product of representation.
Returns
The product decomposed in SumIrrep.

◆ operator*() [2/2]

SumIrrep mty::Irrep::operator* ( const SumIrrep other) const

Calculates and returns the product of ***this** and other in the form of a sum of irreducible representations. other being already a sum, the product is developped before being calculated.

See Irrep::operator*(Irrep const& other) for more details. Here the product is simply developped to get a sum of products of two Irrep. For example in \( SU(2) \)

\[ (1\oplus 3)\times 2 = (1\times 2)\oplus (3\times 2) = 2\oplus 2\oplus 4.\]

Parameters
otherRight operand in the product of representation.
Returns
The product decomposed in sum of Irrep.

◆ operator+() [1/2]

SumIrrep mty::Irrep::operator+ ( const Irrep other) const

Implements the sum of the Irrep with another (other), stores it in a SumIrrep and returns it.

For two representations \( \mathcal{R}_1 \) and \( \mathcal{R}_2 \), the sum is simply \( \mathcal{R}_1\oplus \mathcal{R}_2\), stored (and sorted by increasing dimension) in a SumIrrep.

Returns
True if other has a dimension less than *this.
False else.
Parameters
otherSecond operand in the sum.
Returns
The SumIrrep of ***this** and other.

◆ operator+() [2/2]

SumIrrep mty::Irrep::operator+ ( const SumIrrep other) const

Implements the sum of the Irrep with a SumIrrep (other), stores it in a SumIrrep and returns it.

Creates a SumIrrep similar to other and append to it the current Irrep *this. The new Irrep is then automatically inserted and sorted regarding its dimension. For example \((1\oplus 8\oplus 10)+8 = 1\oplus 8\oplus 8\oplus 10\).

Parameters
otherSecond operand in the sum.
Returns
The SumIrrep of ***this** and other.

◆ operator<()

bool mty::Irrep::operator< ( const Irrep other) const

Comparison operator, compares the dimension of the two Irrep in order to sort Irrep objects by their dimension.

Parameters
otherIrrep to compare.
Returns
True if *this has a dimension less than other.
False else.

◆ operator<=()

bool mty::Irrep::operator<= ( const Irrep other) const

Comparison operator, compares the dimension of the two Irrep in order to sort Irrep objects by their dimension.

Parameters
otherIrrep to compare.
Returns
False if other has a dimension less than *this.
True else.

◆ operator==()

bool mty::Irrep::operator== ( const Irrep other) const

Compares two Irreps.

If the algebras of the two Irrep are identical but different objects in memory, this function return false. For example \( SU(2)_{s} \) and \( SU(2)_L \) for spin and weak isospin have the same algebra but are different objects.

Parameters
otherIrrep to compare.
Returns
True if the two Irrep have the same highest weight, in the same algebra.
False else.

◆ operator>()

bool mty::Irrep::operator> ( const Irrep other) const

Comparison operator, compares the dimension of the two Irrep in order to sort Irrep objects by their dimension.

Parameters
otherIrrep to compare.
Returns
True if other has a dimension less than *this.
False else.

◆ operator>=()

bool mty::Irrep::operator>= ( const Irrep other) const

Comparison operator, compares the dimension of the two Irrep in order to sort Irrep objects by their dimension.

Parameters
otherIrrep to compare.
Returns
False if *this has a dimension less than other.
True else.

◆ operator[]() [1/2]

AlgebraState & mty::Irrep::operator[] ( int  i)

Returns the state in position i. Bound checks are done.

Parameters
iIndex of the AlgebraState to get.
Returns
A reference to the AlgebraState in position i of the rep.

◆ operator[]() [2/2]

AlgebraState mty::Irrep::operator[] ( int  i) const

Returns the state in position i. Bound checks are done.

Parameters
iIndex of the AlgebraState to get.
Returns
A the AlgebraState in position i of the rep.

◆ size()

size_t mty::Irrep::size ( ) const

Returns the size of the Irrep, i.e. the number of different states.

The size returned here does not count multiplicities. For example, the size of the gluon representation if 7 and not 8. For the total dimension of the representation see Irrep::getDim();

Returns
A size_t (long unsigned int), number of states in the irrep.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  fout,
const Irrep irrep 
)
friend

Overload of the operator<< for Irrep. Displays the highest weight and the dimension.

Parameters
foutOutput flux.
irrepIrrep to display.
Returns
The modified flux.

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