atlas  0.6
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
atlas::rootdata::RootSystem Class Reference

#include <rootdata.h>

Inheritance diagram for atlas::rootdata::RootSystem:
Inheritance graph
[legend]
Collaboration diagram for atlas::rootdata::RootSystem:
Collaboration graph
[legend]

Classes

struct  root_info
 

Public Member Functions

 RootSystem (const int_Matrix &Cartan_matrix)
 
 RootSystem (const RootSystem &rs, tags::DualTag)
 
size_t rank () const
 
unsigned long numPosRoots () const
 
unsigned long numRoots () const
 
int cartan (weyl::Generator i, weyl::Generator j) const
 
int_Matrix cartanMatrix () const
 
LieType Lie_type () const
 
int_Matrix cartanMatrix (const RootNbrList &sub) const
 Returns the Cartan matrix of the root subsystem with basis |rb|. More...
 
LieType Lie_type (RootNbrList sub) const
 
int_Vector root_expr (RootNbr alpha) const
 
int_Vector coroot_expr (RootNbr alpha) const
 
int level (RootNbr alpha) const
 
int colevel (RootNbr alpha) const
 
template<typename I , typename O >
void toRootBasis (I, I, O) const
 
template<typename I , typename O >
void toRootBasis (I, I, O, const RootNbrList &) const
 
template<typename I , typename O >
void toSimpleWeights (I, I, O, const RootNbrList &) const
 
bool is_simple_root (RootNbr alpha) const
 
bool is_posroot (RootNbr alpha) const
 
bool is_negroot (RootNbr alpha) const
 
RootNbr simpleRootNbr (weyl::Generator i) const
 
RootNbr posRootNbr (size_t alpha) const
 
RootNbr simpleRootIndex (size_t alpha) const
 
RootNbr posRootIndex (size_t alpha) const
 
RootNbr rootMinus (RootNbr alpha) const
 
RootNbr rt_abs (RootNbr alpha) const
 
RootNbrSet simpleRootSet () const
 
RootNbrList simpleRootList () const
 
RootNbrSet posRootSet () const
 
const Permutation & simple_root_permutation (weyl::Generator i) const
 
RankFlags descent_set (RootNbr alpha) const
 
RankFlags ascent_set (RootNbr alpha) const
 
size_t find_descent (RootNbr alpha) const
 
bool is_descent (weyl::Generator i, RootNbr alpha) const
 
bool is_ascent (weyl::Generator i, RootNbr alpha) const
 
RootNbr simple_reflected_root (weyl::Generator i, RootNbr r) const
 
void simple_reflect_root (weyl::Generator i, RootNbr &r) const
 
RootNbr permuted_root (const WeylWord &ww, RootNbr r) const
 
RootNbr permuted_root (RootNbr r, const WeylWord &ww) const
 
const Permutation & root_permutation (RootNbr alpha) const
 
bool isOrthogonal (RootNbr alpha, RootNbr beta) const
 
int bracket (RootNbr alpha, RootNbr beta) const
 
Permutation root_permutation (const Permutation &twist) const
 
Permutation extend_to_roots (const RootNbrList &simple_images) const
 
WeylWord reflectionWord (RootNbr r) const
 
matrix::Vector< int > pos_system_vec (const RootNbrList &Delta) const
 
RootNbrList simpleBasis (RootNbrSet rs) const
 
bool sumIsRoot (RootNbr alpha, RootNbr beta, RootNbr &gamma) const
 
bool sumIsRoot (RootNbr alpha, RootNbr beta) const
 
RootNbrSet long_orthogonalize (const RootNbrSet &rest) const
 Makes the orthogonal system |rset| into an equaivalent (for |refl_prod|) one that is additively closed inside the full root system. More...
 
RootNbrList high_roots () const
 

Private Types

typedef signed char byte
 
typedef matrix::Vector< byteByte_vector
 

Private Member Functions

byteCartan_entry (weyl::Generator i, weyl::Generator j)
 
const byteCartan_entry (weyl::Generator i, weyl::Generator j) const
 
Byte_vectorroot (RootNbr i)
 
Byte_vectorcoroot (RootNbr i)
 
const Byte_vectorroot (RootNbr i) const
 
const Byte_vectorcoroot (RootNbr i) const
 

Private Attributes

size_t rk
 
Byte_vector Cmat
 
std::vector< root_infori
 
int_Vector two_rho_in_simple_roots
 
