MINT2
MultiQuarkContent.cpp
Go to the documentation of this file.
2 
3 using namespace std;
4 
6  : MINT::PolymorphVector<QuarkContent>(1)
7 {
8 }
10  : MINT::PolymorphVector<QuarkContent>(other)
11 {
12 }
13 
15  for(unsigned int i=0; i < this->size(); i++){
16  (*this)[i].antiThis();
17  }
18 }
19 
20 bool MultiQuarkContent::initFromString(const string& str){
21  unsigned int pos =str.find("non-qQ");
22  if(pos < str.size())return true;
23 
24  unsigned int posP = str.find("p(");
25  unsigned int posQ = str.find("q(");
26 
27  bool sc=true;
28  if(posP >= str.size() || posQ > str.size()){
29  sc &= (*this)[0].initFromString(str);
30  }else{
31  this->resize(2);
32  sc &= (*this)[0].initFromString(str.substr(posP, posQ));
33  sc &= (*this)[1].initFromString(str.substr(posQ, str.size()));
34  }
35  return sc;
36 }
37 
39  for(unsigned int i=0; i < this->size(); i++){
40  for(unsigned int j=0; j < other.size(); j++){
41  if( (*this)[i] == other[j] ) return true;
42  }
43  }
44  return false;
45 
46 }
47 void MultiQuarkContent::print(std::ostream& os) const{
48  os << "[";
49  for(unsigned int i=0; i < this->size(); i++){
50  if(i > 0 && i+1 < this->size()) os << ", ";
51  (*this)[i].print(os);
52  }
53  os << "]";
54 }
55 
57  if(this->size()*rhs.size() <= 1){
58  for(unsigned int i=0; i < this->size(); i++){
59  (*this)[i] += rhs[i];
60  }
61  }else{
62  MultiQuarkContent oldThis(*this);
63  this->clear();
64  for(unsigned int i=0; i < oldThis.size(); i++){
65  for(unsigned int j=0; j < rhs.size(); j++){
66  this->push_back(oldThis[i] + rhs[j]);
67  }
68  }
69  }
70  return *this;
71 }
73  if(this->size()*rhs.size() <= 1){
74  for(unsigned int i=0; i < this->size(); i++){
75  (*this)[i] -= rhs[i];
76  }
77  }else{
78  MultiQuarkContent oldThis(*this);
79  this->clear();
80  for(unsigned int i=0; i < oldThis.size(); i++){
81  for(unsigned int j=0; j < rhs.size(); j++){
82  this->push_back(oldThis[i] - rhs[j]);
83  }
84  }
85  }
86  return *this;
87 }
88 
90  MultiQuarkContent returnVal(*this);
91  returnVal += rhs;
92  return returnVal;
93 }
95  MultiQuarkContent returnVal(*this);
96  returnVal -= rhs;
97  return returnVal;
98 }
99 std::ostream& operator<<(std::ostream& st, const MultiQuarkContent& qc){
100  qc.print(st);
101  return st;
102 }
103 //
void push_back(const QuarkContent &c)
MultiQuarkContent & operator+=(const MultiQuarkContent &rhs)
bool initFromString(const std::string &str)
MultiQuarkContent & operator-=(const MultiQuarkContent &rhs)
MultiQuarkContent operator+(const MultiQuarkContent &rhs) const
std::ostream & operator<<(std::ostream &st, const MultiQuarkContent &qc)
MultiQuarkContent operator-(const MultiQuarkContent &rhs) const
bool compatible(const MultiQuarkContent &other) const
void print(std::ostream &os=std::cout) const