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 namespace softsusy {
24 
25  const static int numSusyPars = 33;
26 
28  typedef enum {YU=1, YD, YE} yukawa;
29 
31  struct sBrevity {
35  DoubleMatrix dt, ut, et, u2, d2, e2, u2t, e2t, d2t;
37  DoubleVector gsq, g3, g4;
39  double uuT, ddT, eeT;
41  DoubleMatrix u1, d1, e1;
42 
44  sBrevity();
46  sBrevity(const sBrevity &);
48  const sBrevity & operator=(const sBrevity &);
49 
52  void calculate(const DoubleMatrix & yu, const DoubleMatrix & yd, const
53  DoubleMatrix & ye, const DoubleVector & g);
54  };
55 
57  : dt(3, 3), ut(3, 3), et(3, 3), u2(3, 3),
58  d2(3, 3), e2(3, 3), u2t(3, 3),
59  e2t(3, 3), d2t(3, 3), gsq(1, 3), g3(1, 3), g4(1, 3), uuT(0.0),
60  ddT(0.0), eeT(0.0), u1(3, 3), d1(3, 3), e1(3, 3)
61  {}
62 
63  inline sBrevity::sBrevity(const sBrevity &s)
64  : dt(s.dt), ut(s.ut), et(s.ut), u2(s.u2), d2(s.d2),
65  e2(s.e2), u2t(s.u2t),
66  e2t(s.e2t), d2t(s.d2t), gsq(s.gsq), g3(s.g3), g4(s.g4),
67  uuT(s.uuT), ddT(s.ddT), eeT(s.eeT), u1(s.u1), d1(s.d1), e1(s.e1)
68  {}
69 
71  class MssmSusy {
72  private:
74  Approx mssmSusyApprox;
75  DoubleMatrix u, d, e;
76  DoubleVector g;
77  double smu, tanb, hVev;
83  int mixing;
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, int mix);
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);
124  void setMixing(double mix) { mixing = mix; };
125 
126  int displayMssmLoops() const { return mssmSusyApprox.displayLoops(); };
128  double displayHvev() const;
130  inline const MssmSusy & displayMssmSusy() const;
132  double displayYukawaElement(yukawa, int, int) const;
134  const DoubleMatrix & displayYukawaMatrix(yukawa) const;
136  double displayGaugeCoupling(int) const;
138  DoubleVector displayGauge() const;
140  double displaySusyMu() const;
142  double displayTanb() const;
143  Approx displayMssmApprox() const { return mssmSusyApprox; };
146  const DoubleVector display() const;
148  int displayMixing() const { return mixing; };
149 
152  void getMasses(QedQcd & r, double vev) const;
158  void quarkMixing(const DoubleMatrix & CKM, int mix);
161  void setDiagYukawas(const QedQcd &, double vev);
165  void getQuarkMixedYukawas(const QedQcd & r, const DoubleMatrix &
166  CKM, int mix, double vev);
171  void diagQuarkBasis(DoubleMatrix & vdl, DoubleMatrix & vdr,
172  DoubleMatrix & vul, DoubleMatrix & vur) const;
173  MssmSusy beta(sBrevity &) const;
174 
181  void getOneLpAnom(DoubleMatrix & gEE, DoubleMatrix & gLL,
182  DoubleMatrix & gQQ, DoubleMatrix & gDD,
183  DoubleMatrix & gUU, double & gH1H1, double &
184  gH2H2, sBrevity & a) const;
191  void getTwoLpAnom(DoubleMatrix & gEE, DoubleMatrix & gLL,
192  DoubleMatrix & gQQ, DoubleMatrix & gDD,
193  DoubleMatrix & gUU, double & gH1H1, double &
194  gH2H2, sBrevity & a) const;
195 
202 
205  void getThreeLpAnom(DoubleMatrix & gEE, DoubleMatrix & gLL,
206  DoubleMatrix & gQQ, DoubleMatrix & gDD,
207  DoubleMatrix & gUU, double & gH1H1, double &
208  gH2H2, sBrevity & a) const;
209 
210  void anomalousDimension(DoubleMatrix & gEE, DoubleMatrix & gLL,
211  DoubleMatrix & gQQ, DoubleMatrix & gUU,
212  DoubleMatrix & gDD, DoubleVector & dg,
213  double & gH1H1, double & gH2H2,
214  sBrevity & a) const;
215  };
216 
218  class MssmSusyRGE: public RGE, public MssmSusy {
219  private:
220  public:
221  MssmSusyRGE();
222  MssmSusyRGE(const MssmSusyRGE &);
224  MssmSusyRGE(const MssmSusy &);
228  MssmSusyRGE(const DoubleMatrix & u, const DoubleMatrix & d, const
229  DoubleMatrix & e, const DoubleVector & v, double m,
230  double tb, double MU, int l, int t, double h, int mix);
231  virtual ~MssmSusyRGE() {};
232 
234  const MssmSusyRGE & operator=(const MssmSusyRGE & s);
236  void setMssmSusyRGE(const MssmSusyRGE &s);
238  void set(const DoubleVector &);
239 
241  inline const MssmSusy & displayMssmSusyRGE() const;
243  DoubleVector beta() const;
246  const DoubleVector display() const;
247 
248  };
249 
250 
251 
253  ostream & operator <<(ostream &, const MssmSusy &);
254  ostream & operator <<(ostream &, const MssmSusyRGE &);
256  istream & operator >>(istream &left, MssmSusy &s);
257  istream & operator >>(istream &left, MssmSusyRGE &s);
261  &, DoubleVector &);
262 
263  void setBetasThreeLoop(Tensor &, DoubleMatrix &, DoubleMatrix &,
266  DoubleVector &);
267  inline const MssmSusy & MssmSusy::displayMssmSusy() const { return *this; }
268 
269  inline void MssmSusy::setGaugeCoupling(int i, double f) { g(i) = f; }
270 
271  inline void MssmSusy::setAllGauge(const DoubleVector & v) {
272  if (v.displayStart() != 1 || v.displayEnd() !=3) {
273  ostringstream ii;
274  ii <<
275  "Initialising SUSY params gauge function with vector NOT 1..3\n" <<
276  v;
277  throw ii.str();
278  }
279  g = v;
280  }
281 
282  inline double MssmSusy::displayHvev() const { return hVev; }
283 
284  inline void MssmSusy::setHvev(double h) { hVev = h; }
285  inline void MssmSusy::setSusyMu(double f) { smu = f; }
286  inline void MssmSusy::setTanb(double f) { tanb = f; }
287  inline DoubleVector MssmSusy::displayGauge() const { return g; }
288  inline double MssmSusy::displayGaugeCoupling(int i) const {
289  return g.display(i);
290  }
291  inline double MssmSusy::displaySusyMu() const { return smu; }
292 
293 } // namespace softsusy
294 
295 #endif
296 
297 
298 
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:284
double displaySusyMu() const
Returns superpotential mu parameter.
Definition: susy.h:291
void setTanb(double)
Sets tan beta.
Definition: susy.h:286
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:41
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:267
Contains all supersymmetric RPC-MSSM parameters.
Definition: susy.h:71
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:124
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:287
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:285
Contains data needed in beta function calculation to make it faster.
Definition: susy.h:31
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:282
double uuT
uuT= , ddt= , eet=
Definition: susy.h:39
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:214
DoubleVector gsq
gsq= , g3= , g4=
Definition: susy.h:37
int displayLoops() const
Return number of loops.
Definition: rge.h:43
double displayGaugeCoupling(int) const
Returns a single gauge coupling.
Definition: susy.h:288
int displayMixing() const
Returns quark mixing parameter.
Definition: susy.h:148
DoubleMatrix dt
Definition: susy.h:35
yukawa
For accessing up, down and charged lepton Yukawa matrices respectively.
Definition: susy.h:28
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:56
void setAllGauge(const DoubleVector &)
Set all gauge couplings.
Definition: susy.h:271
Contains all supersymmetric RPC-MSSM parameters.
Definition: susy.h:218
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:269