Documentation of MARTY
A Modern ARtificial Theoretical phYsicist
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends
mty::QuantumFieldParent Class Referenceabstract

Base class for parents of QuantumField objects. More...

#include <quantumField.h>

Inheritance diagram for mty::QuantumFieldParent:
[legend]

Public Types

using Propagator_func = std::function< csl::Expr(QuantumField const &, QuantumField const &, csl::Tensor &, bool)>
 Type definition. A Propagator_func is a function called to get the propagator result of the contraction of two fields. More...
 

Public Member Functions

 QuantumFieldParent ()=default
 Default constructor.
 
 QuantumFieldParent (QuantumFieldParent const &other)=default
 Copy constructor.
 
 QuantumFieldParent (const std::string &t_name, int t_spin, Gauge *t_gauge)
 Constructor with 3 parameters. More...
 
 QuantumFieldParent (const std::string &t_name, int t_spin, const GaugeIrrep &irrep)
 Constructor with 3 parameters. More...
 
 QuantumFieldParent (const std::string &t_name, int t_spin, Gauge *t_gauge, bool t_isSelfConjugate)
 Constructor with 4 parameters. More...
 
 QuantumFieldParent (const std::string &t_name, int t_spin, const GaugeIrrep &irrep, bool t_isSelfConjugate)
 Constructor with 4 parameters. More...
 
 QuantumFieldParent (const std::string &t_name, int t_spin, const GaugeIrrep &irrep, const FlavorIrrep &flavorRep)
 Constructor with 4 parameters. More...
 
 QuantumFieldParent (const std::string &t_name, const QuantumFieldParent *other)
 Builds a new particle identical to another, with a different name. More...
 
drawer::ParticleType getDrawType () const
 Returns the drawing type of the particle. More...
 
virtual bool contains (QuantumFieldParent const *other) const
 
virtual bool isSameSpecies (QuantumFieldParent const *other) const
 
virtual ParticleType getParticleType () const
 
void setDrawType (drawer::ParticleType type)
 Sets the drawing type of the particle. More...
 
virtual Particle generateSimilar (std::string const &t_name) const =0
 Pure virtual function. Generates a partical similar to the current object, changing only the name. More...
 
virtual Chirality getChirality () const
 Returns the chirality of the particle. More...
 
virtual csl::Expr getEnergyDimension () const =0
 Pure virtual function. Returns the energy dimension of the field. More...
 
virtual int getNDegreesOfFreedom () const =0
 Pure virtual function. Returns the number of degrees of freedom in the particle. It does not count gauge and flavor multiplicity. The result depends on the type of the particle and if it is complex. More...
 
int getNGaugeDegreesOfFreedom () const
 
virtual bool hasSpecialContractionWith (QuantumField const &other) const
 Tells if the field has a special contraction property with other. More...
 
virtual bool isChiral () const
 Tells if the field is chiral. More...
 
virtual Particle getChiralityCounterPart () const
 For a WeylFermion embedded in a DiracFermion, returns the other part of the DiracFermion. More...
 
virtual Particle getWeylFermion (Chirality chirality) const
 For a DiracFermion, returns the chiral WeylFermion it contains of chirality chirality if it has one. More...
 
virtual Particle getDiracParent () const
 For a WeylFermion embedded in a DiracFermion, returns the dirac fermion. More...
 
virtual Particle getGoldstone () const
 For a vector boson in a non abelian gauged group, returns the associated Goldstone boson. More...
 
virtual void setDiracParent (Particle const &diracFermion)
 
virtual csl::Expr getPropagator (QuantumField const &self, QuantumField const &other, csl::Tensor &P, bool external) const
 Returns the expression of the propagator between two fields. More...
 
virtual csl::Expr getInvPropagator (QuantumField const &other, QuantumField const &self, csl::Tensor &P, bool external) const
 Returns the expression of the propagator between two fields. More...
 
virtual csl::Expr getKineticTerm (csl::Tensor &X)
 Returns the kinetic term in the Lagrangian for the field. More...
 
virtual bool isGaugeBoson () const
 Tells if the particle is a gauge boson. More...
 
virtual csl::Expr getXiGauge () const
 For a GaugeBoson, returns the expression of \( \xi \) in the current gauge. More...
 
virtual Particle getVectorBoson () const
 For a ghost or goldstone boson, returns the GaugeBoson associated with it. More...
 
virtual GaugedGroup const * getGaugedGroup () const
 
virtual GaugedGroupgetGaugedGroup ()
 
virtual Particle getGoldstoneBoson () const
 For a GaugeBoson, returns the associated Golstone boson of there is one. More...
 
virtual Particle getGhostBoson () const
 For a GoldstoneBoson, returns the associated Golstone boson of there is one. More...
 
virtual Particle getConjugatedGhostBoson () const
 
virtual void setGoldstoneBoson (Particle const &goldstone)
 For a GaugeBoson, sets the associated GoldstoneBoson. More...
 
virtual void setGhostBoson (Particle const &ghost)
 For a GaugeBoson, sets the associated GhostBoson. More...
 
virtual void setConjugatedGhostBoson (Particle const &ghost)
 
virtual bool hasFieldStrength () const
 Tells if the particle has a FieldStrength. More...
 
virtual Particle getFieldStrength () const
 For a VectorBoson, returns the associated FieldStrength if it exists. More...
 
virtual void setFieldStrength (Particle const &fieldStrength)
 For a VectorBoson, sets the associated FieldStrength. More...
 
bool isContractibleWith (QuantumFieldParent const *other) const
 Tells if the field may be contracted with another in Wick contrations. More...
 
bool isBosonic () const
 Tells if the field is bosonic. More...
 
bool isFermionic () const
 Tells if the field is fermionic. More...
 
virtual bool isAntiCommuting () const
 Tells if the field is a grassman field. More...
 
bool isSelfConjugate () const
 Tells if the field is self-conjugate (real). More...
 
bool isReal () const
 
bool isPhysical () const
 Tells if the field is physical, i.e. may appear in external legs. More...
 
bool isEnabledInDiagrams () const
 Tells if the field is enabled in diagrams. More...
 
bool isIntegratedOut () const
 Tells if the field is integrated out. More...
 
int getSpinDimension () const
 Returns twice the spin of the particle in an integer. More...
 
csl::Expr getMass () const
 Returns the expression of the mass of the particle. More...
 
csl::Expr getSquaredMass () const
 
csl::Expr getWidth () const
 Returns the expression of the witdh of the particle. More...
 
virtual mty::gauge::Choice getGaugeChoice () const
 
Irrep getLorentzRep () const
 Returns the lorentz representation of the field. More...
 
GaugegetGauge () const
 Returns a pointer to the gauge the field is a representation of. More...
 
GaugeIrrep getGaugeIrrep () const
 Returns the gauge representation containing all individual group representations of the field in the gauge. More...
 
Irrep getGroupIrrep (const Group *group) const
 Returns the representation of the field in a particle group. More...
 
Flavor const * getFlavor () const
 
void setFlavor (Flavor const *flavor)
 
FlavorIrrep getFlavorIrrep () const
 Returns the flavor representation containing all individual group representations of the field in the flavor. More...
 
Irrep getFlavorIrrep (const FlavorGroup *group) const
 Returns the representation of the field in a particle flavor group. More...
 
std::vector< csl::IndexgetSpaceIndex (const std::string &nameIndex="") const
 Returns a set of free space indices corresponding to the field. More...
 
std::vector< csl::IndexgetGaugeIndex (std::vector< std::string > names=std::vector< std::string >()) const
 Returns a set of gauge indices corresponding to the field. More...
 
std::vector< csl::IndexgetFlavorIndex (std::vector< std::string > names=std::vector< std::string >()) const
 Returns a set of flavor indices corresponding to the field. More...
 
