Documentation of MARTY
A Modern ARtificial Theoretical phYsicist
mty::QCD_Model Class Reference
Inheritance diagram for mty::QCD_Model:
[legend]

Additional Inherited Members

- Public Member Functions inherited from mty::Model
template<class ... Args>
 Model (Args &&...args)
 
 Model (Model &&other)=delete
 
Modeloperator= (Model &&other)=delete
 
 Model (Model const &other)=delete
 
Modeloperator= (Model const &other)=delete
 
size_t getFeynmanRulesNumber () const
 
std::vector< mty::FeynmanRule > const & getFeynmanRules ()
 
mty::FeynmanRulegetFeynmanRule (size_t pos)
 
mty::FeynmanRule const & getFeynmanRule (size_t pos) const
 
void filterFeynmanRules ()
 
void computeFeynmanRules ()
 
mty::Amplitude computeAmplitude (int order, std::vector< mty::Insertion > insertions, FeynOptions &options)
 
mty::Amplitude computeAmplitude (int order, std::vector< mty::Insertion > insertions, Kinematics const &kinematics, FeynOptions &options)
 
mty::Amplitude computeAmplitude (int order, std::vector< mty::Insertion > insertions)
 
mty::Amplitude computeAmplitude (int order, std::vector< mty::Insertion > insertions, Kinematics const &kinematics)
 
mty::Amplitude computePartialAmplitude (int order, std::vector< mty::Insertion > insertions, FeynOptions options={})
 
mty::Amplitude computePartialAmplitude (int order, std::vector< mty::Insertion > insertions, Kinematics const &kinematics, FeynOptions options={})
 
mty::Amplitude computeAmplitude (std::vector< Lagrangian::TermType > &lagrangian, std::vector< Insertion > insertions, Kinematics const &kinematics, FeynOptions options, std::vector< FeynmanRule const *> rules={})
 Main method for the calculation of amplitude. More...
 
mty::Amplitude computeAmplitude (std::vector< FeynmanRule const *> &feynRules, std::vector< Insertion > const &insertions, Kinematics const &kinematics, FeynOptions const &options)
 
csl::Expr computeSquaredAmplitude (Amplitude const &ampl, bool applyDegreesOfFreedomFactor=true)
 
csl::Expr computeSquaredAmplitude (WilsonSet const &ampl, bool applyDegreesOfFreedomFactor=true)
 
csl::Expr computeSquaredAmplitude (Amplitude const &amplL, Amplitude const &amplR, bool applyDegreesOfFreedomFactor=true)
 
csl::Expr computeSquaredAmplitude (WilsonSet const &amplL, WilsonSet const &amplR, bool applyDegreesOfFreedomFactor=true)
 
WilsonSet getWilsonCoefficients (Amplitude const &ampl, FeynOptions const &feynOptions, DecompositionMode mode=DecompositionMode::Matching)
 
WilsonSet getWilsonCoefficients (Amplitude const &ampl, DecompositionMode mode=DecompositionMode::Matching)
 
WilsonSet computeWilsonCoefficients (int order, std::vector< Insertion > const &insertions, FeynOptions feynOptions={}, bool disableFermionOrdering=false)
 
WilsonSet computeWilsonCoefficients_default (int order, std::vector< Insertion > const &insertions, FeynOptions const &feynOptions={})
 
WilsonSet computeWilsonCoefficients_2Fermions_1Vector (std::vector< Insertion > const &insertions, FeynOptions const &feynOptions={})
 
WilsonSet computeWilsonBoxes_4Fermions (Kinematics const &kinematics, FeynOptions feynOptions={})
 
WilsonSet computeSingleWilsonPenguin_4Fermions (Kinematics const &kinematics, std::pair< size_t, size_t > const &treeCoupling, std::pair< size_t, size_t > const &loopCoupling, Insertion const &mediator, FeynOptions feynOptions={})
 
WilsonSet computeWilsonPenguins_4Fermions (Kinematics const &kinematics, FeynOptions feynOptions={})
 
WilsonSet computeWilsonCoefficients_4Fermions (std::vector< Insertion > insertions, FeynOptions feynOptions={})
 
Amplitude connectAmplitudes (Amplitude const &M1, Amplitude const &M2, FeynOptions const &options={})
 
- Public Member Functions inherited from mty::ModelBuilder
template<class ... Args>
 ModelBuilder (Args &&...args)
 Constructor. More...
 
 ~ModelBuilder () override
 Default destructor.
 
 ModelBuilder (ModelBuilder &&other)=default
 Default move constructor. More...
 
ModelBuilderoperator= (ModelBuilder &&other)=default
 Default move assignement operator. More...
 
 ModelBuilder (ModelBuilder const &other)=delete
 Defauly copy constructor. More...
 
