SoftSUSY is hosted by Hepforge, IPPP Durham
SOFTSUSY  4.1
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;
87  int mixing;
88  public:
89  MssmSusy();
90  MssmSusy(const MssmSusy &);
95  MssmSusy(const DoubleMatrix & u, const DoubleMatrix & d, const
96  DoubleMatrix & e, const DoubleVector & v, double m,
97  double tb, double h, int mix);
98  virtual ~MssmSusy() {};
99 
101  const MssmSusy & operator=(const MssmSusy & s);
103  void setMssmSusy(const MssmSusy &s);
104 
105  void setMssmLoops(double l) { mssmSusyApprox.setLoops(l); };
107  void setHvev(double h);
109  void setSomePars(const MssmSusy & s);
111  void setYukawaElement(yukawa, int, int, double);
113  void setYukawaMatrix(yukawa, const DoubleMatrix &);
115  void setGaugeCoupling(int, double);
117  void setAllGauge(const DoubleVector &);
119  void setSusyMu(double);
121  void setTanb(double);
123  void setMssmApprox(int l, int t);
124  inline void setMssmApprox(const Approx & a) { mssmSusyApprox = a; };
125  void set(const DoubleVector &);
126  void set(const DoubleVector &, int & k);
128  void setMixing(double mix) { mixing = mix; };
129 
130  int displayMssmLoops() const { return mssmSusyApprox.displayLoops(); };
132  double displayHvev() const;
134  inline const MssmSusy & displayMssmSusy() const;
136  double displayYukawaElement(yukawa, int, int) const;
138  const DoubleMatrix & displayYukawaMatrix(yukawa) const;
140  double displayGaugeCoupling(int) const;
142  DoubleVector displayGauge() const;
144  double displaySusyMu() const;
146  double displayTanb() const;
147  Approx displayMssmApprox() const { return mssmSusyApprox; };
150  const DoubleVector display() const;
152  int displayMixing() const { return mixing; };
153 
156  void getMasses(QedQcd & r, double vev) const;
162  void quarkMixing(const DoubleMatrix & CKM, int mix);
165  void setDiagYukawas(const QedQcd &, double vev);
169  void getQuarkMixedYukawas(const QedQcd & r, const DoubleMatrix &
170  CKM, int mix, double vev);
175  void diagQuarkBasis(DoubleMatrix & vdl, DoubleMatrix & vdr,
176  DoubleMatrix & vul, DoubleMatrix & vur) const;
177  MssmSusy beta(sBrevity &) const;
178 
185  void getOneLpAnom(DoubleMatrix & gEE, DoubleMatrix & gLL,
186  DoubleMatrix & gQQ, DoubleMatrix & gDD,
187  DoubleMatrix & gUU, double & gH1H1, double &
188  gH2H2, sBrevity & a) const;
195  void getTwoLpAnom(DoubleMatrix & gEE, DoubleMatrix & gLL,
196  DoubleMatrix & gQQ, DoubleMatrix & gDD,
197  DoubleMatrix & gUU, double & gH1H1, double &
198  gH2H2, sBrevity & a) const;
199 
206 
209  void getThreeLpAnom(DoubleMatrix & gEE, DoubleMatrix & gLL,
210  DoubleMatrix & gQQ, DoubleMatrix & gDD,
211  DoubleMatrix & gUU, double & gH1H1, double &
212  gH2H2, sBrevity & a) const;
213 
214  void anomalousDimension(DoubleMatrix & gEE, DoubleMatrix & gLL,
215  DoubleMatrix & gQQ, DoubleMatrix & gUU,
216  DoubleMatrix & gDD, DoubleVector & dg,
217  double & gH1H1, double & gH2H2,
218  sBrevity & a) const;
219  };
220 
222  class MssmSusyRGE: public RGE, public MssmSusy {
223  private:
224  public:
225  MssmSusyRGE();
226  MssmSusyRGE(const MssmSusyRGE &);
228  MssmSusyRGE(const MssmSusy &);
232  MssmSusyRGE(const DoubleMatrix & u, const DoubleMatrix & d, const
233  DoubleMatrix & e, const DoubleVector & v, double m,
234  double tb, double MU, int l, int t, double h, int mix);
235  virtual ~MssmSusyRGE() {};
236 
238  const MssmSusyRGE & operator=(const MssmSusyRGE & s);
240  void setMssmSusyRGE(const MssmSusyRGE &s);
242  void set(const DoubleVector &);
243 
245  inline const MssmSusy & displayMssmSusyRGE() const;
247  DoubleVector beta() const;
250  const DoubleVector display() const;
251 
252  };
253 
254 
255 
257  ostream & operator <<(ostream &, const MssmSusy &);
258  ostream & operator <<(ostream &, const MssmSusyRGE &);
260  istream & operator >>(istream &left, MssmSusy &s);
261  istream & operator >>(istream &left, MssmSusyRGE &s);
265  &, DoubleVector &);
266 
267  void setBetasThreeLoop(Tensor &, DoubleMatrix &, DoubleMatrix &,
270  DoubleVector &);
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:37
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:371
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:55
A few handy bits and pieces - little mathematical functions and the like.
void setMixing(double mix)
Sets quark mixing parameter.
Definition: susy.h:128
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:49
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:43
double displayGaugeCoupling(int) const
Returns a single gauge coupling.
Definition: susy.h:292
int displayMixing() const
Returns quark mixing parameter.
Definition: susy.h:152
DoubleMatrix dt
Definition: susy.h:39
yukawa
For accessing up, down and charged lepton Yukawa matrices respectively.
Definition: susy.h:32
Definition: rge.h:23
Three-index tensor for containing information on RPV couplings.
Definition: tensor.h:27
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:222
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