std::vector< csl::IndexgetFullSetOfIndices () const
 Returns a full set of indices for the field including flavor , gauge, and space-time indices. More...
 
QuantumNumber::Value getQuantumNumber (QuantumNumber const *number) const
 Returns the quantum number of the field with respect to number. More...
 
QuantumNumber::Value getQuantumNumber (QuantumField const *instance, QuantumNumber const *number) const
 Returns the quantum number of an instance of the field with respect to number. More...
 
csl::Expr getInstance (csl::Tensor point=defaultSpaceTimePoint)
 Returns an instance of the quantum field as an expression. More...
 
void integrateOut (bool value=true)
 Sets the integrated out property of the field. More...
 
void setMass (const std::string &t_mass)
 Sets the mass of the particle. More...
 
void setMass (const std::string &t_mass, long double value)
 Sets the mass of the particle. More...
 
void setMass (const csl::Expr &t_mass)
 Sets the mass of the particle. More...
 
void setWidth (const csl::Expr &t_width)
 Sets the width of the particle. More...
 
virtual void setGaugeChoice (gauge::Type type)
 
void setSelfConjugate (bool t_selfConjugate)
 Sets the complex conjugation property of the particle. More...
 
void setPhysical (bool t_physical)
 Sets the physical property of the particle. More...
 
void setEnabledInDiagrams (bool t_enabled)
 Enables or disables the particle in diagrams. More...
 
void adjustFlavorRep (Flavor *t_flavor)
 Ajusts the flavor representation of the field to a new flavor group. More...
 
void setGaugeIrrep (const GaugeIrrep &newRep)
 
void setGroupRep (Group *group, const Irrep &newRep)
 Sets the representation of the field for a given group. More...
 
void setGroupRep (std::string const &group, std::vector< int > const &highestWeight)
 Sets the representation of the field for a given group. More...
 
void setGroupRep (std::string const &group, int charge)
 
void setFlavorRep (const FlavorGroup *group, const Irrep &newRep)
 Sets the representation of the field for a given flavor group. More...
 
void setFundamentalFlavorRep (std::string const &flavorGroup)
 
void addQuantumNumber (QuantumNumber const &number, QuantumNumber::Value value)
 Adds a non trivial quantum number to the particle. More...
 
virtual void setBrokenParts (const csl::Space *broken, const std::vector< Particle > &brokenParts)
 Sets broken parts (from gauge of flavor symmetry full breaking) containing the new particles. More...
 
std::vector< csl::ParentbreakSpace (const csl::Space *broken, const std::vector< const csl::Space *> &newSpace, const std::vector< size_t > &pieces) const override
 Returns the set of new tensors after breaking the particle in parts. More...
 
QuantumFieldParentoperator= (const QuantumFieldParent &other)=default
 Assignment operator (c++ default). More...
 
csl::Expr operator() (const csl::Tensor &t_point) override
 Generates an instance of the field as a symbolic expression. More...
 
csl::Expr operator() (csl::Index index, const csl::Tensor &t_point) override
 Generates an instance of the field as a symbolic expression. More...
 
csl::Expr operator() (std::vector< int > const &indices, const csl::Tensor &t_point) override
 Generates an instance of the QuantumField as a symbolic expression. More...
 
csl::Expr operator() (std::vector< csl::Index > indices, const csl::Tensor &t_point) override
 Generates an instance of the field as a symbolic expression. More...
 
csl::Expr operator() (csl::Index polarization, std::vector< int > const &indices, const csl::Tensor &t_point)
 Generates an instance of the PolarizationField as a symbolic expression. More...
 
csl::Expr operator() ()
 Generates an instance of the field as a symbolic expression. More...
 
csl::Expr operator() (csl::Index index) override
 Generates an instance of the field as a symbolic expression. More...
 
csl::Expr operator() (std::vector< csl::Index > indices) override
 Generates an instance of the field as a symbolic expression. More...
 
csl::Expr operator() (csl::Index polarization, csl::Index index, const csl::Tensor &momentum)
 Generates an instance of the polarization field as a symbolic expression. More...
 
csl::Expr operator() (csl::Index polarization, std::vector< csl::Index > indices, const csl::Tensor &momentum)
 Generates an instance of the polarization field as a symbolic expression. More...
 
 operator csl::Expr ()
 
virtual void breakParticle (mty::Group *brokenGroup, std::vector< std::string > const &newNames)
 
virtual void breakParticle (mty::FlavorGroup *brokenFlavor, std::vector< mty::FlavorGroup *> const &subGroups, std::vector< std::string > const &names)
 
- Public Member Functions inherited from csl::TensorFieldParent
cslParent::PrimaryType getPrimaryType () const override
 
cslParent::Type getType () const override
 
- Public Member Functions inherited from csl::TensorParent
 TensorParent (const std::string &t_name)
 
 TensorParent (const TensorParent &abstract)=default
 
 TensorParent (const std::string &t_name, const Space *t_space)
 
 TensorParent (const std::string &t_name, const std::vector< const Space * > &t_space)
 
 TensorParent (const std::string &t_name, const std::vector< const Space * > &t_space, const Expr &t_tensor)
 
 TensorParent (const std::string &t_name, const Space *t_space, const Expr &t_tensor)
 
cslParent::PrimaryType getPrimaryType () const override
 
cslParent::Type getType () const override
 
int getDim (const Space *t_space) const override
 
std::vector< const Space *> getSpace () const override
 
Symmetry getSymmetry () const
 
bool getFullySymmetric () const override
 
bool getFullyAntiSymmetric () const override
 
std::vector< PermutationgetPermutation () const override
 
Expr getTensor () const override
 
Expr getTrace () const override
 
bool dependsOn (Expr_info expr) const override
 
bool dependsExplicitlyOn (Expr_info expr) const override
 
const std::vector< Equation *> & getProperties () const override
 
void setFullySymmetric () override
 
void setFullyAntiSymmetric () override
 
void addSpace (const Space *space) override
 
void addSymmetry (int i1, int i2) override
 
void addAntiSymmetry (int i1, int i2) override
 
void setSymmetry (const Symmetry &t_symetry) override
 
void setTensor (const Expr &t_tensor) override
 
void setElementary (bool t_elementary)
 
bool hasContractionProperty (const Abstract *self, Expr_info B) const override
 
Expr contraction (const Abstract *self, Expr_info B) const override
 
void addSelfContraction (const Expr &A, const Expr &B, const Expr &res, std::optional< std::function< bool(Expr_info, Expr_info)>> condition=std::nullopt) override
 
virtual bool operator== (const TensorParent &other) const
 
virtual bool operator!= (const TensorParent &other) const
 
- Public Member Functions inherited from csl::AbstractParent
 AbstractParent (const std::string &t_name)
 
 AbstractParent (const AbstractParent &abstract)=default
 
std::string const & getName () const
 
bool getCommutable () const
 
virtual void setName (std::string t_name)
 
void setCommutable (bool t_commutable)
 
void addProperty (Equation *prop)
 
void removeProperty (Equation *prop)
 
virtual int getDim () const
 

Protected Member Functions

void addRelative (std::weak_ptr< mty::QuantumFieldParent > const &particle)
 
std::weak_ptr< mty::QuantumFieldParentremoveRelative (QuantumFieldParent const *particle)
 
void checkRelatives ()
 
template<class Func >
void applyToRelatives (Func &&func)
 
void printQuantumDefinition (std::ostream &out, int indentSize) const
 
virtual void initPropagator ()
 Initializes default propagators for the particle. This function is called automatically in the constructor of derived classes. More...
 
void initIndexSpaces ()
 Initializes firstGaugeIndex and firstSpaceIndex. Automatically called by the constructor. More...
 