ModelBuilderoperator= (ModelBuilder const &other)=delete
 Default copy assignement operator. More...
 
std::vector< csl::Expr > const & getAbbreviatedMassExpressions () const
 
void replace (csl::Expr const &oldExpression, csl::Expr const &newExpression)
 
void replace (csl::Tensor &oldExpression, csl::Expr const &newExpression)
 
void replace (csl::Tensor &oldExpression, csl::Tensor &newExpression, std::function< bool(csl::Expr const &)> condition=[](csl::Expr const &) { return true;})
 
void replace (mty::Particle const &particle, csl::Expr newExpression, std::function< bool(csl::Expr const &)> condition=[](csl::Expr const &) { return true;})
 
void rotateFields (mty::Particle &fields, csl::Tensor &unitaryMatrix, std::function< bool(csl::Expr const &)> condition=[](csl::Expr const &) { return true;})
 
void rotateFields (std::string const &fields, csl::Tensor &unitaryMatrix, std::function< bool(csl::Expr const &)> condition=[](csl::Expr const &) { return true;})
 
void rotateFields (std::vector< mty::Particle > const &fields, std::vector< mty::Particle > const &newFields, std::vector< std::vector< csl::Expr >> const &rotation, bool diagonalizeMasses=false, int nMassLessFields=0)
 
void rotateFields (std::vector< mty::Particle > const &fields1, std::vector< mty::Particle > const &newFields1, std::vector< std::vector< csl::Expr >> const &rotation1, std::vector< mty::Particle > const &fields2, std::vector< mty::Particle > const &newFields2, std::vector< std::vector< csl::Expr >> const &rotation2, int nMassLessFields=0)
 
void rotateFields (std::vector< mty::Particle > const &fields, bool diagonalizeMasses=false, int nMassLessFields=0)
 
void birotateFields (std::vector< mty::Particle > const &fields1, std::vector< mty::Particle > const &fields2, int nMassLessFields=0)
 
void rotateFields (std::vector< std::string > const &fields, std::vector< std::string > const &newFields, std::vector< std::vector< csl::Expr >> const &rotation, bool diagonalizeMasses=false, int nMassLessFields=0)
 
void rotateFields (std::vector< std::string > const &fields1, std::vector< std::string > const &newFields1, std::vector< std::vector< csl::Expr >> const &rotation1, std::vector< std::string > const &fields2, std::vector< std::string > const &newFields2, std::vector< std::vector< csl::Expr >> const &rotation2, int nMassLessFields=0)
 
void rotateFields (std::initializer_list< std::string > const &fields, std::initializer_list< std::string > const &newFields, std::vector< std::vector< csl::Expr >> const &rotation, bool diagonalizeMasses=false, int nMassLessFields=0)
 
void rotateFields (std::initializer_list< std::string > const &fields1, std::initializer_list< std::string > const &newFields1, std::vector< std::vector< csl::Expr >> const &rotation1, std::initializer_list< std::string > const &fields2, std::initializer_list< std::string > const &newFields2, std::vector< std::vector< csl::Expr >> const &rotation2, int nMassLessFields=0)
 
void rotateFields (std::vector< std::string > const &fields, bool diagonalizeMasses=false, int nMassLessFields=0)
 
void birotateFields (std::vector< std::string > const &fields1, std::vector< std::string > const &fields2, int nMassLessFields=0)
 
void rotateFields (std::initializer_list< std::string > const &fields, bool diagonalizeMasses=false, int nMassLessFields=0)
 
void birotateFields (std::initializer_list< std::string > const &fields1, std::initializer_list< std::string > const &fields2, int nMassLessFields=0)
 
void applyUnitaryCondition (std::vector< std::vector< csl::Expr >> const &unitary)
 
void saveModel (std::ostream &out, int indent=4) override
 
template<class GroupType >
void setGaugeChoice (GroupType &&group, gauge::Type choice)
 
template<class FieldType1 , class FieldType2 >
void promoteToGoldstone (FieldType1 &&goldstone, FieldType2 &&gaugeBoson)
 
template<class FieldType1 , class FieldType2 >
void promoteToGhost (FieldType1 &&ghost, FieldType2 &&gaugeBoson)
 
template<class FieldType , class ... Args>
void promoteToMajorana (FieldType &&weylFermion, Args &&...args)
 
void integrateOutParticle (mty::Particle const &particle, std::vector< csl::Expr > newInteractions)
 
void diracFermionEmbedding (std::string const &leftName, std::string const &rightName)
 
void diracFermionEmbedding (std::shared_ptr< mty::WeylFermion > leftWeyl, std::shared_ptr< mty::WeylFermion > rightWeyl)
 
