23 #ifndef WILSON_H_INCLUDED 24 #define WILSON_H_INCLUDED 50 void setCoefficient(
csl::Expr const& t_coefficient);
74 void setFactor(
csl::Expr const& t_factor);
77 void setExpression(
csl::Expr const& t_expression);
79 static bool hardComparison(
csl::Expr const& A,
97 return coef.getCoefficient() == CSL_0
98 or op.getExpression() == CSL_0;
101 void print(std::ostream& out = std::cout)
const {
102 out <<
"Operator : " << std::endl;
104 op.getExpression()->print(0, out);
106 coef.getCoefficient()->print(0, out);
110 return csl::prod_s({op.getFactor(), coef.getCoefficient(), op.getOp()});
123 using std::vector<Wilson>::vector;
130 std::vector<csl::Expr> obtainExpressions()
const {
131 std::vector<csl::Expr> res(size());
132 for (
size_t i = 0; i != size(); ++i) {
133 res[i] = (*this)[i].getExpression();
138 void merge(
bool sorted =
false);
140 static void sort(std::vector<Wilson> &wilsons);
141 static void mergeSorted(std::vector<Wilson> &wilsons);
145 std::vector<std::shared_ptr<wick::Graph>> graphs;
148 std::vector<Wilson> copyWilsons(std::vector<Wilson>
const &wilsons);
154 [](csl::Expr
const &A, csl::Expr
const &B) {
155 return (A == B) || csl::hardComparison(A, B);
158 void parseStructures(
160 std::vector<csl::Expr> &inOperator,
164 std::vector<csl::Expr> parseStructures(
168 std::vector<Wilson> cachedWilsonCalculation(
169 csl::Expr
const& product,
170 csl::Expr
const& operatorFactor,
177 std::vector<Wilson> sglSimplifyForWilson(
179 csl::Expr
const &operatorFactor,
185 std::vector<Wilson> parseExpression(
186 csl::Expr
const& product,
187 csl::Expr
const& operatorFactor = CSL_1,
188 bool standardBasis =
false,
189 bool recursive =
false 192 std::vector<Wilson> parseSum(
193 csl::Expr
const& sum,
194 csl::Expr
const& operatorFactor = CSL_1,
195 bool standardBasis =
false,
196 bool recursive =
false 201 std::vector<Wilson> &wilsons,
205 void addSortedWilson(
207 std::vector<Wilson> &wilsons
211 std::vector<csl::Expr> &litudes,
212 csl::Expr
const &operatorFactor,
213 bool standardBasis =
false,
214 bool squaredAfter =
false
void sort(std::vector< Expr > &argument)
std::ostream & operator<<(std::ostream &fout, csl::Type type)
Namespace of MARTY.
Definition: 2HDM.h:31
Instances of this class can be given to mty::Model when launching a calculation to customize the outp...
Definition: feynOptions.h:44
Contains the mty::Kinematics class.
Stores insertion and momenta data and provides a simple interface to manipulate it.
Definition: kinematics.h:39
Contains the FeynOptions object used by the mty::Model class to set calculation options.
bool operator==(const Expr &a, const Expr &b)