void initPolarizationSum ()
 Initializes the polarization sum for PolarizationField arising in amplitudes. More...
 
void setPropagator (QuantumFieldParent const *other, Propagator_func prop)
 Changes the propagator of a particle with another. More...
 

Protected Attributes

bool bosonic
 True if the field is bosonic.
 
bool selfConjugate = false
 True if the field is real (real scalars, gauge bosons , majorana fermions). More...
 
bool integratedOut = false
 Tells if the field is integrated out in the theory. If true, the propagator is modified assuming \( M \gg p \).
 
bool physical = true
 Tells if the field is physical. If true, it may appear in external states. Otherwise it is forbidden.
 
bool enabledInDiagrams = true
 Tells if the field is enabled in diagrams. If no, it is fully discarded in computations.
 
csl::Expr mass = CSL_0
 Mass of the particle. Appears in the propagator.
 
csl::Expr width = CSL_0
 Width of the particle. Appears in the propagator.
 
drawer::ParticleType drawType = drawer::ParticleType::None
 Particle type in graphical diagrams (straight line, arrow, vector, gluon ...).
 
GroupstGroup
 Pointer to the space-time group. For know it is the Lorentz group, \( D_2 \) algebra.
 
Irrep spin
 Spin representation in stGroup. To have a number corresponding to the spin, see getSpinDimension().
 
Gaugegauge
 Pointer to the gauge the particle is a representation of.
 
GaugeIrrep irrep
 Representation of the field in the gauge gauge.
 
bool polarizationSumInitialized = false
 Boolean making sure that polarization sum (see PolarizationField) is initialized only onde.
 
size_t firstGaugeIndex
 Position of the first gauge index, after flavor indices.
 
size_t firstSpaceIndex
 Position of the first space index, after flavor and gauge indices.
 
const Flavorflavor
 Pointer to the flavor the particle is a representation of.
 
FlavorIrrep flavorRep
 Representation of the field in the flavor flavor.
 
std::map< QuantumNumber::ID, QuantumNumber::ValueqNumbers
 List of quantum numbers of the field. More...
 
std::map< QuantumFieldParent const *, Propagator_funcpropagator
 Contains all propagators for the field with other. More...
 
std::vector< std::weak_ptr< mty::QuantumFieldParent > > relatives
 
- Protected Attributes inherited from csl::TensorParent
std::vector< const Space *> space
 
Symmetry symmetry
 
bool fullySymmetric
 
bool fullyAntiSymmetric
 
std::vector< std::pair< SelfContraction, Expr > > selfContraction
 
bool valued
 
Expr tensor
 
Expr trace
 
- Protected Attributes inherited from csl::AbstractParent
std::string name
 
std::string latexName
 
bool commutable
 
std::vector< Equation *> props
 

Friends

std::ostream & operator<< (std::ostream &fout, const QuantumFieldParent &obj)
 Overload of operator<< for QuantumFieldParent. More...
 
void AddCustomPropagator (QuantumFieldParent *left, QuantumFieldParent *right, QuantumFieldParent::Propagator_func propagator)
 Changes the propagator of a particle with another. More...
 
void AddCustomPropagator (QuantumFieldParent *field, QuantumFieldParent::Propagator_func propagator)
 Changes the propagator of a particle with itself. More...
 

Detailed Description

Base class for parents of QuantumField objects.

A number of features are implemented in this class. Management of the mass, the width etc. Features specific to each type of field (bosonic, fermionic, ghost ...) are implemented in derived classes. QuantumFieldParent is the abstract (and unique) representation of a particle. As for csl::TensorParent or csl::TensorFieldParent, it will not appear in expressions. It contains all intrinsic features of a particle. For example in an equation, \( A \) would be the abstract photon, the QuantumFieldParent whereas \( A^{\mu A}(X) \) would be the actual field, with specific information (indices, conjugated or not, space-time point ...). This field is then a QuantumField object. The QuantumFieldParent is there to generate QuantumField when giving it indices and (optionnaly) a point \( X \). See operator(). The QuantumField keeps a pointer to its parent in order to have access to all abstract properties.

Note
QuantumFieldParent must not be created statically. The Particle object must be created instead, a std::shared_ptr<QuantumFieldParent>.
QuantumFieldParent may not be built directly (pure abstract class). Instead, one must create a specialization. See ScalarBoson, VectorBoson, GaugeBoson, WeylFermion, DiracFermion, GoldstoneBoson, or GhostBoson.

Member Typedef Documentation

◆ Propagator_func

Type definition. A Propagator_func is a function called to get the propagator result of the contraction of two fields.

The function is contained in a std::function. Such an object may be instantiated with a c++ lambda function or a standard function defined normally. The function or lambda must take four arguments. The two fields contracted (QuantumField), the momentum integrated (csl::Tensor), and a boolean telling if one of the two fields is external. It must return an expression (csl::Expr) that is the propagator between the two fields for which the factor \(\frac{d^4p}{(2\pi)^4}\) has been removed. Implementations assure that if the field is complex, the conjugated field is always the second argument. If one of the fields is external, the propagator should be adapted. For example, the propagator of two scalar fields is

\[ \frac{ie^{-ipX}}{p^2-m^2}, \]

whereas if one of the fields is external, the projection on the equations of motion \( \partial _\mu\partial ^\mu + m^2 \) gives simply

\[ -ie^{-ipX}. \]

The Propagator_func must provide the entire expression of the propagator but the integral \( \int \frac{d^4p}{(2\pi)^4} \) that is automatically added. In quantumFieldTheory.h / quantumFieldTheory.cpp all built-in propagators are written in the form of standard c++ functions. Propagators for any particle may be changed by the user. See mty::AddCustomPropagator().

Constructor & Destructor Documentation

◆ QuantumFieldParent() [1/6]

mty::QuantumFieldParent::QuantumFieldParent ( const std::string &  t_name,
int  t_spin,
Gauge t_gauge 
)

Constructor with 3 parameters.

The gauge representation, not given here, is initialized to the trivial representation. The flavor is null and no flavor representation is created. The particle is by default complex.

Parameters
t_nameName of the field.
t_spinInteger equal to twice the spin of the particle.
t_gaugePointer to the gauge of the model.

◆ QuantumFieldParent() [2/6]

mty::QuantumFieldParent::QuantumFieldParent ( const std::string &  t_name,
int  t_spin,
const GaugeIrrep irrep 
)

Constructor with 3 parameters.

The gauge reprensentation, is initialized to irrep. The flavor is null and no flavor representation is created. The particle is by default complex.

Parameters
t_nameName of the field.
t_spinInteger equal to twice the spin of the particle.
irrepGauge representation of the field.

◆ QuantumFieldParent() [3/6]

mty::QuantumFieldParent::QuantumFieldParent ( const std::string &  t_name,
int  t_spin,
Gauge t_gauge,
bool  t_isSelfConjugate 
)

Constructor with 4 parameters.

The gauge representation, not given here, is initialized to the trivial representation. The flavor is null and no flavor representation is created.

Parameters
t_nameName of the field.
t_spinInteger equal to twice the spin of the particle.
t_gaugePointer to the gauge of the model.
t_isSelfConjugateBoolean that must be true for real fields, false otherwise.

◆ QuantumFieldParent() [4/6]

mty::QuantumFieldParent::QuantumFieldParent ( const std::string &  t_name,
int  t_spin,
const GaugeIrrep irrep,
bool  t_isSelfConjugate 
)

Constructor with 4 parameters.

The gauge reprensentation, is initialized to irrep. The flavor is null and no flavor representation is created.

