00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifdef __GNUC__
00029 #pragma interface
00030 #endif
00031
00032 #ifndef _math_symmetry_corrtab_h
00033 #define _math_symmetry_corrtab_h
00034
00035 #include <iostream>
00036
00037 #include <math/symmetry/pointgrp.h>
00038
00039
00040
00044 class CorrelationTable: public RefCount {
00045 private:
00046 Ref<PointGroup> group_;
00047 Ref<PointGroup> subgroup_;
00048
00049 int n_;
00050 int subn_;
00051 int *ngamma_;
00052 int **gamma_;
00053
00054 void clear();
00055 public:
00056 CorrelationTable();
00057
00059 CorrelationTable(const Ref<PointGroup>& group,
00060 const Ref<PointGroup>& subgroup);
00061
00062 ~CorrelationTable();
00063
00065 Ref<PointGroup> group() const { return group_; }
00067 Ref<PointGroup> subgroup() const { return subgroup_; }
00068
00072 int initialize_table(const Ref<PointGroup>& group,
00073 const Ref<PointGroup>& subgroup);
00074
00076 const char *error(int errcod);
00077
00079 int n() const { return n_; }
00081 int subn() const { return subn_; }
00083 int degen(int igamma) const;
00085 int subdegen(int igamma) const;
00087
00088 int ngamma(int igamma) const { return ngamma_[igamma]; }
00091 int gamma(int igamma, int i) const { return gamma_[igamma][i]; }
00092
00093 void print(std::ostream &o=ExEnv::out()) const;
00094 };
00095
00096
00097 #endif
00098
00099
00100
00101
00102