Documentation of MARTY
A Modern ARtificial Theoretical phYsicist
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
mty::AmplitudeInitializer Class Reference

Public Member Functions

 AmplitudeInitializer (mty::Model const *t_model, mty::FeynOptions const &t_options, Kinematics const &t_kinematics, std::vector< mty::QuantumField > const &t_insertions, std::vector< mty::Lagrangian::TermType > &t_lagrangian)
 
 AmplitudeInitializer (mty::Model const *t_model, mty::FeynOptions const &t_options, Kinematics const &t_kinematics, std::vector< mty::QuantumField > const &t_insertions, std::vector< mty::FeynmanRule const *> &t_lagrangian)
 
Amplitude getAmplitude (std::vector< std::vector< size_t >> const &terms)
 
void initMomentumVertices (std::vector< FeynmanRule > &localRules, std::map< csl::Tensor, size_t > &vertexIds, std::vector< csl::Tensor > const &vertices, std::vector< csl::Tensor > &witnessVertices, csl::PseudoIntegral &integral, std::vector< csl::Expr > &fieldVertices)
 
std::vector< std::vector< size_t > > getExternalSymmetries (csl::Expr &fieldProd) const
 
std::vector< csl::ExprapplyExternalSymmetries (csl::Expr const &res, std::vector< size_t > perm) const
 
std::vector< csl::ExprapplyAllExternalSymmetries (std::vector< csl::Expr > const &init, std::vector< std::vector< size_t >>::iterator first, std::vector< std::vector< size_t >>::iterator last) const
 
void simplifyFullQuantumCalculation (mty::FeynmanDiagram &diagram, csl::PseudoIntegral const &integral, std::vector< size_t > const &posTerms, std::vector< std::vector< size_t >> &externalSym)
 
void simplifyRuledCalculation (mty::FeynmanDiagram &diagram, csl::PseudoIntegral const &integral, std::vector< csl::Tensor > const &witnessVericesx, FeynruleMomentum &momentumMapping)
 

Static Public Member Functions

template<class ... Args>
static Amplitude getAmplitude (std::vector< std::vector< size_t >> const &terms, Args &&...args)
 
static void removeZeroDiagrams (std::vector< FeynmanDiagram > &diagrams)
 
static csl::Expr getLSZInsertions (std::vector< mty::QuantumField > const &fields, std::vector< csl::Tensor > const &momenta, bool feynRuleCalculation)
 
static std::vector< csl::TensorgetVertices (size_t N)
 
static void orderInsertions (std::vector< mty::QuantumField > &insertions, Kinematics &kinematics, FeynOptions &options)
 Order the field insertions (important for fermion ordering), applying the permutation to the associated kinematics. More...
 
static void applyMomentumVertices (std::vector< csl::Tensor > const &witnessVertices, FeynruleMomentum &momentumMapping, csl::Expr &amplitude)
 

Private Member Functions

Amplitude fullQuantumCalculation (std::vector< std::vector< size_t >> const &terms)
 
Amplitude ruledCalculation (std::vector< std::vector< size_t >> const &terms)
 

Private Attributes

mty::Model const * model
 
mty::FeynOptions options
 
std::vector< mty::QuantumFieldinsertions
 
Kinematics kinematics
 
bool feynRuleMode
 True if the calculation a calculation of Feynman rules (using the Lagrangian), false if the calculation uses Feynman rules. More...
 
std::vector< mty::Lagrangian::TermType > & lagrangian
 Reference to the lagrangian term when the calculation does not use Feynman rules, reference to an empty vector otherwise.
 
std::vector< mty::FeynmanRule const * > & feynmanRules
 Reference to the Feynman rules when the calculation does use Feynman rules, reference to an empty vector otherwise.
 

Static Private Attributes

static std::vector< mty::Lagrangian::TermTypedefaultL {}
 
static std::vector< mty::FeynmanRule const * > defaultFR {}
 

Member Function Documentation

◆ orderInsertions()

void mty::AmplitudeInitializer::orderInsertions ( std::vector< mty::QuantumField > &  insertions,
Kinematics kinematics,
FeynOptions options 
)
static

Order the field insertions (important for fermion ordering), applying the permutation to the associated kinematics.

Parameters
insertionsInsertions to order.
kinematicsKinematics that will follow the same order as the insertions.

Field Documentation

◆ feynRuleMode

bool mty::AmplitudeInitializer::feynRuleMode
private

True if the calculation a calculation of Feynman rules (using the Lagrangian), false if the calculation uses Feynman rules.

Depending on the value of this boolean, one of the two references (lagrangian or feynmanRules) is a reference to an empty container while only the other is used in the calculation.


The documentation for this class was generated from the following files: