23 #ifndef INTERACTION_TERM_H_INCLUDED 24 #define INTERACTION_TERM_H_INCLUDED 54 using permutation = std::vector<std::pair<csl::Index, csl::Index>>;
83 std::vector<QuantumField>
const& t_content);
90 static void fillContent(
92 std::vector<mty::QuantumField> &fields
95 static std::vector<TermType>
96 createAndDispatch(
csl::Expr const& expression);
100 bool hasSameContent(std::vector<mty::QuantumField>
const &fields)
const;
109 size_t nTerms()
const;
138 std::vector<QuantumField>
const&
getContent()
const;
385 std::ostream& operator<<(std::ostream & out,
390 bool gatherFieldContent(
csl::Expr const& expr,
394 void gatherFieldContent();
397 bool containsQuantumField(
csl::Expr const& expr);
399 std::pair<csl::Expr, csl::IndexStructure> buildContent(
404 void recallIndices(permutation & perm,
408 void gatherFactorsAndSymmetries();
410 void gatherSymmetries(
csl::Expr const& sum);
417 bool areSimilarContent(
418 std::vector<QuantumField>
const &A,
419 std::vector<QuantumField>
const &B
423 csl::Expr applyPermutation(permutation
const& perm,
425 std::map<csl::Index, csl::Index>& constraints);
440 bool forcedContent =
false;
444 permutation globalPermutation;
446 csl::vector_expr factors;
448 std::vector<permutation> permutations;
std::vector< Particle > getParticles() const
Returns the set of different interacting particles.
Definition: interactionTerm.cpp:296
size_t count(QuantumFieldParent *particle) const
Counts, in the content, how many particles are of a given species.
Definition: interactionTerm.cpp:307
static bool abbreviateFactors
Options telling if factors (constants etc.) must be abbreviated or not. Default is false...
Definition: interactionTerm.h:66
bool contains(const QuantumFieldParent *p) const
Tells if the interaction term contains a given field.
Definition: interactionTerm.cpp:393
csl::Expr getFieldProduct() const
Returns the product of bare fields with only free indices.
Definition: interactionTerm.cpp:421
bool containsWeakly(mty::Particle const &p) const
Tells if the interaction term contains a given field or only a part of it.
Definition: interactionTerm.h:322
This class inherits from std::shared_ptr<QuantumFieldParent> and should be used instead of direct Qua...
Definition: quantumField.h:1409
Namespace of MARTY.
Definition: 2HDM.h:31
csl::Expr getFullExpression() const
Returns the full expression of the interaction term.
Definition: interactionTerm.cpp:443
size_t size() const
Returns the number of interacting fields.
Definition: interactionTerm.cpp:210
Contains the implementation of the Scalar boson in MARTY.
std::vector< QuantumFieldParent * > getParticlesInfo() const
Returns the set of different interacting particles.
Definition: interactionTerm.cpp:339
bool containsExactly(mty::Particle const &p) const
Tells if the interaction term contains exactly a given field.
Definition: interactionTerm.h:358
std::vector< QuantumField > & getContent()
Returns a reference to the field content of the interaction.
Definition: interactionTerm.cpp:286
std::vector< QuantumField > content
Quantum fields in the interactions.
Definition: interactionTerm.h:438
csl::Expr getTerm() const
Returns the symbolic expression corresponding to the interaction.
Definition: interactionTerm.cpp:242
bool containsExactly(const QuantumFieldParent *p) const
Tells if the interaction term contains exactly a given field.
Definition: interactionTerm.cpp:412
bool operator==(const InteractionTerm &other) const
Equality operator, compares the symbolic expressions.
Definition: interactionTerm.cpp:455
Class deriving from csl::TensorFieldElement, may enter expressions. In contrary to QuantumFieldParent...
Definition: quantumField.h:1614
csl::Expr applyFactorAndSymmetriesOn(csl::Expr const &init) const
Applies all factors and symmetries on a field product to recover the full interaction term properties...
Definition: interactionTerm.cpp:350
Contains implementations for fermion (Weyl, Dirac, Majorana) for MARTY.
Contains vector particles of MARTY: vector and gauge bosons, and the field strength object...
bool containsWeakly(const QuantumFieldParent *p) const
Tells if the interaction term contains a given field or only a part of it.
Definition: interactionTerm.cpp:402
Base class for parents of QuantumField objects.
Definition: quantumField.h:152
Interaction term (in the Lagrangian) in MARTY.
Definition: interactionTerm.h:50
size_t getExponent(csl::Expr const ¶meter) const
Returns the exponent associated to a given coupling in the interaction term.
Definition: interactionTerm.cpp:317
Contains QuantumField and QuantumFieldParent, basic objects handling quantum fields as csl expression...
bool contains(mty::Particle const &p) const
Tells if the interaction term contains a given field.
Definition: interactionTerm.h:301
csl::Expr term
Initial expression defining the interaction (symbolic Lagrangian term).
Definition: interactionTerm.h:433