Documentation of MARTY
A Modern ARtificial Theoretical phYsicist
scalarField.h
Go to the documentation of this file.
1 // This file is part of MARTY.
2 //
3 // MARTY is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, either version 3 of the License, or
6 // (at your option) any later version.
7 //
8 // MARTY is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with MARTY. If not, see <https://www.gnu.org/licenses/>.
15 
23 #ifndef SCALARFIELD_H_INCLUDED
24 #define SCALARFIELD_H_INCLUDED
25 
26 #include "quantumField.h"
27 
28 namespace mty {
29 
30 class Model;
31 
36 
37  public:
38 
42  ScalarBoson() = default;
43 
49  ScalarBoson(ScalarBoson const& other) = default;
50 
57  ScalarBoson(const std::string& t_name,
58  Gauge* t_gauge);
59 
66  ScalarBoson(const std::string& t_name,
67  Model const& t_model);
68 
78  ScalarBoson(const std::string& t_name,
79  const GaugeIrrep& irrep);
80 
88  ScalarBoson(const std::string& t_name,
89  Gauge* t_gauge,
90  bool t_isSelfConjugate);
91 
102  ScalarBoson(const std::string& t_name,
103  const GaugeIrrep& irrep,
104  bool t_isSelfConjugate);
105 
117  ScalarBoson(const std::string& t_name,
118  const GaugeIrrep& irrep,
119  const FlavorIrrep& flavorRep);
120 
127  ScalarBoson(const std::string& t_name,
128  const ScalarBoson* other);
129 
139  void printDefinition(
140  std::ostream &out = std::cout,
141  int indentSize = 4,
142  bool header = false
143  ) const override;
144 
148  ParticleType getParticleType() const override {
149  return ParticleType::ScalarBoson;
150  }
151 
159  Particle generateSimilar(std::string const& t_name) const override;
160 
164  csl::Expr getEnergyDimension() const override;
165 
169  int getNDegreesOfFreedom() const override;
170 
180  csl::Expr getKineticTerm(csl::Tensor & X) override;
181 
182  protected:
183 
189  void initPropagator() override;
190 };
191 
203 template<class ...Args>
204 inline Particle scalarboson_s(Args&& ...args)
205 {
206  return csl::make_shared<ScalarBoson>(std::forward<Args>(args)...);
207 }
208 
209 }
210 
211 #endif
Particle scalarboson_s(Args &&...args)
Delegates the construction of a Scalar boson and returns the result.
Definition: scalarField.h:204
void printDefinition(std::ostream &out=std::cout, int indentSize=4, bool header=false) const override
Prints the MARTY (C++) code defining the scalar boson.
Definition: scalarField.cpp:85
Definition: gauge.h:36
Particle generateSimilar(std::string const &t_name) const override
Generates an identical particle with only a different name.
Definition: scalarField.cpp:103
csl::Expr getEnergyDimension() const override
Definition: scalarField.cpp:108
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
Definition: gauge.h:137
int getNDegreesOfFreedom() const override
Definition: scalarField.cpp:113
csl::Expr getKineticTerm(csl::Tensor &X) override
Calculated the kinetic term for a scalar boson.
Definition: scalarField.cpp:118
ScalarBoson()=default
Default constructor. Initializes nothing.
void initPropagator() override
Initializes the Scalar propagator.
Definition: scalarField.cpp:123
GaugeIrrep irrep
Representation of the field in the gauge gauge.
Definition: quantumField.h:260
FlavorIrrep flavorRep
Representation of the field in the flavor flavor.
Definition: quantumField.h:286
ParticleType getParticleType() const override
Definition: scalarField.h:148
Definition: flavor.h:133
Contains all objects in the theory. In particular QuantumField objects, Gauge, Flavor, Particle...
Definition: model.h:68
Base class for parents of QuantumField objects.
Definition: quantumField.h:152
Contains QuantumField and QuantumFieldParent, basic objects handling quantum fields as csl expression...
Scalar boson, spin 0 particles in MARTY.
Definition: scalarField.h:35