std::vector< Permutation > root_perm
 Root permutations induced by reflections in all positive roots. More...
 

Member Typedef Documentation

typedef signed char atlas::rootdata::RootSystem::byte
private

Constructor & Destructor Documentation

atlas::rootdata::RootSystem::RootSystem ( const int_Matrix Cartan_matrix)
explicit
atlas::rootdata::RootSystem::RootSystem ( const RootSystem rs,
tags::DualTag   
)

Member Function Documentation

RankFlags atlas::rootdata::RootSystem::ascent_set ( RootNbr  alpha) const
inline
int atlas::rootdata::RootSystem::bracket ( RootNbr  alpha,
RootNbr  beta 
) const
int atlas::rootdata::RootSystem::cartan ( weyl::Generator  i,
weyl::Generator  j 
) const
inline
byte& atlas::rootdata::RootSystem::Cartan_entry ( weyl::Generator  i,
weyl::Generator  j 
)
inlineprivate
const byte& atlas::rootdata::RootSystem::Cartan_entry ( weyl::Generator  i,
weyl::Generator  j 
) const
inlineprivate
int_Matrix atlas::rootdata::RootSystem::cartanMatrix ( ) const
int_Matrix atlas::rootdata::RootSystem::cartanMatrix ( const RootNbrList sub) const

Returns the Cartan matrix of the root subsystem with basis |rb|.

int atlas::rootdata::RootSystem::colevel ( RootNbr  alpha) const
Byte_vector& atlas::rootdata::RootSystem::coroot ( RootNbr  i)
inlineprivate
const Byte_vector& atlas::rootdata::RootSystem::coroot ( RootNbr  i) const
inlineprivate
int_Vector atlas::rootdata::RootSystem::coroot_expr ( RootNbr  alpha) const
RankFlags atlas::rootdata::RootSystem::descent_set ( RootNbr  alpha) const
inline
Permutation atlas::rootdata::RootSystem::extend_to_roots ( const RootNbrList simple_images) const
size_t atlas::rootdata::RootSystem::find_descent ( RootNbr  alpha) const
inline
RootNbrList atlas::rootdata::RootSystem::high_roots ( ) const
bool atlas::rootdata::RootSystem::is_ascent ( weyl::Generator  i,
RootNbr  alpha 
) const
inline
bool atlas::rootdata::RootSystem::is_descent ( weyl::Generator  i,
RootNbr  alpha 
) const
inline
bool atlas::rootdata::RootSystem::is_negroot ( RootNbr  alpha) const
inline
bool atlas::rootdata::RootSystem::is_posroot ( RootNbr  alpha) const
inline
bool atlas::rootdata::RootSystem::is_simple_root ( RootNbr  alpha) const
inline
bool atlas::rootdata::RootSystem::isOrthogonal ( RootNbr  alpha,
RootNbr  beta 
) const
inline
int atlas::rootdata::RootSystem::level ( RootNbr  alpha) const
LieType atlas::rootdata::RootSystem::Lie_type ( ) const
LieType atlas::rootdata::RootSystem::Lie_type ( RootNbrList  sub) const
RootNbrSet atlas::rootdata::RootSystem::long_orthogonalize ( const RootNbrSet rset) const

Makes the orthogonal system |rset| into an equaivalent (for |refl_prod|) one that is additively closed inside the full root system.

This can be achieved by repeatedly replacing a pair of short roots spanning a B2 subsystem by a pair of long roots of that subsystem. Although we record no information about relative root lengths it is easily seen that the long roots in some B2 subsystem can never be short roots in another subsystem, so there is no need to assure newly created roots are inspected subsequently.

