|
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" 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; 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 "DiracSingletDM 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) 180 double s = 4*mass*mass/(1-v*v/4); 183 double xpsi = mass*mass/s; 184 double xG = Gamma_mh* mh/s; 188 return ( pow(lambda,2)*sqrt(1 - 4*xh)/(32.*M_PI*s)*( 189 s - 4* pow(cosXi,2)*s*xpsi - 8*cosXi*lambda* pow( v0,2)*mass + 190 (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)) 191 - (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) 192 + (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))* 193 (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))) 199 double Gamma_mh, mh, v0, alpha_s, mb, mc, mtau, mt, mZ0, mW; 209 const Spectrum& spec = *Dep::DiracSingletDM_Z2_spectrum; 218 double fp = 2./9. + 7./9.*(*Param[ "fpu"] + *Param[ "fpd"] + *Param[ "fps"]); 219 double fn = 2./9. + 7./9.*(*Param[ "fnu"] + *Param[ "fnd"] + *Param[ "fns"]); 228 logger() << " gps = " << result.gps << std::endl; 229 logger() << " gns = " << result.gns << std::endl; 230 logger() << " gp_q2 = " << result.gp_q2 << std::endl; 231 logger() << " gn_q2 = " << result.gn_q2 << EOM; 255 #define getSMmass(Name, spinX2) \ 256 catalog.particleProperties.insert(std::pair<string, TH_ParticleProperty> \ 257 (Name , TH_ParticleProperty(SM.get(Par::Pole_Mass,Name), spinX2))); 258 #define addParticle(Name, Mass, spinX2) \ 259 catalog.particleProperties.insert(std::pair<string, TH_ParticleProperty> \ 260 (Name , TH_ParticleProperty(Mass, spinX2))); 263 const Spectrum& spec = *Dep::DiracSingletDM_Z2_spectrum; 271 double alpha_s = SMI. alphaS; 339 std::set<string> importedDecays; 342 double minBranching = 0; 349 ImportDecays( "h0_1", catalog, importedDecays, tbl, minBranching, 350 daFunk::vec<std::string>( "Z0", "W+", "W-", "e+_2", "e-_2", "e+_3", "e-_3")); 353 auto diracDM = boost::make_shared<DiracSingletDM>(&catalog, gammaH, v, alpha_s); 361 daFunk::vec<string>( "bb", "WW", "cc", "tautau", "ZZ", "tt", "hh"); 363 daFunk::vec<string>( "d_3", "W+", "u_2", "e+_3", "Z0", "u_3", "h0_1"); 365 daFunk::vec<string>( "dbar_3", "W-", "ubar_2", "e-_3", "Z0", "ubar_3", "h0_1"); 367 for ( unsigned int i = 0; i < channel.size(); i++ ) 370 catalog.getParticleProperty(p1[i]).mass + 371 catalog.getParticleProperty(p2[i]).mass; 373 if ( mF*2 > mtot_final*0.5 ) 376 &DiracSingletDM::sv, channel[i], lambda, mF, cosXi, daFunk::var( "v")); 378 daFunk::vec<string>(p1[i], p2[i]), kinematicFunction 382 if ( mF*2 > mtot_final ) 385 push_back(mtot_final); 395 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
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.
#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 >())
void TH_ProcessCatalog_DiracSingletDM_Z2(DarkBit::TH_ProcessCatalog &result) Set up process catalog for the DiracSingletDM_Z2 model.
Funk funcM(O *obj, double(O::*f)(funcargs...), Args... args)
Simple reader for ASCII tables.
std::vector< double > threshold_energy
void DarkMatter_ID_DiracSingletDM(std::string &result)
void DarkMatterConj_ID_DiracSingletDM(std::string &result)
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) ...
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 DD_couplings_DiracSingletDM_Z2(DM_nucleon_couplings_fermionic_HP &result) Direct detection couplings for the DiracSingletDM_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)
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.
#define getSMmass(Name, spinX2)
shared_ptr< FunkBase > Funk
TODO: see if we can use this one:
"Standard Model" (low-energy) plus high-energy model container class
SMInputs & get_SMInputs()
Utility functions for DarkBit.
|