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 SemiSimpleAlgebra * | getAlgebra () 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< AlgebraState > | getRep () 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... | |
| AlgebraState & | operator[] (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 SemiSimpleAlgebra * | algebra |
| Pointer to the SemiSimpleAlgebra from which the Irrep is a representation. | |
| AlgebraState | highestWeight |
| Highest weight state of the representation. | |
| std::vector< AlgebraState > | rep |
| 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... | |
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.
| mty::Irrep::Irrep | ( | const SemiSimpleAlgebra * | t_algebra, |
| const std::vector< AlgebraState > & | t_rep, | ||
| const std::vector< int > & | multiplicities | ||
| ) |
Constructor with 3 parameters.
| t_algebra | A pointer to the SemiSimpleAlgebra of the Irrep. |
| t_rep | The set of AlgebraState in the representation in a std::vector. The highest weight state should be in the first position. |
| multiplicities | The multiplicities of each state in rep. The multiplicity of the highest weight state (position 0) should be 1. |
| vector< AlgebraState >::iterator mty::Irrep::begin | ( | ) |
| vector< AlgebraState >::const_iterator mty::Irrep::begin | ( | ) | const |
| bool mty::Irrep::empty | ( | ) | const |
| vector< AlgebraState >::iterator mty::Irrep::end | ( | ) |
| vector< AlgebraState >::const_iterator mty::Irrep::end | ( | ) | const |
| const SemiSimpleAlgebra * mty::Irrep::getAlgebra | ( | ) | const |
| 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].
| 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} \).
| 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, ...).
| 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.
| 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.
| 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().
| bool mty::Irrep::operator!= | ( | const Irrep & | other | ) | const |
Inverse of Irrep::operator==().
| other | Irrep to compare. |
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\).
| other | Right operand in the product of representation. |
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.\]
| other | Right operand in the product of representation. |
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.
| other | Second operand in the sum. |
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\).
| other | Second operand in the sum. |
| bool mty::Irrep::operator< | ( | const Irrep & | other | ) | const |
| bool mty::Irrep::operator<= | ( | const Irrep & | other | ) | const |
| 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.
| other | Irrep to compare. |
| bool mty::Irrep::operator> | ( | const Irrep & | other | ) | const |
| bool mty::Irrep::operator>= | ( | const Irrep & | other | ) | const |
| AlgebraState & mty::Irrep::operator[] | ( | int | i | ) |
Returns the state in position i. Bound checks are done.
| i | Index of the AlgebraState to get. |
| AlgebraState mty::Irrep::operator[] | ( | int | i | ) | const |
Returns the state in position i. Bound checks are done.
| i | Index of the AlgebraState to get. |
| 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();
|
friend |
1.8.13