Class encapsulating necesarry data to place conjugation matrices in amplitudes when treating Majorana fermions. More...
#include <fermionFlow.h>
Public Types | |
| enum | Type { Undefined, External, Internal } |
| Type of ConjugationInfo. More... | |
| using | FieldList = std::vector< mty::QuantumField const * > |
| Quick definition of the data structure for a field list in this file. | |
Public Member Functions | |
| ConjugationInfo () | |
| Constructs an empty ConjugationInfo. Will do nothing. More... | |
| ConjugationInfo (csl::Index const &t_A, bool t_conjugated) | |
| Constructs a ConjugationInfo for an external leg. More... | |
| ConjugationInfo (csl::Index const &t_A, csl::Index const &t_B, csl::Index const &t_preA, csl::Index const &t_postB) | |
| Constructs a ConjugationInfo for a part of a fermion chain. More... | |
| ~ConjugationInfo ()=default | |
| Default constructor. | |
| ConjugationInfo (ConjugationInfo const &)=default | |
| Default copy constructor. More... | |
| ConjugationInfo (ConjugationInfo &&)=default | |
| Default move constructor. More... | |
| ConjugationInfo & | operator= (ConjugationInfo const &)=default |
| Default copy assignement operator. More... | |
| ConjugationInfo & | operator= (ConjugationInfo &&)=default |
| Default move assignement operator. More... | |
| Type | getType () const |
| Returns the type. | |
| csl::Index | getA () const |
| Returns the first index of the ConjugationInfo. | |
| csl::Index | getB () const |
| Returns the second index of the ConjugationInfo, has a meaning only for Internal ConjugationInfo. | |
| csl::Index | getPreA () const |
| Returns the index before A in the chain, has a meaning only for Internal ConjugationInfo. | |
| csl::Index | getPostB () const |
| Returns the index after B in the chain, has a meaning only for Internal ConjugationInfo. | |
| bool | getConjugated () const |
| Returns the conjugation of the ConjugationInfo, has a meaning only for External ConjugationInfo. | |
| void | setInfo (csl::Index const &t_A, bool t_conjugated) |
| Sets info for an external ConjugationInfo. See the corresponding constructor for more info. More... | |
| void | setInfo (csl::Index const &t_A, csl::Index const &t_B, csl::Index const &t_preA, csl::Index const &t_postB) |
| Sets info for an internal ConjugationInfo. See the corresponding constructor for more info. More... | |
| void | apply (csl::Expr &expr, bool ruleMode, std::vector< FermionLine > const &lines) const |
| Applies the conjugation on the underlying expression. More... | |
Static Public Member Functions | |
| static ConjugationList | resolveFermionLines (FieldList init, FieldList const &ruleOrder, bool ruleMode) |
| Resolves all fermion lines in a set of fields. More... | |
| static ConjugationList | resolveFermionLines (FieldList const &init, std::vector< QuantumField > const &ruleOrder, bool ruleMode) |
| Resolves all fermion lines in a set of fields. More... | |
| static void | simplify (ConjugationList &infoList, bool ruleMode) |
| Simplifies a set of ConjugationInfo, merging the consecutive ones. More... | |
| static void | applyConjugation (ConjugationList infoList, csl::Expr &expr, bool ruleMode) |
Static Public Attributes | |
| static constexpr size_t | maxFermionLines = 3 |
| Maximum number of fermion lines in a diagram. More... | |
Protected Member Functions | |
| void | insertInChain (csl::Expr &expr) const |
| void | insertInChainForRule (csl::Expr &expr, std::vector< FermionLine > const &lines) const |
| void | insertExternal (csl::Expr &expr) const |
Protected Attributes | |
| Type | type |
| Type of ConjugationInfo. Can be external (external leg) or internal (part of gamma-matrices chain). | |
| csl::Index | A |
| First (or only for External type) index of the chain. | |
| csl::Index | B |
| Second index of the chain, not valued for External ConjugationInfo. | |
| csl::Index | preA |
| Index before A in the chain, not valued for External ConjugationInfo. | |
| csl::Index | postB |
| Index after B in the chain, not valued for External ConjugationInfo. | |
| bool | conjugated |
| Boolean for External ConjugationInfo, tells if the external leg is complex conjugated. | |
Class encapsulating necesarry data to place conjugation matrices in amplitudes when treating Majorana fermions.
Type of ConjugationInfo.
| Enumerator | |
|---|---|
| Undefined | Undefined ConjugationInfo. |
| External | Conjugation of an external leg. |
| Internal | Conjugation of a part of a gamma-matrices chain. |
| mty::ConjugationInfo::ConjugationInfo | ( | ) |
Constructs an empty ConjugationInfo. Will do nothing.
|
explicit |
Constructs a ConjugationInfo for an external leg.
| t_A | Index of the external leg to conjugate. |
| t_conjugated | Boolean that must be true if the external leg is initially complex conjugated. |
| mty::ConjugationInfo::ConjugationInfo | ( | csl::Index const & | t_A, |
| csl::Index const & | t_B, | ||
| csl::Index const & | t_preA, | ||
| csl::Index const & | t_postB | ||
| ) |
Constructs a ConjugationInfo for a part of a fermion chain.
| t_A | First index (to the left) of the fermion chain. |
| t_B | Second index (to the right) of the fermion chain. |
|
default |
Default copy constructor.
| ConjugationInfo | to copy. |
|
default |
Default move constructor.
| ConjugationInfo | to move. |
| void mty::ConjugationInfo::apply | ( | csl::Expr & | expr, |
| bool | ruleMode, | ||
| std::vector< FermionLine > const & | lines | ||
| ) | const |
Applies the conjugation on the underlying expression.
Inserts in the fermion chain (replacing indices carefully) the conjugation matrix (or matrices) in the right place. After those insertions, the C-matrix simplification should leave a clean and ordered fermion chain.
| expr | Expression to modify. |
| ruleMode | Boolean, true if Feynman rule calculation. |
| lines | Fermion lines in the diagram. |
|
default |
Default copy assignement operator.
| ConjugationInfo | to copy. |
|
default |
Default move assignement operator.
| ConjugationInfo | to move. |
|
static |
Resolves all fermion lines in a set of fields.
This function is usefull when Majorana fermions come in amplitudes. Fermion flows must be defined for each fermion line (arbitrarily, see https://cds.cern.ch/record/240381/files/CM-P00063014.pdf) to write down the amplitude. Each propagator and vertex must be matched from the beginning to the end, and rules must then be applied to ensure that the fermion chain is continuous (no transposed gamma- matrix in the middle).
| init | Initial set of fields in the Wick contraction. |
| ruleOrder | Order of fields in the Feynman rules. |
|
static |
Resolves all fermion lines in a set of fields.
This function is just an overload to convert a vector of QuantumField (given by the class Graph) to a FieldList.
| init | Initial set of fields in the Wick contraction. |
| ruleOrder | Order of fields in the Feynman rules. |
| void mty::ConjugationInfo::setInfo | ( | csl::Index const & | t_A, |
| bool | t_conjugated | ||
| ) |
Sets info for an external ConjugationInfo. See the corresponding constructor for more info.
| t_A | Index of the external leg |
| t_conjugated | Conjugation of the external leg |
| void mty::ConjugationInfo::setInfo | ( | csl::Index const & | t_A, |
| csl::Index const & | t_B, | ||
| csl::Index const & | t_preA, | ||
| csl::Index const & | t_postB | ||
| ) |
Sets info for an internal ConjugationInfo. See the corresponding constructor for more info.
| t_A | First index of the chain |
| t_B | Second index of the chain |
|
static |
Simplifies a set of ConjugationInfo, merging the consecutive ones.
This functions uses the fact that \( C^TC = 1. \) For a list of conjugation, consecutive ones are merged. For example,
\[ \left(C\Gamma _1 C^T\right)\cdot \left(C\Gamma _2C^T\right) = C\Gamma _1\Gamma _2C^T. \]
| info | Vector of ConjugationInfo to simplify. |
| ruleMode | Boolean, must be true if Feynman rule calculation. |
|
static |
Maximum number of fermion lines in a diagram.
This number is 3 because for now a diagram (that can be fully simplified in MARTY) cannot have 6 external legs (5 at most) and is at the 1-loop level. There can be two external fermionic lines, and one internal in the loop. If in the future MARTY is extended to more, this number may be incremented or left as it is, the consequence will only be an increase in execution time for the function followFermionLines (if not incremented). This number is the memory allocated the the return value. If there is more fermion lines, memory will have to be reallocated elsewhere with more space (implies deallocation, reallocation, copies etc).
1.8.13