hosted by CEDAR HepForge |
00001 00012 #ifndef RPVSOFT_H 00013 #define RPVSOFT_H 00014 00015 #include <iostream> 00016 #include <math.h> 00017 #include <cstring> 00018 #include <sstream> 00019 #include <fstream> 00020 #include <def.h> 00021 #include <softsusy.h> 00022 #include <linalg.h> 00023 #include <rpvsusypars.h> 00024 using namespace softsusy; 00025 00027 static const int numRpvSoftPars = 99 + numSoftParsMssm; 00028 00030 class RpvSoftsusy: public MssmSoftsusy, public RpvSoftPars, public RpvSusyPars 00031 { 00036 private: 00038 DoubleVector snuVevs; 00040 DoubleVector nuMasses; 00042 DoubleMatrix neutralFermMixing; 00043 public: 00045 RpvSoftsusy(); 00047 RpvSoftsusy(const RpvSoftsusy &); 00049 const RpvSoftsusy & operator = (const RpvSoftsusy &); 00050 00052 DoubleVector display() const; 00054 void set(const DoubleVector & v); 00056 DoubleVector beta() const; 00058 RpvSoftsusy beta2() const; 00059 00062 void rpvDisplay(DoubleVector & parameters) const; 00063 00068 void rpvSet(const DoubleVector & parameters); 00069 00071 DoubleVector displaySneutrinoVevs() const { return snuVevs; } 00073 DoubleVector displayNeutrinoMasses() const { return nuMasses; } 00075 DoubleMatrix displayNeutralMixing() const { 00076 return neutralFermMixing; } 00077 00079 void setSneutrinoVevs(DoubleVector & v) { snuVevs = v; }; 00081 void setNeutrinoMasses(DoubleVector & v) { nuMasses = v; }; 00083 void setNeutralMixing(DoubleMatrix & v) { neutralFermMixing = v; }; 00085 void check(const DoubleVector & sneutrinoVevs) const; 00087 void rpvAnomalousDimension(DoubleMatrix & gEE, DoubleMatrix & gLL, 00088 DoubleMatrix & gQQ, DoubleMatrix & gUU, 00089 DoubleMatrix & gDD, 00090 double & gH1H1, double & gH2H2, 00091 DoubleVector & gH1L) const; 00092 00095 void rpvAnomalousDeriv(DoubleMatrix & gEE, DoubleMatrix & gLL, 00096 DoubleMatrix & gQQ, DoubleMatrix & gUU, 00097 DoubleMatrix & gDD, 00098 double & gH1H1, double & gH2H2, 00099 DoubleVector & gH1L) const; 00100 00104 void rpvyTildes(DoubleMatrix & ye, DoubleMatrix & yd, Tensor & letilde, 00105 Tensor & ldtilde, Tensor & lutilde) const; 00106 00110 virtual void rewsb(int sgnMu, double mt, double muOld = -6.66e66); 00116 void iterateRewsb(double & mu, double & m3sq, DoubleVector & sneutrinoVevs, 00117 int sgnMu, int & numTries, int maxTries, double tol, 00118 double mt); 00123 double calculateMu(const DoubleVector & sneutrinoVevs, int sgnMu, 00124 double v1, double v2); 00128 virtual void higgs(int accuracy, double piwwtMS, double pizztMS); 00134 double calculateM3sq(const DoubleVector & sneutrinoVevs, 00135 double snuSq, double v1, double v2); 00136 DoubleVector calculateSneutrinoVevs(const DoubleVector & sneutrinoVevs, 00137 double tol, 00138 double snuSq, double v1, double v2); 00141 void rotateAwayVevs(DoubleVector & snVevs); 00142 00143 // Returns some functions of VEVs, gives 1 if there's a problem with the 00144 // sneutrino VEVs (if they are incompatible with the W and Z masses) 00146 // quadrature), v1 and 00149 // inputs vSM and sneutrinoVevs. 00151 int usefulVevs(double vSM, const DoubleVector & sneutrinoVevs, 00152 double & snuSq, double & v1, double & v2) const; 00153 00157 void standardSugra(double m0, double m12, double a0); 00158 00160 DoubleMatrix neutralinoMassMatrix() const; 00161 00164 void neutralinos(int accuracy, double piwwtMS, double pizztMS); 00168 void methodBoundaryCondition(const DoubleVector & v); 00171 virtual void sparticleThresholdCorrections(double tb); 00172 00175 DoubleMatrix chargedLeptons(double vev); 00183 void iterateChargedLeptons(double vev, DoubleMatrix & yeOld, double tol, 00184 int maxTries, int & err, double mtau); 00185 00189 void isawigInterface764(char herwigInputFile [80], 00190 char isajetOutputFile [80], 00191 char softOutputFile [80]) const; 00204 virtual void lesHouchesAccordOutput(ostream & out, const char model[], 00205 const DoubleVector & pars, 00206 int sgnMu, double tanb, double qMax, 00207 int numPoints, 00208 double mgut, 00209 bool altEwsb = false); 00210 }; 00211 00213 ostream & operator <<(ostream &left, const RpvSoftsusy & r); 00214 00216 double neutrinoSum(const RpvSoftsusy & r); 00217 00218 inline RpvSoftsusy::RpvSoftsusy() 00219 : MssmSoftsusy(), RpvSoftPars(), RpvSusyPars(), snuVevs(3), nuMasses(3), 00220 neutralFermMixing(7, 7) { 00221 setPars(numRpvSoftPars); 00222 setMu(0.0); 00223 setLoops(0); 00224 setThresholds(0); 00225 } 00226 00227 inline RpvSoftsusy::RpvSoftsusy(const RpvSoftsusy & s) 00228 : MssmSoftsusy(s.displayMssmSoft()), RpvSoftPars(s.displayRpvSoft()), 00229 RpvSusyPars(s.displayRpvSusy()), snuVevs(s.displaySneutrinoVevs()), 00230 nuMasses(s.displayNeutrinoMasses()), 00231 neutralFermMixing(s.displayNeutralMixing()) { 00232 // set new parameters here 00233 00234 setPars(numRpvSoftPars); 00235 setMu(s.displayMu()); 00236 setLoops(s.displayLoops()); 00237 setThresholds(s.displayThresholds()); 00238 } 00239 00240 00242 void rpvSugraBcs(MssmSoftsusy & m, const DoubleVector & inputParameters); 00243 00245 void rpvAmsbBcs(MssmSoftsusy & m, const DoubleVector & inputParameters); 00246 00247 void rpvGmsbBcs(MssmSoftsusy & m, const DoubleVector & inputParameters); 00248 00249 #endif 00250 00251 00252
1.5.5