BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtSpinAmp.hh
Go to the documentation of this file.
1#ifndef __EVTSPINAMP_HH__
2#define __EVTSPINAMP_HH__
3
4#include "EvtComplex.hh"
5#include "EvtSpinType.hh"
6
7#include <vector>
8using std::vector;
9
10#include <cstdarg>
11
12class EvtSpinAmp;
16
18
19 friend EvtSpinAmp operator*( const EvtComplex&, const EvtSpinAmp& );
20 friend EvtSpinAmp operator*( const EvtSpinAmp&, const EvtComplex& );
21 friend EvtSpinAmp operator/( const EvtSpinAmp&, const EvtComplex& );
22 friend std::ostream& operator<<( std::ostream&, const EvtSpinAmp& );
23
24public:
26 EvtSpinAmp( const vector<EvtSpinType::spintype>& twospin );
27 EvtSpinAmp( const vector<EvtSpinType::spintype>& twospin, const EvtComplex& val );
28 EvtSpinAmp( const vector<EvtSpinType::spintype>& twospin, const vector<EvtComplex>& elem );
29 EvtSpinAmp( const EvtSpinAmp& );
30
32
33 // Input to the index functions are twice the magnetic quantum number
34 EvtComplex& operator()( const vector<int>& );
35 const EvtComplex& operator()( const vector<int>& ) const;
36 EvtComplex& operator()( int, ... );
37 const EvtComplex& operator()( int, ... ) const;
38
40
41 EvtSpinAmp operator+( const EvtSpinAmp& ) const;
43
44 EvtSpinAmp operator-( const EvtSpinAmp& ) const;
46
47 // Direct Product
48 EvtSpinAmp operator*( const EvtSpinAmp& ) const;
50
53
54 // Contraction of amplitudes
55 void intcont( int, int );
56 void extcont( const EvtSpinAmp&, int, int );
57
58 // assign this value to every member in the container
59 void assign( const EvtComplex& val ) { _elem.assign( _elem.size(), val ); }
60
61 // get the order of the container
62 int rank() const { return _twospin.size(); }
63
64 // get the dimension vector of the container
65 const vector<int>& dims() const { return _twospin; }
66
67 // set the elements and the dimensions of the vector - useful for something
68 // things eventough it is usually not the cleanest solution
69 void addspin( int twospin ) { _twospin.push_back( twospin ); }
70 void setelem( const vector<EvtComplex>& elem ) { _elem = elem; }
71
72 bool iterate( vector<int>& index ) const;
73 vector<int> iterinit() const;
74
75 bool allowed( const vector<int>& index ) const;
76 bool iterateallowed( vector<int>& index ) const;
77 vector<int> iterallowedinit() const;
78
79private:
80 void checkindexargs( const vector<int>& index ) const;
81 void checktwospin( const vector<int>& twospin ) const;
82 int findtrueindex( const vector<int>& index ) const;
83 vector<int> calctwospin( const vector<EvtSpinType::spintype>& type ) const;
84
85 vector<EvtSpinType::spintype> _type;
86 vector<int> _twospin;
87 vector<EvtComplex> _elem;
88};
89
90#endif // __EVTSPINAMP__
EvtSpinAmp operator*(const EvtComplex &, const EvtSpinAmp &)
Definition EvtSpinAmp.cc:21
EvtSpinAmp operator/(const EvtSpinAmp &, const EvtComplex &)
Definition EvtSpinAmp.cc:31
friend std::ostream & operator<<(std::ostream &, const EvtSpinAmp &)
Definition EvtSpinAmp.cc:8
EvtComplex & operator()(const vector< int > &)
EvtSpinAmp & operator-=(const EvtSpinAmp &)
EvtSpinAmp & operator=(const EvtSpinAmp &)
vector< int > iterinit() const
void assign(const EvtComplex &val)
Definition EvtSpinAmp.hh:59
bool iterate(vector< int > &index) const
void addspin(int twospin)
Definition EvtSpinAmp.hh:69
bool iterateallowed(vector< int > &index) const
EvtSpinAmp & operator*=(const EvtSpinAmp &)
EvtSpinAmp operator+(const EvtSpinAmp &) const
int rank() const
Definition EvtSpinAmp.hh:62
vector< int > iterallowedinit() const
EvtSpinAmp & operator+=(const EvtSpinAmp &)
bool allowed(const vector< int > &index) const
void setelem(const vector< EvtComplex > &elem)
Definition EvtSpinAmp.hh:70
EvtSpinAmp & operator/=(const EvtComplex &)
friend EvtSpinAmp operator*(const EvtComplex &, const EvtSpinAmp &)
Definition EvtSpinAmp.cc:21
void intcont(int, int)
void extcont(const EvtSpinAmp &, int, int)
EvtSpinAmp operator-(const EvtSpinAmp &) const
friend EvtSpinAmp operator/(const EvtSpinAmp &, const EvtComplex &)
Definition EvtSpinAmp.cc:31
const vector< int > & dims() const
Definition EvtSpinAmp.hh:65