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

Base class for all Semi simple groups, i.e. groups that has a SemiSimpleAlgebra. More...

#include <group.h>

Inheritance diagram for mty::SemiSimpleGroup:
[legend]

Public Member Functions

 SemiSimpleGroup (const std::string &name)
 Constructor with one parameter. More...
 
 SemiSimpleGroup (const SemiSimpleAlgebra &t_algebra, const std::string &t_name)
 Constructor with two parameters. More...
 
 ~SemiSimpleGroup () override
 Destructor.
 
SemiSimpleAlgebragetAlgebra () const override
 Returns a pointer to the algebra of the group. More...
 
void setAlgebra (const SemiSimpleAlgebra &t_algebra)
 Replaces the algebra owned by the group. More...
 
Irrep highestWeightRep (const std::vector< int > &highestWeight) const override
 Returns an Irrep of highest weight highestWeight. More...
 
csl::Expr getQuadraticCasimir (const AlgebraState &highest) const
 Returns the expression (symbolic, rational number) of the quadratic Casimir operator for a representation. More...
 
Irrep getTrivialRep () const override
 Returns the trivial (dimension 1) representation of the group. More...
 
SumIrrep tensorProduct (const Irrep &rep1, const Irrep &rep2) const
 Computes the product of two representations and returns its decomposition in a sum of irreducible representations (SumIrrep). See SemiSimpleAlgebra::tensorProduct(). More...
 
SumIrrep tensorProduct (const std::initializer_list< int > &rep1, const std::initializer_list< int > &rep2) const
 Computes and the product of two representations and returns its decomposition in a sum of irreducible representations. See SemiSimpleAlgebra::tensorProduct(). More...
 
const csl::SpacegetVectorSpace (const Irrep &irrep) const override
 Returns the vector space (csl::Space) associated with a certain irreducible representation of the group. More...
 
AlgebraState getHighestWeight (const csl::Space *t_space) const override
 Searches and returns the highest weight of the representation living in t_space (csl::Space). More...
 
std::vector< const csl::Space * > getAllVectorSpace () const override
 Returns all vector spaces (csl::Space) created by the group. More...
 
csl::Index getCorrespondingIndex (const std::string &index_name, const QuantumFieldParent &parent) override
 Returns a csl::Index of the vector space corresponding to a given mty::QuantumFieldParent's representation of the group. More...
 
- Public Member Functions inherited from mty::AbstractGroup
 AbstractGroup (const std::string &t_name="")
 Constructor with one optional parameter. More...
 
 AbstractGroup (int t_dim, const std::string &t_name="")
 Constructor with two parameters. More...
 
virtual ~AbstractGroup ()
 Destructor.
 
virtual Irrep getAdjointRep () const
 Virtual function. Raises an error if called. See reimplementations.
 
virtual group::Type getType () const =0
 Returns the type of the group. See mty::group::Type. More...
 
mty::GaugedGroupgetGaugedGroup () const
 
void setGaugedGroup (mty::GaugedGroup *t_gauged)
 
std::string getName () const
 Returns the name of the group. More...
 
int getDim () const
 Returns the dimension (integer) of the group. More...
 

Protected Attributes

std::unique_ptr< SemiSimpleAlgebraalgebra
 Owner std::unique_ptr to the SemiSimpleAlgebra associated with the group.
 
std::vector< std::pair< AlgebraState, const csl::Space * > > vectorSpaces
 Association of AlgebraState (highest weights of irreps) and vector spaces. To each irrep (i.e. each highest weight) is associated a different and unique vector space (csl::Space). See getVectorSpace().
 
std::map< AlgebraState, csl::ExprquadraticCasimir
 Association of AlgebraState (highest weights of irreps) and quadratic Casimirs. To each irrep (i.e. each highest weight) is associated a quadratic casimir operator. It is computed the first time asked, and stored.
 
- Protected Attributes inherited from mty::AbstractGroup
int dim
 Dimension of the group.
 
std::string name
 Name of the group.
 
mty::GaugedGroupgauged
 

Detailed Description

Base class for all Semi simple groups, i.e. groups that has a SemiSimpleAlgebra.

This class handles the different vector spaces for different representations. Each time a new representation is asked, a csl::Space is created. Then, a same representation in the same group will live in the same csl::Space. All computations of representations and products use the features of SemiSimpleAlgebra.

Note
Two identical representations of two instances of SemiSimpleGroup (with the same algebra) will live in different vector spaces. For example, spin and weak-isospin will not mix, the two csl::Space will be totally independant.

Constructor & Destructor Documentation

◆ SemiSimpleGroup() [1/2]

mty::SemiSimpleGroup::SemiSimpleGroup ( const std::string &  name)
explicit

Constructor with one parameter.

Parameters
nameName of the group.

◆ SemiSimpleGroup() [2/2]

mty::SemiSimpleGroup::SemiSimpleGroup ( const SemiSimpleAlgebra t_algebra,
const std::string &  t_name 
)

Constructor with two parameters.

Parameters
t_algebraalgebra corresponding to the group.
t_namename of the group.

Member Function Documentation

◆ getAlgebra()

SemiSimpleAlgebra * mty::SemiSimpleGroup::getAlgebra ( ) const
overridevirtual

Returns a pointer to the algebra of the group.

Returns
A raw pointer to the algebra of the group.

Reimplemented from mty::AbstractGroup.

◆ getAllVectorSpace()

vector< const Space * > mty::SemiSimpleGroup::getAllVectorSpace ( ) const
overridevirtual

