21 #ifndef HEPINTERFACE_H_INCLUDED 22 #define HEPINTERFACE_H_INCLUDED 31 using type =
typename std::enable_if<
34 std::remove_reference<std::remove_cv<Type>>>::value
40 using type =
typename std::enable_if<
43 std::remove_reference<std::remove_cv<Type>>>::value
108 std::vector<csl::Index>
DiracIndices(
size_t n, std::string
const& name =
"");
123 std::vector<csl::Index>
MinkowskiIndices(
size_t n, std::string
const& name =
"");
165 template<
class GroupType,
class FieldType>
173 std::forward<GroupType>(group),
174 std::forward<FieldType>(part)
191 template<
class GroupType>
196 std::forward<GroupType>(group)
213 template<
class GroupType>
219 std::vector<csl::Index> indices(nIndices);
220 for (
size_t i = 0; i != nIndices; ++i)
221 indices[i] = FlavorIndex<GroupType>(
223 std::forward<GroupType>(group)
252 template<
class GroupType,
class FieldType>
258 std::forward<GroupType>(group),
259 std::forward<FieldType>(part)
286 template<
class GroupType,
class FieldType>
293 std::vector<csl::Index> indices(nIndices);
294 for (
size_t i = 0; i != nIndices; ++i)
295 indices[i] = GaugeIndex<GroupType, FieldType>(
297 std::forward<GroupType>(group),
298 std::forward<FieldType>(part)
323 std::string
const& nameGroup,
338 std::string
const &name =
"" 449 template<
class GroupType,
class FieldType>
457 std::forward<GroupType>(group),
458 std::forward<FieldType>(field)
476 template<
class GroupType,
class FieldType>
484 std::forward<GroupType>(group),
485 std::forward<FieldType>(field)
509 std::vector<FeynmanRule> ComputeFeynmanRules(
mty::Model& model);
513 void ContractIndices(std::vector<csl::Expr> &init);
515 void Display(std::vector<FeynmanRule>
const& rules,
516 std::ostream & out = std::cout);
519 void Display(std::vector<csl::Expr>
const& amplitudes,
520 std::ostream & out = std::cout,
523 std::ostream & out = std::cout,
527 std::ostream & out = std::cout);
529 void Show(std::vector<FeynmanRule>
const& rules);
535 std::vector<FeynmanRule>
const& rules,
556 void Display(T
const& printable,
557 std::ostream& out = std::cout)
559 out << printable << std::endl;
562 void DisplayAbbreviations(std::ostream &out = std::cout);
563 void DisplayAbbreviations(std::string
const &name,
564 std::ostream &out = std::cout);
566 void ExportPDF(std::string
const& nameFiles,
569 void ExportPDF(std::string
const& nameFiles,
570 std::vector<FeynmanRule>
const& rules);
572 void ExportPNG(std::string
const& nameFiles,
575 void ExportPNG(std::string
const& nameFiles,
576 std::vector<FeynmanRule>
const& rules);
584 template<
class ...Args>
593 template<
class ...Args>
604 bool initTerms =
true);
611 std::vector<csl::Expr>
const& terms,
615 std::string
const& name);
619 mty::Particle GenerateSimilarParticle(std::string
const& name,
629 char const* goldstone,
630 char const* gaugeBoson);
633 std::string
const& nameCoupling);
636 std::string
const& nameCoupling);
639 std::string
const& oldName,
640 std::string
const& newName);
642 template<
class ...Args>
646 part->setMass(std::forward<Args>(args)...);
649 template<
class ...Args>
653 part->setWidth(std::forward<Args>(args)...);
656 void SetSelfConjugate(
Particle & part,
660 std::string
const& nameGroup,
661 std::vector<int>
const& highestWeight);
663 std::string
const& nameGroup,
666 std::string
const& nameGroup);
767 std::vector<mty::Particle>
const& fields,
768 std::vector<mty::Particle>
const& newFields,
769 std::vector<std::vector<csl::Expr>>
const& rotation,
770 bool diagonalizeMasses =
false);
784 std::vector<std::string>
const& fields,
785 std::vector<std::string>
const& newFields,
786 std::vector<std::vector<csl::Expr>>
const& rotation,
787 bool diagonalizeMasses =
false);
789 void DiagonalizeMassMatrices(
mty::Model& model);
791 void BreakGaugeSymmetry(
793 std::string
const& brokenGroup,
794 std::vector<Particle>
const& brokenFields,
795 std::vector<std::vector<std::string>>
const& newNames
798 void BreakGaugeSymmetry(
800 std::string
const& brokenGroup,
801 std::initializer_list<std::string>
const& brokenFields,
802 std::vector<std::vector<std::string>>
const& newNames
805 void BreakFlavorSymmetry(
807 std::string
const& brokenFlavor,
808 std::initializer_list<std::string>
const& brokenFields,
809 std::vector<std::vector<std::string>>
const& newNames
812 void BreakFlavorSymmetry(
814 std::string
const& brokenFlavor,
815 std::vector<mty::Particle>
const& brokenFields,
816 std::vector<std::vector<std::string>>
const& newNames
819 template<
class ...Args>
820 void BreakGaugeSymmetry(
825 model.breakGaugeSymmetry(std::forward<Args>(args)...);
828 template<
class ...Args>
829 void BreakFlavorSymmetry(
834 model.breakFlavorSymmetry(std::forward<Args>(args)...);
839 void IntegrateOutParticle(
884 std::vector<int>
const& labels);
886 mty::Irrep GetIrrep(std::unique_ptr<mty::SemiSimpleAlgebra>
const& algebra,
887 std::vector<int>
const& labels);
917 std::string
const& nameParticle,
938 std::string FindProcessName(
939 std::string
const &initName,
940 std::vector<mty::Insertion>
const &insertions
csl::Space const * GetVectorSpace(mty::Model &model, GroupType &&group, FieldType &&field)
Returns the vector space corresponding the the representation of a given field in a given group...
Definition: mrtInterface.h:477
void Replaced(mty::Model &model, csl::Expr const &init, csl::Expr const &target)
Replaces an expression in all kinetic / mass / interactions terms of a model.
Definition: mrtInterface.cpp:499
csl::Tensor Delta(const csl::Space *space)
Returns the Kronecker delta of a given vector space.
Definition: mrtInterface.cpp:116
csl::Index DiracIndex(std::string const &name="")
Returns a csl::Index in the 4-dimensional Dirac space mty::dirac4.
Definition: mrtInterface.cpp:44
csl::Tensor Epsilon(const csl::Space *space)
Returns the epsilon symbol of a given vector space.
Definition: mrtInterface.cpp:126
mty::Generator GetGenerator(mty::Model &model, GroupType &&group, FieldType &&field)
Returns the generator coresponding to the representation of a field in a given group.
Definition: mrtInterface.h:450
csl::Tensor DiracProjector(Chirality chir)
Returns a projector in Dirac 4-dim space depending on a chirality.
Definition: mrtInterface.h:428
std::vector< csl::Index > MinkowskiIndices(size_t n, std::string const &name="")
Returns indices in csl::Minkowki space.
Definition: mrtInterface.cpp:51
csl::Tensor DiracGamma5()
Definition: mrtInterface.cpp:134
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
Contains the mty::Model class. It contains all objects in the theory. In particular QuantumField obje...
Contains a sum of Irrep (irreducible representation) of a given SemiSimpleAlgebra.
Definition: representation.h:363
std::vector< csl::Index > DiracIndices(size_t n, std::string const &name="")
Returns indices in the 4-dimensional Dirac space mty::dirac4.
Definition: mrtInterface.cpp:62
mty::Generator getGenerator(GroupType &&group, FieldType &&field) const
Returns the generator coresponding to the representation of a field in a given group.
Definition: modelData.h:2292
std::vector< csl::Index > FlavorIndices(size_t nIndices, mty::Model const &model, GroupType &&group)
Returns indices for a given flavor group.
Definition: mrtInterface.h:214
csl::Tensor Metric(const csl::Space *space)
Returns the metric of a given vector space.
Definition: mrtInterface.cpp:121
Interface class containing the result of an amplitude calculation.
Definition: amplitude.h:41
Chirality
Chirality for fermions. Either Left or Right for WeylFermion, or None for DiracFermion.
Definition: quantumField.h:40
Type
Different types of semi-simple Lie algebras.
Definition: semiSimpleAlgebra.h:52
csl::Index GenerateIndex(csl::Space const *space, std::string const &name="")
Generates an index in a given space.
Definition: mrtInterface.cpp:106
csl::Index GaugeIndex(std::string const &nameIndex, mty::Model const &model, GroupType &&group, FieldType &&part)
Returns a csl::Index living in the representation of a certain field in a certain group...
Definition: mrtInterface.h:166
Abstract base class for all semi-simple Lie algebras.
Definition: semiSimpleAlgebra.h:96
csl::Tensor DiracPL()
Definition: mrtInterface.cpp:140
Definition: insertion.h:33
csl::Tensor DiracSigma()
Definition: mrtInterface.cpp:137
csl::Space const * getVectorSpace(GroupType &&group, FieldType &&field) const
Returns the vector space coresponding to the representation of a field in a given group...
Definition: modelData.h:2136
Definition: mrtInterface.h:39
void addFlavorGroup(std::string_view name, int nFlavor, bool complexFields=true)
Adds a flavor group to the model.
Definition: modelData.cpp:692
Expr Refreshed(const Abstract *expr)
void addGaugedGroup(group::Type type, std::string_view name, int dim, csl::Expr const &coupling=nullptr)
Adds a gauge group to the model.
Definition: modelData.cpp:666
csl::Index MinkowskiIndex(std::string const &name="")
Returns a csl::Index in csl::Minkowki space.
Definition: mrtInterface.cpp:37
csl::Tensor DiracPR()
Definition: mrtInterface.cpp:143
csl::Tensor DiracGamma()
Definition: mrtInterface.cpp:131
csl::Index generateIndex(GroupType &&group, FieldType &&field) const
Returns an index coresponding to the representation of a field in a given group.
Definition: modelData.h:2169
csl::Tensor MinkowskiVector(std::string const &name)
Returns a csl::Tensor, vector in csl::Minkowski space.
Definition: mrtInterface.cpp:32
Handles the irreducible representation of a given semi-simple algebra.
Definition: representation.h:42
Type
Different types of gauge ficing parameter for gauge boson propagators.
Definition: gaugedGroup.h:92
void Rotate(mty::Model &model, std::vector< mty::Particle > const &fields, std::vector< mty::Particle > const &newFields, std::vector< std::vector< csl::Expr >> const &rotation, bool diagonalizeMasses=false)
Rotates a bunch of fields to another using a given matrix.
Definition: mrtInterface.cpp:527
csl::Index FlavorIndex(mty::Model const &model, GroupType &&group)
Returns a csl::Index for a given flavor group.
Definition: mrtInterface.h:192
Contains all objects in the theory. In particular QuantumField objects, Gauge, Flavor, Particle...
Definition: model.h:68
void SetGaugeChoice(mty::Model &model, std::string const &nameParticle, mty::gauge::Type choice)
This function changes the gauge fixing parameter for the gauge boson of name nameGroup. Depending on this choice, the propagator of gauge bosons is modified.
Definition: mrtInterface.cpp:705
void simplify(csl::Expr &expr, std::vector< mty::QuantumField > const &insertions, std::vector< csl::Tensor > const &momenta, mty::FeynOptions const &options, Mode mode)
Main simplification routine of MARTY, used for amplitudes, squared amplitude and Wilson coefficients...
Definition: amplitudeSimplification.cpp:1028
std::vector< csl::Index > GaugeIndices(size_t nIndices, mty::Model const &model, GroupType &&group, FieldType &&part)
Returns indices living in the representation of a certain field in a certain group.
Definition: mrtInterface.h:287
std::unique_ptr< mty::SemiSimpleAlgebra > CreateAlgebra(algebra::Type type, int l=-1)
Creates a specilization of SemiSimpleAlgebra of type type.
Definition: mrtInterface.cpp:620
Definition: generator.h:107
Definition: mrtInterface.h:30
const csl::Space * VectorSpace(mty::Model const &model, std::string const &nameGroup, Particle const &part)
Returns the vector space corresponding to the representation of a given particle in a given group...
Definition: mrtInterface.cpp:97