void applyDiracFermionEmbedding (std::shared_ptr< mty::DiracFermion > const &diracFermion, std::shared_ptr< mty::WeylFermion > leftWeyl, std::shared_ptr< mty::WeylFermion > rightWeyl, std::vector< mty::Lagrangian::TermType > &interaction)
 
void gatherMass (mty::Particle const &part)
 
void gatherMass (std::string const &name)
 
void gatherMasses ()
 
void refresh ()
 
void breakU1GaugeSymmetry (std::string const &groupName)
 
void breakGaugeSymmetry (std::string const &brokenGroup)
 
void breakGaugeSymmetry (std::string const &brokenGroup, std::vector< mty::Particle > const &brokenFields, std::vector< std::vector< std::string >> const &newNames)
 
void breakGaugeSymmetry (std::string const &brokenGroup, std::vector< std::string > const &brokenFields, std::vector< std::vector< std::string >> const &newNames)
 
void breakGaugeSymmetry (std::string const &brokenGroup, std::vector< std::string > const &brokenFields)
 
void breakGaugeSymmetry (std::string const &brokenGroup, std::vector< mty::Particle > const &brokenFields)
 
void breakGaugeSymmetry (Group *brokenGroup, std::vector< mty::Particle > const &brokenFields, std::vector< std::vector< std::string >> const &newNames)
 
void breakFlavorSymmetry (std::string const &nameGroup)
 
void breakFlavorSymmetry (std::string const &flavorName, std::vector< size_t > const &subGroups, std::vector< std::string > newFlavorNames=std::vector< std::string >())
 
void breakFlavorSymmetry (std::string const &flavorName, std::vector< mty::Particle > const &brokenFields, std::vector< std::vector< std::string >> const &newNames)
 
void breakFlavorSymmetry (std::string const &flavorName, std::vector< size_t > const &subGroups, std::vector< mty::Particle > const &brokenFields, std::vector< std::vector< std::string >> const &newNames, std::vector< std::string > const &newFlavorNames)
 
void diagonalizeMassMatrices ()
 
template<class FieldType >
bool diagonalizeSymbolically (FieldType &&field, bool forceDetZero=false)
 
void diagonalizeYukawa (std::string const &nameYukawa, std::vector< std::string > const &nameMass, csl::Expr const &globalFactor=CSL_1)
 
void diagonalizeYukawa (std::string const &nameYukawa, std::vector< std::string > const &nameMass, csl::Expr const &globalFactor, csl::Tensor &mixing, std::vector< mty::Particle > mixed)
 
void diagonalizeYukawa (std::string const &nameYukawa, std::vector< csl::Expr > const &diagonal, csl::Tensor mixing, std::vector< mty::Particle > mixed)
 
void addSpectrum (std::vector< mty::Particle > const &particles, std::vector< std::vector< csl::Expr >> const &mass, std::vector< std::vector< csl::Expr >> const &mix, std::vector< std::vector< csl::Expr >> const &mix2=std::vector< std::vector< csl::Expr >>())
 
void updateDiagonalizationData ()
 
void applyDiagonalizationData (csl::Expr &expr) const
 
void applyDiagonalizationData (std::vector< csl::Expr > &expr) const
 
void applyDiagonalizationData (csl::LibraryGenerator &lib) const
 
void applyDiagonalizationData (csl::LibraryGenerator &lib, mty::Amplitude const &amplitudes) const
 
void applyDiagonalizationData (csl::LibraryGenerator &lib, std::function< bool(mty::Spectrum const &)> const &condition) const
 
void addMassAbbreviations (csl::LibraryGenerator &lib)
 
void abbreviateBigTerms (size_t maxLeafs=30)
 
void checksRotation (std::vector< mty::Particle > const &fields, std::vector< mty::Particle > const &newFields, std::vector< std::vector< csl::Expr >> const &rotation)
 
std::vector< csl::ExprgetRotationTerms (std::vector< mty::Particle > const &newFields, std::vector< std::vector< csl::Expr >> const &rotation) const
 
std::vector< csl::ExprgetFullMassMatrix (std::vector< mty::Particle > const &fields) const
 
void fillDependenciesForRotation (std::vector< csl::Expr > &kinetic, std::vector< csl::Expr > &interaction, mty::Particle const &field)
 
void fillDependenciesForRotation (std::vector< csl::Expr > &kinetic, std::vector< csl::Expr > &interaction, std::vector< mty::Particle > const &fields)
 
void applyRotation (mty::Particle const &field, mty::Particle const &newField, csl::Expr const &rotation)
 
void applyRotation (std::vector< mty::Particle > const &fields, std::vector< mty::Particle > const &newFields, std::vector< csl::Expr > const &rotations)
 