Returns all vector spaces (csl::Space) created by the group.

All vector spaces are put in a std::vector that is returned.

Returns
All vector spaces (const) created since the creation of the SemiSimpleGroup.

Implements mty::AbstractGroup.

◆ getCorrespondingIndex()

Index mty::SemiSimpleGroup::getCorrespondingIndex ( const std::string &  index_name,
const QuantumFieldParent parent 
)
overridevirtual

Returns a csl::Index of the vector space corresponding to a given mty::QuantumFieldParent's representation of the group.

The QuantumFieldParent is important to know which representation is wanted. For example in QCD, if 'g' is the gluon and 'q' a quark that are respectively in octet and triplet representations of a SemiSimpleGroup 'SU3_c',

SU3_c.getCorrespondingIndex("A", g);

will return an index in the adjoint representation (dimension 8), whereas

SU3_c.getCorrespondingIndex("a", q);

will return an index in the fundamental representation (dimension 3).

Parameters
index_nameName of the csl::Index.
parentQuantumFieldParent in which we search a representation of the group.
Returns
An index of name index_name living in the space of parent's representation of the group.

Implements mty::AbstractGroup.

◆ getHighestWeight()

AlgebraState mty::SemiSimpleGroup::getHighestWeight ( const csl::Space t_space) const
overridevirtual

Searches and returns the highest weight of the representation living in t_space (csl::Space).

If a representation living in t_space is found, its highest weight is returned. Else an error is raised.

Parameters
t_spaceVector space in which the representation lives.
Returns
The highest weight of the representation if found.

Reimplemented from mty::AbstractGroup.

◆ getQuadraticCasimir()

csl::Expr mty::SemiSimpleGroup::getQuadraticCasimir ( const AlgebraState highest) const

Returns the expression (symbolic, rational number) of the quadratic Casimir operator for a representation.

See SemiSimpleAlgebra::getQuadraticCasimir().

Parameters
irrepHighest weight state of the representation from which we want the Casimir.
Returns
The symbolic expression of the Casimir, a rational number.

◆ getTrivialRep()

mty::Irrep mty::SemiSimpleGroup::getTrivialRep ( ) const
overridevirtual

Returns the trivial (dimension 1) representation of the group.

Returns
The trivial Irrep of the group (see SemiSimpleAlgebra::getTrivialRep()).

Implements mty::AbstractGroup.

◆ getVectorSpace()

const Space * mty::SemiSimpleGroup::getVectorSpace ( const Irrep irrep) const
overridevirtual

Returns the vector space (csl::Space) associated with a certain irreducible representation of the group.

If the vector space of a representation identical to irrep (same highest weight) is found, it is returned. Else, a new vector space is created (csl::Space) and returned. The spaces created in this function are specialized in color::ColorSpace in order to implement trace properties in simplifications. See documentation of color::ColorSpace.

Note
 In this function only the highest weights of the irreps are compared. This means that a representation of \( F_4 \) may be successfully compared to a representation of \(A_4\) because they have the same number of labels.
Parameters
irrepRepresentation from which we want the vector space.
Returns
A pointer to the color::ColorSpace of the representation (creates the space if it had not already been created).

Implements mty::AbstractGroup.

◆ highestWeightRep()

mty::Irrep mty::SemiSimpleGroup::highestWeightRep ( const std::vector< int > &  highestWeight) const
overridevirtual

Returns an Irrep of highest weight highestWeight.

The group uses the function SemiSimpleAlgebra::highestWeightRep() of its algebra to create the representation and returns it.

Parameters
highestWeightHighest weight state of the representation.
Returns
The Irrep of highest weight highestWeight (see SemiSimpleAlgebra::highestWeightRep()).

Reimplemented from mty::AbstractGroup.

◆ setAlgebra()

void mty::SemiSimpleGroup::setAlgebra ( const SemiSimpleAlgebra t_algebra)

Replaces the algebra owned by the group.

t_algebra may be an r-value. This function simply creates (allocated memory with a unique_ptr) a new algebra identical to t_algebra.

Note
This function does not verify that the algebra corresponds indeed to the group. This function should not be called by the user as once a group has been created, in particular if representations have been defined, there is no reason for the algebra to change.
Parameters
t_algebraNew algebra of the group.

◆ tensorProduct() [1/2]

SumIrrep mty::SemiSimpleGroup::tensorProduct ( const Irrep rep1,
const Irrep rep2 
) const

Computes the product of two representations and returns its decomposition in a sum of irreducible representations (SumIrrep). See SemiSimpleAlgebra::tensorProduct().

Parameters
rep1First representation in the product.
rep2Second representation in the product.
Returns
A SumIrrep containing decomposition of the product in a direct sum of irreducible representations.

◆ tensorProduct() [2/2]

SumIrrep mty::SemiSimpleGroup::tensorProduct ( const std::initializer_list< int > &  rep1,
const std::initializer_list< int > &  rep2 
) const

Computes and the product of two representations and returns its decomposition in a sum of irreducible representations. See SemiSimpleAlgebra::tensorProduct().

Instead of taking representations, this function takes directly the dynkin labels of their highest weight state. It first call SemiSimpleAlgebra::highestWeightRep() to instantiate representations from their highest weight, and then computes the tensor product.

Parameters
rep1First representation in the product, caracterized by its dinkin labels in a std::vector of integers.
rep2Second representation in the product, caracterized by its dinkin labels in a std::vector of integers.
Returns
A SumIrrep containing decomposition of the product in a direct sum of irreducible representations.

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