unsigned long atlas::rootdata::RootSystem::numPosRoots ( ) const
inline
unsigned long atlas::rootdata::RootSystem::numRoots ( ) const
inline
RootNbr atlas::rootdata::RootSystem::permuted_root ( const WeylWord &  ww,
RootNbr  r 
) const
inline
RootNbr atlas::rootdata::RootSystem::permuted_root ( RootNbr  r,
const WeylWord &  ww 
) const
inline
matrix::Vector< int > atlas::rootdata::RootSystem::pos_system_vec ( const RootNbrList Delta) const
RootNbr atlas::rootdata::RootSystem::posRootIndex ( size_t  alpha) const
inline
RootNbr atlas::rootdata::RootSystem::posRootNbr ( size_t  alpha) const
inline
RootNbrSet atlas::rootdata::RootSystem::posRootSet ( ) const
size_t atlas::rootdata::RootSystem::rank ( ) const
inline
WeylWord atlas::rootdata::RootSystem::reflectionWord ( RootNbr  r) const
Byte_vector& atlas::rootdata::RootSystem::root ( RootNbr  i)
inlineprivate
const Byte_vector& atlas::rootdata::RootSystem::root ( RootNbr  i) const
inlineprivate
int_Vector atlas::rootdata::RootSystem::root_expr ( RootNbr  alpha) const
const Permutation& atlas::rootdata::RootSystem::root_permutation ( RootNbr  alpha) const
inline
Permutation atlas::rootdata::RootSystem::root_permutation ( const Permutation &  twist) const
RootNbr atlas::rootdata::RootSystem::rootMinus ( RootNbr  alpha) const
inline
RootNbr atlas::rootdata::RootSystem::rt_abs ( RootNbr  alpha) const
inline
void atlas::rootdata::RootSystem::simple_reflect_root ( weyl::Generator  i,
RootNbr r 
) const
inline
RootNbr atlas::rootdata::RootSystem::simple_reflected_root ( weyl::Generator  i,
RootNbr  r 
) const
inline
const Permutation& atlas::rootdata::RootSystem::simple_root_permutation ( weyl::Generator  i) const
inline
RootNbrList atlas::rootdata::RootSystem::simpleBasis ( RootNbrSet  rs) const
RootNbr atlas::rootdata::RootSystem::simpleRootIndex ( size_t  alpha) const
inline
RootNbrList atlas::rootdata::RootSystem::simpleRootList ( ) const
RootNbr atlas::rootdata::RootSystem::simpleRootNbr ( weyl::Generator  i) const
inline
RootNbrSet atlas::rootdata::RootSystem::simpleRootSet ( ) const
bool atlas::rootdata::RootSystem::sumIsRoot ( RootNbr  alpha,
RootNbr  beta,
RootNbr gamma 
) const
bool atlas::rootdata::RootSystem::sumIsRoot ( RootNbr  alpha,
RootNbr  beta 
) const
inline
template<typename I , typename O >
void atlas::rootdata::RootSystem::toRootBasis ( first,
last,
out 
) const

In this template we assume that |I| is an |InputIterator| with |value_type| |RootNbr|, and that |O| is an |OutputIterator| with |value_type| |Weight|. We output via |out| the expressions of the roots numbered in |[first,last[| in the simple root basis.

template<typename I , typename O >
void atlas::rootdata::RootSystem::toRootBasis ( first,
last,
out,
const RootNbrList rb 
) const

In this template, |I| is an Input_iterator with |value_type| |RootNbr|, and |O| is an OutputIterator with |value_type| |Weight|. We assume that |rb| contains a basis of some sub rootsystem of |rd|, and that |I| inputs |RootNbr|s corresponding to roots in that subsystem. Then we write to |out| the expression of the root in the basis |rb|.

The idea is to use the coroots of the vectors in |rb| to get the expression of both the input roots and those from |rb| itself in the simple weight basis for |rb| (this is done by |toSimpleWeights| below); the latter matrix (the Cartan matrix of |rb|) is square, so we can then apply |baseChange|, which amounts to left-multiplication by the inverse of that Cartan matrix.

template<typename I , typename O >
void atlas::rootdata::RootSystem::toSimpleWeights ( first,
last,
out,
const RootNbrList rb 
) const

In this template we assume that |I| is an InputIterator with value type |RootNbr|, that |O| is an OutputIterator with |value_type| |Weight|, and that |rb| flags a basis for some sub rootsystem of our |RootSystem|. The range $[first,last)$ should access root numbers of roots in the subsystem. Then for each |v| in this range we output to |out| the expression of |v| in the simple weight basis of the root subsystem |rb|; this is obtained simply by taking scalar products with the coroots of the roots in |rb|.

Member Data Documentation

Byte_vector atlas::rootdata::RootSystem::Cmat
private
std::vector<root_info> atlas::rootdata::RootSystem::ri
private
size_t atlas::rootdata::RootSystem::rk
private
std::vector<Permutation> atlas::rootdata::RootSystem::root_perm
private

Root permutations induced by reflections in all positive roots.

int_Vector atlas::rootdata::RootSystem::two_rho_in_simple_roots
private

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