SoftSUSY is hosted by Hepforge, IPPP Durham
SOFTSUSY  4.0
susy.h
Go to the documentation of this file.
1 
12 #ifndef SUSY_H
13 #define SUSY_H
14 
15 #include <iostream>
16 #include <cmath>
17 #include <fstream>
18 #include "lowe.h"
19 #include "utils.h"
20 #include "rge.h"
21 #include "tensor.h"
22 
23 #ifdef HAVE_CONFIG_H
24 #include <config.h>
25 #endif
26 
27 namespace softsusy {
28 
29  const static int numSusyPars = 33;
30 
32  typedef enum {YU=1, YD, YE} yukawa;
33 
35  struct sBrevity {
39  DoubleMatrix dt, ut, et, u2, d2, e2, u2t, e2t, d2t;
41  DoubleVector gsq, g3, g4;
43  double uuT, ddT, eeT;
45  DoubleMatrix u1, d1, e1;
46 
48  sBrevity();
50  sBrevity(const sBrevity &);
52  const sBrevity & operator=(const sBrevity &);
53 
56  void calculate(const DoubleMatrix & yu, const DoubleMatrix & yd, const
57  DoubleMatrix & ye, const DoubleVector & g);
58  };
59 
61  : dt(3, 3), ut(3, 3), et(3, 3), u2(3, 3),
62  d2(3, 3), e2(3, 3), u2t(3, 3),
63  e2t(3, 3), d2t(3, 3), gsq(1, 3), g3(1, 3), g4(1, 3), uuT(0.0),
64  ddT(0.0), eeT(0.0), u1(3, 3), d1(3, 3), e1(3, 3)
65  {}
66 
67  inline sBrevity::sBrevity(const sBrevity &s)
68  : dt(s.dt), ut(s.ut), et(s.ut), u2(s.u2), d2(s.d2),
69  e2(s.e2), u2t(s.u2t),
70  e2t(s.e2t), d2t(s.d2t), gsq(s.gsq), g3(s.g3), g4(s.g4),
71  uuT(s.uuT), ddT(s.ddT), eeT(s.eeT), u1(s.u1), d1(s.d1), e1(s.e1)
72  {}
73 
75  class MssmSusy {
76  private:
78  Approx mssmSusyApprox;
79  DoubleMatrix u, d, e;
80  DoubleVector g;
81  double smu, tanb, hVev;
84  public:
85  MssmSusy();
86  MssmSusy(const MssmSusy &);
91  MssmSusy(const DoubleMatrix & u, const DoubleMatrix & d, const
92  DoubleMatrix & e, const DoubleVector & v, double m,
93  double tb, double h);
94  virtual ~MssmSusy() {};
95 
97  const MssmSusy & operator=(const MssmSusy & s);
99  void setMssmSusy(const MssmSusy &s);
100 
101  void setMssmLoops(double l) { mssmSusyApprox.setLoops(l); };
103  void setHvev(double h);
105  void setSomePars(const MssmSusy & s);
107  void setYukawaElement(yukawa, int, int, double);
109  void setYukawaMatrix(yukawa, const DoubleMatrix &);
111  void setGaugeCoupling(int, double);
113  void setAllGauge(const DoubleVector &);
115  void setSusyMu(double);
117  void setTanb(double);
119  void setMssmApprox(int l, int t);
120  inline void setMssmApprox(const Approx & a) { mssmSusyApprox = a; };
121  void set(const DoubleVector &);
122  void set(const DoubleVector &, int & k);
123 
124  int displayMssmLoops() const { return mssmSusyApprox.displayLoops(); };
126  double displayHvev() const;
128  inline const MssmSusy & displayMssmSusy() const;
130  double displayYukawaElement(yukawa, int, int) const;
132  const DoubleMatrix & displayYukawaMatrix(yukawa) const;
134  double displayGaugeCoupling(int) const;
136  DoubleVector displayGauge() const;
138  double displaySusyMu() const;
140  double displayTanb() const;
141  Approx displayMssmApprox() const { return mssmSusyApprox; };
144  const DoubleVector display() const;
145 
148  void getMasses(QedQcd & r, double vev) const;
154  void quarkMixing(const DoubleMatrix & CKM, int mix);
157  void setDiagYukawas(const QedQcd &, double vev);
161  void getQuarkMixedYukawas(const QedQcd & r, const DoubleMatrix &
162  CKM, int mix, double vev);
167  void diagQuarkBasis(DoubleMatrix & vdl, DoubleMatrix & vdr,
168  DoubleMatrix & vul, DoubleMatrix & vur) const;
169  MssmSusy beta(sBrevity &) const;
170 
177  void getOneLpAnom(DoubleMatrix & gEE, DoubleMatrix & gLL,
178  DoubleMatrix & gQQ, DoubleMatrix & gDD,
179  DoubleMatrix & gUU, double & gH1H1, double &
180  gH2H2, sBrevity & a) const;
187  void getTwoLpAnom(DoubleMatrix & gEE, DoubleMatrix & gLL,
188  DoubleMatrix & gQQ, DoubleMatrix & gDD,
189  DoubleMatrix & gUU, double & gH1H1, double &
190  gH2H2, sBrevity & a) const;
191 
198 
199 #ifdef COMPILE_THREE_LOOP_RGE
200  void getThreeLpAnom(DoubleMatrix & gEE, DoubleMatrix & gLL,
203  DoubleMatrix & gQQ, DoubleMatrix & gDD,
204  DoubleMatrix & gUU, double & gH1H1, double &
205  gH2H2, sBrevity & a) const;
206 #endif
207 
208  void anomalousDimension(DoubleMatrix & gEE, DoubleMatrix & gLL,
209  DoubleMatrix & gQQ, DoubleMatrix & gUU,
210  DoubleMatrix & gDD, DoubleVector & dg,
211  double & gH1H1, double & gH2H2,
212  sBrevity & a) const;
213  };
214 
216  class MssmSusyRGE: public RGE, public MssmSusy {
217  private:
218  public:
219  MssmSusyRGE();
220  MssmSusyRGE(const MssmSusyRGE &);
222  MssmSusyRGE(const MssmSusy &);
226  MssmSusyRGE(const DoubleMatrix & u, const DoubleMatrix & d, const
227  DoubleMatrix & e, const DoubleVector & v, double m,
228  double tb, double MU, int l, int t, double h);
229  virtual ~MssmSusyRGE() {};
230 
232  const MssmSusyRGE & operator=(const MssmSusyRGE & s);
234  void setMssmSusyRGE(const MssmSusyRGE &s);
236  void set(const DoubleVector &);
237 
239  inline const MssmSusy & displayMssmSusyRGE() const;
241  DoubleVector beta() const;
244  const DoubleVector display() const;
245 
246  };
247 
248 
249 
251  ostream & operator <<(ostream &, const MssmSusy &);
252  ostream & operator <<(ostream &, const MssmSusyRGE &);
254  istream & operator >>(istream &left, MssmSusy &s);
255  istream & operator >>(istream &left, MssmSusyRGE &s);
259  &, DoubleVector &);
260 
261 #ifdef COMPILE_THREE_LOOP_RGE
262 
263 
264  void setBetasThreeLoop(Tensor &, DoubleMatrix &, DoubleMatrix &,
267  DoubleVector &);
268 
269 #endif //COMPILE_THREE_LOOP_RGE
270 
271  inline const MssmSusy & MssmSusy::displayMssmSusy() const { return *this; }
272 
273  inline void MssmSusy::setGaugeCoupling(int i, double f) { g(i) = f; }
274 
275  inline void MssmSusy::setAllGauge(const DoubleVector & v) {
276  if (v.displayStart() != 1 || v.displayEnd() !=3) {
277  ostringstream ii;
278  ii <<
279  "Initialising SUSY params gauge function with vector NOT 1..3\n" <<
280  v;
281  throw ii.str();
282  }
283  g = v;
284  }
285 
286  inline double MssmSusy::displayHvev() const { return hVev; }
287 
288  inline void MssmSusy::setHvev(double h) { hVev = h; }
289  inline void MssmSusy::setSusyMu(double f) { smu = f; }
290  inline void MssmSusy::setTanb(double f) { tanb = f; }
291  inline DoubleVector MssmSusy::displayGauge() const { return g; }
292  inline double MssmSusy::displayGaugeCoupling(int i) const {
293  return g.display(i);
294  }
295  inline double MssmSusy::displaySusyMu() const { return smu; }
296 
297 } // namespace softsusy
298 
299 #endif
300 
301 
302 
global variable declaration
Definition: def.cpp:13
const sBrevity & operator=(const sBrevity &)
Sets struct to be equal to another.
Definition: susy.cpp:16
void setHvev(double h)
Sets DRbar running Higgs vev.
Definition: susy.h:288
double displaySusyMu() const
Returns superpotential mu parameter.
Definition: susy.h:295
void setTanb(double)
Sets tan beta.
Definition: susy.h:290
void setLoops(int l)
Set number of loops used.
Definition: rge.h:38
DoubleVector is of variable length, and contains double precision.
Definition: linalg.h:35
int displayEnd() const
returns end of dimension
Definition: linalg.h:94
void setBetas(DoubleMatrix &babBeta, DoubleVector &cuBeta, DoubleVector &cdBeta, DoubleVector &ceBeta, DoubleVector &bBeta)
Definition: susy.cpp:365
DoubleMatrix u1
d1= , u1= , e1=
Definition: susy.h:45
QedQcd object contains Standard Model quark and lepton masses. It integrates them using 3 loop qcd x ...
const MssmSusy & displayMssmSusy() const
Returns whole object as a const.
Definition: susy.h:271
Contains all supersymmetric RPC-MSSM parameters.
Definition: susy.h:75
RGE objects consisting of energy scale and parameters and loops (order in perturbation theory) and th...
Quark and lepton masses and gauge couplings in QEDxQCD effective theory.
Definition: lowe.h:56
A few handy bits and pieces - little mathematical functions and the like.
three-index tensor for containing information on R-parity violating couplings. Also contains linear a...
DoubleVector displayGauge() const
Returns all gauge couplings.
Definition: susy.h:291
istream & operator>>(istream &left, flavourPhysical &s)
Formatted input of physical parameters.
Definition: flavoursoft.cpp:1220
void setSusyMu(double)
Sets superpotential mu parameter.
Definition: susy.h:289
Contains data needed in beta function calculation to make it faster.
Definition: susy.h:35
int displayStart() const
start of dimension
Definition: linalg.h:93
ostream & operator<<(ostream &left, const FlavourMssmSoftsusy &m)
Formatted output.
Definition: flavoursoft.cpp:217
double displayHvev() const
Returns DRbar running Higgs vev.
Definition: susy.h:286
double uuT
uuT= , ddt= , eet=
Definition: susy.h:43
Describes a set of parameters and RGEs in general.
Definition: rge.h:50
Matrix from 1..rows, 1..cols of double values.
Definition: linalg.h:211
DoubleVector gsq
gsq= , g3= , g4=
Definition: susy.h:41
int displayLoops() const
Return number of loops.
Definition: rge.h:44
double displayGaugeCoupling(int) const
Returns a single gauge coupling.
Definition: susy.h:292
DoubleMatrix dt
Definition: susy.h:39
yukawa
For accessing up, down and charged lepton Yukawa matrices respectively.
Definition: susy.h:32
Definition: rge.h:24
Three-index tensor for containing information on RPV couplings.
Definition: tensor.h:30
sBrevity()
Constructor fills sruct with zeroes by default.
Definition: susy.h:60
void setAllGauge(const DoubleVector &)
Set all gauge couplings.
Definition: susy.h:275
Contains all supersymmetric RPC-MSSM parameters.
Definition: susy.h:216
void calculate(const DoubleMatrix &yu, const DoubleMatrix &yd, const DoubleMatrix &ye, const DoubleVector &g)
Definition: susy.cpp:27
void setGaugeCoupling(int, double)
Set a single gauge coupling.
Definition: susy.h:273