void diagonalizeWithSpectrum (std::vector< mty::Particle > const &fields, std::vector< mty::Particle > const &newFields, std::vector< std::vector< csl::Expr >> const &mixing, std::vector< csl::Expr > const &massMatrix)
 
void bidiagonalizeWithSpectrum (std::vector< mty::Particle > const &fields1, std::vector< mty::Particle > const &newFields1, std::vector< std::vector< csl::Expr >> const &mixing1, std::vector< mty::Particle > const &fields2, std::vector< mty::Particle > const &newFields2, std::vector< std::vector< csl::Expr >> const &mixing2, std::vector< csl::Expr > const &massMatrix)
 
std::vector< std::vector< mty::Particle > > const & getParticleFamilies () const
 
void addParticleFamily (std::vector< mty::Particle > const &families)
 
void removeParticleFamily (mty::Particle const &particle)
 
void addParticleFamily (std::vector< std::string > const &familyNames)
 
void removeParticleFamily (std::string const &particleName)
 
template<class FieldType >
void setGaugeChoice (FieldType &&field, gauge::Type choice)
 
- Public Member Functions inherited from mty::ModelData
 ModelData ()
 Default constructor. More...
 
 ModelData (std::unique_ptr< Gauge > &&t_gauge)
 Constructor with one parameter. More...
 
 ModelData (std::unique_ptr< Gauge > &&t_gauge, std::unique_ptr< Flavor > &&t_flavor)
 Constructor with 2 parameters. More...
 
 ModelData (std::unique_ptr< Gauge > &&t_gauge, std::unique_ptr< Flavor > &&t_flavor, std::vector< Particle > &t_particles)
 Constructor with 3 parameters. More...
 
 ModelData (std::string const &nameFile)
 Creates a model from a model file (.json). More...
 
virtual ~ModelData ()
 Destructor.
 
 ModelData (ModelData &&other)=default
 Defaulted move constructor.
 
ModelDataoperator= (ModelData &&other)=default
 Defaulted move assignement operator.
 
 ModelData (ModelData const &other)=delete
 Defaulted copy constructor.
 
ModelDataoperator= (ModelData const &other)=delete
 Defaulted copy assignement operator.
 
void init (bool initGaugeTerms=true)
 Initializes the gauge once and for all. This function must be called after finishing the gauge, and before adding matter particles. Calling the constructors that take an already built gauge, this function is called automatically. Otherwise you have to call it. More...
 
void checkHermiticity ()
 Checks the hermiticity of the Lagrangian, i.e. checks if \( \mathcal{L}^\dagger = \mathcal{L} \). More...
 
void saveModelFunction (std::string_view name, std::ostream &out, int indent=0)
 
void saveModelFunctionWithRef (std::string_view name, std::ostream &out, int indent=0)
 
void saveModelFile (std::string_view name, std::string const &fileName)
 
Lagrangian const & getLagrangian () const
 Returns a const reference to the Lagrangian. More...
 
bool isEnableChecks () const
 
void setEnableChecks (bool t_enable)
 Sets enableChecks. More...
 
csl::Space const * getSpaceTime () const
 Returns a pointer to the space time of the mode (csl::Space). More...
 
mty::GaugegetGauge () const
 Returns a pointer to the model's gauge. More...
 
mty::FlavorgetFlavor () const
 Returns a pointer to the model's flavor. More...
 
std::vector< mty::Particle > const & getParticles () const
 Returns a const reference to the model's particles. More...
 
std::vector< mty::ParticlegetPhysicalParticles (std::function< bool(mty::Particle)> const &predicate=[](mty::Particle) { return true;}) const
 Returns a list of the physical particles in a model. More...
 
std::vector< mty::QuantumNumber > const & getQuantumNumbers () const
 Returns the list of quantum numbers. More...
 
std::vector< mty::QuantumNumber > & getQuantumNumbers ()
 Returns the list of quantum numbers. More...
 
std::vector< csl::Expr > const & getScalarCouplings () const
 Returns the scalar couplings (gauge coupling typically) of the model. More...
 
std::vector< csl::Tensor > const & getTensorCouplings () const
 Returns the tensor couplings (Yukawa coupling typically) of the model. More...
 
void setSpaceTime (csl::Space const *t_spaceTime)
 Sets the space time of the model. More...
 
void setGauge (std::unique_ptr< mty::Gauge > &&t_gauge)
 Sets the gauge of the model. More...
 
void addGaugedGroup (group::Type type, std::string_view name, int dim, csl::Expr const &coupling=nullptr)
 Adds a gauge group to the model. More...
 
void addGaugedGroup (group::Type type, std::string_view name, csl::Expr const &coupling=nullptr)
 Adds a gauge group to the model. More...
 