Parameters
t_nameName of the field.
t_spinInteger equal to twice the spin of the particle.
irrepGauge representation of the field.
t_isSelfConjugateBoolean that must be true for real fields, false otherwise.

◆ QuantumFieldParent() [5/6]

mty::QuantumFieldParent::QuantumFieldParent ( const std::string &  t_name,
int  t_spin,
const GaugeIrrep irrep,
const FlavorIrrep flavorRep 
)

Constructor with 4 parameters.

The gauge reprensentation, is initialized to irrep. The flavor representation is initialized to flavorRep. The particle is by default complex.

Parameters
t_nameName of the field.
t_spinInteger equal to twice the spin of the particle.
irrepGauge representation of the field.
flavorRepFlavor representation of the field.

◆ QuantumFieldParent() [6/6]

mty::QuantumFieldParent::QuantumFieldParent ( const std::string &  t_name,
const QuantumFieldParent other 
)

Builds a new particle identical to another, with a different name.

Parameters
t_nameName of the field.
otherOhter field to copy.

Member Function Documentation

◆ addQuantumNumber()

void mty::QuantumFieldParent::addQuantumNumber ( QuantumNumber const &  number,
QuantumNumber::Value  value 
)

Adds a non trivial quantum number to the particle.

Parameters
numberQuantumNumber for which we set the value (for the field).
valueValue of the quantum number of the field.
See also
qNumbers, QuantumNumber, getQuantumNumber().

◆ adjustFlavorRep()

void mty::QuantumFieldParent::adjustFlavorRep ( Flavor t_flavor)

Ajusts the flavor representation of the field to a new flavor group.

When breaking flavor symmetry, we may sometimes be interested in breaking only partially the symmetry. For example, we may break a 3 flavor-symmetry in one light particle and a 2-flavor symmetry. This function allows to keep a flavor representation but in a different group (here for example \( SU(3) \) to \( SU(2) \)).

Parameters
t_flavorNew Flavor of the particle.
See also
flavorRep, getFlavorIrrep().

◆ breakSpace()

std::vector< csl::Parent > mty::QuantumFieldParent::breakSpace ( const csl::Space broken,
const std::vector< const csl::Space *> &  newSpace,
const std::vector< size_t > &  pieces 
) const
override

Returns the set of new tensors after breaking the particle in parts.

Parameters
brokenSpace (gauge or flavor) that is broken.
newSpaceNew (non trivial) vector spaces after the symmetry breaking.
piecesDimensions of new spaces. The sum must be equal to the dimension of broken.
Returns
The set of tensors arising after the symmetry breaking.

◆ generateSimilar()

virtual Particle mty::QuantumFieldParent::generateSimilar ( std::string const &  t_name) const
pure virtual

Pure virtual function. Generates a partical similar to the current object, changing only the name.

Parameters
t_nameName of the new particle, identical to the current object.
Returns
The new Particle.

Implemented in mty::FieldStrength, mty::GaugeBoson, mty::DiracFermion, mty::VectorBoson, mty::ScalarBoson, mty::WeylFermion, mty::GhostBoson, and mty::GoldstoneBoson.

◆ getChirality()

Chirality mty::QuantumFieldParent::getChirality ( ) const
virtual

Returns the chirality of the particle.

A DiracFermion or boson will return Chirality::None. WeylFermion will return either Chirality::Left or Chirality::Right.

Returns
The chirality of the particle.

Reimplemented in mty::WeylFermion.

◆ getChiralityCounterPart()

Particle mty::QuantumFieldParent::getChiralityCounterPart ( ) const
virtual

For a WeylFermion embedded in a DiracFermion, returns the other part of the DiracFermion.

Returns
The right WeylFermion for a left WeylFermion embedded in a DiracFermion.
The left WeylFermion for a right WeylFermion embedded in a DiracFermion.
nullptr otherwise.

Reimplemented in mty::WeylFermion.

◆ getDiracParent()

Particle mty::QuantumFieldParent::getDiracParent ( ) const
virtual

For a WeylFermion embedded in a DiracFermion, returns the dirac fermion.

Returns
A the DiracFermion embedding the current WeylFermion.
nullptr otherwise.

Reimplemented in mty::WeylFermion.

◆ getDrawType()

drawer::ParticleType mty::QuantumFieldParent::getDrawType ( ) const

Returns the drawing type of the particle.

See also
drawType, setDrawType().
Returns
The drawing type of the particle.

◆ getEnergyDimension()

csl::Expr mty::QuantumFieldParent::getEnergyDimension ( ) const
pure virtual

Pure virtual function. Returns the energy dimension of the field.

Returns
An expression (numerical) equal to the dimension of the field.

Implemented in mty::FieldStrength, mty::DiracFermion, mty::ScalarBoson, mty::BaseVectorBoson, and mty::WeylFermion.

◆ getFieldStrength()

Particle mty::QuantumFieldParent::getFieldStrength ( ) const
virtual

For a VectorBoson, returns the associated FieldStrength if it exists.

See also
hasFieldStrength(), FieldStrength, VectorBoson.
Returns
The FieldStrength of the the VectorBoson if it exists.
nullptr otherwise.

Reimplemented in mty::VectorBoson.

◆ getFlavorIndex()

vector< Index > mty::QuantumFieldParent::getFlavorIndex ( std::vector< std::string >  names = std::vector<std::string>()) const

Returns a set of flavor indices corresponding to the field.

Returns
A set of new indices generated in the flavor representation spaces of the field.
See also
getSpaceIndex(), getGaugeIndex(), getFullSetOfIndices().

◆ getFlavorIrrep() [1/2]

FlavorIrrep mty::QuantumFieldParent::getFlavorIrrep ( ) const

Returns the flavor representation containing all individual group representations of the field in the flavor.

Returns
The flavor representation of the field.
See also
flavorRep, getGaugeIrrep(), getGroupIrrep(), getFlavorIrrep().

◆ getFlavorIrrep() [2/2]

Irrep mty::QuantumFieldParent::getFlavorIrrep ( const FlavorGroup group) const

Returns the representation of the field in a particle flavor group.

If the flavor group is not found, an error is raised.

Parameters
groupPointer to the flavor group from which we want the representation of the field.
Returns
The representation of the field in group.
See also
flavorRep, getFlavorIrrep(), getGaugeIrrep().

◆ getFullSetOfIndices()

vector< Index > mty::QuantumFieldParent::getFullSetOfIndices ( ) const

Returns a full set of indices for the field including flavor , gauge, and space-time indices.

This set is composed of independent and free indices and may be used directly to generate a QuantumField. The indices are first flavor indices, then gauge indices and finally space-time indices.

Returns
A full set of new indices generated for the field.
See also
getSpaceIndex(), getFlavorIndex(), getGaugeIndex().

◆ getGauge()

Gauge * mty::QuantumFieldParent::getGauge ( ) const

Returns a pointer to the gauge the field is a representation of.

Returns
The gauge of the field.
See also
gauge.

◆ getGaugeIndex()

vector< Index > mty::QuantumFieldParent::getGaugeIndex ( std::vector< std::string >  names = std::vector<std::string>()) const

Returns a set of gauge indices corresponding to the field.

Returns
A set of new indices generated in the gauge representation spaces of the field.
See also
getFlavorIndex(), getSpaceIndex(), getFullSetOfIndices().

◆ getGaugeIrrep()

GaugeIrrep mty::QuantumFieldParent::getGaugeIrrep ( ) const

Returns the gauge representation containing all individual group representations of the field in the gauge.

Returns
The gauge representation of the field.
See also
irrep, getGroupIrrep(), getFlavorIrrep().

◆ getGhostBoson()

Particle mty::QuantumFieldParent::getGhostBoson ( ) const
virtual

For a GoldstoneBoson, returns the associated Golstone boson of there is one.

