1#ifndef __EVTSPINAMP_HH__
2#define __EVTSPINAMP_HH__
28 EvtSpinAmp(
const vector<EvtSpinType::spintype>& twospin );
30 EvtSpinAmp(
const vector<EvtSpinType::spintype>& twospin,
const vector<EvtComplex>& elem );
64 int rank( )
const {
return _twospin.size(); }
67 const vector<int> &
dims( )
const {
return _twospin; }
71 void addspin(
int twospin ) { _twospin.push_back( twospin ); }
72 void setelem(
const vector<EvtComplex> &elem ) { _elem = elem; }
74 bool iterate( vector<int>& index )
const;
77 bool allowed(
const vector<int>& index )
const;
83 void checkindexargs(
const vector<int>& index )
const;
84 void checktwospin(
const vector<int>& twospin )
const;
85 int findtrueindex(
const vector<int>& index )
const;
86 vector<int> calctwospin(
const vector<EvtSpinType::spintype>& type )
const;
88 vector<EvtSpinType::spintype> _type;
90 vector<EvtComplex> _elem;
EvtSpinAmp operator*(const EvtComplex &, const EvtSpinAmp &)
EvtSpinAmp operator/(const EvtSpinAmp &, const EvtComplex &)
friend std::ostream & operator<<(std::ostream &, const EvtSpinAmp &)
EvtComplex & operator()(const vector< int > &)
EvtSpinAmp & operator-=(const EvtSpinAmp &)
EvtSpinAmp & operator=(const EvtSpinAmp &)
vector< int > iterinit() const
void assign(const EvtComplex &val)
bool iterate(vector< int > &index) const
void addspin(int twospin)
bool iterateallowed(vector< int > &index) const
EvtSpinAmp & operator*=(const EvtSpinAmp &)
EvtSpinAmp operator+(const EvtSpinAmp &) const
vector< int > iterallowedinit() const
EvtSpinAmp & operator+=(const EvtSpinAmp &)
bool allowed(const vector< int > &index) const
void setelem(const vector< EvtComplex > &elem)
EvtSpinAmp & operator/=(const EvtComplex &)
friend EvtSpinAmp operator*(const EvtComplex &, const EvtSpinAmp &)
void extcont(const EvtSpinAmp &, int, int)
EvtSpinAmp operator-(const EvtSpinAmp &) const
friend EvtSpinAmp operator/(const EvtSpinAmp &, const EvtComplex &)
const vector< int > & dims() const