void addFlavorGroup (std::string_view name, int nFlavor, bool complexFields=true)
 Adds a flavor group to the model. More...
 
void setFlavor (std::unique_ptr< mty::Flavor > &&t_flavor)
 Sets the flavor of the model. More...
 
void addParticle (mty::Particle const &part, bool initializeTerms=true)
 Adds a particle to the model. More...
 
void addParticles (std::vector< mty::Particle > const &parts, bool initializeTerms=true)
 Adds a list of particles to the model. More...
 
void addParticlesIn (csl::Expr const &expr)
 
void removeParticle (mty::Particle const &part)
 Removes a particle from the model. More...
 
void removeParticles (std::vector< mty::Particle > const &parts)
 Removes particles from the model. More...
 
void removeParticle (std::string const &part)
 Removes a particle from the model. More...
 
void removeParticles (std::vector< std::string > const &parts)
 Removes particles from the model. More...
 
void addScalarCoupling (std::string_view t_name)
 Adds a scalar coupling constant in the model. More...
 
void addScalarCoupling (csl::Expr const &coupling)
 Adds a scalar coupling constant in the model. More...
 
void addTensorCoupling (csl::Parent const &tensorCoupling)
 Adds a tensor coupling constant in the model. More...
 
void addQuantumNumber (std::string_view name, std::vector< mty::Particle > const &fields, std::vector< int > const &values, bool conserved=true)
 Adds a new quantum number to a model, giving eigenvalues for particles also. More...
 
template<class FieldType >
void addQuantumNumber (std::string_view name, std::vector< FieldType > const &fields, std::vector< int > const &values, bool conserved=true)
 Adds a new quantum number to a model, giving eigenvalues for particles also. More...
 
template<class FieldType >
void addQuantumNumber (std::string_view name, std::initializer_list< FieldType > fields, std::vector< int > const &values, bool conserved=true)
 Adds a new quantum number to a model, giving eigenvalues for particles also. More...
 
void setQuantumNumbers (std::vector< mty::QuantumNumber > const &numbers)
 Sets the quantum numbers of the model. More...
 
bool findParticle (std::string_view t_name) const
 Searches a particle in the model. More...
 
bool findParticle (mty::Particle const &part) const
 Searches a particle in the model. More...
 
bool findParticle (mty::QuantumFieldParent const *part) const
 Searches a particle in the model. More...
 
bool findScalarCoupling (std::string_view t_name) const
 Searches a scalar coupling in the model. More...
 
bool findScalarCoupling (csl::Expr const &coupling) const
 Searches a scalar coupling in the model. More...
 
bool findTensorCoupling (std::string_view t_name) const
 Searches a tensor coupling in the model. More...
 
bool findTensorCoupling (csl::Parent const &coupling) const
 Searches a tensor coupling in the model. More...
 
bool findTensorCoupling (csl::AbstractParent const *coupling) const
 Searches a tensor coupling in the model. More...
 
mty::Group const * getGroup (std::string_view t_name) const
 Returns a Group (pointer to const) given its name. More...
 
mty::GroupgetGroup (std::string_view t_name)
 Returns a Group (pointer) given its name. More...
 
mty::Group const * getGroup (mty::FlavorGroup const *flavGroup) const
 Returns a Group (pointer to const) given its flavor group. More...
 
mty::GroupgetGroup (mty::FlavorGroup const *flavGroup)
 Returns a Group (pointer to const) given its flavor group. More...
 
mty::GaugedGroup const * getGaugedGroup (std::string_view t_name) const
 Returns a GaugedGroup (pointer to const) given its name. More...
 
mty::GaugedGroupgetGaugedGroup (std::string_view t_name)
 Returns a GaugedGroup (pointer) given its name. More...
 
mty::FlavorGroup const * getFlavorGroup (std::string_view t_name) const
 Returns a FlavorGroup (pointer) given its name. More...
 
mty::FlavorGroupgetFlavorGroup (std::string_view t_name)
 Returns a FlavorGroup (pointer) given its name. More...
 
std::vector< mty::ParticlegetParticles (std::initializer_list< std::string_view > names) const
 
mty::Particle getParticle (std::string_view t_name) const
 Returns a particle in the model given a name. More...
 
mty::Particle getParticle (mty::QuantumFieldParent const *field) const
 Returns a particle in the model given a pointer to QuantumFieldParent. More...
 
mty::Particle getParticle (mty::QuantumFieldParent const &field) const
 Returns a particle in the model given a QuantumFieldParent. More...
 
mty::Particle getParticle (mty::QuantumField const &field) const
 Returns a particle in the model given a QuantumField. More...
 
mty::Particle getParticle (csl::Expr const &field) const
 Returns a particle in the model given an expression. More...
 