Returns
The GoldstoneBoson associated to the GoldstoneBoson is it exists.
nullptr otherwise.

Reimplemented in mty::VectorBoson.

◆ getGoldstone()

Particle mty::QuantumFieldParent::getGoldstone ( ) const
virtual

For a vector boson in a non abelian gauged group, returns the associated Goldstone boson.

Returns
The Goldstone associated with the vector if there is one.
nullptr else.

Reimplemented in mty::VectorBoson.

◆ getGoldstoneBoson()

Particle mty::QuantumFieldParent::getGoldstoneBoson ( ) const
virtual

For a GaugeBoson, returns the associated Golstone boson of there is one.

Returns
The GoldstoneBoson associated to the GaugeBoson is it exists.
nullptr otherwise.

◆ getGroupIrrep()

Irrep mty::QuantumFieldParent::getGroupIrrep ( const Group group) const

Returns the representation of the field in a particle group.

If the group is not found, an error is raised. This function works also for flavor representations.

Parameters
groupPointer to the group from which we want the representation of the field.
Returns
The representation of the field in group.
See also
irrep, getFlavorIrrep(), getGaugeIrrep().

◆ getInstance()

csl::Expr mty::QuantumFieldParent::getInstance ( csl::Tensor  point = defaultSpaceTimePoint)

Returns an instance of the quantum field as an expression.

This function generates a set of indices through getFullSetOfIndices(), and uses a space-time point by default or given by the user. It returns an instance of the field like \( A^{\mu A}(X) \) calling operator().

Parameters
pointSapce-time point at which the field is evaluated (optional).
Returns
An expression of the field instance with free and independent indices.
See also
getFullSetOfIndices(), operator()().

◆ getInvPropagator()

csl::Expr mty::QuantumFieldParent::getInvPropagator ( QuantumField const &  other,
QuantumField const &  self,
csl::Tensor P,
bool  external 
) const
virtual

Returns the expression of the propagator between two fields.

See also
Propagator_func.

This function is called when the left field is complex conjugated. When it is the case, in order to ensure that the conjugate is on the right, the order is reverted.

Parameters
otherLeft field of the propagator.
selfRight field of the propagator.
PMomentum integrated in the propagator.
externalTrue if one of the two fields is an external leg.
Returns
The expression of the propagator without the integral term \( \int \frac{d^4p}{(2\pi)^4} \).

◆ getKineticTerm()

csl::Expr mty::QuantumFieldParent::getKineticTerm ( csl::Tensor X)
virtual

Returns the kinetic term in the Lagrangian for the field.

This function is overriden in derived classes. Each particle has a specific form for its kinetic term, including covariant derivatives and mass term. An example of kinetic term for a complex scalar field is

\[ \mathcal{L} \ni (D_\mu \phi)^\dagger D^\mu\phi - m_\phi^2\phi ^\dagger \phi, \]

where \( D_\mu \) stands for the covariant derivative of the field including interactions with gauge vector fields.

See also
mty::gauge::covariantDerivative().
Parameters
XSpace-time point for the kinetic term.
Returns
The mathematical expression in the Lagrangian for the field.

Reimplemented in mty::DiracFermion, mty::ScalarBoson, mty::BaseVectorBoson, mty::WeylFermion, and mty::GhostBoson.

◆ getLorentzRep()

Irrep mty::QuantumFieldParent::getLorentzRep ( ) const

Returns the lorentz representation of the field.

Returns
The spin representation of the field.
See also
spin, mty::Lorentz, mty::algebra::D

◆ getMass()

csl::Expr mty::QuantumFieldParent::getMass ( ) const

Returns the expression of the mass of the particle.

Returns
The mass of the particle.
See also
mass, setMass().

◆ getNDegreesOfFreedom()

virtual int mty::QuantumFieldParent::getNDegreesOfFreedom ( ) const
pure virtual

Pure virtual function. Returns the number of degrees of freedom in the particle. It does not count gauge and flavor multiplicity. The result depends on the type of the particle and if it is complex.

Returns
An integer, number of degrees of freedom of the particle.

Implemented in mty::DiracFermion, mty::ScalarBoson, mty::BaseVectorBoson, mty::GhostBoson, mty::WeylFermion, and mty::GoldstoneBoson.

◆ getPropagator()

csl::Expr mty::QuantumFieldParent::getPropagator ( QuantumField const &  self,
QuantumField const &  other,
csl::Tensor P,
bool  external 
) const
virtual

Returns the expression of the propagator between two fields.

See also
Propagator_func.
Parameters
selfLeft field of the propagator.
otherRight field of the propagator.
PMomentum integrated in the propagator.
externalTrue if one of the two fields is an external leg.
Returns
The expression of the propagator without the integral term \( \int \frac{d^4p}{(2\pi)^4} \).

◆ getQuantumNumber() [1/2]

QuantumNumber::Value mty::QuantumFieldParent::getQuantumNumber ( QuantumNumber const *  number) const

Returns the quantum number of the field with respect to number.

Each field may have different values for quantum numbers (quarks have baryonic number +1/3, fermionic number +1, lepton number 0). This function returns the value associated to the field for a given QuantumNumber.

Parameters
numberQuantumNumber from which we want the field's value.
Returns
The value of the QuantumNumber for the field.
See also
qNumbers.

◆ getQuantumNumber() [2/2]

QuantumNumber::Value mty::QuantumFieldParent::getQuantumNumber ( QuantumField const *  instance,
QuantumNumber const *  number 
) const

Returns the quantum number of an instance of the field with respect to number.

The difference with getQuantumNumber(QuantumNumber const*) is that if the instance of the field is complex conjugated, the function returns -1 times the value of the quantum number. For example, to take the same example as in getQuantumNumber(QuantumNumber const*), a conjugated quark \( \bar{q} \) has -1/3 baryon number, -1 fermion number and 0 lepton number.getQuantumNumber(QuantumNumber const*)

Parameters
instanceInstance of the field we want the quantum number, may be conjugated or not.
numberQuantumNumber from which we want the field's value.
Returns
The value of the QuantumNumber for the field, with a minus sign if the field is complex conjugated.
See also
qNumbers.

◆ getSpaceIndex()

vector< Index > mty::QuantumFieldParent::getSpaceIndex ( const std::string &  nameIndex = "") const

Returns a set of free space indices corresponding to the field.

This function in general will return zero or one index. Scalar fields have no space-time index, spin 1/2 and 1 have 1. However, in order to potentially extend this function to higher spins with more space-time indices, this function returns a std::vector.

Returns
New indices generated corresponding to the space-time indices of the field.
See also
getGaugeIndex(), getFlavorIndex(), getFullSetOfIndices().

◆ getSpinDimension()

int mty::QuantumFieldParent::getSpinDimension ( ) const

Returns twice the spin of the particle in an integer.

For simplicity, this function returns a simple integer. Half spins being not represented, the spin is multiplied by 2 before being returned. Spins of scalars, fermions and vectors are then 0, 1, 2.

Returns
Twice the spin of the particle.
See also
spin.

◆ getVectorBoson()

Particle mty::QuantumFieldParent::getVectorBoson ( ) const
virtual

For a ghost or goldstone boson, returns the GaugeBoson associated with it.

Returns
The GaugeBoson associated with the Golstone or Ghost.

Reimplemented in mty::GhostBoson, and mty::GoldstoneBoson.

◆ getWeylFermion()

Particle mty::QuantumFieldParent::getWeylFermion ( Chirality  chirality) const
virtual

For a DiracFermion, returns the chiral WeylFermion it contains of chirality chirality if it has one.

Parameters
chiralityChirality of the WeylFermion we want to get.
Returns
The WeylFermion of chirality chirality if there is one embedded in the DiracFermion.
nullptr otherwise.

