|
GAMBIT
v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
|
Go to the documentation of this file. 31 #include "boost/make_shared.hpp" 40 class MajoranaSingletDM 45 TH_ProcessCatalog* const catalog, 49 : Gamma_mh(gammaH), v0 (vev), 50 alpha_s (alpha_strong) 52 mh = catalog->getParticleProperty( "h0_1").mass; 53 mb = catalog->getParticleProperty( "d_3").mass; 54 mc = catalog->getParticleProperty( "u_2").mass; 55 mtau = catalog->getParticleProperty( "e-_3").mass; 56 mt = catalog->getParticleProperty( "u_3").mass; 57 mZ0 = catalog->getParticleProperty( "Z0").mass; 58 mW = catalog->getParticleProperty( "W+").mass; 60 ~MajoranaSingletDM() {} 65 return 1/((s- mh* mh)*(s- mh* mh)+mh*mh*Gamma_mh*Gamma_mh); 74 double sv(std::string channel, double lambda, double mass, double cosXi, double v) 79 v = std::max(v, 1e-6); 81 double s = 4*mass*mass/(1-v*v/4); 82 double sqrt_s = sqrt(s); 86 "MajoranaSingletDM sigmav called with sqrt_s < 90 GeV."); 90 if ( channel == "hh" ) 94 return sv_hh(lambda, mass, v, cosXi); 99 if ( channel == "bb" and sqrt_s < mb*2 ) return 0; 100 if ( channel == "cc" and sqrt_s < mc*2 ) return 0; 101 if ( channel == "tautau" and sqrt_s < mtau*2 ) return 0; 102 if ( channel == "tt" and sqrt_s < mt*2 ) return 0; 103 if ( channel == "ZZ" and sqrt_s < mZ0*2) return 0; 104 if ( channel == "WW" and sqrt_s < mW*2) return 0; 111 double cos2Xi = cosXi*cosXi; 112 double sin2Xi = 1 - cos2Xi; 113 double numerator = (cos2Xi*v*v/4 + sin2Xi); 116 if ( channel == "tt" and sqrt_s < mt*2) return 0; 118 double res = numerator*lambda*lambda* v0* v0*sqrt_s 119 *Dh2(s)*Gamma_s*GeV2tocm3s1*br; 124 if ( channel == "bb" ) return sv_ff(lambda, mass, v, mb, cosXi, true); 125 if ( channel == "cc" ) return sv_ff(lambda, mass, v, mc, cosXi, true); 126 if ( channel == "tautau" ) return sv_ff(lambda, mass, v, mtau, cosXi, false); 127 if ( channel == "tt" ) return sv_ff(lambda, mass, v, mt, cosXi, true); 128 if ( channel == "ZZ" ) return sv_ZZ(lambda, mass, v, cosXi); 129 if ( channel == "WW" ) return sv_WW(lambda, mass, v, cosXi); 135 double sv_WW( double lambda, double mass, double v, double cosXi) 137 double s = 4*mass*mass/(1-v*v/4); 138 double cos2Xi = cosXi*cosXi; 139 double sin2Xi = 1 - cos2Xi; 140 double numerator = (cos2Xi*v*v/4 + sin2Xi); 141 double x = pow( mW,2)/s; 143 return pow(lambda,2)* pow(s,2)/16/M_PI*sqrt(1-4*x)*Dh2(s)*numerator*(1-4*x+12* pow(x,2)) 148 double sv_ZZ( double lambda, double mass, double v, double cosXi) 150 double s = 4*mass*mass/(1-v*v/4); 151 double cos2Xi = cosXi*cosXi; 152 double sin2Xi = 1 - cos2Xi; 153 double numerator = (cos2Xi*v*v/4 + sin2Xi); 154 double x = pow(mZ0,2)/s; 156 return pow(lambda,2)* pow(s,2)/32/M_PI*sqrt(1-4*x)*Dh2(s)*numerator*(1-4*x+12* pow(x,2)) 162 double lambda, double mass, double v, double mf, double cosXi, bool is_quark) 164 double s = 4*mass*mass/(1-v*v/4); 165 double cos2Xi = cosXi*cosXi; 166 double sin2Xi = 1 - cos2Xi; 167 double numerator = (cos2Xi*v*v/4 + sin2Xi); 168 double vf = sqrt(1-4* pow(mf,2)/s); 170 if ( is_quark ) Xf = 3 * 171 (1+(3/2*log( pow(mf,2)/s)+9/4)*4*alpha_s/3/M_PI); 173 return pow(lambda,2)*s* 174 pow(mf,2)/8/M_PI*Xf* pow(vf,3)*Dh2(s)*numerator*GeV2tocm3s1; 178 double sv_hh( double lambda, double mass, double v, double cosXi) 181 v = std::max(v, 1e-6); 183 double s = 4*mass*mass/(1-v*v/4); 186 double xpsi = mass*mass/s; 187 double xG = Gamma_mh* mh/s; 191 return ( pow(lambda,2)*sqrt(1 - 4*xh)/(32.*M_PI*s)*( 192 s - 4* pow(cosXi,2)*s*xpsi - 8*cosXi*lambda* pow( v0,2)*mass + 193 (3*xh*(8*cosXi*lambda* pow( v0,2)*(-1 + xh)*sqrt(s*xpsi) - s*(2 + xh)*(-1 + 4* pow(cosXi,2)*xpsi)))/( pow(xG,2) + pow(-1 + xh,2)) 194 - (2* pow(lambda,2)* pow( v0,4)*(3* pow(xh,2) - 8*(1 + pow(cosXi,2))*xh*xpsi + 2*xpsi*(1 + 8* pow(cosXi,4)*xpsi)))/( pow(xh,2) + xpsi - 4*xh*xpsi) 195 + (4*beta*lambda* pow( v0,2)*(2*cosXi*(-1 + 2*xh)*(-1 - pow(xG,2) + xh*(-1 + 2*xh))*sqrt(s*xpsi)*(-1 - 2*xh + 8* pow(cosXi,2)*xpsi) + lambda* pow( v0,2)*( pow(xG,2) + pow(-1 + xh,2))* 196 (1 - 4*xh + 6* pow(xh,2) - 16* pow(cosXi,2)*(-1 + xh)*xpsi - 32* pow(cosXi,4)* pow(xpsi,2)))*atanh(1/beta))/(( pow(xG,2) + pow(-1 + xh,2))* pow(1 - 2*xh,2))) 202 double Gamma_mh, mh, v0, alpha_s, mb, mc, mtau, mt, mZ0, mW; 221 double fp = 2./9. + 7./9.*(*Param[ "fpu"] + *Param[ "fpd"] + *Param[ "fps"]); 222 double fn = 2./9. + 7./9.*(*Param[ "fnu"] + *Param[ "fnd"] + *Param[ "fns"]); 231 logger() << " gps = " << result.gps << std::endl; 232 logger() << " gns = " << result.gns << std::endl; 233 logger() << " gp_q2 = " << result.gp_q2 << std::endl; 234 logger() << " gn_q2 = " << result.gn_q2 << EOM; 257 #define getSMmass(Name, spinX2) \ 258 catalog.particleProperties.insert(std::pair<string, TH_ParticleProperty> \ 259 (Name , TH_ParticleProperty(SM.get(Par::Pole_Mass,Name), spinX2))); 260 #define addParticle(Name, Mass, spinX2) \ 261 catalog.particleProperties.insert(std::pair<string, TH_ParticleProperty> \ 262 (Name , TH_ParticleProperty(Mass, spinX2))); 273 double alpha_s = SMI. alphaS; 341 std::set<string> importedDecays; 344 double minBranching = 0; 351 ImportDecays( "h0_1", catalog, importedDecays, tbl, minBranching, 352 daFunk::vec<std::string>( "Z0", "W+", "W-", "e+_2", "e-_2", "e+_3", "e-_3")); 355 auto majoranaDM = boost::make_shared<MajoranaSingletDM>(&catalog, gammaH, v, alpha_s); 363 daFunk::vec<string>( "bb", "WW", "cc", "tautau", "ZZ", "tt", "hh"); 365 daFunk::vec<string>( "d_3", "W+", "u_2", "e+_3", "Z0", "u_3", "h0_1"); 367 daFunk::vec<string>( "dbar_3", "W-", "ubar_2", "e-_3", "Z0", "ubar_3", "h0_1"); 369 for ( unsigned int i = 0; i < channel.size(); i++ ) 372 catalog.getParticleProperty(p1[i]).mass + 373 catalog.getParticleProperty(p2[i]).mass; 375 if ( mX*2 > mtot_final*0.5 ) 378 &MajoranaSingletDM::sv, channel[i], lambda, mX, cosXi, daFunk::var( "v")); 380 daFunk::vec<string>(p1[i], p2[i]), kinematicFunction 384 if ( mX*2 > mtot_final ) 387 push_back(mtot_final); 397 catalog.processList.push_back(process_ann); std::vector< TH_Channel > channelList List of channels.
double get(const Par::Tags partype, const std::string &mass) const
void DarkMatterConj_ID_MajoranaSingletDM(std::string &result)
Simple function for returning SM Higgs partial and total widths as a function of virtuality, as read from data files from CERN Yellow Paper arXiv:1101.0593.
Spectrum Spectrum Spectrum Spectrum Spectrum MajoranaSingletDM_Z2_spectrum
#define addParticle(Name, Mass, spinX2)
std::vector< TH_Resonance > resonances
Entry & at(std::pair< int, int >) Get entry in decay table for a give particle, throwing an error if particle is absent.
void ImportDecays(std::string pID, TH_ProcessCatalog &catalog, std::set< std::string > &importedDecays, const DecayTable *tbl, double minBranching, std::vector< std::string > excludeDecays=std::vector< std::string >())
Funk funcM(O *obj, double(O::*f)(funcargs...), Args... args)
Simple reader for ASCII tables.
std::vector< double > threshold_energy
Funk var(std::string arg)
double virtual_SMHiggs_widths(str, double) Higgs branching ratios and total width Gamma [GeV], as function of mass [GeV] (90 - 300 GeV) ...
void DarkMatter_ID_MajoranaSingletDM(std::string &result)
Piped_invalid_point piped_invalid_point Global instance of piped invalid point class.
bool isSelfConj Does the process contain self-conjugate DM? (accounting for correct factors of 1/2 in annihilation sp...
A single resonance of a given width at a given energy (both in GeV)
void TH_ProcessCatalog_MajoranaSingletDM_Z2(DarkBit::TH_ProcessCatalog &result) Set up process catalog for the MajoranaSingletDM_Z2 model.
virtual double get(const Par::Tags, const str &, const SpecOverrideOptions=use_overrides, const SafeBool check_antiparticle=SafeBool(true)) const =0
TH_resonances_thresholds resonances_thresholds List of resonances and thresholds.
double width_in_GeV Total particle width (in GeV)
#define getSMmass(Name, spinX2)
A container holding all annihilation and decay initial states relevant for DarkBit.
const Logging::endofmessage EOM Explicit const instance of the end of message struct in Gambit namespace.
EXPORT_SYMBOLS Logging::LogMaster & logger() Function to retrieve a reference to the Gambit global log object.
SubSpectrum & get_LE() Standard getters Return references to internal data members.
All data on a single annihilation or decay channel, e.g.
double lambda(double x, double y, double z)
Virtual base class for interacting with spectrum generator output.
Rollcall header for module DarkBit.
GAMBIT native decay table class.
double pow(const double &a) Outputs a^i.
Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum mh
void request(std::string message) Request an exception.
A container for a single process.
shared_ptr< FunkBase > Funk
TODO: see if we can use this one:
void DD_couplings_MajoranaSingletDM_Z2(DM_nucleon_couplings_fermionic_HP &result) Direct detection couplings for the MajoranaSingletDM_Z2 model.
"Standard Model" (low-energy) plus high-energy model container class
SMInputs & get_SMInputs()
Utility functions for DarkBit.
|