csl::Expr getScalarCoupling (std::string_view t_name) const
 Returns a scalar coupling given its name. More...
 
csl::Tensor getTensorCoupling (std::string_view t_name) const
 Returns a tensor coupling given its name. More...
 
csl::Tensor getTensorCoupling (csl::Parent const &t_coupling) const
 Returns a tensor coupling. More...
 
template<class FieldType >
mty::GaugeIrrep getGaugeIrrep (FieldType &&field) const
 Returns the gauge representation of a field. More...
 
template<class GroupType , class FieldType >
mty::Irrep getGroupIrrep (FieldType &&field, GroupType &&group) const
 Returns the group representation of a field. More...
 
template<class GroupType , class FieldType >
csl::Expr getCharge (FieldType &&field, GroupType &&group) const
 Returns the charge representation of a field in a U(1) group. More...
 
template<class FieldType >
mty::FlavorIrrep getFlavorIrrep (FieldType &&field) const
 Returns the flavor representation of a field. More...
 
template<class FlavorType , class FieldType >
mty::Irrep getFlavorIrrep (FieldType &&field, FlavorType &&flavor) const
 Returns the flavor group representation of a field. More...
 
template<class GroupType , class FieldType >
csl::Space const * getVectorSpace (GroupType &&group, FieldType &&field) const
 Returns the vector space coresponding to the representation of a field in a given group. More...
 
template<class GroupType , class FieldType >
csl::Index generateIndex (GroupType &&group, FieldType &&field) const
 Returns an index coresponding to the representation of a field in a given group. More...
 
template<class GroupType >
csl::Index generateIndex (GroupType &&group) const
 Returns an index coresponding to the fundamental representation in a given group. More...
 
template<class GroupType , class FieldType >
std::vector< csl::IndexgenerateIndices (size_t nIndices, GroupType &&group, FieldType &&field) const
 Returns indices coresponding to the representation of a field in a given group. More...
 
template<class GroupType >
std::vector< csl::IndexgenerateIndices (size_t nIndices, GroupType &&group) const
 Returns indices coresponding to the fundamental representation in a given group. More...
 
template<class GroupType , class FieldType >
csl::Index generateIndex (std::string_view nameIndex, GroupType &&group, FieldType &&field) const
 Returns an index coresponding to the representation of a field in a given group. More...
 
template<class GroupType , class FieldType >
mty::Generator getGenerator (GroupType &&group, FieldType &&field) const
 Returns the generator coresponding to the representation of a field in a given group. More...
 
mty::QuantumNumber const & getQuantumNumber (std::string_view name) const
 Returns a quantum number (const reference) given its name. More...
 
mty::QuantumNumbergetQuantumNumber (std::string_view name)
 Returns a quantum number (reference) given its name. More...
 
void checkValidity (mty::Particle const &part) const
 Checks the validity of a particle when adding it to the model. More...
 
void checkValidity (mty::Lagrangian::TermType const &term) const
 Checks the validity of a term when adding it to the Lagrangian. More...
 
void addLagrangianTerm (csl::Expr const &term, bool addHermitic=false)
 Adds a lagrangian term to the model. More...
 
void addLagrangianTerm (mty::Lagrangian::TermType const &term, bool addHermitic=false)
 Adds a lagrangian term to the model. More...
 
template<class FieldType >
void addBosonicMass (FieldType &&field, std::string_view mass)
 Adds a bosonic mass term to the model. More...
 
template<class FieldType >
void addBosonicMass (FieldType &&field, csl::Expr const &mass)
 Adds a bosonic mass term to the model. More...
 
template<class FieldType1 , class FieldType2 >
void addFermionicMass (FieldType1 &&left, FieldType2 &&right, std::string_view mass)
 Adds a fermionic mass to the model. More...
 
template<class FieldType1 , class FieldType2 >
void addFermionicMass (FieldType1 &&left, FieldType2 &&right, csl::Expr const &mass)
 Adds a fermionic mass to the model. More...
 
template<class FieldType >
void addFermionicMass (FieldType &&diracFermion, std::string_view mass)
 Adds a fermionic mass to the model. More...
 
template<class FieldType >
void addFermionicMass (FieldType &&diracFermion, csl::Expr const &mass)
 Adds a fermionic mass to the model. More...
 
template<class FieldType >
void renameParticle (FieldType &&field, std::string_view newName)
 Renames a particle of the model. More...
 
void renameCoupling (std::string_view name, std::string_view newName)
 Renames a (scalar or tensor) coupling of the model. More...
 
void printSubPart (std::vector< std::string > const &particles, std::ostream &out=std::cout) const
 Prints a sub part of the Lagrangian including some particles. More...
 
