Handles graphs for applying wick theorem. In this file lies the algorithm performing Wick contractions, i.e. that finds all different Feynman diagrams (with their numerical factor) that intervenes in a given process (i.e. correlation function). More...
Go to the source code of this file.
Data Structures | |
| class | mty::wick::Node |
| Represents a contractible mty::QuantumField in the context of Wick contraction. More... | |
| class | mty::wick::Vertex |
| Represents a Vertex in feynman diagrams, i.e. a set of Nodes at the same space-time point. More... | |
| class | mty::wick::ConnectedComponent |
| std::vector of Vertex that represents the connected component of a Graph. A Graph has typically one ConnectedComponent and free Vertices. More... | |
| class | mty::wick::Graph |
| Handles wick contractions. A graph contains Vertices, and is able to connect them in all possible ways returning the set of all possible Graph. More... | |
| class | mty::wick::WickCalculator |
| Class handling the full application of Wick theorem. Starts from an initial Graph fully disconnected, delegates contraction steps to the Graph class and handles the series of resulting Graphs (eliminates non physical ones, iterates the Graph::contractoinStep()...). More... | |
Namespaces | |
| mty | |
| Namespace of MARTY. | |
Functions | |
| void | mty::wick::contractNodes (const std::shared_ptr< Node > &node1, const std::shared_ptr< Node > &node2) |
| Contracts two Node together, i.e. sets the partner of each node equal to a std::weak_ptr to the other. More... | |
| bool | mty::wick::areDegenerate (const mty::QuantumField &f1, const mty::QuantumField &f2) |
| Tells if two mty::QuantumField are degenerate, i.e. have the same value in the contraction sens. They must be the same mty::QuantumField and have the same conjugation property. More... | |
| bool | mty::wick::areExactlyContractible (const mty::QuantumField &f1, const mty::QuantumField &f2) |
| Tells if the contraction of two mty::QuantumField is non zero. More... | |
| std::ostream & | mty::wick::operator<< (std::ostream &fout, const std::shared_ptr< Node > &node) |
| Overload of the operator<< for Node. More... | |
| bool | mty::wick::operator== (const std::shared_ptr< Node > &A, const std::shared_ptr< Node > &B) |
| Overload of operator== for sstd::shared_ptr<Node>. Compares the values of the two pointers. More... | |
| bool | mty::wick::comparePriority (const std::shared_ptr< Node > &A, const std::shared_ptr< Node > &B, const std::vector< csl::Tensor > &foundNodes) |
| bool | mty::wick::internal_comparePriority (const std::shared_ptr< Node > &A, const std::shared_ptr< Node > &B, const std::vector< csl::Tensor > &foundNodes) |
| std::vector< mty::QuantumField > | mty::wick::convertExprToFields (const csl::Expr &expr) |
| Converts a csl csl::Expr that is just a product of field into a std::vector of mty::QuantumField objects. More... | |
| int | mty::wick::countFermions (std::vector< const mty::QuantumField *>::const_iterator begin, std::vector< const mty::QuantumField *>::const_iterator end) |
| Counts the number of fermions in a std::vector of mty::QuantumField. More... | |
| int | mty::wick::getCommutationSign (const std::vector< mty::QuantumField > &A, std::vector< const mty::QuantumField *> B) |
| Computes and returns the sign cost of the commutation of two sets of mty::QuantumField. \( sgn = (-1)^{N_c}\), with \( N_c \) the number of fermion permutations necessary to Transform A to B. More... | |
| int | mty::wick::getCommutationSign (const std::vector< const mty::QuantumField *> &A, std::vector< const mty::QuantumField *> B) |
| csl::vector_expr | mty::wick::convertGraphsToCorrelators (const std::vector< std::shared_ptr< Graph >> &diagrams, std::vector< mty::FeynruleMomentum > &witnessMapping, bool ruleMode=true) |
| Converts a std::vector of fully connected graphs into a std::vector of expressions (one expression per graph) via Graph::getExpression(). More... | |
Handles graphs for applying wick theorem. In this file lies the algorithm performing Wick contractions, i.e. that finds all different Feynman diagrams (with their numerical factor) that intervenes in a given process (i.e. correlation function).
| bool mty::wick::areDegenerate | ( | const mty::QuantumField & | f1, |
| const mty::QuantumField & | f2 | ||
| ) |
Tells if two mty::QuantumField are degenerate, i.e. have the same value in the contraction sens. They must be the same mty::QuantumField and have the same conjugation property.
Example: \( \psi^*(X)_{\alpha} \) and \( \psi(Y)_{\beta} \) are contractible together but not degenerate. \( \psi^*(X)_{\alpha} \) and \( \psi^*(Y)_{\beta} \) are not contractible together but are degenerate.
| f1 | First mty::QuantumField to compare. |
| f2 | Second mty::QuantumField to compare. |
| bool mty::wick::areExactlyContractible | ( | const mty::QuantumField & | f1, |
| const mty::QuantumField & | f2 | ||
| ) |
Tells if the contraction of two mty::QuantumField is non zero.
| f1 | First mty::QuantumField in the contraction. |
| f2 | Second mty::QuantumField in the contraction. |
| void mty::wick::contractNodes | ( | const std::shared_ptr< Node > & | node1, |
| const std::shared_ptr< Node > & | node2 | ||
| ) |
Contracts two Node together, i.e. sets the partner of each node equal to a std::weak_ptr to the other.
| node1 | std::shared_ptr to the first Node. |
| node2 | std::shared_ptr to the second Node. |
| vector< QuantumField > mty::wick::convertExprToFields | ( | const csl::Expr & | expr | ) |
Converts a csl csl::Expr that is just a product of field into a std::vector of mty::QuantumField objects.
This function raises an error if it finds an object in the product that is neither a mty::QuantumField nor a positive Integer power of mty::QuantumField. If a field appears in a power, it is put as many times in the vector as its integer power.
| expr | csl::Expr product of quantum fields to convert. |
| csl::vector_expr mty::wick::convertGraphsToCorrelators | ( | const std::vector< std::shared_ptr< Graph >> & | diagrams, |
| std::vector< mty::FeynruleMomentum > & | witnessMapping, | ||
| bool | ruleMode = true |
||
| ) |
Converts a std::vector of fully connected graphs into a std::vector of expressions (one expression per graph) via Graph::getExpression().
| diagrams | Fully connected graphs to convert. |
| int mty::wick::countFermions | ( | std::vector< const mty::QuantumField *>::const_iterator | begin, |
| std::vector< const mty::QuantumField *>::const_iterator | end | ||
| ) |
Counts the number of fermions in a std::vector of mty::QuantumField.
| begin | Begin iterator of the std::vector of mty::QuantumField. |
| end | End iterator of the std::vector of mty::QuantumField. |
| int mty::wick::getCommutationSign | ( | const std::vector< mty::QuantumField > & | A, |
| std::vector< const mty::QuantumField *> | B | ||
| ) |
Computes and returns the sign cost of the commutation of two sets of mty::QuantumField. \( sgn = (-1)^{N_c}\), with \( N_c \) the number of fermion permutations necessary to Transform A to B.
| A | Initial order of fields. |
| B | Same field content as A but in a different order. |
| std::ostream& mty::wick::operator<< | ( | std::ostream & | fout, |
| const std::shared_ptr< Node > & | node | ||
| ) |
Overload of the operator<< for Node.
| fout | Output flux. |
| node | Node to display in a std::shared_ptr. |
| bool mty::wick::operator== | ( | const std::shared_ptr< Node > & | A, |
| const std::shared_ptr< Node > & | B | ||
| ) |
Overload of operator== for sstd::shared_ptr<Node>. Compares the values of the two pointers.
| A | First std::shared_ptr to Node to compare. |
| B | Second std::shared_ptr to Node to compare. |
1.8.13