Class deriving from csl::TensorFieldElement, may enter expressions. In contrary to QuantumFieldParent, it is not a inherited from any class. More...
#include <quantumField.h>
Public Member Functions | |
| QuantumField (const csl::Tensor &t_vector, const csl::Parent &t_parent) | |
| Constructor with two parameters. More... | |
| QuantumField (const csl::Tensor &t_vector, const csl::Parent &t_parent, const std::vector< csl::Index > &indices) | |
| Constructor with three parameters. More... | |
| QuantumField (const csl::Tensor &t_vector, const csl::Parent &t_parent, const csl::IndexStructure &indices) | |
| Constructor with three parameters. More... | |
| QuantumField () | |
| Default constructor. Initializes no parent and no space-time point. More... | |
| QuantumField (QuantumField const &)=default | |
| Default Copy constructor. | |
| QuantumField (QuantumField &&)=default | |
| Default Move constructor. | |
| QuantumField & | operator= (const QuantumField &other)=default |
| Default copy assignement operator. | |
| QuantumField & | operator= (QuantumField &&)=default |
| Default move assignement operator. | |
| QuantumFieldParent * | getQuantumParent () const |
| Returns a pointer to the QuantumFieldParent of the field. More... | |
| Particle | getParticle () const |
| Returns a mty::Particle, pointer to the parent of the field. More... | |
| auto | getGaugeIrrep () const |
| auto | getFlavorIrrep () const |
| template<class GroupType > | |
| auto | getGroupIrrep (GroupType &&group) const |
| template<class FlavorGroupType > | |
| auto | getFlavorIrrep (FlavorGroupType &&group) const |
| int | getSpinDimension () const |
| See QuantumFieldParent::getSpinDimension(). More... | |
| csl::Expr | getEnergyDimension () const |
| See QuantumFieldParent::getEnergyDimension(). More... | |
| csl::Expr | getMass () const |
| See QuantumFieldParent::getMass(). More... | |
| csl::Expr | getWidth () const |
| See QuantumFieldParent::getWidth(). More... | |
| PartnerShip | getPartnerShip () const |
| bool | isChiral () const |
| See QuantumFieldParent::isChiral(). More... | |
| Chirality | getChirality () const |
| See QuantumFieldParent::getChirality(). More... | |
| void | setChirality (Chirality chirality) |
| Sets the chirality of the particle. More... | |
| bool | isGaugeBoson () const |
| See QuantumFieldParent::isGaugeBoson(). More... | |
| csl::Expr | getXiGauge () const |
| See QuantumFieldParent::getXiGauge(). More... | |
| csl::Expr | getSquaredMass () const |
| Returns the mass squared of the field. More... | |
| bool | getConjugated () const |
| Tells if the field is complex conjugated. More... | |
| bool | isExternal () const |
| Tells if the field is an external field. More... | |
| bool | isOnShell () const |
| bool | isBosonic () const |
| See QuantumFieldParent::isBosonic(). More... | |
| bool | isFermionic () const |
| See QuantumFieldParent::isFermionic(). More... | |
| bool | isAntiCommuting () const |
| See QuantumFieldParent::isAntiCommuting(). More... | |
| bool | isSelfConjugate () const |
| See QuantumFieldParent::isSelfConjugate(). More... | |
| bool | isReal () const override |
| bool | isPhysical () const |
| Tells if the field is physical, i.e. may appear in external legs. More... | |
| bool | isContractibleWith (const QuantumField &other) const |
| See QuantumFieldParent::isContractibleWith(). More... | |
| bool | isExactlyContractiblewith (const QuantumField &other) const |
| Tests if the the field is exactly contractible with the other one. More... | |
| void | addDerivative (const csl::Index &index) |
| Adds a derivative index to the the field. More... | |
| bool | hasDerivative () const |
| Tells if the field has derivative indices. More... | |
| csl::IndexStructure | getDerivativeStructure () const |
| Returns the derivative structure of the field. More... | |
| csl::Expr | getPropagator (const QuantumField &other, csl::Tensor &vertex) const |
| Returns the propagator with another QuantumField. More... | |
| csl::Expr | getLSZInsertion (const csl::Tensor &momentum, bool ruleMode=false, bool lock=false) const |
| Returns the expression of the LSZ insertion corresponding to the field. More... | |
| QuantumField | getConjugatedField () const |
| Copies the field in a new new one and conjugates it before returning it. More... | |
| csl::Expr | contraction (csl::Expr_info other) const override |
| virtual csl::Expr | matrixChargeConjugation (csl::Expr_info other) const |
| std::optional< csl::Expr > | getComplexConjugate () const override |
| Returns the complex conjugate expression of the field. More... | |
| void | conjugate () |
| Conjugates the field and changes its particle number. More... | |
| void | setExternal (bool t_external) |
| Sets the external property of the particle. More... | |
| void | setOnShell (bool t_onShell) |
| virtual void | setIncoming (bool t_incoming) |
| Sets the incoming property of the particle. More... | |
| virtual void | setParticle (bool t_particle) |
| Sets the particle property of the particle. More... | |
| void | setPartnerShip (PartnerShip const &t_partnerShip) |
| void | setDerivativeStructure (const csl::IndexStructure &structure) |
| Sets the derivative structure of the field. More... | |
| bool | getCommutable () const override |
| Tells if the field is a commutable object in products. More... | |
| bool | commutesWith (csl::Expr_info other, int sign=-1) const override |
| Tells if the field commutes with another expression. More... | |
| bool | hasContractionProperty (csl::Expr_info expr) const override |
| Tells if the field has an indicial contraction property with another expression. More... | |
| csl::unique_Expr | copy_unique () const override |
| Returns a copy of the field in a std::unique_ptr. More... | |
| bool | isIndexed () const override |
| Tells if the field is indexed. More... | |
| bool | operator== (csl::Expr_info other) const override |
| Compares the field with another expression. More... | |
| bool | compareWithDummy (csl::Expr_info other, std::map< csl::Index, csl::Index > &constraints, bool keepAllCosntraints=false) const override |
| Compares the field with another expression. More... | |
| bool | operator< (const QuantumField &other) const |
| Compares the simplicity of the field with another. More... | |
| bool | operator== (const QuantumField &other) const |
| Compares the field with another. More... | |
| bool | operator!= (const QuantumField &other) const |
| Compares the field with another. More... | |
| bool | isParticle () const |
| Tells if the (external) field is a particle or anti particle. More... | |
| bool | isIncoming () const |
| Tells if the (external) field is incoming or outgoing. More... | |
| bool | isIncomingParticle () const |
| Tells if the (external) field is an incoming particle. More... | |
| bool | isOutgoingParticle () const |
| Tells if the (external) field is an outgoing particle. More... | |
| bool | isIncomingAntiParticle () const |
| Tells if the (external) field is an incoming anti-particle. More... | |
| bool | isOutgoingAntiParticle () const |
| Tells if the (external) field is an outgoing an anti-particle. More... | |
Public Member Functions inherited from csl::TensorFieldElement | |
| csl::PrimaryType | getPrimaryType () const override |
| csl::Type | getType () const override |
| void | print (int mode=0, std::ostream &out=std::cout, bool lib=false) const override |
| std::string | printLaTeX (int mode=0) const override |
| std::optional< Expr > | evaluate (csl::eval::mode user_mode=csl::eval::base) const override |
| bool | commutesWith (Expr_info expr, int sign=-1) const override |
| bool | dependsOn (Expr_info expr) const override |
| bool | dependsExplicitlyOn (Expr_info expr) const override |
| bool | compareWithDummy (Expr_info other, std::map< Index, Index > &constraints, bool keepAllCosntraints=false) const override |
| bool | operator== (Expr_info expr) const override |
Public Member Functions inherited from csl::TensorElement | |
| TensorElement (const Index &t_index, const Parent &t_parent) | |
| TensorElement (const std::vector< Index > &indices, const Parent &t_parent) | |
| TensorElement (const IndexStructure &indices, const Parent &t_parent) | |
| TensorElement (const Abstract *&expression) | |
| TensorElement (const Expr &expression) | |
| int | getNIndices () const override |
| IndexStructure | getIndexStructure () const override |
| Index | getIndex (int i) const override |
| bool | askTerm (Expr_info expr, bool exact=false) const override |
| const std::vector< Equation *> & | getProperties () const override |
| void | addProperty (Equation *property) override |
| void | removeProperty (Equation *property) override |
| bool | checkIndexStructure (const std::vector< Index > &t_index) const override |
| std::optional< Expr > | replaceIndex (const Index &indexToReplace, const Index &newIndex, bool refresh=true) const override |
| void | setIndexStructure (const IndexStructure &t_index) override |
| bool | hasContractionProperty (Expr_info B) const override |
| Expr | contraction (Expr_info B) const override |
| Expr | applyPermutation (const Permutation &permutations) const |
| csl::vector_expr | getPermutations (bool optimize=true) const override |
| csl::vector_expr | getAlternateForms () const override |
| std::optional< Expr > | derive (Expr_info expr) const override |
Public Member Functions inherited from csl::AbstractElement | |
| AbstractElement (const std::shared_ptr< AbstractParent > &t_parent) | |
| Parent | getParent () const override |
| std::string const & | getName () const override |
| void | setParent (const Parent &t_parent) override |
| void | setName (const std::string &t_name) override |
| void | setCommutable (bool t_commutable) override |
| int | isPolynomial (Expr_info variable) const override |
| std::optional< Expr > | getPolynomialTerm (Expr_info variable, int order) const override |
Public Member Functions inherited from csl::Complexified | |
| std::optional< Expr > | getRealPart () const override |
| Expr | getImaginaryPart () const override |
Public Member Functions inherited from csl::AbstractBuildingBlock | |
| bool | isBuildingBlock () const override |
| std::optional< Expr > | expand (bool full=false, bool inplace=false) const override |
| std::optional< Expr > | factor (bool full=false) const override |
| std::optional< Expr > | factor (Expr_info expr, bool full=false) const override |
| std::optional< Expr > | getTerm () const override |
| std::optional< Expr > | getComplexModulus () const override |
| std::optional< Expr > | findSubExpression (Expr_info subExpression, const Expr &newExpression) const override |
Public Member Functions inherited from csl::Abstract | |
| void | printExplicit (int mode=0) const |
| virtual int | getDim () const |
| virtual bool | isInteger () const |
| virtual bool | getValued () const |
| virtual long double | getValue () const |
| virtual long long int | getNum () const |
| virtual long long int | getDenom () const |
| virtual int | getNArgs (int axis=0) const |
| virtual csl::vector_expr::iterator | begin () |
| virtual csl::vector_expr::iterator | end () |
| virtual csl::vector_expr::const_iterator | begin () const |
| virtual csl::vector_expr::const_iterator | end () const |
| virtual Expr const & | getArgument (int iArg=0) const |
| virtual Expr const & | getArgument (const std::vector< int > &indices) const |
| virtual const csl::vector_expr & | getVectorArgument () const |
| virtual Expr | getVariable () const |
| virtual int | getOrder () const |
| virtual int | getSign () const |
| virtual bool | isAnOperator () const |
| virtual bool | isEmpty () const |
| virtual Expr | getOperand () const |
| virtual std::vector< int > | getShape () const |
| virtual IndexStructure | getFreeIndexStructure () const |
| virtual int | getNContractedPairs () const |
| virtual std::set< std::pair< int, int > > | getContractedPair () const |
| virtual void | setValue (long double t_value) |
| virtual void | setArgument (const Expr &expr, int iArg=0) |
| virtual void | setArgument (const Expr &expr, const std::vector< int > &indices) |
| virtual void | setOperand (const Expr &operand) |
| virtual void | setOperandPrivate (const Expr &operand, bool leaveEmpty) |
| virtual void | setVectorArgument (const csl::vector_expr &t_argument) |
| virtual void | insert (const Expr &expr, bool side=1) |
| virtual void | setFullySymmetric () |
| virtual void | setFullyAntiSymmetric () |
| virtual void | addSymmetry (int i1, int i2) |
| virtual void | addAntiSymmetry (int i1, int i2) |
| virtual int | permut (int i1, int i2) |
| virtual Expr | getNumericalFactor () const |
| virtual int | getNFactor () const |
| virtual csl::vector_expr | getFactors () const |
| virtual void | getExponents (std::vector< Expr > const &factors, std::vector< Expr > &exponents) const |
| virtual bool | checkIndexStructure (const std::initializer_list< Index > &index) const |
| virtual int | getParity (Expr_info t_variable) const |
| virtual bool | matchShape (Expr_info expr, bool exact=false) const |
| virtual long double | evaluateScalar () const |
| virtual std::optional< Expr > | collect (std::vector< Expr > const &factors, bool full=false) const |
| virtual Expr | suppressTerm (Expr_info expr) const |
| virtual std::optional< Expr > | suppressExponent (Expr const &factor, Expr const &exponent) const |
| virtual std::optional< Expr > | expand_if (std::function< bool(Expr const &)> const &f, bool full=false, bool inPlace=false) const |
| virtual std::optional< Expr > | getComplexArgument () const |
| virtual Expr | applyOperator (const Expr &operand, bool leaveEmpty=false) const |
| virtual Expr | addition_own (const Expr &expr) const |
| virtual Expr | multiplication_own (const Expr &expr, bool side=1) const |
| virtual Expr | division_own (const Expr &expr) const |
| virtual Expr | exponentiation_own (const Expr &expr) const |
| virtual Expr | getRegularExpression () const |
| virtual Expr | tensordot (const Expr &expr) const |
| virtual Expr | dot (const Expr &expr) const |
| virtual Expr | getSum () const |
| virtual Expr | getProduct () const |
| virtual Expr | getVectorialModulus () const |
| virtual Expr | getSubVectorial (int iExcept) const |
| virtual Expr | getSubVectorial (int iExcept, int jExcept) const |
| virtual Expr | getSubVectorial (const std::vector< int > &exceptions) const |
| virtual Expr | determinant () const |
| virtual Expr | trace () const |
| virtual Expr | trace (int axis1, int axis2) const |
| virtual Expr | transpose () const |
| virtual Expr | symmetrise () const |
| virtual Expr | antisymmetrise () const |
| virtual Expr | inverseMatrix () const |
| virtual void | operator= (double t_value) |
| virtual bool | operator== (int t_value) const |
| virtual bool | operator== (double t_value) const |
| virtual bool | operator!= (int t_value) const |
| virtual bool | operator!= (double t_value) const |
| bool | operator!= (const Expr_c &expr) const |
| virtual Expr const & | operator[] (int iArg) const |
| virtual Expr & | operator[] (int iArg) |
| virtual bool | operator< (Expr_info expr) const=0 |
| bool | operator< (const Expr_c &expr) const |
| bool | operator> (Expr_info expr) const |
| bool | operator>= (Expr_info expr) const |
| bool | operator<= (const Expr_c &expr) const |
Protected Attributes | |
| bool | particle = true |
| Tells if the QuantumField, if external, is a particle or an anti-particle. More... | |
| bool | external = false |
| Tells if the field is external (initial of final state in computations) or not. More... | |
| bool | onShell = false |
| bool | incoming = true |
| Tells if the QuantumField, if external, is a incoming or outgoing. More... | |
| csl::IndexStructure | derivativeIndices {} |
| csl::IndexStructure allowing to store derivative indices, to keep track of terms in \( \partial _\mu \) in computations while having only QuantumField objects. More... | |
| PartnerShip | partnerShip {} |
| Wanted partner for fermion ordering in amplitude results, together with the number defining the fermion. More... | |
Protected Attributes inherited from csl::TensorElement | |
| IndexStructure | index |
Protected Attributes inherited from csl::AbstractElement | |
| std::shared_ptr< AbstractParent > | parent |
Friends | |
| template<typename ... Args> | |
| csl::Expr | quantumfield_s (Args &&...args) |
| Creates and returns an expression corresponding to a QuantumField. More... | |
Class deriving from csl::TensorFieldElement, may enter expressions. In contrary to QuantumFieldParent, it is not a inherited from any class.
Any quantum field (boson, fermion, gauge ...) will have QuantumField instances. This simplifies the use of a generic instance, QuantumField, that will ask its parent to know its own properties (contractions, commutation, spin, mass, ...). All physical information is contained in QuantumFieldParent and its derived classes, except the few attributes of QuantumField that are instance-specific. QuantumField objects will not be in general directly created by the user. Giving a QuantumFieldParent or a Particle, one should used their operator()() to create a QuantumField instance, as an actual expression that may enter in mathematical expressions.
| mty::QuantumField::QuantumField | ( | const csl::Tensor & | t_vector, |
| const csl::Parent & | t_parent | ||
| ) |
Constructor with two parameters.
This constructor takes no index and concerns then scalar fields.
| t_vector | Space_time point of the field. |
| t_parent | Parent (must be derived from QuantumFieldParent) of the field. |
| mty::QuantumField::QuantumField | ( | const csl::Tensor & | t_vector, |
| const csl::Parent & | t_parent, | ||
| const std::vector< csl::Index > & | indices | ||
| ) |
Constructor with three parameters.
| t_vector | Space_time point of the field. |
| t_parent | Parent (must be derived from QuantumFieldParent) of the field. |
| indices | Set of indices of the tensor. |
| mty::QuantumField::QuantumField | ( | const csl::Tensor & | t_vector, |
| const csl::Parent & | t_parent, | ||
| const csl::IndexStructure & | indices | ||
| ) |
Constructor with three parameters.
| t_vector | Space_time point of the field. |
| t_parent | Parent (must be derived from QuantumFieldParent) of the field. |
| indices | Set of indices of the tensor. |
| mty::QuantumField::QuantumField | ( | ) |
Default constructor. Initializes no parent and no space-time point.
May be useful in some situations but keep in mind that a non initialized QuantumField is an invalid state and may cause problems.
| void mty::QuantumField::addDerivative | ( | const csl::Index & | index | ) |
Adds a derivative index to the the field.
| index | Derivative index to add. |
|
override |
Tells if the field commutes with another expression.
This function assumes only that for two anti-commuting fields \( \psi _1 \) and \( \psi _2 \) we have \(\{\psi _1, \psi _2\}=0\). This function returns in this case true iif sign = +1 (anticommutation). For all other cases, this function returns true if sign = -1. In particular, beware that anti-commuting fields embedded in more complicated expressions are not taken into account for now. This means that \( \{\psi_ 1, \psi _2+\psi _3\}\neq 0 \)
| other | Expression with which we test the commutation. |
| sign | Sign of the commutation. +1 means anticommutation, -1 (default) means commutation. |
|
override |
Compares the field with another expression.
Uses TensorFieldElement::compareWithDummy() and takes care of comparing the derivative structures of two fields if the other expression is another field (otherwise this function returns false). Dummy indices may compare succesfully with each other with different names. Only the abstract index structure is compared. Free indices must match exactly.
| other | Expression to compare. |
| constraints | Mapping constraints between already compared dummy indices. |
| keepAllCosntraints | Tell if constraints must be relaxed once pairs of indices are matched (default = false, the user should not need that). |
| void mty::QuantumField::conjugate | ( | ) |
Conjugates the field and changes its particle number.
For example, a particle \( \phi (X) \) as insertion is an outgoing particle (otherwise it would be complex conjugated). Conjugating the particle, we get \( \phi ^*(X) \) an outgoing antiparticle.
|
override |
Returns a copy of the field in a std::unique_ptr.
| Chirality mty::QuantumField::getChirality | ( | ) | const |
See QuantumFieldParent::getChirality().
|
overridevirtual |
Tells if the field is a commutable object in products.
Reimplemented from csl::AbstractElement.
|
overridevirtual |
Returns the complex conjugate expression of the field.
Reimplemented from csl::TensorElement.
| bool mty::QuantumField::getConjugated | ( | ) | const |
Tells if the field is complex conjugated.
| QuantumField mty::QuantumField::getConjugatedField | ( | ) | const |
Copies the field in a new new one and conjugates it before returning it.
| csl::IndexStructure mty::QuantumField::getDerivativeStructure | ( | ) | const |
Returns the derivative structure of the field.
| csl::Expr mty::QuantumField::getEnergyDimension | ( | ) | const |
See QuantumFieldParent::getEnergyDimension().
| csl::Expr mty::QuantumField::getLSZInsertion | ( | const csl::Tensor & | momentum, |
| bool | ruleMode = false, |
||
| bool | lock = false |
||
| ) | const |
Returns the expression of the LSZ insertion corresponding to the field.
| momentum | Momentum of the insertion. |
| ruleMode | Boolean that is true if we want to determine the feynman rule (in this case the insertion is not the same). |
| csl::Expr mty::QuantumField::getMass | ( | ) | const |
See QuantumFieldParent::getMass().
|
inline |
Returns a mty::Particle, pointer to the parent of the field.
As QuantumField inherits from csl::TensorFieldElement, its parent is in the form of a csl::Parent. This function then makes a conversion to a mty::Particle before returning the pointer.
| csl::Expr mty::QuantumField::getPropagator | ( | const QuantumField & | other, |
| csl::Tensor & | vertex | ||
| ) | const |
Returns the propagator with another QuantumField.
This function checks if the propagator is non null with isExactlyContractiblewith(). Then, it ensure that if the field is not self-conjugate the conjugated field is on the right of the contraction (and adds a minus sign if the field is anti-commuting).
| other | Other field in the contraction. |
| vertex | Momentum integrated in the propagator. |
|
inline |
Returns a pointer to the QuantumFieldParent of the field.
As QuantumField inherits from csl::TensorFieldElement, its parent is in the form of a csl::Parent. This function then makes a conversion to a mty::QuantumFieldParent before returning the pointer.
| int mty::QuantumField::getSpinDimension | ( | ) | const |
See QuantumFieldParent::getSpinDimension().
| csl::Expr mty::QuantumField::getSquaredMass | ( | ) | const |
Returns the mass squared of the field.
Equivalent to pow_s(getMass(), 2).
| csl::Expr mty::QuantumField::getWidth | ( | ) | const |
See QuantumFieldParent::getWidth().
| csl::Expr mty::QuantumField::getXiGauge | ( | ) | const |
See QuantumFieldParent::getXiGauge().
|
override |
Tells if the field has an indicial contraction property with another expression.
This functoin overrides the one of csl::TensorFieldElement and make sure to return false each time.
| expr | Other expression. |
| bool mty::QuantumField::hasDerivative | ( | ) | const |
Tells if the field has derivative indices.
| bool mty::QuantumField::isAntiCommuting | ( | ) | const |
See QuantumFieldParent::isAntiCommuting().
| bool mty::QuantumField::isBosonic | ( | ) | const |
See QuantumFieldParent::isBosonic().
| bool mty::QuantumField::isChiral | ( | ) | const |
See QuantumFieldParent::isChiral().
| bool mty::QuantumField::isContractibleWith | ( | const QuantumField & | other | ) | const |
See QuantumFieldParent::isContractibleWith().
| other | Field to test if there is a contraction. |
| bool mty::QuantumField::isExactlyContractiblewith | ( | const QuantumField & | other | ) | const |
Tests if the the field is exactly contractible with the other one.
The condition that does not appear in isContractibleWith() is the complex conjugation of the field. In the first function, we test only that a propagator exists between the two abstract fields. Here, we test also if either the field is self-conjugate or one an only one of the two fields is complex conjugated. Other wise, even if a propagator exists, the contraction gives zero and this function returns false.
| other | Field with which we test the contraction. |
| bool mty::QuantumField::isExternal | ( | ) | const |
Tells if the field is an external field.
| bool mty::QuantumField::isFermionic | ( | ) | const |
See QuantumFieldParent::isFermionic().
| bool mty::QuantumField::isGaugeBoson | ( | ) | const |
See QuantumFieldParent::isGaugeBoson().
| bool mty::QuantumField::isIncoming | ( | ) | const |
Tells if the (external) field is incoming or outgoing.
| bool mty::QuantumField::isIncomingAntiParticle | ( | ) | const |
Tells if the (external) field is an incoming anti-particle.
| bool mty::QuantumField::isIncomingParticle | ( | ) | const |
Tells if the (external) field is an incoming particle.
|
overridevirtual |
Tells if the field is indexed.
Reimplemented from csl::TensorFieldElement.
| bool mty::QuantumField::isOutgoingAntiParticle | ( | ) | const |
Tells if the (external) field is an outgoing an anti-particle.
| bool mty::QuantumField::isOutgoingParticle | ( | ) | const |
Tells if the (external) field is an outgoing particle.
| bool mty::QuantumField::isParticle | ( | ) | const |
Tells if the (external) field is a particle or anti particle.
| bool mty::QuantumField::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::QuantumField::isSelfConjugate | ( | ) | const |
See QuantumFieldParent::isSelfConjugate().
| bool mty::QuantumField::operator!= | ( | const QuantumField & | other | ) | const |
Compares the field with another.
| other | Other field. |
| bool mty::QuantumField::operator< | ( | const QuantumField & | other | ) | const |
Compares the simplicity of the field with another.
| other | Other field. |
|
override |
Compares the field with another expression.
Uses TensorFieldElement::operator==() and takes care of comparing the derivative structures of two fields if the other expression is another field (otherwise this function returns false).
| other | Expression to compare. |
| bool mty::QuantumField::operator== | ( | const QuantumField & | other | ) | const |
Compares the field with another.
| other | Other field. |
| void mty::QuantumField::setChirality | ( | Chirality | chirality | ) |
Sets the chirality of the particle.
This function should be called wisely. If the chirality is not consistent, it will raise an error. In particular, it should be used only for fermions that are linked (one DiracFermion and two WeylFermion). In this case, setting the chirality of the particle is equivalent to change its parent. chirality may be left or right (a WeylFermion takes the place of the parent) or none (a DiracFermion takes the place of the parent).
| chirality | New chirality of the particle. |
| void mty::QuantumField::setDerivativeStructure | ( | const csl::IndexStructure & | structure | ) |
Sets the derivative structure of the field.
| structure | New derivative structure. |
| void mty::QuantumField::setExternal | ( | bool | t_external | ) |
Sets the external property of the particle.
| t_external | Must be true if the field is an external leg, false otherwise. |
|
virtual |
Sets the incoming property of the particle.
| t_incoming | Must be true if the field is incoming, false otherwise. |
Reimplemented in mty::PolarizationField.
|
virtual |
Sets the particle property of the particle.
| t_particle | Must be true if the field is a particle, false otherwise. |
Reimplemented in mty::PolarizationField.
|
friend |
Creates and returns an expression corresponding to a QuantumField.
| Args | Variadic template parameters. |
| args | Variadic function parameters, may be anything. Forwarded to csl::make_shared(). |
|
protected |
csl::IndexStructure allowing to store derivative indices, to keep track of terms in \( \partial _\mu \) in computations while having only QuantumField objects.
This member allows to have an internal representation of the following definition for a field \( A_\mu ^I \):
\[ \partial _\mu A_\nu ^I \equiv A^I_{\nu,\mu}. \]
The derivative disappear and indices are transfered in the structure of the field.
|
protected |
Tells if the field is external (initial of final state in computations) or not.
|
protected |
Tells if the QuantumField, if external, is a incoming or outgoing.
As for the attribute particle, this boolean will determine if the field must be complex conjugated or not. Depending on its spin, if it is an incoming particle, outgoing anti-particle...
|
protected |
Tells if the QuantumField, if external, is a particle or an anti-particle.
As for the attribute incoming, this boolean will determine if the field must be complex conjugated or not. Depending on its spin, if it is an incoming particle, outgoing anti-particle...
|
protected |
Wanted partner for fermion ordering in amplitude results, together with the number defining the fermion.
Fermion ordering is determined outside (possibly by the user) and the information is stored in the quantum field itself to know what fermions must be paired together during simplifications. If fermions are not paired accordingly to the defined order (if there is one), Fierz identities are applied to correct the amplitude, like in the following with external fermions notes as 1,2,3,4 and \( \Gamma^A \) are chains of \( \gamma\)-matrices:
\[ \left(\Gamma^A\right)_{14}\left(\Gamma^B\right)_{32} = \sum _{C,D} C^{AB}_{CD}\left(\Gamma^C\right)_{12}\left(\Gamma^D\right)_{34}, \]
where \( C^{AB}_{CD} \) are scalar coefficients determined by the generalized Fierz identities.
1.8.13