void printSubPart (std::initializer_list< std::string > particles, std::ostream &out=std::cout) const
 Prints a sub part of the Lagrangian including some particles. More...
 
void printSubPart (std::string const &particle, std::ostream &out=std::cout) const
 Prints a sub part of the Lagrangian including some particles. More...
 
- Static Public Member Functions inherited from mty::Model
static void projectOnBasis (csl::Expr &expr, OperatorBasis basis)
 
- Static Public Member Functions inherited from mty::ModelBuilder
static void findAbreviation (csl::Expr &expr)
 
- Static Public Attributes inherited from mty::Model
static Modelcurrent = nullptr
 
- Static Public Attributes inherited from mty::ModelData
static size_t nMomentums = 10
 Number of momenta instantiated for the model (10). With 5 maximum external legs, this is fairly safe.
 
static csl::Space const * defaultSpaceTime = &csl::Minkowski
 Default space-time for the model's particles. There is actually no support for another space that csl::Minkowski yet.
 
static int defaultQuantumNumber = 1
 Default quantum number for particles when not given. More...
 
- Protected Member Functions inherited from mty::Model
std::vector< mty::QuantumFieldrecoverQuantumInsertions (std::vector< csl::Expr > const &insertions)
 
KinematicLink connectKinematics (Amplitude &M1, Amplitude &M2) const
 
std::pair< csl::Expr, csl::ExprgetMomentumReplacement (Amplitude const &M, size_t replacedMomentum) const
 
void replaceMomentumForLink (Amplitude &M, std::pair< csl::Expr, csl::Expr > const &pReplacement) const
 
bool mediatorToPropagator (csl::Expr &prod, KinematicLink const &link) const
 
csl::Expr connectMediator (csl::Expr const &M1, csl::Expr const &M2, KinematicLink const &link) const
 
- Protected Member Functions inherited from mty::ModelBuilder
void replaceTermInLagrangian (std::vector< Lagrangian::TermType > &lagrangian, size_t &i, csl::vector_expr &newTerms)
 
void fillDependencies (std::vector< csl::Expr > &kinetic, std::vector< csl::Expr > &mass, std::vector< csl::Expr > &interaction, std::function< bool(Lagrangian::TermType const &)> dependencyFunc)
 
std::vector< csl::ExprclearDependencies (std::function< bool(Lagrangian::TermType const &)> dependencyFunc)
 
std::vector< csl::ExprclearDependencies (std::vector< Lagrangian::TermType > &terms, std::function< bool(Lagrangian::TermType const &)> dependencyFunc)
 
void doSetGaugeChoice (mty::Particle vectorBoson, gauge::Type choice)
 
void doPromoteToGoldstone (mty::Particle &goldstone, mty::Particle &gaugeBoson)
 
void doPromoteToGhost (mty::Particle &ghost, mty::Particle &gaugeBoson)
 
void clearProjectorsInMass ()
 
void doPromoteToMajorana (mty::Particle &weylFermion, std::string const &newParticleName="")
 
bool doDiagonalizeSymbolically (mty::Particle const &field, bool forceDetZero=false)
 
void breakLagrangian (mty::Particle const &init, csl::Space const *brokenSpace)
 
void breakLagrangian (mty::Particle const &init, csl::Space const *brokenSpace, std::vector< csl::Space const *> const &newSpace)
 
std::vector< MassBlockgetMassBlocks () const
 
bool diagonalizeExplicitely (MassBlock const &block, std::vector< mty::Particle > &newFields, bool forceDetZero=false)
 
void writeMatrix (Spectrum::matrix< csl::Expr > const &m, std::ostream &out, std::string const &indent) const
 
void writeSpectrum (std::ostream &out, int indentSize) const
 
- Protected Member Functions inherited from mty::ModelData
void initGaugedGroups (bool initGaugeTerms=true)
 Initializes gauge terms (gauge bosons, ghosts) and fixes the gauge. More...
 
void writeHeader (std::ostream &out, int indentSize, std::vector< csl::Parent > &defined)
 
void writeGauge (std::ostream &out, int indentSize, std::vector< csl::Parent > &defined)
 
void writeFlavor (std::ostream &out, int indentSize, std::vector< csl::Parent > &defined)
 
void writeMassAndWidth (std::ostream &out, int indentSize, std::vector< csl::Parent > &defined)
 
void writeParticles (std::ostream &out, int indentSize, std::vector< csl::Parent > &defined)
 
void writeDependencies (std::ostream &out, int indentSize, std::vector< csl::Parent > &defined, std::vector< csl::Expr > &kinetic, std::vector< csl::Expr > &mass, std::vector< csl::Expr > &interac)
 
void writeLagrangian (std::ostream &out, int indentSize, std::vector< csl::Expr > const &kinetic, std::vector< csl::Expr > const &mass, std::vector< csl::Expr > const &interac)
 
