Documentation of MARTY
A Modern ARtificial Theoretical phYsicist
propagator.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 PROPAGATOR_H_INCLUDED
24 #define PROPAGATOR_H_INCLUDED
25 
26 #include <csl.h>
27 
28 namespace mty {
29 
31 
32  public:
33 
34  static inline csl::Expr Peps = csl::constant_s("reg_prop");
35 
36  Propagator() = default;
37 
38  Propagator(csl::Expr const& impulsion,
39  csl::Expr const& mass,
40  csl::Expr const& width = CSL_0);
41 
42  void print(int mode = 0,
43  std::ostream& out = std::cout,
44  bool lib = false) const override;
45 
46  std::string printLaTeX(int mode = 0) const override;
47 
48  csl::unique_Expr copy_unique() const override;
49 
50  csl::Expr refresh() const override;
51 
52  csl::Expr deepCopy() const override;
53 
54  csl::Expr deepRefresh() const override;
55 
56  std::optional<csl::Expr> evaluate(
57  csl::eval::mode user_mode = csl::eval::base) const override;
58 
59  std::optional<csl::Expr> derive(csl::Expr_info variable) const override;
60 
61  std::optional<csl::Expr> getComplexConjugate() const override;
62 
63  bool isIndexed() const override;
64 
65  csl::IndexStructure getIndexStructure() const override;
66 
67  bool operator==(csl::Expr_info other) const override;
68 };
69 
70 inline csl::allocator<Propagator> alloc_propagator;
71 
72 csl::Expr propagator_s(csl::Expr const& impulsion,
73  csl::Expr const& mass,
74  csl::Expr const& width = CSL_0);
75 
77 
78  public:
79 
80  FermionPropStruct() = default;
81 
82  FermionPropStruct(csl::Expr const& impulsion,
83  csl::Expr const& mass,
84  csl::Index const& alpha,
85  csl::Index const& beta);
86 
87  void print(int mode = 0,
88  std::ostream& out = std::cout,
89  bool lib = false) const override;
90 
91  std::string printLaTeX(int mode = 0) const override;
92 
93  csl::unique_Expr copy_unique() const override;
94 
95  csl::Expr refresh() const override;
96 
97  csl::Expr deepCopy() const override;
98 
99  csl::Expr deepRefresh() const override;
100 
101  std::optional<csl::Expr> evaluate(
102  csl::eval::mode user_mode = csl::eval::base) const override;
103 
104  bool isIndexed() const override;
105 
106  csl::IndexStructure getIndexStructure() const override;
107 
108  bool operator==(csl::Expr_info other) const override;
109 
110  std::optional<csl::Expr> getHermitianConjugate(
111  const csl::Space* space) const override;
112 
113  std::optional<csl::Expr> getHermitianConjugate(
114  const std::vector<const csl::Space*>& spaces) const override;
115 
116  std::optional<csl::Expr> replaceIndex(
117  const csl::Index& indexToReplace,
118  const csl::Index& newIndex,
119  bool refresh = true) const override;
120 
121  private:
122 
123  csl::IndexStructure structure;
124 };
125 
126 inline csl::allocator<FermionPropStruct> alloc_fermionprop;
127 
128 csl::Expr fermionPropStruct_s(csl::Expr const& impulsion,
129  csl::Expr const& mass,
130  csl::Index const& alpha,
131  csl::Index const& beta);
132 
133 
134 }
135 
136 #endif
csl::Expr beta
Ratio of Higgs vacuum expectation values.
Definition: MSSM.h:79
Namespace of MARTY.
Definition: 2HDM.h:31
csl::Expr alpha
Diagonalization angle for (h0 H0).
Definition: MSSM.h:75
virtual std::optional< Expr > replaceIndex(const Index &indexToReplace, const Index &newIndex, bool refresh=true) const override
bool operator==(const Expr &a, const Expr &b)
Definition: propagator.h:30
Definition: propagator.h:76