SoftSUSY is hosted by Hepforge, IPPP Durham
SOFTSUSY  4.0
softsusy.h
Go to the documentation of this file.
1 
15 #ifndef SOFTSUSY_H
16 #define SOFTSUSY_H
17 
18 #ifdef HAVE_CONFIG_H
19 #include <config.h>
20 #endif
21 
22 #include <iostream>
23 #include <fstream>
24 #include <sstream>
25 #include <cstring>
26 #include <cstdlib>
27 #include <cmath>
28 #include "def.h"
29 #include "utils.h"
30 #include "numerics.h"
31 #include "physpars.h"
32 #include "lowe.h"
33 #include "softpars.h"
34 #include "twoloophiggs.h"
35 #include "mssmUtils.h"
36 
37 #ifdef COMPILE_TWO_LOOP_SPARTICLE_MASS
38 #include "higher_order.h"
39 #endif
40 
41 #define HR "----------------------------------------------------------"
42 
43 #ifdef COMPILE_TWO_LOOP_GAUGE_YUKAWA
44 #include <ginac/ginac.h>
45 namespace softsusy { class MssmSoftsusy; }
46 namespace SoftSusy_helpers_ {
47  GiNaC::exmap drBarPars_exmap(const softsusy::MssmSoftsusy &);
48 }
49 #include "two_loop_thresholds/softsusy_exmap.hpp"
50 #include "two_loop_thresholds/mssmparam.hpp"
51 #include "two_loop_thresholds/tau_corrections.hpp"
52 #include "two_loop_thresholds/bquark_corrections.hpp"
53 #include "two_loop_thresholds/tquark_corrections.hpp"
54 #include "two_loop_thresholds/gs_corrections.hpp"
55 #include "two_loop_thresholds/dec_cor_helper.hpp"
56 #endif
57 
58 namespace softsusy {
59 
61  const double mxDefault = 1.9e16;
62 
64  class AltEwsbMssm {
65  private:
68  double mAcond, muCond;
69  public:
70  void setAltEwsb(double ma, double mu) { mAcond = ma; muCond = mu; };
71  void setAltEwsbMssm(const AltEwsbMssm & s) { *this = s; };
72 
73  // int displayConditionStyle() { return conditionStyle; };
74  double displayMaCond() const { return mAcond; };
75  double displayMuCond() const { return muCond; };
76  const AltEwsbMssm & displayAltEwsbMssm() const { return *this; };
77 
78  void setMaCond(double maInput) { mAcond = maInput; };
79  void setMuCond(double muInput) { muCond = muInput; };
80  };
81 
83  class MssmSoftsusy: public MssmSusy, public MssmSoftPars, public AltEwsbMssm,
84  public Approx, public RGE {
94  private:
95  sPhysical physpars;
96  drBarPars forLoops;
97  sProblem problem;
98  double msusy;
99  double minV;
100  double mw;
101  QedQcd dataSet;
102  double fracDiff;
103  bool setTbAtMX;
104  bool altEwsb;
106  double predMzSq;
107  double t1OV1Ms, t2OV2Ms;
108  double t1OV1Ms1loop, t2OV2Ms1loop;
109 
110  protected:
111  void setT1OV1Ms(double t1) { t1OV1Ms = t1; }
112  void setT2OV2Ms(double t2) { t2OV2Ms = t2; }
113  void setT1OV1Ms1loop(double t1) { t1OV1Ms1loop = t1; }
114  void setT2OV2Ms1loop(double t2) { t2OV2Ms1loop = t2; }
115  double mxBC;
116 
117  public:
118 #ifdef COMPILE_TWO_LOOP_GAUGE_YUKAWA
119  SoftSusy_helpers_::decoupling_corrections_t decoupling_corrections;
120 #endif
121  int included_thresholds;
123 
124  // void (*boundaryCondition)(Softsusy &, const DoubleVector &);
126  MssmSoftsusy();
128  MssmSoftsusy(const MssmSusyRGE &);
130 
131  MssmSoftsusy(const MssmSoftsusy &);
136  MssmSoftsusy(const MssmSusy &, const MssmSoftPars & s,
137  const sPhysical & sp, double mu, int l,
138  int t, double hv);
139 
141  const MssmSoftsusy & operator=(const MssmSoftsusy & s);
142 
144  virtual const DoubleVector display() const;
145 
147  const MssmSoftsusy & displayMssmSoft() const;
148 
150  const sPhysical & displayPhys() const;
151 
154  const drBarPars & displayDrBarPars() const;
156  const sProblem & displayProblem() const {return problem; };
158  const QedQcd & displayDataSet() const;
160  double displaySoftA(trilinears, int, int) const;
161 
163  double displayFracDiff() const { return fracDiff; };
164  double displayMinpot() const;
165  double displayMsusy() const;
166  double displayMw() const;
167  double displayMwRun() const;
170  double displayMzRun() const;
171  double displayTadpole1Ms() const;
172  double displayTadpole2Ms() const;
173  double displayTadpole1Ms1loop() const;
174  double displayTadpole2Ms1loop() const;
175  double displayMxBC() const { return mxBC; };
176  const MssmSoftsusy & displaySoftsusy() const { return *this; }
179  double displayMz() const { return displayDataSet().displayMu(); }
181  bool displaySetTbAtMX() const { return setTbAtMX; }
182  bool displayAltEwsb() const { return altEwsb; }
183  double displayPredMzSq() const { return predMzSq; }
184 
186  void flagMgutOutOfBounds(bool a) { problem.mgutOutOfBounds = a; };
188  void flagIrqfp(bool a) { problem.irqfp = a; };
190  void flagNonperturbative(bool a) { problem.nonperturbative = a; };
192  void flagTachyon(tachyonType a) {
195  if (close(displayMu(), MZ, 1.0e-6)) problem.tachyonWarning = a;
196  else { problem.tachyon = a;
197  if (PRINTOUT > 2) cout << tachyonNames[a] << " tachyon ";
198  }
199  };
200  void flagTachyonWarning(tachyonType a) { problem.tachyonWarning = a; }
202  void flagM3sq(bool a) { problem.m3sq = a; };
204  void flagNoConvergence(bool a) { problem.noConvergence = a; };
206  void flagNoMuConvergence(bool a) { problem.noMuConvergence = a; };
208  void flagNoRhoConvergence(bool a) { problem.noRhoConvergence = a; };
210  void flagMusqwrongsign(bool a) { problem.muSqWrongSign = a; };
213  void flagInaccurateHiggsMass(bool a) { problem.inaccurateHiggsMass = a; };
215  void flagHiggsufb(bool a) { problem.higgsUfb = a; };
217  void flagNotGlobalMin(bool a) { problem.notGlobalMin = a; };
219  void flagAllProblems(bool a, tachyonType b) { problem.irqfp = a;
220  problem.tachyon = b; problem.tachyonWarning = b;
221  problem.m3sq = a; problem.badConvergence = a;
222  problem.noConvergence = a; problem.higgsUfb = a; problem.notGlobalMin = a;
223  problem.nonperturbative = a; problem.noRhoConvergence = a;
224  problem.noMuConvergence = a; problem.muSqWrongSign = a;
225  problem.inaccurateHiggsMass = b; problem.mgutOutOfBounds = a; }
227  void flagProblemThrown(bool a) { problem.problemThrown = a; }
229  void setProblem(const sProblem a) { problem = a; }
230 
232  void setSoftsusy(const MssmSoftsusy & s) { *this = s; };
234  void setData(const QedQcd & r) { dataSet = r; };
236  void setMinpot(double);
239  void setMsusy(double);
241  void setMw(double);
243  void setPhys(const sPhysical & s) { physpars = s; };
245  void setMxBC(double mx) { mxBC = mx; };
247  void setDrBarPars(const drBarPars & s) { forLoops = s; };
249  void setSetTbAtMX(bool a) { setTbAtMX = a; }
251  void useAlternativeEwsb() { altEwsb = true; }
253  void setPredMzSq(double a) { predMzSq = a; }
255  void set(const DoubleVector &);
256 
259  void setTwoLoopAlphasThresholds(bool sw);
261  void setTwoLoopMtThresholds(bool sw);
267  void setTwoLoopMbMtauThresholds(bool sw);
269  void setAllTwoLoopThresholds(bool sw);
270 
272  DoubleVector beta() const {
273  sBrevity a;
274  DoubleVector y(MssmSusy::beta(a).display());
275  DoubleVector x(MssmSoftPars::beta(displayMssmSusy()));
276  int i; for (i=1; i<=y.displayEnd(); i++) x(i) = y(i);
277  return x;
278  };
279 
281  void setFracDiff(double fD) { fracDiff = fD; };
283  //for use in doCalcTadpole1oneLoop
284  void H1SfSfCouplings(DoubleMatrix & lTS1Lr, DoubleMatrix & lBS1Lr,
285  DoubleMatrix & lTauS1Lr, double gmzOcthW, double mu,
286  double cosb, double v1) const;
288  //for use in doCalcTadpole1oneLoop
289  void H2SfSfCouplings(DoubleMatrix & lTS2Lr, DoubleMatrix & lBS2Lr,
290  DoubleMatrix & lTauS2Lr, double gmzOcthW, double mu,
291  double sinb) const;
293  double doCalcTad1Sfermions(DoubleMatrix lTS1Lr, DoubleMatrix lBS1Lr,
294  DoubleMatrix lTauS1Lr, double costhDRbar) const;
296  double doCalcTad2Sfermions(DoubleMatrix lTS2Lr, DoubleMatrix lBS2Lr,
297  DoubleMatrix lTauS2Lr, double costhDRbar) const;
299  //for use in doCalcTadpole1oneLoop
300  double doCalcTad1fermions(double q, double v1) const;
302  //for use in doCalcTadpole1oneLoop
303  double doCalcTad2fermions(double q) const;
305  // Follwing BPMZ Goldstone bosons are not included in this.
306  double doCalcTad1Higgs(double q, double costhDRbar2, double g,
307  double tanb) const;
308  //one loop H2 tadpole contributions from Higgs bosons in the loops
309  // Follwing BPMZ Goldstone bosons are not included in this.
310  double doCalcTad2Higgs(double q, double costhDRbar2, double g,
311  double tanb) const;
313  double doCalcTad1Neutralinos(double q, double costhDRbar, double g,
314  double cosb) const;
316  double doCalcTad2Neutralinos(double q, double costhDRbar, double g,
317  double sinb) const;
319  double doCalcTad1Charginos(double q, double g, double cosb) const;
320 
321  double doCalcTad2Charginos(double q, double g, double sinb) const;
322 
324  double doCalcTad1GaugeBosons(double q, double costhDRbar2, double g,
325  double tanb) const;
326 
327  double doCalcTad2GaugeBosons(double q, double costhDRbar2,
328  double g, double tanb) const;
330  void doTadpoles(double mt, double sinthDRbar);
332  virtual double doCalcTadpole1oneLoop(double mt, double sinthDRbar);
334  virtual double doCalcTadpole2oneLoop(double mt, double sinthDRbar);
337  virtual void calcTadpole1Ms1loop(double mt, double sinthDRbar);
340  virtual void calcTadpole2Ms1loop(double mt, double sinthDRbar);
344  DoubleMatrix addStopQCD(double p, double mt, DoubleMatrix & strong);
348  DoubleMatrix addStopStop(double p, double mt, DoubleMatrix & stop);
352  DoubleMatrix addStopSbottom(double p, double mt, DoubleMatrix & sbottom);
356  DoubleMatrix addStopHiggs(double p, double mt, DoubleMatrix & higgs);
360  DoubleMatrix addStopEweak(double p, DoubleMatrix & electroweak);
364  DoubleMatrix addStopNeutralino(double p, double mt,
365  DoubleMatrix & neutralino);
369  DoubleMatrix addStopChargino(double p, DoubleMatrix & chargino);
373  virtual void addStopCorrection(double p, DoubleMatrix & mass, double mt);
377  DoubleMatrix addSdownQCD(double p1, double p2, int family,
378  DoubleMatrix & strong);
382  DoubleMatrix addSdownHiggs(double p1, double p2, int family,
383  DoubleMatrix & higgs);
387  DoubleMatrix addSdownEweak(double p1, double p2, int family,
388  DoubleMatrix & electroweak);
392  DoubleMatrix addSdownNeutralino(double p1, double p2, int family,
393  DoubleMatrix & neutralino);
397  DoubleMatrix addSdownChargino(double p1, double p2, int family,
398  DoubleMatrix & chargino);
402  virtual void addSdownCorrection(DoubleMatrix & mass, int family);
406  DoubleMatrix addSbotQCD(double p, double mt, DoubleMatrix & strong);
410  void addSbotSfermion(double p, double mt, DoubleMatrix & stop,
411  DoubleMatrix & sbottom);
415  DoubleMatrix addSbotHiggs(double p, double mt, DoubleMatrix & higgs);
419  DoubleMatrix addSbotEweak(double p, DoubleMatrix & electroweak);
423  DoubleMatrix addSbotNeutralino(double p, double mt,
424  DoubleMatrix & neutralino);
428  DoubleMatrix addSbotChargino(double p, double mt, DoubleMatrix & chargino);
432  virtual void addSbotCorrection(double p, DoubleMatrix & mass, double mb);
436  DoubleMatrix addSlepHiggs(double p1, double p2, int family,
437  DoubleMatrix & higgs);
441  DoubleMatrix addSlepEweak(double p1, double p2, int family,
442  DoubleMatrix & electroweak);
446  void addSlepGaugino(double p1, double p2, int family,
447  DoubleMatrix & chargino, DoubleMatrix & neutralino);
451  virtual void addSlepCorrection(DoubleMatrix & mass, int family);
454  void addSlepCorrection(double p, DoubleMatrix & mass, int family);
458  void addStauSfermion(double p, double mtau, DoubleMatrix & stop,
459  DoubleMatrix & sbottom);
463  void addStauGaugino(double p, double mtau, DoubleMatrix & chargino,
464  DoubleMatrix & neutralino);
468  DoubleMatrix addStauEweak(double p, double mtau, DoubleMatrix & electroweak);
472  DoubleMatrix addStauHiggs(double p, double mtau, DoubleMatrix & higgs);
476  virtual void addStauCorrection(double p, DoubleMatrix & mass, double mtau);
480  DoubleMatrix addSupQCD(double p1, double p2, int family,
481  DoubleMatrix & strong);
485  DoubleMatrix addSupHiggs(double p1, double p2, int family,
486  DoubleMatrix & higgs);
490  DoubleMatrix addSupEweak(double p1, double p2, int family,
491  DoubleMatrix & electroweak);
495  DoubleMatrix addSupNeutralino(double p1, double p2, int family,
496  DoubleMatrix & neutralino);
500  DoubleMatrix addSupChargino(double p1, double p2, int family,
501  DoubleMatrix & chargino);
505  virtual void addSupCorrection(DoubleMatrix & mass, int family);
508  void addSnuTauSfermion(double p, double & stop, double & sbottom);
511  double addSnuTauHiggs(double p, double & higgs);
514  double addSnuTauEweak(double p, double & electroweak);
518  void addSnuTauGaugino(double p, double & chargino, double & neutralino);
522  virtual void addSnuTauCorrection(double & mass);
526  double addSnuHiggs(double p, int family, double & higgs);
530  double addSnuEweak(double p, int family, double & electroweak);
534  void addSnuGaugino(double p, int family, double & chargino,
535  double & neutralino);
539  virtual void addSnuCorrection(double & mass, int family);
544  void addSquarkCorrection(DoubleMatrix & mass);
549  virtual void doUpSquarks(double mt, double pizztMS, double sinthDRbarMS, int
550  accuracy);
555  virtual void doDownSquarks(double mb, double pizztMS, double sinthDRbarMS,
556  int accuracy, double mt);
561  virtual void doChargedSleptons(double mT, double pizztMS,
562  double sinthDRbarMS, int accuracy);
565  virtual void doSnu(double pizztMS, int accuracy = 0);
571  virtual void treeUpSquark(DoubleMatrix & mass, double mtrun, double pizztMS,
572  double sinthDRbarMS, int family);
578  virtual void treeDownSquark(DoubleMatrix & mass, double mbrun, double pizztMS,
579  double sinthDRbarMS, int family);
585  virtual void treeChargedSlepton(DoubleMatrix & mass, double mTrun,
586  double pizztMS, double sinthDRbarMS,
587  int family);
590  void treeSnu(double & mSq, double pizztMS, int family);
591 
593  virtual void calcDrBarPars();
596  void setNeutCurrCouplings(double sinthDRbar, double & sw2, double & guL,
597  double & gdL, double & geL, double & guR,
598  double & gdR, double & geR );
600  void calcDRTrilinears(drBarPars & eg, double vev, double beta);
601 
602  void calcDrBarHiggs(double beta, double mz2, double mw2,
603  double sinthDRbar, drBarPars & eg);
606  void treeCharginos(DoubleMatrix & mCh, double beta, double mw);
609  void treeNeutralinos(DoubleMatrix & mN, double beta, double mz,
610  double mw, double sinth);
611  // calculates the chargino and neutralino DRbar parameters.
612  //It will fill in the chargino and neutralino
614  void calcDrBarGauginos(double beta, double mw, double mz, double sinth,
615  drBarPars & eg);
619  virtual void sparticleThresholdCorrections(double tb);
620  // const DoubleVector & pars);
624  double qedSusythresh(double alphaEm, double Q) const;
628  double qcdSusythresh(double alphasMSbar, double Q);
632  double calcMs() const;
635  virtual void physical(int accuracy);
637  //to the pole mt for use in calcRunningMt
638  virtual double calcRunMtQCD() const;
640  //to the pole mt for use in calcRunningMt
641  virtual double calcRunMtStopGluino() const;
643  //to the pole mt for use in calcRunningMt
644  virtual double calcRunMtHiggs() const;
645 
647  //to the pole mt for use in calcRunningMt
648  virtual double calcRunMtNeutralinos() const;
650  //to the pole mt for use in calcRunningMt
651  virtual double calcRunMtCharginos() const;
652 
655  virtual double calcRunningMt();
657  virtual double calcRunMtauDrBarConv() const;
658  // Obtains (1 / mTAU) times 1-loop squark-chargino corrections
659  //to mtau for use in calcRunningMtau
660  virtual double calcRunMtauCharginos(double mTauSMMZ) const;
661  // Obtains (1 / mTAU) times 1-loop squark-neutralino corrections
662  //to mtau for use in calcRunningMtau
663  virtual double calcRunMtauNeutralinos(double mTauSMMZ) const;
665  // to mtau for use in calcRunningMtau
666  virtual double calcRunMtauHiggs() const;
669  virtual double calcRunningMtau() ;
670 
672  virtual double calcRunMbDrBarConv() const;
674  //to mb for use in calcRunningMb
675  virtual double calcRunMbSquarkGluino() const;
677  //to mb for use in calcRunningMb
678  virtual double calcRunMbChargino() const;
680  // to mb for use in calcRunningMb
681  virtual double calcRunMbHiggs() const;
683  // to mb for use in calcRunningMb
684  virtual double calcRunMbNeutralinos() const;
687  // rruiz: remove const
688  virtual double calcRunningMb();
689  /*
692  double calcHt(double vev);
695  double calcHb(double vev) const;
698  double calcHtau(double vev) const;
699  */
701  double calcSinthdrbar() const;
703  double getVev();
706  double getVev(double pizzt);
710  virtual void charginos(int accuracy, double piwwt);
713  virtual void addChaLoopSfermion(double p, DoubleMatrix & sigmaL, DoubleMatrix & sigmaR, DoubleMatrix & sigmaS) const;
716  virtual void addChaLoopGauge(double p, DoubleMatrix & sigmaL,
717  DoubleMatrix & sigmaR, DoubleMatrix & sigmaS,
718  DoubleMatrix b1pCha, DoubleMatrix b0pCha,
719  DoubleMatrix b1pNeut,
720  DoubleMatrix b0pNeut) const;
723  virtual void addChaLoopHiggs(double p, DoubleMatrix & sigmaL,
724  DoubleMatrix & sigmaR, DoubleMatrix & sigmaS,
725  DoubleMatrix b1pCha, DoubleMatrix b0pCha,
726  DoubleMatrix b1pNeut,
727  DoubleMatrix b0pNeut) const;
729  virtual void addCharginoLoop(double p, DoubleMatrix &);
734  virtual void neutralinos(int accuracy, double piwwt, double pizzt);
738  void addNeutLoopSfermion(double p, DoubleMatrix & sigmaL,
739  DoubleMatrix & sigmaR, DoubleMatrix & sigmaS);
741  void getNeutPassarinoVeltman(double p, double q, DoubleMatrix & b0fn,
742  DoubleMatrix & b1fn);
746  void addNeutLoopGauge(double p, DoubleMatrix & sigmaL,
747  DoubleMatrix & sigmaR, DoubleMatrix & sigmaS);
751  void addNeutLoopHiggs(double p, DoubleMatrix & sigmaL,
752  DoubleMatrix & sigmaR, DoubleMatrix & sigmaS);
754  virtual void addNeutralinoLoop(double p, DoubleMatrix &);
756  virtual void gluino(int accuracy);
759  void calcHiggsAtScale(int accuracy, double & mt, double & sinthDRbar,
760  double & piwwtMS, double & pizztMS, double q = 0.);
767  bool higgs(int accuracy, double piwwt, double pizzt);
773  // virtual void newhiggs(int accuracy, double piwwt, double pizzt);
777  virtual int rewsbMu(int sgnMu, double & mu) const;
780  virtual int rewsbM3sq(double, double &) const;
783  int rewsbM3sqTree(double, double &) const;
785  void alternativeEwsb(double mt);
793  virtual void rewsb(int sgnMu, double mt, const DoubleVector & pars,
794  double muOld = -6.66e66, double eps = 0.);
797  virtual void rewsbTreeLevel(int sgnMu);
800  double treeLevelMuSq();
810  void iterateMu(double & munew, int sgnMu, double mt,
811  int maxTries, double pizztMS, double sinthDRbar, double tol,
812  int & err);
815  double predTanb(double muSusy = -6.66e66) const;
818  double predMzsq(double & tanb, double muOld = -6.66e66, double eps = 0.);
820  double deltaEW() const;
821 
829  DoubleVector fineTune(void (*boundaryCondition)(MssmSoftsusy &,
830  const DoubleVector &),
831  const DoubleVector & bcPars, double MX,
832  bool doTop = false);
836  double it1par(int numPar, const DoubleVector & bcPars);
840  double ufb3sl(double);
843  double realMinMs() const;
844 
846  //for p=external momentum, Q=renormalisation scale
847  virtual double piZZTHiggs(double p, double Q, double thetaWDRbar) const;
849  //for p=external momentum, Q=renormalisation scale
850  virtual double piZZTsfermions(double p, double Q) const;
853  virtual double piZZTfermions(double p, double Q, bool usePoleMt) const;
856  virtual double piZZTNeutralinos(double p, double Q, double thetaWDRbar) const;
859  virtual double piZZTCharginos(double p, double q, double thetaWDRbar) const;
862  virtual double piZZT(double p, double Q, bool usePoleMt = false) const;
865  virtual double piWWTHiggs(double p, double q, double thetaWDRbar) const;
868  virtual double piWWTfermions(double p, double Q, bool usePoleMt) const;
871  virtual double piWWTsfermions(double p, double Q) const;
874  virtual double piWWTgauginos(double p, double Q, double thetaWDRbar) const;
877  virtual double piWWT(double p, double Q, bool usePoleMt = false) const;
880  virtual void getNeutralinoCharginoHpmCoup(ComplexMatrix & apph1,
881  ComplexMatrix & apph2,
882  ComplexMatrix & bpph1,
883  ComplexMatrix & bpph2) const;
886  double piHpHmFermions(double p, double q) const;
890  double piHpHmSfermions(double p, double q, double mu) const;
893  double piHpHmGauge(double p, double q) const;
896  double piHpHmHiggs(double p, double q) const;
899  double piHpHmGauginos(double p, double q) const;
902  virtual double piHpHm(double p, double Q) const;
905  double piZGT(double p, double Q) const;
908  virtual double piAA(double p, double Q) const;
910  //self-energy: for p=external momentum, q=renormalisation scale
911  Complex pis1s1Sfermions(double p, double q, DoubleMatrix ls1tt,
912  DoubleMatrix ls1bb, DoubleMatrix ls1tautau) const;
915  Complex pis1s2Sfermions(double p, double q, DoubleMatrix ls1tt,
916  DoubleMatrix ls1bb, DoubleMatrix ls1tautau,
917  DoubleMatrix ls2tt, DoubleMatrix ls2bb,
918  DoubleMatrix ls2tautau) const;
921  Complex pis2s2Sfermions(double p, double q, DoubleMatrix ls2tt,
922  DoubleMatrix ls2bb, DoubleMatrix ls2tautau) const;
925  Complex pis1s1Fermions(double p, double q) const;
928  Complex pis2s2Fermions(double p, double q) const;
931  Complex pis1s1Higgs(double p, double q) const;
934  Complex pis1s2Higgs(double p, double q) const;
937  Complex pis2s2Higgs(double p, double q) const;
940  Complex pis1s1Neutralinos(double p, double q) const;
943  Complex pis1s2Neutralinos(double p, double q) const;
946  Complex pis2s2Neutralinos(double p, double q) const;
949  Complex pis1s1Charginos(double p, double q) const;
952  Complex pis1s2Charginos(double p, double q) const;
955  Complex pis2s2Charginos(double p, double q) const;
958  Complex pis1s1(double p, double q) const;
961  Complex pis1s2(double p, double q) const;
964  Complex pis2s2(double p, double q) const;
966  double sinSqThetaEff();
968  virtual double h1s2Mix();
977  virtual void rhohat(double & outrho, double & outsin, double alphaMZDRbar,
978  double pizztMZ, double piwwt0, double piwwtMW,
979  double tol, int maxTries);
983  virtual double deltaVb(double outrho, double outsin, double alphaDRbar,
984  double pizztMZ) const;
988  virtual double dRho(double outrho, double outsin, double alphaDRbar,
989  double pizztMZ, double piwwtMW);
993  virtual double dR(double outrho, double outsin, double alphaDRbar,
994  double pizztMZ, double piwwt0);
996  double maxMass() const;
1001  int lsp(double & mass, int & posi, int & posj) const;
1006  int nlsp(double & mass, int & posi, int & posj) const;
1007 
1009  string printShort() const;
1011  string printLong();
1012 
1014  virtual void printObj() {
1015  cout << this->displayMssmSusy() << this->displayMssmSoftPars();
1016  };
1017 
1019  double thet(double a, double b, double c = 0.0);
1020 
1039  void fixedPointIteration(void (*boundaryCondition)
1040  (MssmSoftsusy &, const DoubleVector &),
1041  double mxGuess,
1042  const DoubleVector & pars, int sgnMu, double tanb,
1043  const QedQcd & oneset, bool gaugeUnification,
1044  bool ewsbBCscale = false);
1047  double lowOrg(void (*boundaryCondition)
1048  (MssmSoftsusy &, const DoubleVector &),
1049  double mxGuess,
1050  const DoubleVector & pars, int sgnMu, double tanb,
1051  const QedQcd & oneset, bool gaugeUnification,
1052  bool ewsbBCscale = false) {
1053  fixedPointIteration(boundaryCondition, mxGuess, pars, sgnMu, tanb, oneset,
1054  gaugeUnification, ewsbBCscale);
1055  return displayMxBC();
1056  };
1057 
1067 
1068  void itLowsoft(int maxTries, int sgnMu, double tol,
1069  double tanb, void (*boundaryCondition)(MssmSoftsusy &,
1070  const DoubleVector &),
1071  const DoubleVector & pars, bool gaugeUnification,
1072  bool ewsbBCscale);
1073 
1077  virtual void rpvSet(const DoubleVector & parameters);
1078 
1082  virtual void methodBoundaryCondition(const DoubleVector & pars);
1083 
1100  void isajetNumbers764
1101  (double & mtopPole, double & mGPole, double & smu, double & mA,
1102  double & tanb, double & mq1l, double & mdr, double & mur, double & meL,
1103  double & meR, double & mql3, double & mdr3, double & mur3, double & mtauL,
1104  double & mtauR, double & at, double & ab, double & atau, double & mq2l,
1105  double & msr, double & mcr, double & mmuL, double & mmuR, double & m1,
1106  double & m2) const;
1108  void isajetInterface764(const char fname[80]) const;
1111  void ssrunInterface764Inside(const char fname [80], fstream & ) const;
1115  void ssrunInterface764(const char fname [80], const char softfname [80]) const;
1119  void isawigInterface764(const char fnamein [80], const char fnameout [80],
1120  const char fnamesoft[80]) const;
1133  virtual void lesHouchesAccordOutput(ostream & out, const char model[],
1134  const DoubleVector & pars,
1135  int sgnMu, double tanb, double qMax,
1136  int numPoints,
1137  bool ewsbBCscale);
1138  /* void slha1(ostream & out, const char model[], const DoubleVector & pars,
1139  int sgnMu, double tanb, double qMax, int numPoints,
1140  bool ewsbBCscale);*/
1144  virtual void setEwsbConditions(const DoubleVector & inputs);
1147  void headerSLHA(ostream & out);
1149  virtual void spinfoSLHA(ostream & out);
1151  void modselSLHA(ostream & out, const char model[]);
1153  void sminputsSLHA(ostream & out);
1155  void minparSLHA(ostream & out, const char model [],
1156  const DoubleVector & pars, double tanb, int sgnMu,
1157  bool ewsbBCscale);
1159  virtual void extparSLHA(ostream & out, const DoubleVector & pars,
1160  bool ewsbBCscale);
1162  void massSLHA(ostream & out);
1164  virtual void higgsMSLHA(ostream & out);
1166  virtual void neutralinoCharginoMSLHA(ostream & out);
1168  virtual void sfermionsSLHA(ostream & out);
1170  void sfermionmixSLHA(ostream & out);
1172  virtual void neutralinoMixingSLHA(ostream & out);
1174  void inomixingSLHA(ostream & out);
1176  virtual void softsusySLHA(ostream & out);
1178  void alphaSLHA(ostream & out);
1180  virtual void hmixSLHA(ostream & out);
1182  void gaugeSLHA(ostream & out);
1184  virtual void yukawasSLHA(ostream & out);
1186  virtual void msoftSLHA(ostream & out);
1188  virtual void drbarSLHA(ostream & out, int numPoints, double qMax, int n);
1189 
1193  void doUfb3(double mgut);
1194 
1198  void assignHiggs(DoubleVector & higgsm, DoubleVector & higgsc,
1199  DoubleVector & dnu, DoubleVector & dnd,
1200  DoubleVector & cn, double beta) const;
1201 
1204  void assignHiggs(DoubleVector & higgsm, DoubleVector & higgsc) const;
1205 
1210  void assignHiggsSfermions(DoubleVector & higgsm, DoubleVector & higgsc,
1211  DoubleVector & dnu, DoubleVector & dnd,
1212  DoubleVector & cn, double beta) const;
1213 
1216  double smPredictionMW() const;
1217 
1220  double twoLoopGm2(double amu1Loop) const;
1221 
1224  double twoLpMt() const;
1225  double twoLpMb() const;
1226 
1231  virtual void doQuarkMixing(DoubleMatrix & mDon, DoubleMatrix & mUpq);
1232 
1237  virtual MssmSusyRGE guessAtSusyMt(double tanb, const QedQcd & oneset);
1238  };
1239 
1240  std::istream& operator>>(std::istream& left, MssmSoftsusy& s);
1241 
1243  void printShortInitialise();
1245  double rho2(double r);
1246 
1251  double minimufb3(double);
1252 
1254  double gEff(double x);
1256  double fEff(double x);
1257 
1259  double lep2Likelihood(double mh);
1262  DoubleVector mhIntegrand(double mh, const DoubleVector & y);
1265  double lnLHiggs(double mh);
1266 
1267 }
1268 
1269 #endif
1270 
1271 
1272 
global variable declaration
Definition: def.cpp:13
DoubleVector boundaryCondition(double m0, double m12, double a0, const RpvSusyPars &r)
Definition: rpvsusypars.cpp:373
void flagMgutOutOfBounds(bool a)
Flags weird mgut-type problems.
Definition: softsusy.h:186
const double accuracy
Approximate accuracy with which 3 body decays are calculated.
Definition: decays.h:33
DoubleVector is of variable length, and contains double precision.
Definition: linalg.h:35
void setDrBarPars(const drBarPars &s)
Sets tree-level DRbar parameters.
Definition: softsusy.h:247
Masses of the physical particles.
Definition: physpars.h:32
DRbar values of masses and mixings in MSSM.
Definition: physpars.h:114
bool inaccurateHiggsMass
Higgs mass is potentially inaccurate and cant be trusted.
Definition: physpars.h:87
int displayEnd() const
returns end of dimension
Definition: linalg.h:94
DoubleVector beta() const
Returns double vector containing numerical beta functions of parameters.
Definition: softsusy.h:272
switches (options) and parameters such as default fermion masses, required accuracy etc ...
double displayMz() const
Returns value of pole MZ being used.
Definition: softsusy.h:179
bool muSqWrongSign
mu^2 came out with wrong sign; no REWSB
Definition: physpars.h:80
double rho2(double r)
Two-loop Standard Model corrections to rho parameter.
Definition: softsusy.cpp:8903
void setProblem(const sProblem a)
Sets all problem flags.
Definition: softsusy.h:229
bool noRhoConvergence
Couldn&#39;t calculate electroweak rho parameter.
Definition: physpars.h:73
bool nonperturbative
Running went non-perturbative.
Definition: physpars.h:84
mass
used to give order of quark masses stored
Definition: lowe.h:47
double minimufb3(double lnH2)
Definition: softsusy.cpp:6721
QedQcd object contains Standard Model quark and lepton masses. It integrates them using 3 loop qcd x ...
bool displaySetTbAtMX() const
Is tan beta set at the user defined SUSY breaking scale?
Definition: softsusy.h:181
tachyonType tachyonWarning
Definition: physpars.h:79
Contains all supersymmetric RPC-MSSM parameters.
Definition: susy.h:75
void flagInaccurateHiggsMass(bool a)
Definition: softsusy.h:213
int PRINTOUT
Definition: def.cpp:15
bool irqfp
Infra-red quasi fixed point breached.
Definition: physpars.h:72
DoubleVector beta(const MssmSusy &) const
Returns double vector containing numerical beta functions of parameters.
Definition: softpars.cpp:2860
Quark and lepton masses and gauge couplings in QEDxQCD effective theory.
Definition: lowe.h:56
bool badConvergence
Nowhere near a decent solution.
Definition: physpars.h:71
void flagIrqfp(bool a)
Flags Infra-red quasi fixed point breach problem.
Definition: softsusy.h:188
void flagTachyon(tachyonType a)
Flags a negative-mass squared scalar (really a CCB problem)
Definition: softsusy.h:192
numerical routines - differential equation solver, differentiator and function minimiser for instance...
A few handy bits and pieces - little mathematical functions and the like.
void setData(const QedQcd &r)
Sets low energy Standard Model fermion mass and gauge coupling data.
Definition: softsusy.h:234
void setPhys(const sPhysical &s)
Sets all physical parameters.
Definition: softsusy.h:243
bool m3sq
m3sq came out with wrong sign; no REWSB
Definition: physpars.h:81
bool noConvergence
Iteration did not converge: not always serious.
Definition: physpars.h:74
void setPredMzSq(double a)
Set MZ^2 predicted after iteration.
Definition: softsusy.h:253
void setMxBC(double mx)
Sets the scale at which high-scale boundary conditions are applied.
Definition: softsusy.h:245
matrix of complex double values dimensions (rows x cols)
Definition: linalg.h:605
tachyonType tachyon
Definition: physpars.h:75
istream & operator>>(istream &left, flavourPhysical &s)
Formatted input of physical parameters.
Definition: flavoursoft.cpp:1220
double fEff(double x)
function used for calculating sin theta_eff
Definition: softsusy.cpp:8923
void flagAllProblems(bool a, tachyonType b)
Sets all problems equal to either true or false (contained in a)
Definition: softsusy.h:219
Contains data needed in beta function calculation to make it faster.
Definition: susy.h:35
double gEff(double x)
function used for calculating sin theta_eff
Definition: softsusy.cpp:8930
const sProblem & displayProblem() const
Returns any problem flags associated with the object.
Definition: softsusy.h:156
void flagNotGlobalMin(bool a)
LCT: Flags problem if not in global minimum of Higgs potential.
Definition: softsusy.h:217
void setFracDiff(double fD)
sets fracDiff, needed for access by NmssmSoftsusy methods
Definition: softsusy.h:281
Various boolean values to flag any problems with the parameter point.
Definition: physpars.h:69
double mxBC
Scale at which SUSY breaking boundary conditions set.
Definition: softsusy.h:115
double sw2
Some parameters used in the computation.
Definition: def.cpp:76
void flagM3sq(bool a)
Flags problem with Higgs potential minimum.
Definition: softsusy.h:202
Describes a set of parameters and RGEs in general.
Definition: rge.h:50
void flagHiggsufb(bool a)
Flags an inconsistent Higgs minimum.
Definition: softsusy.h:215
Matrix from 1..rows, 1..cols of double values.
Definition: linalg.h:211
A different REWSB condition - given by mu and MA instead of mh1,2.
Definition: softsusy.h:64
A few handy routines for the MSSM: SUSY breaking conditions etc.
virtual void printObj()
Prints whole object to standard output.
Definition: softsusy.h:1014
Contains two-loop routines from Slavich et al.
DoubleVector mhIntegrand(double mh, const DoubleVector &)
Definition: softsusy.cpp:10339
double displayMu() const
Return renomalisation scale.
Definition: rge.h:68
Flags for potential problems in sProblem structure, and structure for containing physical MSSM parame...
double displayFracDiff() const
Displays iteration accuracy attained.
Definition: softsusy.h:163
void flagNoMuConvergence(bool a)
Flags fact that mu sub iteration didn&#39;t converge.
Definition: softsusy.h:206
void setSoftsusy(const MssmSoftsusy &s)
Sets whole object equal to another.
Definition: softsusy.h:232
void flagMusqwrongsign(bool a)
Flags point inconsistent with electroweak symmetry breaking.
Definition: softsusy.h:210
Soft SUSY breaking parameters.
Definition: rge.h:24
Contains all supersymmetric MSSM parameters, incorporating R_p MSSM.
Definition: softsusy.h:83
bool close(double m1, double m2, double tol)
Definition: utils.cpp:68
bool notGlobalMin
Not in global minimum of Higgs potential.
Definition: physpars.h:83
const double mxDefault
< default SUSY breaking boundary condition scale
Definition: softsusy.h:61
void setSetTbAtMX(bool a)
Sets the setTbAtMX flag.
Definition: softsusy.h:249
double lowOrg(void(*boundaryCondition)(MssmSoftsusy &, const DoubleVector &), double mxGuess, const DoubleVector &pars, int sgnMu, double tanb, const QedQcd &oneset, bool gaugeUnification, bool ewsbBCscale=false)
Definition: softsusy.h:1047
trilinears
SUSY breaking trilinear parameters.
Definition: softpars.h:30
Soft SUSY breaking parameters and beta functions.
Definition: softpars.h:36
void printShortInitialise()
Prints out header line for print-short output.
Definition: softsusy.cpp:1327
MssmSusy beta(sBrevity &) const
Definition: susy.cpp:294
void flagNonperturbative(bool a)
Flags non-perturbative RG evolution.
Definition: softsusy.h:190
bool higgsUfb
Higgs potential inconsistent with a good minimum.
Definition: physpars.h:82
void useAlternativeEwsb()
Use alernative EWSB conditions: set mu and MA(pole)
Definition: softsusy.h:251
Contains all supersymmetric RPC-MSSM parameters.
Definition: susy.h:216
void flagNoConvergence(bool a)
Flags fact that calculation hasn&#39;t acheived required accuracy.
Definition: softsusy.h:204
double MZ
global pole mass of MZ in GeV - MZCENT is defined in def.h
Definition: def.cpp:54
void flagProblemThrown(bool a)
Flags a numerical exception eg number too big/small.
Definition: softsusy.h:227
void flagNoRhoConvergence(bool a)
Flags fact that rho parameter sub iteration didn&#39;t converge.
Definition: softsusy.h:208
bool noMuConvergence
Definition: physpars.h:85
double lep2Likelihood(double mh)
Fit to LEP2 Standard Model results.
Definition: softsusy.cpp:10328
double lnLHiggs(double mh)
returns the smeared log likelihood coming from LEP2 Higgs mass bounds
Definition: softsusy.cpp:10348
drop-in replacement for the original home-grown Complex class
Definition: mycomplex.h:17