Reimplemented in mty::DiracFermion.

◆ getWidth()

csl::Expr mty::QuantumFieldParent::getWidth ( ) const

Returns the expression of the witdh of the particle.

Returns
The witdh of the particle.
See also
width, setWidth().

◆ getXiGauge()

csl::Expr mty::QuantumFieldParent::getXiGauge ( ) const
virtual

For a GaugeBoson, returns the expression of \( \xi \) in the current gauge.

See also
Gauge::GaugeChoice
Returns
\( \xi \) in the current gauge of the field if it is a gauge boson.

Reimplemented in mty::VectorBoson.

◆ hasFieldStrength()

bool mty::QuantumFieldParent::hasFieldStrength ( ) const
virtual

Tells if the particle has a FieldStrength.

A FieldStrength is defined automatically for VectorBoson fields, gauge bosons or not. It is defined as

\[ F^I_{\mu\nu} \equiv \partial _\mu A^I_\nu - \partial _\nu A^I_\mu, \]

with \( A^A_\mu \) a vector boson with a generic index \( I \) representing all flavor and gauge structures. If the field strength is defined, the kinetic term is expressed as \( -\frac{1}{4}F^I_{\mu\nu} F^{I\mu\nu} \) and contractions like \( \langle A^I_\mu F^J_{\nu\rho} \rangle \) or \( \langle F^I_{\mu\nu}F^J_{\rho\sigma}\rangle \) are defined by built-in propagators.

See also
VectorBoson, FieldStrength, Propagator_func, quantumFieldTheory.h.
Returns
True if the particle (should be a VectorBoson) has a FieldStrength defined.
False else.

Reimplemented in mty::VectorBoson.

◆ hasSpecialContractionWith()

bool mty::QuantumFieldParent::hasSpecialContractionWith ( QuantumField const &  other) const
virtual

Tells if the field has a special contraction property with other.

Parameters
otherField with which there may be a contraction.
Returns
True if there is a contraction property.
False otherwise.

◆ initIndexSpaces()

void mty::QuantumFieldParent::initIndexSpaces ( )
protected

Initializes firstGaugeIndex and firstSpaceIndex. Automatically called by the constructor.

See also
firstSpaceIndex, firstGaugeIndex.

◆ initPolarizationSum()

void mty::QuantumFieldParent::initPolarizationSum ( )
protected

Initializes the polarization sum for PolarizationField arising in amplitudes.

See also
polarizationSumInitialized, PolarizationField.

◆ initPropagator()

void mty::QuantumFieldParent::initPropagator ( )
protectedvirtual

Initializes default propagators for the particle. This function is called automatically in the constructor of derived classes.

See also
Propagator_func, ScalarBoson, WeylFermion, DiracFermion, VectorBoson.

Reimplemented in mty::VectorBoson, mty::DiracFermion, mty::ScalarBoson, and mty::WeylFermion.

◆ integrateOut()

void mty::QuantumFieldParent::integrateOut ( bool  value = true)

Sets the integrated out property of the field.

If true, the propagator of the particle is modified, assuming \( M^2\gg p^2 \). If false, the propagator is reset to its default.

Warning
(de-)Integrating out a particle, all non default propagators defined through AddCustomPropagator() will be automatically suppressed. There are indeed in general ill-defined in this case.
Parameters
valueBoolean, must be true to integrate out the particle, false else (default = true).
See also
integrateOut, isIntegratedOut(), AddCustomPropagator(), Propagator_func, quantumFieldTheory.h.

◆ isAntiCommuting()

bool mty::QuantumFieldParent::isAntiCommuting ( ) const
virtual

Tells if the field is a grassman field.

Returns
True if the field if fermionic or is a ghost.
False else.
See also
bosonic, isBosonic(), isFermionic(), GhostBoson.

Reimplemented in mty::GhostBoson.

◆ isBosonic()

bool mty::QuantumFieldParent::isBosonic ( ) const

Tells if the field is bosonic.

Returns
True if the field is bosonic.
False else.
See also
bosonic, isFermionic(), isAntiCommuting().

◆ isChiral()

bool mty::QuantumFieldParent::isChiral ( ) const
virtual

Tells if the field is chiral.

Returns
True if the field is a WeylFermion.
False otherwise.

Reimplemented in mty::WeylFermion.

◆ isContractibleWith()

bool mty::QuantumFieldParent::isContractibleWith ( QuantumFieldParent const *  other) const

Tells if the field may be contracted with another in Wick contrations.

Parameters
otherOther field to test the contraction.
Returns
True if a propagator exists between the two fields.
False else.
See also
wick::WickCalculator, Propagator_func, AddCustomPropagator().

◆ isEnabledInDiagrams()

bool mty::QuantumFieldParent::isEnabledInDiagrams ( ) const

Tells if the field is enabled in diagrams.

If it is not enables, each interaction containing the particle will be discarded in computations.

Returns
True if the field may appear in diagrams.
False else.
See also
enabledInDiagrams, setEnabledInDiagrams(), Expander::Options.

◆ isFermionic()

bool mty::QuantumFieldParent::isFermionic ( ) const

Tells if the field is fermionic.

Returns
True if the field is fermionic.
False else.
See also
bosonic, isBosonic(), isAntiCommuting().

◆ isGaugeBoson()

bool mty::QuantumFieldParent::isGaugeBoson ( ) const
virtual

Tells if the particle is a gauge boson.

Returns
True if the particle is a gauge boson (created by a GaugedGroup).
False otherwise.

Reimplemented in mty::GaugeBoson.

◆ isIntegratedOut()

bool mty::QuantumFieldParent::isIntegratedOut ( ) const

Tells if the field is integrated out.

If true, the only thing that changes is that the propagator is replaced by an effective interaction assuming \(M\gg p\). For example in the case of a massive vector boson, the standard propagator of a VectorBoson of mass \( M \) is

\[ -ie^{-ipX}\frac{g_{\mu\nu} - (1-\xi)\frac{p_\mu p_\nu}{p^2-\xi M^2}} {p^2-M^2}, \]

whereas its integrated propagator becomes

\[ ie^{-ipX}\frac{g_{\mu\nu}}{M^2}. \]

This is possible for any field (fermionic, scalar or vector).

Returns
True if the field is integrated out.
False otherwise.
See also
integratedOut, integrateOut(), Propagator_func, quantumFieldTheory.h, EffModel, Wilson.

◆ isPhysical()

bool mty::QuantumFieldParent::isPhysical ( ) const

Tells if the field is physical, i.e. may appear in external legs.

If the field is not physical, it will be forbidden in external legs. In particular, the function setExternal() will yield an error. For example, ghosts and goldstone bosons are not physical.

See also
physical, isExternal(), setExternal(), setPhysical(), Insertion.
Returns
True if the field is physical.
False else.

◆ isSelfConjugate()

bool mty::QuantumFieldParent::isSelfConjugate ( ) const

Tells if the field is self-conjugate (real).

By default, all fields except vector bosons are complex. If the field is self-conjugate, it may contract with itself (not conjugated) in wick contractions.

Returns
True if the field is real.
False if the field is complex.
See also
selfConjugate, setSelfConjugate().

◆ operator()() [1/10]

csl::Expr mty::QuantumFieldParent::operator() ( const csl::Tensor t_point)
override

Generates an instance of the field as a symbolic expression.

This functions takes no csl::Index. The field is then for sure a ScalarBoson in a trivial Gauge representation. Example: \(\phi(X)\).

Parameters
t_pointSpace_time point of the scalar field.
Returns
An expression, instance of the field.
See also
QuantumField.

◆ operator()() [2/10]

