Base class for parents of QuantumField objects. More...
#include <quantumField.h>
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 GaugedGroup * | getGaugedGroup () |
| 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... | |
| Gauge * | getGauge () 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::Index > | getSpaceIndex (const std::string &nameIndex="") const |
| Returns a set of free space indices corresponding to the field. More... | |
| std::vector< csl::Index > | getGaugeIndex (std::vector< std::string > names=std::vector< std::string >()) const |
| Returns a set of gauge indices corresponding to the field. More... | |
| std::vector< csl::Index > | getFlavorIndex (std::vector< std::string > names=std::vector< std::string >()) const |
| Returns a set of flavor indices corresponding to the field. More... | |
| std::vector< csl::Index > | getFullSetOfIndices () 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::Parent > | 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. More... | |
| QuantumFieldParent & | operator= (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< Permutation > | getPermutation () 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::QuantumFieldParent > | removeRelative (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 ...). | |
| Group * | stGroup |
| 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(). | |
| Gauge * | gauge |
| 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 Flavor * | flavor |
| 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::Value > | qNumbers |
| List of quantum numbers of the field. More... | |
| std::map< QuantumFieldParent const *, Propagator_func > | propagator |
| 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... | |
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.
| using mty::QuantumFieldParent::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.
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().
| 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.
| t_name | Name of the field. |
| t_spin | Integer equal to twice the spin of the particle. |
| t_gauge | Pointer to the gauge of the model. |
| 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.
| t_name | Name of the field. |
| t_spin | Integer equal to twice the spin of the particle. |
| irrep | Gauge representation of the field. |
| 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.
| t_name | Name of the field. |
| t_spin | Integer equal to twice the spin of the particle. |
| t_gauge | Pointer to the gauge of the model. |
| t_isSelfConjugate | Boolean that must be true for real fields, false otherwise. |
| 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.
| t_name | Name of the field. |
| t_spin | Integer equal to twice the spin of the particle. |
| irrep | Gauge representation of the field. |
| t_isSelfConjugate | Boolean that must be true for real fields, false otherwise. |
| 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.
| mty::QuantumFieldParent::QuantumFieldParent | ( | const std::string & | t_name, |
| const QuantumFieldParent * | other | ||
| ) |
Builds a new particle identical to another, with a different name.
| t_name | Name of the field. |
| other | Ohter field to copy. |
| void mty::QuantumFieldParent::addQuantumNumber | ( | QuantumNumber const & | number, |
| QuantumNumber::Value | value | ||
| ) |
Adds a non trivial quantum number to the particle.
| number | QuantumNumber for which we set the value (for the field). |
| value | Value of the quantum number of the field. |
| 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) \)).
| t_flavor | New Flavor of the particle. |
|
override |
Returns the set of new tensors after breaking the particle in parts.
| broken | Space (gauge or flavor) that is broken. |
| newSpace | New (non trivial) vector spaces after the symmetry breaking. |
| pieces | Dimensions of new spaces. The sum must be equal to the dimension of broken. |
|
pure virtual |
Pure virtual function. Generates a partical similar to the current object, changing only the name.
| t_name | Name of the new particle, identical to the current object. |
Implemented in mty::FieldStrength, mty::GaugeBoson, mty::DiracFermion, mty::VectorBoson, mty::ScalarBoson, mty::WeylFermion, mty::GhostBoson, and mty::GoldstoneBoson.
|
virtual |
Returns the chirality of the particle.
A DiracFermion or boson will return Chirality::None. WeylFermion will return either Chirality::Left or Chirality::Right.
Reimplemented in mty::WeylFermion.
|
virtual |
For a WeylFermion embedded in a DiracFermion, returns the other part of the DiracFermion.
Reimplemented in mty::WeylFermion.
|
virtual |
For a WeylFermion embedded in a DiracFermion, returns the dirac fermion.
Reimplemented in mty::WeylFermion.
| drawer::ParticleType mty::QuantumFieldParent::getDrawType | ( | ) | const |
Returns the drawing type of the particle.
|
pure virtual |
Pure virtual function. Returns the energy dimension of the field.
Implemented in mty::FieldStrength, mty::DiracFermion, mty::ScalarBoson, mty::BaseVectorBoson, and mty::WeylFermion.
|
virtual |
For a VectorBoson, returns the associated FieldStrength if it exists.
Reimplemented in mty::VectorBoson.
| 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.
| FlavorIrrep mty::QuantumFieldParent::getFlavorIrrep | ( | ) | const |
Returns the flavor representation containing all individual group representations of the field in the flavor.
| 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.
| group | Pointer to the flavor group from which we want the representation of the field. |
| 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.
| Gauge * mty::QuantumFieldParent::getGauge | ( | ) | const |
Returns a pointer to the gauge the field is a representation of.
| 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.
| GaugeIrrep mty::QuantumFieldParent::getGaugeIrrep | ( | ) | const |
Returns the gauge representation containing all individual group representations of the field in the gauge.
|
virtual |
For a GoldstoneBoson, returns the associated Golstone boson of there is one.
Reimplemented in mty::VectorBoson.
|
virtual |
For a vector boson in a non abelian gauged group, returns the associated Goldstone boson.
Reimplemented in mty::VectorBoson.
|
virtual |
For a GaugeBoson, returns the associated Golstone boson of there is one.
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.
| group | Pointer to the group from which we want the representation of the field. |
| 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().
| point | Sapce-time point at which the field is evaluated (optional). |
|
virtual |
Returns the expression of the propagator between two fields.
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.
| other | Left field of the propagator. |
| self | Right field of the propagator. |
| P | Momentum integrated in the propagator. |
| external | True if one of the two fields is an external leg. |
|
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.
| X | Space-time point for the kinetic term. |
Reimplemented in mty::DiracFermion, mty::ScalarBoson, mty::BaseVectorBoson, mty::WeylFermion, and mty::GhostBoson.
| Irrep mty::QuantumFieldParent::getLorentzRep | ( | ) | const |
Returns the lorentz representation of the field.
| csl::Expr mty::QuantumFieldParent::getMass | ( | ) | 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.
Implemented in mty::DiracFermion, mty::ScalarBoson, mty::BaseVectorBoson, mty::GhostBoson, mty::WeylFermion, and mty::GoldstoneBoson.
|
virtual |
Returns the expression of the propagator between two fields.
| self | Left field of the propagator. |
| other | Right field of the propagator. |
| P | Momentum integrated in the propagator. |
| external | True if one of the two fields is an external leg. |
| 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.
| number | QuantumNumber from which we want the field's value. |
| 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*)
| instance | Instance of the field we want the quantum number, may be conjugated or not. |
| number | QuantumNumber from which we want the field's value. |
| 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.
| 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.
|
virtual |
For a ghost or goldstone boson, returns the GaugeBoson associated with it.
Reimplemented in mty::GhostBoson, and mty::GoldstoneBoson.
For a DiracFermion, returns the chiral WeylFermion it contains of chirality chirality if it has one.
| chirality | Chirality of the WeylFermion we want to get. |
Reimplemented in mty::DiracFermion.
| csl::Expr mty::QuantumFieldParent::getWidth | ( | ) | const |
Returns the expression of the witdh of the particle.
|
virtual |
For a GaugeBoson, returns the expression of \( \xi \) in the current gauge.
Reimplemented in mty::VectorBoson.
|
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.
Reimplemented in mty::VectorBoson.
|
virtual |
Tells if the field has a special contraction property with other.
| other | Field with which there may be a contraction. |
|
protected |
Initializes firstGaugeIndex and firstSpaceIndex. Automatically called by the constructor.
|
protected |
Initializes the polarization sum for PolarizationField arising in amplitudes.
|
protectedvirtual |
Initializes default propagators for the particle. This function is called automatically in the constructor of derived classes.
Reimplemented in mty::VectorBoson, mty::DiracFermion, mty::ScalarBoson, and mty::WeylFermion.
| 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.
| value | Boolean, must be true to integrate out the particle, false else (default = true). |
|
virtual |
Tells if the field is a grassman field.
Reimplemented in mty::GhostBoson.
| bool mty::QuantumFieldParent::isBosonic | ( | ) | const |
Tells if the field is bosonic.
|
virtual |
Tells if the field is chiral.
Reimplemented in mty::WeylFermion.
| bool mty::QuantumFieldParent::isContractibleWith | ( | QuantumFieldParent const * | other | ) | const |
Tells if the field may be contracted with another in Wick contrations.
| other | Other field to test the contraction. |
| 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.
| bool mty::QuantumFieldParent::isFermionic | ( | ) | const |
Tells if the field is fermionic.
|
virtual |
Tells if the particle is a gauge boson.
Reimplemented in mty::GaugeBoson.
| 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).
| 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.
| 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.
|
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)\).
| t_point | Space_time point of the scalar field. |
|
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) \).
| index | Unique index of the field. |
| t_point | Space-time point of the field. |
|
override |
Generates an instance of the QuantumField as a symbolic expression.
| indices | Indices of the field, as integers. |
| t_point | Space-time point of the field. |
|
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) \) .
| indices | Indices of the field. |
| t_point | Space-time point of the field. |
| 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.
| polarization | Polarization index for the field. |
| indices | Indices of the field, as integers. |
| t_point | Space-time point of the field. |
| 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.
| t_point | Space_time point of the scalar field. |
|
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.
| index | Unique index of the field. |
Reimplemented from csl::TensorParent.
|
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.
| indices | Indices of the field. |
Reimplemented from csl::TensorParent.
| 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
| 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
|
default |
Assignment operator (c++ default).
| other | Other field to copy. |
|
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).
| broken | Space that is broken in several parts. |
| brokenParts | New particles arising from the symmmetry breaking. |
Reimplemented in mty::VectorBoson.
| 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.
| type | Type of line for the particle in diagrams. |
| 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.
| t_enabled | Boolean telling if the field may appear in diagrams. |
|
virtual |
For a VectorBoson, sets the associated FieldStrength.
The fieldStrength must of course be consitent with the actual field.
Reimplemented in mty::VectorBoson.
| 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.
| group | Flavor group for which the field representation is changed. |
| newRep | New representation of the field in group. |
|
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().
| ghost | Particle that takes the place of a ghost boson for the curent gauge boson. |
Reimplemented in mty::VectorBoson.
|
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().
| goldstone | Particle that takes the place of a golstone boson for the curent gauge boson. |
Reimplemented in mty::VectorBoson.
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.
| group | Group for which the field representation is changed. |
| newRep | New representation of the field in group. |
| 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.
| group | Group for which the field representation is changed. |
| highestWeight | Dinkin labels of the highest weight for the wanted representation. |
| 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.
| t_mass | Name of the constant mass. |
| 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.
| t_mass | Name of the constant mass. |
| value | Value of the mass (should be expressed in GeV). |
| 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.
| t_mass | Expression of the new mass for the particle. |
| 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.
| t_physical | Boolean telling if the field is physical (may appear in external legs). |
|
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.
| field | Other field in the propagator. |
| propagator | New propagator. |
| 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} \).
| t_selfConjugate | Boolean telling if the field must be real. |
| 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).
| t_mass | Expression of the new width for the particle. |
|
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...
| field | Left field in the propagator. |
| field | Right field in the propagator. |
| propagator | New 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.
| field | Field whose propagator is modified. |
| propagator | New propagator. |
|
friend |
Overload of operator<< for QuantumFieldParent.
| fout | Output flux. |
| obj | QuantumFieldParent to display (basically). |
|
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.
|
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.
|
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.
1.8.13