mty::GaugeIrrep doGetGaugeIrrep (mty::Particle const &part) const
 Actually returns the gauge representation of a particle. More...
 
mty::Irrep doGetGroupIrrep (mty::Particle const &part, mty::Group const *group) const
 Actually returns the group representation of a particle. More...
 
csl::Expr doGetCharge (mty::Particle const &particle, mty::Group const *group) const
 Actually returns the charge representation of a particle for a U(1) group. More...
 
mty::FlavorIrrep doGetFlavorIrrep (mty::Particle const &part) const
 Actually returns the flavor representation of a particle. More...
 
mty::Irrep doGetFlavorIrrep (mty::Particle const &part, mty::Group const *flavor) const
 Actually returns the flavor group representation of a particle. More...
 
csl::Space const * doGetVectorSpace (mty::Group const *group, mty::Particle const &irrep) const
 Actually returns the vector space corresponding to a particle's representation. More...
 
csl::Space const * doGetVectorSpace (mty::FlavorGroup const *group, mty::Particle const &irrep) const
 Actually returns the vector space corresponding to a particle's representation. More...
 
csl::Index doGenerateIndex (mty::Group const *group, mty::Particle const &fieldRep) const
 Actually returns a csl::Index corresponding to a particle's representation. More...
 
csl::Index doGenerateIndex (mty::Group const *group) const
 Actually returns a csl::Index corresponding to the fundamental representation of a given group. More...
 
csl::Index doGenerateIndex (std::string_view nameIndex, mty::Group const *group, mty::Particle const &fieldRep) const
 Actually returns a csl::Index corresponding to a particle's representation. More...
 
mty::Generator doGetGenerator (mty::Group const *group, mty::Particle const &fieldRep) const
 Actually returns a generator corresponding to a particle's representation. More...
 
void doAddBosonicMass (mty::Particle const &particle, std::string_view mass)
 
void doAddBosonicMass (mty::Particle const &particle, csl::Expr const &mass)
 
void doAddFermionicMass (mty::Particle const &left, mty::Particle const &right, std::string_view mass)
 
void doAddFermionicMass (mty::Particle const &left, mty::Particle const &right, csl::Expr const &mass)
 
void doAddFermionicMass (mty::Particle const &diracFermion, std::string_view mass)
 
void doAddFermionicMass (mty::Particle const &diracFermion, csl::Expr const &mass)
 
void doRenameParticle (mty::Particle const &part, std::string_view newName)
 Actually renames a particle. More...
 
- Static Protected Member Functions inherited from mty::ModelBuilder
static bool isValidMassTerm (mty::InteractionTerm const &term)
 
static std::vector< mty::ParticleuniqueContent (mty::InteractionTerm const &term)
 
static std::vector< mty::Particle >::const_iterator findInContent (std::vector< mty::Particle > const &content, mty::Particle const &field)
 
static bool fieldInContent (std::vector< mty::Particle > const &content, mty::Particle const &field)
 
static csl::Expr getMassMatrixOf (MassBlock const &block)
 
- Protected Attributes inherited from mty::Model
std::vector< mty::FeynmanRulefeynmanRules
 
- Protected Attributes inherited from mty::ModelBuilder
std::vector< Spectrumspectra
 Vector of Spectrum objects, remembering symbolic diagonalizations to, later on, diagonalize numerically mass matrices and update mixing terms.
 
std::vector< csl::ExprabbreviatedMassExpressions
 Vector of abbreviated masses in the model, determined by the ModelBuilder::gatherMasses() function and written to libraries by the mty::Library::generateSpectrum() function.
 
std::vector< std::vector< mty::Particle > > particleFamilies
 
- Protected Attributes inherited from mty::ModelData
mty::Lagrangian L
 Lagrangian of the model. More...
 
csl::Space const * spaceTime
 Space time for the model. More...
 
std::unique_ptr< mty::Gaugegauge
 Gauge of the model.
 
std::unique_ptr< mty::Flavorflavor
 Flavor of the model.
 
std::vector< mty::Particleparticles
 Particle content (including gauge bosons, ghosts etc) of the model. More...
 
std::vector< mty::QuantumNumberquantumNumbers
 List of quantum numbers in the model. More...
 
std::vector< csl::ExprscalarCouplings
 Lists of scalar couplings of the model. More...
 
std::vector< csl::TensortensorCouplings
 List of tensor couplings of the model. More...
 
bool gaugeLocked = false
 Boolean that tells if the gauge model is initilialized. More...
 
bool enableChecks = true
 Boolean telling if checks must be done with lagrangian terms added to the model (gauge representation, dispatching ...) More...
 

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