00001 /*! 00002 \file 00003 \brief Class definitions and function declarations for the class InvolutionSet. 00004 */ 00005 /* 00006 This is involutions.h 00007 00008 Copyright (C) 2004,2005 Fokko du Cloux 00009 part of the Atlas of Reductive Lie Groups 00010 00011 See file main.cpp for full copyright notice 00012 */ 00013 00014 #ifndef INVOLUTIONS_H /* guard against multiple inclusions */ 00015 #define INVOLUTIONS_H 00016 00017 #include "involutions_fwd.h" 00018 00019 #include "complexredgp_fwd.h" 00020 #include "weyl.h" 00021 00022 namespace atlas { 00023 00024 /******** constant declarations *********************************************/ 00025 00026 namespace involutions { 00027 00028 const size_t UndefInvolution = ~0ul; 00029 00030 } 00031 00032 /******** function declarations *********************************************/ 00033 00034 /******** type definitions **************************************************/ 00035 00036 namespace involutions { 00037 00038 class InvolutionSet { 00039 00040 protected: 00041 00042 size_t d_size; 00043 size_t d_rank; 00044 std::vector<std::vector<size_t> > d_action; 00045 std::vector<size_t> d_cartan; 00046 std::vector<weyl::TwistedInvolution> d_involution; 00047 std::vector<weyl::TwistedInvolution> d_dualInvolution; 00048 00049 public: 00050 // constructors and destructors 00051 InvolutionSet(); 00052 00053 explicit InvolutionSet(complexredgp::ComplexReductiveGroup&); 00054 00055 virtual ~InvolutionSet() {} 00056 00057 // copy, assignment and swap 00058 void swap(InvolutionSet&); 00059 00060 // accessors 00061 size_t action(size_t s, size_t w) const { 00062 return d_action[s][w]; 00063 } 00064 00065 const weyl::TwistedInvolution& dualInvolution(size_t j) const { 00066 return d_dualInvolution[j]; 00067 } 00068 00069 const weyl::TwistedInvolution& involution(size_t j) const { 00070 return d_involution[j]; 00071 } 00072 00073 size_t involutionNbr(const weyl::TwistedInvolution&, const weyl::WeylGroup&) 00074 const; 00075 00076 const size_t rank() const { 00077 return d_rank; 00078 } 00079 00080 const size_t size() const { 00081 return d_size; 00082 } 00083 00084 // manipulators 00085 }; 00086 00087 } 00088 00089 } 00090 00091 #endif
1.3.9.1