23 #ifndef GAUGE_H_INCLUDED 24 #define GAUGE_H_INCLUDED 39 = std::vector<std::unique_ptr<SemiSimpleGroup>>::iterator;
41 = std::vector<std::unique_ptr<SemiSimpleGroup>>::const_iterator;
42 using reverse_iterator
43 = std::vector<std::unique_ptr<SemiSimpleGroup>>::reverse_iterator;
44 using const_reverse_iterator
45 = std::vector<std::unique_ptr<SemiSimpleGroup>>::const_reverse_iterator;
51 std::vector<std::unique_ptr<SemiSimpleGroup>> groups;
53 std::vector<std::unique_ptr<GaugedGroup>> gaugedGroups;
58 Gauge(std::string
const& t_name =
"");
62 void addGroup(std::unique_ptr<SemiSimpleGroup>& t_group,
65 void addGroup(std::unique_ptr<SemiSimpleGroup>& t_group,
66 std::string
const& nameBoson,
69 void addGroup(std::unique_ptr<SemiSimpleGroup>& t_group,
70 std::string
const& nameBoson,
76 std::string
const& name,
85 const std::vector<std::vector<int> >& highestWeights);
89 bool containsTrivialRep(std::vector<QuantumField>
const &fields)
const;
96 const std::vector<csl::Index>& fieldIndices,
102 std::optional<csl::Expr> getCoupling(
const std::string& t_name)
const;
104 std::vector<Particle> getVectorBosons()
const;
106 std::vector<Particle> getGhosts()
const;
110 void setGaugeChoice(
size_t pos,
117 const_iterator begin()
const;
119 reverse_iterator rbegin();
121 const_reverse_iterator rbegin()
const;
125 const_iterator end()
const;
127 reverse_iterator rend();
129 const_reverse_iterator rend()
const;
134 std::ostream& operator<<(std::ostream& fout,
const Gauge& obj);
139 IMPLEMENTS_STD_VECTOR(
Irrep, rep);
144 std::vector<mty::Irrep> rep;
155 const std::vector<Irrep>& t_rep);
159 bool isTrivial()
const;
161 friend std::ostream&
operator<<(std::ostream& fout,
166 Gauge* getGauge()
const;
185 const std::vector<std::vector<Irrep> >& irreps
187 explicit SumGaugeIrrep(
const std::vector<GaugeIrrep>& irreps);
188 SumGaugeIrrep(
const SumGaugeIrrep& other) =
default;
192 bool containsTrivialRep()
const;
195 SumGaugeIrrep operator*(
const SumGaugeIrrep& other)
const;
196 SumGaugeIrrep
operator+(
const SumGaugeIrrep& other)
const;
198 friend std::ostream&
operator<<(std::ostream& fout,
199 const SumGaugeIrrep& irrep);
Definition: gaugedGroup.h:194
Base class for all Semi simple groups, i.e. groups that has a SemiSimpleAlgebra.
Definition: group.h:219
std::unique_ptr< mty::SemiSimpleGroup > createGroup(group::Type type, std::string const &name, int dim=-1)
Dynamically allocates a new group of type type and returns a pointer to it (in a std::unique_ptr).
Definition: group.cpp:552
Group objects handling different possible symmetry groups. For now only semi-simple groups have repre...
std::ostream & operator<<(std::ostream &fout, csl::Type type)
Namespace of MARTY.
Definition: 2HDM.h:31
Expr operator+(const Expr &a, const Expr &b)
File containing classes handling gauge groups.
Expr operator*(const Expr &a, const Expr &b)
bool operator==(const Expr &a, const Expr &b)
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
Base class for parents of QuantumField objects.
Definition: quantumField.h:152
Type
Enumeration of types of semi simple Lie groups. The names being very small, we use a namespace to avo...
Definition: group.h:44