csl::Expr mty::QuantumFieldParent::operator() ( csl::Index  index,
const csl::Tensor t_point 
)
override

Generates an instance of the field as a symbolic expression.

This functions takes one csl::Index. This may be for example a field like \( A^\mu(X) \).

Parameters
indexUnique index of the field.
t_pointSpace-time point of the field.
Returns
An expression, instance of the field.
See also
QuantumField.

◆ operator()() [3/10]

csl::Expr mty::QuantumFieldParent::operator() ( std::vector< int > const &  indices,
const csl::Tensor t_point 
)
override

Generates an instance of the QuantumField as a symbolic expression.

Parameters
indicesIndices of the field, as integers.
t_pointSpace-time point of the field.
Returns
An expression, instance of the field.
See also
QuantumField.

◆ operator()() [4/10]

csl::Expr mty::QuantumFieldParent::operator() ( std::vector< csl::Index indices,
const csl::Tensor t_point 
)
override

Generates an instance of the field as a symbolic expression.

This function takes multiple indices (may be only one) in a std::vector. This may correspond to a field like \( A^{\mu I}(X) \) .

Parameters
indicesIndices of the field.
t_pointSpace-time point of the field.
Returns
An expression, instance of the field.
See also
QuantumField.

◆ operator()() [5/10]

csl::Expr mty::QuantumFieldParent::operator() ( csl::Index  polarization,
std::vector< int > const &  indices,
const csl::Tensor t_point 
)

Generates an instance of the PolarizationField as a symbolic expression.

Parameters
polarizationPolarization index for the field.
indicesIndices of the field, as integers.
t_pointSpace-time point of the field.
Returns
An expression, instance of the field.
See also
QuantumField.

◆ operator()() [6/10]

csl::Expr mty::QuantumFieldParent::operator() ( )

Generates an instance of the field as a symbolic expression.

This functions takes no csl::Index. The field is then for sure a ScalarBoson in a trivial Gauge representation. Example: \(\phi(X)\). The space_time point is taken as default: see defaultSpaceTimePoint.

Parameters
t_pointSpace_time point of the scalar field.
Returns
An expression, instance of the field.
See also
QuantumField.

◆ operator()() [7/10]

csl::Expr mty::QuantumFieldParent::operator() ( csl::Index  index)
overridevirtual

Generates an instance of the field as a symbolic expression.

This functions takes one csl::Index. This may be for example a field like \( A^\mu(X) \). The space_time point is taken as default: see defaultSpaceTimePoint.

Parameters
indexUnique index of the field.
Returns
An expression, instance of the field.
See also
QuantumField.

Reimplemented from csl::TensorParent.

◆ operator()() [8/10]

csl::Expr mty::QuantumFieldParent::operator() ( std::vector< csl::Index indices)
overridevirtual

Generates an instance of the field as a symbolic expression.

This function takes multiple indices (may be only one) in a std::vector. This may correspond to a field like \( A^{\mu I}(X) \) . The space_time point is taken as default: see defaultSpaceTimePoint.

Parameters
indicesIndices of the field.
Returns
An expression, instance of the field.
See also
QuantumField.

Reimplemented from csl::TensorParent.

◆ operator()() [9/10]

csl::Expr mty::QuantumFieldParent::operator() ( csl::Index  polarization,
csl::Index  index,
const csl::Tensor momentum 
)

Generates an instance of the polarization field as a symbolic expression.

The first index must be the spin or polarization of the field. Then follow the rest of the indices, that can be unique or in a std::vector. For example, one may create the polarization tensor of a vector boson \( \epsilon ^\lambda_{\mu}(p) \) with the following code

Index lambda = ...;
Index mu = ...;
Tensor p = ...;
Particle A = vectorboson_s(...)
csl::Expr epsilon = A(lambda, mu, p);
Returns
An expression, instance of the field.
See also
PolarizationField.

◆ operator()() [10/10]

csl::Expr mty::QuantumFieldParent::operator() ( csl::Index  polarization,
std::vector< csl::Index indices,
const csl::Tensor momentum 
)

Generates an instance of the polarization field as a symbolic expression.

The first index must be the spin or polarization of the field. Then follow the rest of the indices, that can be unique or in a std::vector. For example, one may create the polarization tensor of a vector boson \( \epsilon ^\lambda_{\mu I}(p) \) with the following code

Index lambda = ...;
Index mu = ...;
Index I = ...;
Tensor p = ...;
Particle A = vectorboson_s(...)
csl::Expr epsilon = A(lambda, {mu, I}, p);
Returns
An expression, instance of the field.
See also
PolarizationField.

◆ operator=()

QuantumFieldParent& mty::QuantumFieldParent::operator= ( const QuantumFieldParent other)
default

Assignment operator (c++ default).

Parameters
otherOther field to copy.
Returns
A reference to the current object.
See also
QuantumFieldParent(QuantumFieldParent const&).

◆ setBrokenParts()

void mty::QuantumFieldParent::setBrokenParts ( const csl::Space broken,
const std::vector< Particle > &  brokenParts 
)
virtual

Sets broken parts (from gauge of flavor symmetry full breaking) containing the new particles.

This function should not be called directly by the user in general. It overrides a csl function that allows to break a tensor into several parts. In this case the space is fully broken (no subspace left).

Parameters
brokenSpace that is broken in several parts.
brokenPartsNew particles arising from the symmmetry breaking.

Reimplemented in mty::VectorBoson.

◆ setDrawType()

void mty::QuantumFieldParent::setDrawType ( drawer::ParticleType  type)

Sets the drawing type of the particle.

The drawing type is how the particle will be drawn on diagrams.

Parameters
typeType of line for the particle in diagrams.
See also
drawType, getDrawType().

◆ setEnabledInDiagrams()

void mty::QuantumFieldParent::setEnabledInDiagrams ( bool  t_enabled)

Enables or disables the particle in diagrams.

If t_enabled is false, the field may not appear in any computation and will be automatically discarded. This may be useful in some cases for which we know that the contribution of one or several particles is negligible, and that computing diagrams containing them is irrelevant.

Parameters
t_enabledBoolean telling if the field may appear in diagrams.
See also
enabledInDiagrams, isEnabledInDiagrams().

◆ setFieldStrength()

void mty::QuantumFieldParent::setFieldStrength ( Particle const &  fieldStrength)
virtual

For a VectorBoson, sets the associated FieldStrength.

The fieldStrength must of course be consitent with the actual field.

See also
hasFieldStrength(), FieldStrength, VectorBoson.
Returns
The FieldStrength of the the VectorBoson if it exists.
nullptr otherwise.

Reimplemented in mty::VectorBoson.

◆ setFlavorRep()

void mty::QuantumFieldParent::setFlavorRep ( const FlavorGroup group,
const Irrep newRep 
)

Sets the representation of the field for a given flavor group.

The Irrep given as parameter is an already built representation. This function is called during flavor symmetry breaking, when representation are broken. Changing the representation, the indices of the tensor change and may disappear if the new representation is trivial, or appear if the new representation is not while the old one is.

Parameters
groupFlavor group for which the field representation is changed.
newRepNew representation of the field in group.
See also
flavor, getFlavorIrrep(), setGroupRep().

◆ setGhostBoson()

void mty::QuantumFieldParent::setGhostBoson ( Particle const &  ghost)
virtual

For a GaugeBoson, sets the associated GhostBoson.

After the call of this function, the link os created and the calling getGhostBoson() for the gauge boson or getVectorBoson() for the ghost will indeed yield the right particles. The ghost boson must have the exact same representation as the gauge boson except the spin. This function is called automatically when creating a ghost boson from a gauge boson through mty::ghostboson_s().

See also
mty::ghostboson_s, GhostBoson.
Parameters
ghostParticle that takes the place of a ghost boson for the curent gauge boson.

Reimplemented in mty::VectorBoson.

◆ setGoldstoneBoson()

void mty::QuantumFieldParent::setGoldstoneBoson ( Particle const &  goldstone)
virtual

For a GaugeBoson, sets the associated GoldstoneBoson.

After the call of this function, the link os created and the calling getGoldstoneBoson() for the gauge boson or getVectorBoson() for the golstone will indeed yield the right particles. The golstone boson must have the exact same representation as the gauge boson except the spin. This function is called automatically when creating a golstone boson from a gauge boson through mty::golstoneboson_s(), or through Model::promoteToGoldstone().

See also
mty::golstoneboson_s, Model::promoteToGoldstone(), GoldstoneBoson.
Parameters
goldstoneParticle that takes the place of a golstone boson for the curent gauge boson.

Reimplemented in mty::VectorBoson.

◆ setGroupRep() [1/2]

void mty::QuantumFieldParent::setGroupRep ( Group group,
const Irrep newRep 
)

Sets the representation of the field for a given group.

The Irrep given as parameter is an already built representation. This function is called during gauge symmetry breaking, when representation are broken. Changing the representation, the indices of the tensor change and may disappear if the new representation is trivial, or appear if the new representation is not while the old one is.

Parameters
groupGroup for which the field representation is changed.
newRepNew representation of the field in group.
See also
irrep, getGroupIrrep(), getGaugeIrrep().

◆ setGroupRep() [2/2]

void mty::QuantumFieldParent::setGroupRep ( std::string const &  group,
std::vector< int > const &  highestWeight 
)

Sets the representation of the field for a given group.

The Irrep given as parameter is in the form of a std::vector of integers. These integer are the dinkin labels of the representation. This function is called during gauge symmetry breaking, when representation are broken. Changing the representation, the indices of the tensor change and may disappear if the new representation is trivial, or appear if the new representation is not while the old one is.

Parameters
groupGroup for which the field representation is changed.
highestWeightDinkin labels of the highest weight for the wanted representation.
See also
irrep, getGroupIrrep(), getGaugeIrrep(), SemiSimpleAlgebra, SemiSimpleAlgebra::highestWeightRep(), setFlavorRep().

◆ setMass() [1/3]

void mty::QuantumFieldParent::setMass ( const std::string &  t_mass)

Sets the mass of the particle.

The mass created for the particle is a csl::Constant name t_mass. If the field is added to a Model through Model::addField() later on, the corresponding mass term is added automatically to the Lagrangian.

Parameters
t_massName of the constant mass.
See also
mass, getMass().

◆ setMass() [2/3]

void mty::QuantumFieldParent::setMass ( const std::string &  t_mass,
long double  value 
)

Sets the mass of the particle.

The mass created for the particle is a csl::Constant name t_mass with a numerical value of value. If the field is added to a Model through Model::addField() later on, the corresponding mass term is added automatically to the Lagrangian.

Parameters
t_massName of the constant mass.
valueValue of the mass (should be expressed in GeV).
See also
mass, getMass().

◆ setMass() [3/3]

void mty::QuantumFieldParent::setMass ( const csl::Expr t_mass)

Sets the mass of the particle.

The expression of the mass given by the user may be anything, the only requirements is that it must be scalar (without free index). If the field is added to a Model through Model::addField() later on, the corresponding mass term is added automatically to the Lagrangian.

Parameters
t_massExpression of the new mass for the particle.
See also
mass, getMass().

◆ setPhysical()

void mty::QuantumFieldParent::setPhysical ( bool  t_physical)

Sets the physical property of the particle.

If t_physical is true, the field is physical and may appear as external legs of diagrams (insertions). Else, the field becomes forbidden in diagrams and setting them external will raise an error.

Parameters
t_physicalBoolean telling if the field is physical (may appear in external legs).
See also
physical, isPhysical(), setExternal().

◆ setPropagator()

void mty::QuantumFieldParent::setPropagator ( QuantumFieldParent const *  other,
Propagator_func  prop 
)
protected

Changes the propagator of a particle with another.

This function is not callable by the user. It is called instead by AddCustomPropagator() to avoid multiple definitions of propagators.

Parameters
fieldOther field in the propagator.
propagatorNew propagator.
See also
propagator, AddCustomPropagator().

◆ setSelfConjugate()

void mty::QuantumFieldParent::setSelfConjugate ( bool  t_selfConjugate)

Sets the complex conjugation property of the particle.

If t_selfConjugate is true, the particle becomes real. Otherwise it becomes complex and \( \Phi ^* \neq \bar{\Phi} \).

Parameters
t_selfConjugateBoolean telling if the field must be real.
See also
selfConjugate, isSelfConjugate().

◆ setWidth()

void mty::QuantumFieldParent::setWidth ( const csl::Expr t_width)

Sets the width of the particle.

The expression of the width given by the user may be anything, the only requirements is that it must be scalar (without free index).

Parameters
t_massExpression of the new width for the particle.
See also
width, getWidth().

Friends And Related Function Documentation

◆ AddCustomPropagator [1/2]

void AddCustomPropagator ( QuantumFieldParent left,
QuantumFieldParent right,
QuantumFieldParent::Propagator_func  propagator 
)
friend

Changes the propagator of a particle with another.

The propagator should of course be consistent, but may be as exotic as possible. See Propagator_func to know the exact structure of what must be given. This function may be useful for example to define the propagator between a left-handed and a right-handed fermion (different particles), or between a vector boson and its field strength...

Parameters
fieldLeft field in the propagator.
fieldRight field in the propagator.
propagatorNew propagator.
Warning
In the case of a non symmetric propagator, the user should take into account that in its custom function, the left field will not always be the first argument. The only thing that is ensured is that if there is a complex conjugated field, it will be the second argument.
See also
QuantumFieldParent::propagator, Propagator_func, quantumFieldTheory.h.

◆ AddCustomPropagator [2/2]

void AddCustomPropagator ( QuantumFieldParent field,
QuantumFieldParent::Propagator_func  propagator 
)
friend

Changes the propagator of a particle with itself.

The propagator should of course be consistent, but may be as exotic as possible. See Propagator_func to know the exact structure of what must be given.

Parameters
fieldField whose propagator is modified.
propagatorNew propagator.
See also
QuantumFieldParent::propagator, Propagator_func, quantumFieldTheory.h.

◆ operator<<

std::ostream& operator<< ( std::ostream &  fout,
const QuantumFieldParent obj 
)
friend

Overload of operator<< for QuantumFieldParent.

Parameters
foutOutput flux.
objQuantumFieldParent to display (basically).
Returns
A reference to fout.

Field Documentation

◆ propagator

std::map<QuantumFieldParent const*, Propagator_func> mty::QuantumFieldParent::propagator
protected

Contains all propagators for the field with other.

Maps another field to a Propagator_func. For example, a vector boson has two propagators. One with itself, see mty::VectorPropagator in quantumFieldTheory.h, one with its field strength, see mty::FieldStrengthPropagator in quantumFieldTheory.h. Propagators may be modified through the function mty::AddCustomPropagator.

◆ qNumbers

std::map<QuantumNumber::ID, QuantumNumber::Value> mty::QuantumFieldParent::qNumbers
mutableprotected

List of quantum numbers of the field.

Quantum numbers may be used to discard null diagrams more quickly and speed up computations. See QuantumNumber and Expander::Options.

◆ selfConjugate

bool mty::QuantumFieldParent::selfConjugate = false
protected

True if the field is real (real scalars, gauge bosons , majorana fermions).

By default, all particles are complex except VectorBoson fields that are set real. This value has an impact in wick contractions.

See also
isSelfConjugate(), setSelfConjugate().

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