gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-252-gf9a3f78
a Global And Modular Bsm Inference Tool
Gambit::DecayBit Namespace Reference

Namespaces

 MSSM_H
 
 MSSM_Z
 
 SM_Z
 

Functions

DecayTable::Entry CP_conjugate (const DecayTable::Entry &)
 Construct a decay table entry for a particle from the entry for its antiparticle. More...
 
void SM_Higgs_decays (DecayTable::Entry &result)
 SM decays: Higgs. More...
 
void FH_t_decays (DecayTable::Entry &result)
 FeynHiggs MSSM decays: t Reference for total width: 2017 PDG. More...
 
void FH_MSSM_h0_1_decays (DecayTable::Entry &result)
 FeynHiggs MSSM decays: h0_1. More...
 
void FH_h0_2_decays (DecayTable::Entry &result)
 FeynHiggs MSSM decays: h0_2. More...
 
void FH_A0_decays (DecayTable::Entry &result)
 FeynHiggs MSSM decays: A0. More...
 
void FH_H_plus_decays (DecayTable::Entry &result)
 FeynHiggs MSSM decays: H+. More...
 
void MSSM_h0_1_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: h0_1. More...
 
void h0_2_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: h0_2. More...
 
void A0_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: A0. More...
 
void H_plus_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: H_plus. More...
 
void gluino_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: gluino. More...
 
void stop_1_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: stop_1. More...
 
void stop_2_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: stop_2. More...
 
void sbottom_1_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: sbottom_1. More...
 
void sbottom_2_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: sbottom_2. More...
 
void sup_l_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: sup_l. More...
 
void sup_r_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: sup_r. More...
 
void sdown_l_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: sdown_l. More...
 
void sdown_r_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: sdown_r. More...
 
void scharm_l_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: scharm_l. More...
 
void scharm_r_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: scharm_r. More...
 
void sstrange_l_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: sstrange_l. More...
 
void sstrange_r_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: sstrange_r. More...
 
void selectron_l_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: selectron_l. More...
 
void selectron_r_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: selectron_r. More...
 
void smuon_l_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: smuon_l. More...
 
void smuon_r_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: smuon_r. More...
 
void stau_1_decays (DecayTable::Entry &result)
 MSSM decays: stau_1 (Uses SUSY-HIT results or dedicated DecayBit calculation for small mass splittings) More...
 
void stau_1_decays_SH (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: stau_1. More...
 
void stau_2_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: stau_2. More...
 
void snu_electronl_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: snu_electronl. More...
 
void snu_muonl_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: snu_muonl. More...
 
void snu_taul_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: snu_taul Note that SUSY-HIT calls ~nu_tau_L "snutau1" even though it has no RH (~)nus. More...
 
void chargino_plus_1_decays (DecayTable::Entry &result)
 MSSM decays: chargino_plus_1 (Uses SUSY-HIT results or dedicated DecayBit calculation for small mass splittings) More...
 
void chargino_plus_1_decays_SH (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: chargino_plus_1. More...
 
void chargino_plus_2_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: chargino_plus_2. More...
 
void neutralino_1_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: neutralino_1. More...
 
void neutralino_2_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: neutralino_2. More...
 
void neutralino_3_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: neutralino_3. More...
 
void neutralino_4_decays (DecayTable::Entry &result)
 SUSY-HIT MSSM decays: neutralino_4. More...
 
void chargino_plus_1_decays_smallsplit (DecayTable::Entry &result)
 MSSM decays: chargino decays for small chargino–neutralino mass splitting. More...
 
void stau_1_decays_smallsplit (DecayTable::Entry &result)
 MSSM decays: stau decays for small stau–neutralino mass splitting. More...
 
void ScalarSingletDM_Higgs_decays (DecayTable::Entry &result)
 Add the decay of Higgs to singlets for the ScalarSingletDM models. More...
 
void VectorSingletDM_Higgs_decays (DecayTable::Entry &result)
 Add the decay of Higgs to vectors for the VectorSingletDM models (see arXiv:1512.06458v4) More...
 
void MajoranaSingletDM_Higgs_decays (DecayTable::Entry &result)
 Add the decay of Higgs to Majorana fermions for the MajoranaSingletDM models (see arXiv:1512.06458v4) More...
 
void DiracSingletDM_Higgs_decays (DecayTable::Entry &result)
 Add the decay of Higgs to Dirac fermions for the DiracSingletDM models (see arXiv:1512.06458v4) More...
 
void all_decays (DecayTable &decays)
 Collect all the DecayTable entries into an actual DecayTable. More...
 
void all_decays_from_SLHA (DecayTable &decays)
 Read an SLHA2 file in and use it to create a GAMBIT DecayTable. More...
 
void get_mass_es_pseudonyms (mass_es_pseudonyms &result)
 Get MSSM mass eigenstate pseudonyms for the gauge eigenstates. More...
 
void check_first_sec_gen_mixing (int &result)
 SLHA1 mixing check flag This gets set non-zero if first or second generation left-right mixing exceeds the specified tolerance (which means that SLHA1 is an invalid format for this model point). More...
 
daFunk::Funk get_Higgs_invWidth_chi2 (std::string filename)
 
void MSSM_inv_Higgs_BF (double &BF)
 
void ScalarSingletDM_inv_Higgs_BF (double &BF)
 
void VectorSingletDM_inv_Higgs_BF (double &BF)
 
void MajoranaSingletDM_inv_Higgs_BF (double &BF)
 
void DiracSingletDM_inv_Higgs_BF (double &BF)
 
void lnL_Higgs_invWidth_SMlike (double &lnL)
 
void lnL_Z_inv (double &lnL)
 
void Z_gamma_nu_2l (triplet< double > &gamma)
 
void Z_gamma_chi_0_MSSM_tree (triplet< double > &gamma)
 
void RHN_W_to_l_decays (std::vector< double > &result)
 
void lnL_W_decays_chi2 (double &result)
 
Helper functions for DecayBit
double sqrt_lambda (double a, double b, double c)
 Square root of the standard kinematic function lambda(a,b,c) More...
 
std::complex< doubleBW (double q2, double m2, double imag_term)
 Breit-Wigner pole (complex) More...
 
void check_width (const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
 Check if a width is negative or suspiciously large and raise an error. More...
 
void compute_SM_higgs_decays (DecayTable::Entry &result, double mh)
 Populate SM Higgs decay channels for a higgs mass of m_h. More...
 
void set_FH_neutral_h_decay (DecayTable::Entry &result, int iH, const fh_Couplings &FH_input, const mass_es_pseudonyms &psn, bool invalidate, bool SM)
 Set neutral h decays computed by FeynHiggs. More...
 
DecayBit module functions
void W_plus_decays (DecayTable::Entry &result)
 SM decays: W+ Reference: 2017 PDG. More...
 
void Z_decays (DecayTable::Entry &result)
 SM decays: Z Reference: 2017 PDG. More...
 
void t_decays (DecayTable::Entry &result)
 SM decays: t Reference: 2017 PDG. More...
 
void mu_plus_decays (DecayTable::Entry &result)
 SM decays: mu+ Reference: 2017 PDG. More...
 
void tau_plus_decays (DecayTable::Entry &result)
 SM decays: tau+ Reference: 2017 PDG. More...
 
void pi_0_decays (DecayTable::Entry &result)
 SM decays: pi0 Reference: 2017 PDG. More...
 
void pi_plus_decays (DecayTable::Entry &result)
 SM decays: pi+ Reference: 2017 PDG. More...
 
void eta_decays (DecayTable::Entry &result)
 SM decays: eta Reference: 2017 PDG. More...
 
void rho_0_decays (DecayTable::Entry &result)
 SM decays: rho0 Reference: 2017 PDG. More...
 
void rho_plus_decays (DecayTable::Entry &result)
 SM decays: rho+ Reference: 2017 PDG. More...
 
void omega_decays (DecayTable::Entry &result)
 SM decays: omega Reference: 2017 PDG. More...
 
void rho1450_decays (DecayTable::Entry &result)
 SM decays: rho1450 Reference: 2017 PDG. More...
 
void W_minus_decays (DecayTable::Entry &result)
 SM decays: conjugates. More...
 
void tbar_decays (DecayTable::Entry &result)
 
void mu_minus_decays (DecayTable::Entry &result)
 
void tau_minus_decays (DecayTable::Entry &result)
 
void pi_minus_decays (DecayTable::Entry &result)
 
void rho_minus_decays (DecayTable::Entry &result)
 
void Ref_SM_Higgs_decays_table (DecayTable::Entry &result)
 Reference SM Higgs decays. More...
 
void Ref_SM_other_Higgs_decays_table (DecayTable::Entry &result)
 Reference SM Higgs decays from LHCHiggsXSWG: least SM-like Higgs. More...
 
void Ref_SM_A0_decays_table (DecayTable::Entry &result)
 Reference SM Higgs decays from LHCHiggsXSWG: A0. More...
 
void Ref_SM_Higgs_decays_FH (DecayTable::Entry &result)
 Reference SM Higgs decays from FeynHiggs: h0_1. More...
 
void Ref_SM_other_Higgs_decays_FH (DecayTable::Entry &result)
 Reference SM Higgs decays from FeynHiggs: h0_2. More...
 
void Ref_SM_A0_decays_FH (DecayTable::Entry &result)
 Reference SM Higgs decays from FeynHiggs: A0. More...
 
void H_minus_decays (DecayTable::Entry &result)
 MSSM decays: conjugates. More...
 
void stopbar_1_decays (DecayTable::Entry &result)
 
void stopbar_2_decays (DecayTable::Entry &result)
 
void sbottombar_1_decays (DecayTable::Entry &result)
 
void sbottombar_2_decays (DecayTable::Entry &result)
 
void supbar_l_decays (DecayTable::Entry &result)
 
void supbar_r_decays (DecayTable::Entry &result)
 
void sdownbar_l_decays (DecayTable::Entry &result)
 
void sdownbar_r_decays (DecayTable::Entry &result)
 
void scharmbar_l_decays (DecayTable::Entry &result)
 
void scharmbar_r_decays (DecayTable::Entry &result)
 
void sstrangebar_l_decays (DecayTable::Entry &result)
 
void sstrangebar_r_decays (DecayTable::Entry &result)
 
void selectronbar_l_decays (DecayTable::Entry &result)
 
void selectronbar_r_decays (DecayTable::Entry &result)
 
void smuonbar_l_decays (DecayTable::Entry &result)
 
void smuonbar_r_decays (DecayTable::Entry &result)
 
void staubar_1_decays (DecayTable::Entry &result)
 
void staubar_2_decays (DecayTable::Entry &result)
 
void snubar_electronl_decays (DecayTable::Entry &result)
 
void snubar_muonl_decays (DecayTable::Entry &result)
 
void snubar_taul_decays (DecayTable::Entry &result)
 
void chargino_minus_1_decays (DecayTable::Entry &result)
 
void chargino_minus_2_decays (DecayTable::Entry &result)
 

Function Documentation

◆ A0_decays()

void Gambit::DecayBit::A0_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: A0.

Definition at line 802 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

803  {
804  using namespace Pipes::A0_decays;
805  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
806 
807  result.calculator = BEreq::cb_widtha_hdec.origin();
808  result.calculator_version = BEreq::cb_widtha_hdec.version();
809 
810  result.width_in_GeV = BEreq::cb_widtha_hdec->awdth;
811  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widtha_hdec->abrb : 0.0), 0.0, "b", "bbar");
812  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widtha_hdec->abrl : 0.0), 0.0, "tau+", "tau-");
813  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widtha_hdec->abrm : 0.0), 0.0, "mu+", "mu-");
814  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widtha_hdec->abrs : 0.0), 0.0, "s", "sbar");
815  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widtha_hdec->abrc : 0.0), 0.0, "c", "cbar");
816  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widtha_hdec->abrt : 0.0), 0.0, "t", "tbar");
817  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widtha_hdec->abrg : 0.0), 0.0, "g", "g");
818  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widtha_hdec->abrga : 0.0), 0.0, "gamma", "gamma");
819  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widtha_hdec->abrzga : 0.0), 0.0, "Z0", "gamma");
820  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widtha_hdec->abrz : 0.0), 0.0, "Z0", "h0_1");
821  result.set_BF(0.0, 0.0, "Z0", "Z0");
822  result.set_BF(0.0, 0.0, "W+", "W-");
823  result.set_BF(0.0, 0.0, "h0_1", "h0_1");
824  result.set_BF(0.0, 0.0, "h0_2", "h0_2");
825  result.set_BF(0.0, 0.0, "~nu_1", "~nubar_1");
826  result.set_BF(0.0, 0.0, "~nu_2", "~nubar_2");
827  result.set_BF(0.0, 0.0, "~nu_3", "~nubar_3");
828  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsc(1,1) : 0.0), 0.0, "~chi+_1", "~chi-_1");
829  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsc(2,2) : 0.0), 0.0, "~chi+_2", "~chi-_2");
830  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsc(1,2) : 0.0), 0.0, "~chi+_1", "~chi-_2");
831  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsc(2,1) : 0.0), 0.0, "~chi+_2", "~chi-_1");
832  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsn(1,1) : 0.0), 0.0, "~chi0_1", "~chi0_1");
833  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsn(2,2) : 0.0), 0.0, "~chi0_2", "~chi0_2");
834  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsn(3,3) : 0.0), 0.0, "~chi0_3", "~chi0_3");
835  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsn(4,4) : 0.0), 0.0, "~chi0_4", "~chi0_4");
836  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsn(1,2)*2.0 : 0.0), 0.0, "~chi0_1", "~chi0_2");
837  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsn(1,3)*2.0 : 0.0), 0.0, "~chi0_1", "~chi0_3");
838  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsn(1,4)*2.0 : 0.0), 0.0, "~chi0_1", "~chi0_4");
839  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsn(2,3)*2.0 : 0.0), 0.0, "~chi0_2", "~chi0_3");
840  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsn(2,4)*2.0 : 0.0), 0.0, "~chi0_2", "~chi0_4");
841  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsn(3,4)*2.0 : 0.0), 0.0, "~chi0_3", "~chi0_4");
842  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrst/2.0 : 0.0), 0.0, psn.ist1, psn.ist2bar);
843  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrst/2.0 : 0.0), 0.0, psn.ist1bar, psn.ist2);
844  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsb/2.0 : 0.0), 0.0, psn.isb1, psn.isb2bar);
845  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsb/2.0 : 0.0), 0.0, psn.isb1bar, psn.isb2);
846  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsl/2.0 : 0.0), 0.0, psn.istau1, psn.istau2bar);
847  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->habrsl/2.0 : 0.0), 0.0, psn.istau1bar, psn.istau2);
848 
849  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
850  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void A0_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: A0.
Definition: DecayBit.cpp:802
Here is the call graph for this function:

◆ all_decays()

void Gambit::DecayBit::all_decays ( DecayTable decays)

Collect all the DecayTable entries into an actual DecayTable.

Spit out the full decay table as SLHA1 and SLHA2 files.

Invalidate MSSM points that have a stable charged particle?

Check all particles for negative decay width

Spit out the full decay table as an SLHA file.

Definition at line 2998 of file DecayBit.cpp.

References Gambit::Par::dimensionless, Gambit::invalid_point(), LOCAL_INFO, MSSM_spectrum, Gambit::DecayTable::particles, Gambit::invalid_point_exception::raise(), selectron_l_decay_rates, selectron_r_decay_rates, smuon_l_decay_rates, smuon_r_decay_rates, stau_1_decay_rates, stau_2_decay_rates, W_plus_decay_rates, Gambit::DecayTable::writeSLHAfile(), and Z_decay_rates.

Referenced by main().

2999  {
3000  using namespace Pipes::all_decays;
3001 
3002  decays("h0_1") = *Dep::Higgs_decay_rates; // Add the Higgs decays.
3003  decays("Z0") = *Dep::Z_decay_rates; // Add the Z decays
3004  decays("W+") = *Dep::W_plus_decay_rates; // Add the W decays for W+.
3005  decays("W-") = *Dep::W_minus_decay_rates; // Add the W decays for W-
3006 
3007  decays("t") = *Dep::t_decay_rates; // Add the top decays for t.
3008  decays("tbar") = *Dep::tbar_decay_rates; // Add the top decays for tbar
3009  decays("u_3") = decays("t"); // Duplicate for mass-ordered quarks
3010  decays("ubar_3") = decays("tbar"); // Duplicate for mass-ordered quarks
3011 
3012  decays("mu+") = *Dep::mu_plus_decay_rates; // Add the muon decays for mu+.
3013  decays("mu-") = *Dep::mu_minus_decay_rates; // Add the muon decays for mu-
3014  decays("e+_2") = decays("mu+"); // Duplicate for mass-ordered leptons
3015  decays("e-_2") = decays("mu-"); // Duplicate for mass-ordered leptons
3016 
3017  decays("tau+") = *Dep::tau_plus_decay_rates; // Add the tauon decays for tau+.
3018  decays("tau-") = *Dep::tau_minus_decay_rates; // Add the tauon decays for tau-.
3019  decays("e+_3") = decays("tau+"); // Duplicate for mass-ordered leptons
3020  decays("e-_3") = decays("tau-"); // Duplicate for mass-ordered leptons
3021 
3022  decays("pi0") = *Dep::pi_0_decay_rates; // Add the neutral pion decays.
3023  decays("pi+") = *Dep::pi_plus_decay_rates; // Add the pi+ decays.
3024  decays("pi-") = *Dep::pi_minus_decay_rates; // Add the pi- decays.
3025  decays("eta") = *Dep::eta_decay_rates; // Add the eta meson decays.
3026  decays("rho0") = *Dep::rho_0_decay_rates; // Add the neutral rho meson decays.
3027  decays("rho+") = *Dep::rho_plus_decay_rates; // Add the rho+ decays.
3028  decays("rho-") = *Dep::rho_minus_decay_rates; // Add the rho- decays.
3029  decays("omega") = *Dep::omega_decay_rates; // Add the omega meson decays.
3030 
3031  // MSSM-specific
3032  if (ModelInUse("MSSM63atQ") or ModelInUse("MSSM63atMGUT"))
3033  {
3034 
3035  static bool allow_stable_charged_particles = runOptions->getValueOrDef<bool>(false, "allow_stable_charged_particles");
3036 
3037  // Make sure that if the user has elected to take Higgs decays from FeynHiggs that
3038  // they have elected to take the Higgs mass from FeynHiggs alone.
3039  if (Dep::Higgs_decay_rates->calculator == "FeynHiggs" or
3040  Dep::h0_2_decay_rates->calculator == "FeynHiggs" or
3041  Dep::A0_decay_rates->calculator == "FeynHiggs" or
3042  Dep::H_plus_decay_rates->calculator == "FeynHiggs" or
3043  Dep::t_decay_rates->calculator == "FeynHiggs")
3044  {
3045  if (not Dep::MSSM_spectrum->get_HE().has(Par::dimensionless, "h mass from: SpecBit::FH_HiggsMass, SpecBit::FH_HeavyHiggsMasses"))
3046  DecayBit_error().raise(LOCAL_INFO, "You must use Higgs masses from FeynHiggs if you choose to use FeynHiggs "
3047  "to calculate h or t decays.\nPlease modify your yaml file accordingly.");
3048  }
3049 
3050  mass_es_pseudonyms psn = *Dep::SLHA_pseudonyms;
3051 
3052  decays("h0_2") = *Dep::h0_2_decay_rates; // Add the h0_2 decays.
3053  decays("A0") = *Dep::A0_decay_rates; // Add the A0 decays.
3054  decays("H+") = *Dep::H_plus_decay_rates; // Add the H+ decays.
3055  decays("H-") = *Dep::H_minus_decay_rates; // Add the H- decays.
3056 
3057  decays("~g") = *Dep::gluino_decay_rates; // Add the gluino decays.
3058 
3059  decays("~chi+_1") = *Dep::chargino_plus_1_decay_rates; // Add the ~chi+_1 decays.
3060  decays("~chi-_1") = *Dep::chargino_minus_1_decay_rates; // Add the ~chi+_1 decays.
3061  decays("~chi+_2") = *Dep::chargino_plus_2_decay_rates; // Add the ~chi+_2 decays.
3062  decays("~chi-_2") = *Dep::chargino_minus_2_decay_rates; // Add the ~chi+_2 decays.
3063  decays("~chi0_1") = *Dep::neutralino_1_decay_rates; // Add the ~chi0_1 decays.
3064  decays("~chi0_2") = *Dep::neutralino_2_decay_rates; // Add the ~chi0_2 decays.
3065  decays("~chi0_3") = *Dep::neutralino_3_decay_rates; // Add the ~chi0_3 decays.
3066  decays("~chi0_4") = *Dep::neutralino_4_decay_rates; // Add the ~chi0_4 decays.
3067 
3068  decays(psn.ist1) = *Dep::stop_1_decay_rates; // Add the ~t_1 decays.
3069  decays(psn.ist2) = *Dep::stop_2_decay_rates; // Add the ~t_2 decays.
3070  decays(psn.isb1) = *Dep::sbottom_1_decay_rates; // Add the ~b_1 decays.
3071  decays(psn.isb2) = *Dep::sbottom_2_decay_rates; // Add the ~b_2 decays.
3072  decays(psn.isul) = *Dep::sup_l_decay_rates; // Add the ~u_L decays.
3073  decays(psn.isur) = *Dep::sup_r_decay_rates; // Add the ~u_R decays.
3074  decays(psn.isdl) = *Dep::sdown_l_decay_rates; // Add the ~d_L decays.
3075  decays(psn.isdr) = *Dep::sdown_r_decay_rates; // Add the ~d_R decays.
3076  decays(psn.iscl) = *Dep::scharm_l_decay_rates; // Add the ~c_L decays.
3077  decays(psn.iscr) = *Dep::scharm_r_decay_rates; // Add the ~c_R decays.
3078  decays(psn.issl) = *Dep::sstrange_l_decay_rates; // Add the ~s_L decays.
3079  decays(psn.issr) = *Dep::sstrange_r_decay_rates; // Add the ~s_R decays.
3080  decays(psn.isell) = *Dep::selectron_l_decay_rates; // Add the ~e-_L decays.
3081  decays(psn.iselr) = *Dep::selectron_r_decay_rates; // Add the ~e-_R decays.
3082  decays(psn.ismul) = *Dep::smuon_l_decay_rates; // Add the ~mu-_L decays.
3083  decays(psn.ismur) = *Dep::smuon_r_decay_rates; // Add the ~mu-_R decays.
3084  decays(psn.istau1) = *Dep::stau_1_decay_rates; // Add the ~tau_1 decays.
3085  decays(psn.istau2) = *Dep::stau_2_decay_rates; // Add the ~tau_2 decays.
3086  decays(psn.isnel) = *Dep::snu_electronl_decay_rates; // Add the ~nu_e decays.
3087  decays(psn.isnmul) = *Dep::snu_muonl_decay_rates; // Add the ~nu_mu decays.
3088  decays(psn.isntaul) = *Dep::snu_taul_decay_rates; // Add the ~nu_tau decays.
3089 
3090  decays(psn.ist1bar) = *Dep::stopbar_1_decay_rates; // Add the ~tbar_1 decays.
3091  decays(psn.ist2bar) = *Dep::stopbar_2_decay_rates; // Add the ~tbar_2 decays.
3092  decays(psn.isb1bar) = *Dep::sbottombar_1_decay_rates; // Add the ~bbar_1 decays.
3093  decays(psn.isb2bar) = *Dep::sbottombar_2_decay_rates; // Add the ~bbar_2 decays.
3094  decays(psn.isulbar) = *Dep::supbar_l_decay_rates; // Add the ~ubar_L decays.
3095  decays(psn.isurbar) = *Dep::supbar_r_decay_rates; // Add the ~ubar_R decays.
3096  decays(psn.isdlbar) = *Dep::sdownbar_l_decay_rates; // Add the ~dbar_L decays.
3097  decays(psn.isdrbar) = *Dep::sdownbar_r_decay_rates; // Add the ~dbar_R decays.
3098  decays(psn.isclbar) = *Dep::scharmbar_l_decay_rates; // Add the ~cbar_L decays.
3099  decays(psn.iscrbar) = *Dep::scharmbar_r_decay_rates; // Add the ~cbar_R decays.
3100  decays(psn.isslbar) = *Dep::sstrangebar_l_decay_rates; // Add the ~sbar_L decays.
3101  decays(psn.issrbar) = *Dep::sstrangebar_r_decay_rates; // Add the ~sbar_R decays.
3102  decays(psn.isellbar) = *Dep::selectronbar_l_decay_rates; // Add the ~e+_L decays.
3103  decays(psn.iselrbar) = *Dep::selectronbar_r_decay_rates; // Add the ~e+_R decays.
3104  decays(psn.ismulbar) = *Dep::smuonbar_l_decay_rates; // Add the ~mu+_L decays.
3105  decays(psn.ismurbar) = *Dep::smuonbar_r_decay_rates; // Add the ~mu+_R decays.
3106  decays(psn.istau1bar) = *Dep::staubar_1_decay_rates; // Add the ~taubar_1 decays.
3107  decays(psn.istau2bar) = *Dep::staubar_2_decay_rates; // Add the ~taubar_2 decays.
3108  decays(psn.isnelbar)= *Dep::snubar_electronl_decay_rates;// Add the ~nu_e decays.
3109  decays(psn.isnmulbar) = *Dep::snubar_muonl_decay_rates; // Add the ~nu_mu decays.
3110  decays(psn.isntaulbar) = *Dep::snubar_taul_decay_rates; // Add the ~nu_tau decays.
3111 
3113  if (runOptions->getValueOrDef<bool>(false, "drop_SLHA_file"))
3114  {
3115  // Spit out the full decay table in SLHA1 and SLHA2 formats.
3116  str prefix = runOptions->getValueOrDef<str>("", "SLHA_output_prefix");
3117  str filename = runOptions->getValueOrDef<str>("GAMBIT_decays", "SLHA_output_filename");
3118  decays.writeSLHAfile(1,prefix+filename+".slha1",false,psn);
3119  decays.writeSLHAfile(2,prefix+filename+".slha2",false,psn);
3120  }
3121 
3123  if (not allow_stable_charged_particles)
3124  {
3125  static const double lifetime_universe = 4.35e17; // [seconds]
3126 
3127  // Create vector with names of all charged partices
3128  static const std::vector<str> charged_particle_names = {
3129  "H+", "~chi+_1", "~chi+_2",
3130  psn.ist1, psn.ist2,
3131  psn.isb1, psn.isb2,
3132  psn.isul, psn.isur,
3133  psn.isdl, psn.isdr,
3134  psn.iscl, psn.iscr,
3135  psn.issl, psn.issr,
3136  psn.isell, psn.iselr,
3137  psn.ismul, psn.ismur,
3138  psn.istau1, psn.istau2
3139  };
3140 
3141  // Check lifetime for each charged particle
3142  for (auto& particle_name : charged_particle_names)
3143  {
3144  double width = decays(particle_name).width_in_GeV;
3145  if (width <= 0 || hbar/width > lifetime_universe)
3146  {
3147  std::stringstream msg;
3148  msg << "Charged particle " << particle_name << " is stable. Decay width = " << width << " GeV.";
3149  invalid_point().raise(msg.str());
3150  }
3151  }
3152  }
3153 
3155  for (auto& map_entry : decays.particles)
3156  {
3157  double width = map_entry.second.width_in_GeV;
3158  if (width < 0)
3159  {
3160  std::stringstream msg;
3161  msg << "Particle " << map_entry.first.first << " has a negative width = " << width << " GeV.";
3162  invalid_point().raise(msg.str());
3163  }
3164  }
3165 
3166  }
3167 
3168  else
3169 
3170  {
3172  if (runOptions->getValueOrDef<bool>(false, "drop_SLHA_file"))
3173  {
3174  // Spit out the full decay table in SLHA1 and SLHA2 formats.
3175  str filename = runOptions->getValueOrDef<str>("GAMBIT_decays", "SLHA_output_filename");
3176  decays.writeSLHAfile(2,filename+".slha",false);
3177  }
3178 
3179  }
3180 
3181  }
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry stau_2_decay_rates
#define LOCAL_INFO
Definition: local_info.hpp:34
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry selectron_r_decay_rates
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry selectron_l_decay_rates
void all_decays(DecayTable &decays)
Collect all the DecayTable entries into an actual DecayTable.
Definition: DecayBit.cpp:2998
Spectrum W_plus_decay_rates
virtual void raise(const std::string &)
Raise the exception, i.e. throw it.
Definition: exceptions.cpp:422
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry stau_1_decay_rates
std::string str
Shorthand for a standard string.
Definition: Analysis.hpp:35
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry smuon_l_decay_rates
invalid_point_exception & invalid_point()
Invalid point exceptions.
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry smuon_r_decay_rates
Here is the call graph for this function:
Here is the caller graph for this function:

◆ all_decays_from_SLHA()

void Gambit::DecayBit::all_decays_from_SLHA ( DecayTable decays)

Read an SLHA2 file in and use it to create a GAMBIT DecayTable.

Note that creating a DecayTable from an SLHA1 file is not possible at present.

Definition at line 3185 of file DecayBit.cpp.

References Gambit::backend_error(), Gambit::EOM, LOCAL_INFO, and Gambit::logger().

3186  {
3187  using namespace Pipes::all_decays_from_SLHA;
3188  if (not runOptions->hasKey("SLHA_decay_filenames"))
3189  {
3190  DecayBit_error().raise(LOCAL_INFO, "Option \"SLHA_decay_filenames\" is required to use this function.");
3191  }
3192  static unsigned int counter = 0;
3193  std::vector<str> filenames = runOptions->getValue<std::vector<str> >("SLHA_decay_filenames");
3194  logger() << "Reading SLHA file: " << filenames[counter] << EOM;
3195  std::ifstream ifs(filenames[counter]);
3196  if(!ifs.good()) backend_error().raise(LOCAL_INFO, "SLHA file not found.");
3197  SLHAstruct slha(ifs);
3198  ifs.close();
3199  counter++;
3200  if (counter >= filenames.size()) counter = 0;
3201  decays = DecayTable(slha);
3202  }
void all_decays_from_SLHA(DecayTable &decays)
Read an SLHA2 file in and use it to create a GAMBIT DecayTable.
Definition: DecayBit.cpp:3185
#define LOCAL_INFO
Definition: local_info.hpp:34
error & backend_error()
Backend errors.
SLHAea::Coll SLHAstruct
Less confusing name for SLHAea container class.
const Logging::endofmessage EOM
Explicit const instance of the end of message struct in Gambit namespace.
Definition: logger.hpp:99
Logging::LogMaster & logger()
Function to retrieve a reference to the Gambit global log object.
Definition: logger.cpp:95
Here is the call graph for this function:

◆ BW()

std::complex<double> Gambit::DecayBit::BW ( double  q2,
double  m2,
double  imag_term 
)

Breit-Wigner pole (complex)

Definition at line 84 of file DecayBit.cpp.

Referenced by chargino_plus_1_decays_smallsplit().

85  {
86  static const std::complex<double> i(0.0,1.0);
87  return m2 / (m2 - q2 -i*imag_term);
88  }
Here is the caller graph for this function:

◆ chargino_minus_1_decays()

void Gambit::DecayBit::chargino_minus_1_decays ( DecayTable::Entry result)

Definition at line 2809 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2809 { result = CP_conjugate(*Pipes::chargino_minus_1_decays::Dep::chargino_plus_1_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ chargino_minus_2_decays()

void Gambit::DecayBit::chargino_minus_2_decays ( DecayTable::Entry result)

Definition at line 2810 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2810 { result = CP_conjugate(*Pipes::chargino_minus_2_decays::Dep::chargino_plus_2_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ chargino_plus_1_decays()

void Gambit::DecayBit::chargino_plus_1_decays ( DecayTable::Entry result)

MSSM decays: chargino_plus_1 (Uses SUSY-HIT results or dedicated DecayBit calculation for small mass splittings)

Definition at line 1548 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::channels, check_width(), LOCAL_INFO, and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1549  {
1550  using namespace Pipes::chargino_plus_1_decays;
1551 
1552  // Collect results from the decay calculation for small chargino--neutralino mass splitting.
1553  // If this result is non-empty it should be used.
1554  DecayTable::Entry smallsplit_decays = *Dep::chargino_plus_1_decay_rates_smallsplit;
1555  if (smallsplit_decays.channels.size() > 0)
1556  result = smallsplit_decays;
1557  // Else, use the SUSY-HIT results
1558  else
1559  result = *Dep::chargino_plus_1_decay_rates_SH;
1560 
1561  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1562  }
void chargino_plus_1_decays(DecayTable::Entry &result)
MSSM decays: chargino_plus_1 (Uses SUSY-HIT results or dedicated DecayBit calculation for small mass ...
Definition: DecayBit.cpp:1548
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
Here is the call graph for this function:
Here is the caller graph for this function:

◆ chargino_plus_1_decays_SH()

void Gambit::DecayBit::chargino_plus_1_decays_SH ( DecayTable::Entry result)

SUSY-HIT MSSM decays: chargino_plus_1.

Definition at line 1565 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1566  {
1567  using namespace Pipes::chargino_plus_1_decays_SH;
1568  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1569 
1570  result.calculator = BEreq::cb_sd_charwidth.origin();
1571  result.calculator_version = BEreq::cb_sd_charwidth.version();
1572 
1573  result.width_in_GeV = BEreq::cb_sd_charwidth->chartot(1);
1574  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupl(1) : 0.0), 0.0, psn.isul, "dbar");
1575  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupr(1) : 0.0), 0.0, psn.isur, "dbar");
1576  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownl(1) : 0.0), 0.0, psn.isdlbar, "u");
1577  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownr(1) : 0.0), 0.0, psn.isdrbar, "u");
1578  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupl(1) : 0.0), 0.0, psn.iscl, "sbar");
1579  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupr(1) : 0.0), 0.0, psn.iscr, "sbar");
1580  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownl(1) : 0.0), 0.0, psn.isslbar, "c");
1581  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownr(1) : 0.0), 0.0, psn.issrbar, "c");
1582  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharst1(1) : 0.0), 0.0, psn.ist1, "bbar");
1583  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharst2(1) : 0.0), 0.0, psn.ist2, "bbar");
1584  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsb1(1) : 0.0), 0.0, psn.isb1bar, "t");
1585  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsb2(1) : 0.0), 0.0, psn.isb2bar, "t");
1586  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsnel(1) : 0.0), 0.0, psn.isnel, "e+");
1587  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsnel(1) : 0.0), 0.0, psn.isnmul, "mu+");
1588  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsn1(1) : 0.0), 0.0, psn.isntaul, "tau+");
1589  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsell(1) : 0.0), 0.0, psn.isellbar, "nu_e");
1590  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharselr(1) : 0.0), 0.0, psn.iselrbar, "nu_e");
1591  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsell(1) : 0.0), 0.0, psn.ismulbar, "nu_mu");
1592  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharselr(1) : 0.0), 0.0, psn.ismurbar, "nu_mu");
1593  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharstau1(1) : 0.0), 0.0, psn.istau1bar, "nu_tau");
1594  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharstau2(1) : 0.0), 0.0, psn.istau2bar, "nu_tau");
1595  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(1,1) : 0.0), 0.0, "~chi0_1", "W+");
1596  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(1,2) : 0.0), 0.0, "~chi0_2", "W+");
1597  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(1,3) : 0.0), 0.0, "~chi0_3", "W+");
1598  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(1,4) : 0.0), 0.0, "~chi0_4", "W+");
1599  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(1,1) : 0.0), 0.0, "~chi0_1", "H+");
1600  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(1,2) : 0.0), 0.0, "~chi0_2", "H+");
1601  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(1,3) : 0.0), 0.0, "~chi0_3", "H+");
1602  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(1,4) : 0.0), 0.0, "~chi0_4", "H+");
1603  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharwgravitino(1) : 0.0), 0.0, "~G", "W+");
1604  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharhcgravitino(1) : 0.0), 0.0, "~G", "H+");
1605  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharwgravitino(1) : 0.0), 0.0, "~G", "W+");
1606  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharhcgravitino(1) : 0.0), 0.0, "~G", "H+");
1607  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,1) : 0.0), 0.0, "~chi0_1", "u", "dbar");
1608  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,2) : 0.0), 0.0, "~chi0_2", "u", "dbar");
1609  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,3) : 0.0), 0.0, "~chi0_3", "u", "dbar");
1610  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,4) : 0.0), 0.0, "~chi0_4", "u", "dbar");
1611  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,1) : 0.0), 0.0, "~chi0_1", "c", "sbar");
1612  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,2) : 0.0), 0.0, "~chi0_2", "c", "sbar");
1613  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,3) : 0.0), 0.0, "~chi0_3", "c", "sbar");
1614  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,4) : 0.0), 0.0, "~chi0_4", "c", "sbar");
1615  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(1,1) : 0.0), 0.0, "~chi0_1", "t", "bbar");
1616  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(1,2) : 0.0), 0.0, "~chi0_2", "t", "bbar");
1617  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(1,3) : 0.0), 0.0, "~chi0_3", "t", "bbar");
1618  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(1,4) : 0.0), 0.0, "~chi0_4", "t", "bbar");
1619  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(1,1) : 0.0), 0.0, "~chi0_1", "e+", "nu_e");
1620  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(1,2) : 0.0), 0.0, "~chi0_2", "e+", "nu_e");
1621  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(1,3) : 0.0), 0.0, "~chi0_3", "e+", "nu_e");
1622  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(1,4) : 0.0), 0.0, "~chi0_4", "e+", "nu_e");
1623  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(1,1) : 0.0), 0.0, "~chi0_1", "mu+", "nu_mu");
1624  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(1,2) : 0.0), 0.0, "~chi0_2", "mu+", "nu_mu");
1625  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(1,3) : 0.0), 0.0, "~chi0_3", "mu+", "nu_mu");
1626  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(1,4) : 0.0), 0.0, "~chi0_4", "mu+", "nu_mu");
1627  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(1,1) : 0.0), 0.0, "~chi0_1", "tau+", "nu_tau");
1628  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(1,2) : 0.0), 0.0, "~chi0_2", "tau+", "nu_tau");
1629  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(1,3) : 0.0), 0.0, "~chi0_3", "tau+", "nu_tau");
1630  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(1,4) : 0.0), 0.0, "~chi0_4", "tau+", "nu_tau");
1631  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brglupdb(1) : 0.0), 0.0, "~g", "u", "dbar");
1632  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brglchsb(1) : 0.0), 0.0, "~g", "c", "sbar");
1633  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brgltopbb(1) : 0.0), 0.0, "~g", "t", "bbar");
1634 
1635  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1636  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void chargino_plus_1_decays_SH(DecayTable::Entry &result)
SUSY-HIT MSSM decays: chargino_plus_1.
Definition: DecayBit.cpp:1565
Here is the call graph for this function:
Here is the caller graph for this function:

◆ chargino_plus_1_decays_smallsplit()

void Gambit::DecayBit::chargino_plus_1_decays_smallsplit ( DecayTable::Entry result)

MSSM decays: chargino decays for small chargino–neutralino mass splitting.

Using results from hep-ph/9607421.

Definition at line 2249 of file DecayBit.cpp.

References beta, BW(), Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), double, Gambit::gambit_version(), Gambit::SubSpectrum::get(), Gambit::Spectrum::get(), Gambit::Spectrum::get_HE(), Gambit::Utils::integrate_cquad(), LOCAL_INFO, MSSM_spectrum, Gambit::pi, Gambit::Par::Pole_Mass, Gambit::Par::Pole_Mixing, Gambit::Scanner::pow(), pow2, pow3, Gambit::root2, Gambit::DecayTable::Entry::set_BF(), sqrt_lambda(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

2250  {
2252  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
2253 
2254  // Get spectrum objects
2255  const Spectrum& spec = *Dep::MSSM_spectrum;
2256  const SubSpectrum& mssm = spec.get_HE();
2257 
2258  // Get SUSY masses
2259  const double m_N_signed = spec.get(Par::Pole_Mass,"~chi0_1");
2260  const double m_C_signed = spec.get(Par::Pole_Mass,"~chi+_1");
2261  const double m_N = abs(m_N_signed);
2262  const double m_C = abs(m_C_signed);
2263 
2264  const double delta_m = m_C - m_N;
2265 
2266  // If the chargino--neutralino mass difference is large,
2267  // the calculations in this module function should not be used.
2268  // Return empty result.
2269  if (delta_m > 1.5)
2270  {
2271  result = DecayTable::Entry();
2272  return;
2273  }
2274 
2275  // Get wino/higgsino mixing for the lightest neutralino and chargino.
2276  // From Eqs. (A.23) -- (A.25) in 1705.07936 (SpecBit/DecayBit/PrecisionBit paper).
2277  const double N12 = mssm.get(Par::Pole_Mixing,"~chi0",1,2); // ~W3 component
2278  const double N13 = mssm.get(Par::Pole_Mixing,"~chi0",1,3); // ~Hd component
2279  const double N14 = mssm.get(Par::Pole_Mixing,"~chi0",1,4); // ~Hu component
2280 
2281  const double Up11 = mssm.get(Par::Pole_Mixing,"~chi+",1,1); // (~W1 - i*~W2) component
2282  const double Up12 = mssm.get(Par::Pole_Mixing,"~chi+",1,2); // ~Hu+ component
2283  const double Um11 = mssm.get(Par::Pole_Mixing,"~chi-",1,1); // (~W1 + i*~W2) component
2284  const double Um12 = mssm.get(Par::Pole_Mixing,"~chi-",1,2); // ~Hu- component
2285 
2286  // Connection to chargino matrix notation in S. Martin's "A SUSY Primer":
2287  // Our 'Up' matrix corresponds to his 'V' matrix, and
2288  // our 'Um' matrix corresponds to his 'U' matrix.
2289 
2290  // We use the convention that keeps the mixing matrices real.
2291  // This means that the neutralino mass can be negative.
2292  // In that case, we have to deal with relative phase factors
2293  // when implementing the calculations from hep-ph/9607421.
2294  // @todo Double check these conventions.
2295  double O11L = -1./root2*N14*Up12 + N12*Up11;
2296  double O11R = 1./root2*N13*Um12 + N12*Um11;
2297  if (m_C_signed < 0.)
2298  O11L = -O11L;
2299  if (m_N_signed < 0.)
2300  O11R = -O11R;
2301 
2302 
2303  // Get SM parameters and other physical constants
2304  const double G_F = *Param["GF"]; // [GeV^-2]
2305  const double m_el = *Param["mE"]; // [GeV]
2306  const double m_mu = *Param["mMu"]; // [GeV]
2307 
2308  const double m_pi = meson_masses.pi_plus; // hep-ph/9607421 uses one common pion mass for pi+/- and pi0. We choose the pi+ mass.
2309  const double m_rho_0 = meson_masses.rho0;
2310  const double m_rho_prime = meson_masses.rho1450;
2311 
2312  const double f_pi = meson_decay_constants.pi_plus / root2; // Using the sqrt(2) convention of hep-ph/9607421
2313 
2314  const double gamma_rho_0 = Dep::rho_0_decay_rates->width_in_GeV;
2315  const double gamma_rho_prime = Dep::rho1450_decay_rates->width_in_GeV;
2316 
2317  const double beta = -0.145; // Parameter from form factor fit quoted in hep-ph/9607421, referring to https://link.springer.com/content/pdf/10.1007%2FBF01572024.pdf
2318 
2319  // Convenient quantities
2320  const double m_N2 = pow2(m_N);
2321  const double m_C2 = pow2(m_C);
2322  const double m_el2 = pow2(m_el);
2323  const double m_mu2 = pow2(m_mu);
2324  const double m_pi2 = pow2(m_pi);
2325  const double m_rho_02 = pow2(m_rho_0);
2326  const double m_rho_prime2 = pow2(m_rho_prime);
2327 
2328  const double f_pi2 = pow2(f_pi);
2329 
2330  const double G_F2 = pow2(G_F);
2331  const double O11L2 = pow2(O11L);
2332  const double O11R2 = pow2(O11R);
2333 
2334  // Map to store partial width results
2335  std::map<str,double> partial_widths;
2336 
2337  //
2338  // Channel: ~chi+_1 --> ~chi0_1 e+ nu_e
2339  //
2340  partial_widths["N_el+_nu"] = 0.0;
2341  if (delta_m > m_el)
2342  {
2343  // Integrand 1
2344  std::function<double(double)> N_el_nu_integrand_1 = [&m_N2,&m_C2,&m_el2](double q2)
2345  {
2346  return (1. - (m_N2+m_el2)/q2) * pow2(1. - q2/m_C2) * sqrt_lambda(q2,m_N2,m_el2);
2347  };
2348 
2349  // Integrand 2
2350  std::function<double(double)> N_el_nu_integrand_2 = [&m_N2,&m_C2,&m_el2](double q2)
2351  {
2352  return (q2/m_C2) * pow2(1. - m_el2/q2) * sqrt_lambda(m_C2,m_N2,q2);
2353  };
2354 
2355  // Perform integrations
2356  double N_el_nu_I1 = Utils::integrate_cquad(N_el_nu_integrand_1, pow2(m_N+m_el), m_C2, 0, 1e-2);
2357  double N_el_nu_I2 = Utils::integrate_cquad(N_el_nu_integrand_2, m_el2, pow2(m_C-m_N), 0, 1e-2);
2358 
2359  // Put everything together
2360  partial_widths["N_el+_nu"] = (1.*G_F2/pow3(2*pi)) * ( m_C*(O11L2 + O11R2)*N_el_nu_I1 - 2.*m_N*O11L*O11R*N_el_nu_I2 );
2361  }
2362 
2363  //
2364  // Channel: ~chi+_1 --> ~chi0_1 mu+ nu_mu
2365  //
2366  partial_widths["N_mu+_nu"] = 0.0;
2367  if (delta_m > m_mu)
2368  {
2369  // Integrand 1
2370  std::function<double(double)> N_mu_nu_integrand_1 = [&m_N2,&m_C2,&m_mu2](double q2)
2371  {
2372  return (1. - (m_N2+m_mu2)/q2) * pow2(1. - q2/m_C2) * sqrt_lambda(q2,m_N2,m_mu2);
2373  };
2374 
2375  // Integrand 2
2376  std::function<double(double)> N_mu_nu_integrand_2 = [&m_N2,&m_C2,&m_mu2](double q2)
2377  {
2378  return (q2/m_C2) * pow2(1. - m_mu2/q2) * sqrt_lambda(m_C2,m_N2,q2);
2379  };
2380 
2381  // Perform integrations
2382  double N_mu_nu_I1 = Utils::integrate_cquad(N_mu_nu_integrand_1, pow2(m_N+m_mu), m_C2, 0, 1e-2);
2383  double N_mu_nu_I2 = Utils::integrate_cquad(N_mu_nu_integrand_2, m_mu2, pow2(m_C-m_N), 0, 1e-2);
2384 
2385  // Put everything together
2386  partial_widths["N_mu+_nu"] = (1.*G_F2/pow3(2*pi)) * ( m_C*(O11L2 + O11R2)*N_mu_nu_I1 - 2.*m_N*O11L*O11R*N_mu_nu_I2 );
2387  }
2388 
2389  //
2390  // Channel: ~chi+_1 --> ~chi0_1 pi+
2391  //
2392  partial_widths["N_pi+"] = 0.0;
2393  if (delta_m > m_pi)
2394  {
2395  double k_pi = sqrt_lambda(m_C2,m_N2,m_pi2) / (2*m_C);
2396  partial_widths["N_pi+"] = ( (f_pi2 * G_F2 * k_pi / (4. * pi * m_C2)) *
2397  ( pow2(O11L+O11R) * ( pow2(m_C2-m_N2) - m_pi2*pow2(m_C-m_N) )
2398  + pow2(O11L-O11R) * ( pow2(m_C2-m_N2) - m_pi2*pow2(m_C+m_N) ) ) );
2399  }
2400 
2401  //
2402  // Channel: ~chi+_1 --> ~chi0_1 pi+ pi0
2403  //
2404  partial_widths["N_pi+_pi0"] = 0.0;
2405  if (delta_m > 2*m_pi)
2406  {
2407  // Define a helper function
2408  std::function<std::complex<double>(double)> F = [&beta,&m_rho_02,&gamma_rho_0,&m_rho_prime2,&gamma_rho_prime](double q2)
2409  {
2410  return (BW(q2, m_rho_02, sqrt(q2)*gamma_rho_0) + beta*BW(q2, m_rho_prime2, sqrt(q2)*gamma_rho_prime)) / (1. + beta);
2411  };
2412 
2413  // Integrand
2414  std::function<double(double)> N_2pi_integrand = [&F,&m_N,&m_C,&m_N2,&m_C2,&m_pi2,&O11L,&O11R,&O11L2,&O11R2](double q2)
2415  {
2416  return pow2(std::abs(F(q2))) * pow(1. - 4*m_pi2/q2,1.5) * sqrt_lambda(m_C2,m_N2,q2)
2417  * ( (O11L2+O11R2)*( q2*(m_C2+m_N2-2*q2) + pow2(m_C2-m_N2) ) - (12*O11L*O11R*q2*m_C*m_N) );
2418  };
2419 
2420  // Perform integration
2421  double N_2pi_I = Utils::integrate_cquad(N_2pi_integrand, 4*m_pi2, pow2(delta_m), 0, 1e-2);
2422 
2423  // Put everything together
2424  partial_widths["N_pi+_pi0"] = G_F2 / (192. * pow3(pi) * pow3(m_C)) * N_2pi_I;
2425  }
2426 
2427  //
2428  // Channel: ~chi+_1 --> ~chi0_1 pi+ pi0 pi0
2429  //
2430  partial_widths["N_pi+_pi0_pi0"] = 0.0;
2431  if (delta_m > 3*m_pi)
2432  {
2433  // Define a helper function
2434  std::function<double(double)> g = [&m_pi,&m_pi2,&m_rho_0](double q2)
2435  {
2436  double res = 0.0;
2437  if (q2 < pow2(m_rho_0 + m_pi))
2438  res = 4.1 * pow3(q2-9*m_pi2) * (1. - 3.3*(q2-9*m_pi2) + 5.8*pow2(q2-9*m_pi2));
2439  else
2440  res = q2 * (1.623 + 10.38/q2 - 9.32/pow2(q2) + 0.65/pow3(q2));
2441  return res;
2442  };
2443 
2444  // @todo Include this a-meson data properly into the GAMBIT data system
2445  double m_a = 1.246;
2446  double gamma_a = 0.562;
2447 
2448  // Integrand
2449  std::function<double(double)> N_3pi_integrand = [&g,&m_N,&m_C,&m_N2,&m_C2,&O11L,&O11R,&O11L2,&O11R2,&m_a,&gamma_a](double q2)
2450  {
2451  double BW_imag_term = m_a * gamma_a * g(q2)/g(pow2(m_a));
2452 
2453  return sqrt_lambda(m_C2,m_N2,q2) * pow2(std::abs(BW(q2,pow2(m_a),BW_imag_term))) * g(q2)
2454  * ( (O11L2 + O11R2)*(m_C2 + m_N2 - 2*q2 + pow2(m_C2-m_N2)/q2 )
2455  - 12*O11L*O11R*m_C*m_N );
2456  };
2457 
2458  // Perform integration
2459  double N_3pi_I = Utils::integrate_cquad(N_3pi_integrand, 9*m_pi2, pow2(delta_m), 0, 1e-2);
2460 
2461  // Put everything together
2462  partial_widths["N_pi+_pi0_pi0"] = G_F2 / (6912. * pow(pi,5) * pow3(m_C) * f_pi2) * N_3pi_I;
2463  }
2464 
2465  //
2466  // Channel: ~chi+_1 --> ~chi0_1 pi+ pi+ pi-
2467  //
2468  // When ignoring the tiny mass difference between charged and neutral pions, this
2469  // width is identical as the one for ~chi+_1 --> ~chi0_1 pi+ pi0 pi0
2470  partial_widths["N_pi+_pi+_pi-"] = partial_widths["N_pi+_pi0_pi0"];
2471 
2472 
2473  //
2474  // Store results
2475  //
2476  result.calculator = "GAMBIT::DecayBit";
2477  result.calculator_version = gambit_version();
2478 
2479  // Sum partial widths
2480  double total_width = 0.0;
2481  for (auto it = partial_widths.begin(); it != partial_widths.end(); it++)
2482  total_width += it->second;
2483 
2484  result.width_in_GeV = total_width;
2485 
2486  if (result.width_in_GeV > 0)
2487  {
2488  result.set_BF(partial_widths["N_el+_nu"]/result.width_in_GeV, 0.0, "~chi0_1", "e+", "nu_e");
2489  result.set_BF(partial_widths["N_mu+_nu"]/result.width_in_GeV, 0.0, "~chi0_1", "mu+", "nu_mu");
2490  result.set_BF(partial_widths["N_pi+"]/result.width_in_GeV, 0.0, "~chi0_1", "pi+");
2491  result.set_BF(partial_widths["N_pi+_pi0"]/result.width_in_GeV, 0.0, "~chi0_1", "pi+", "pi0");
2492  result.set_BF(partial_widths["N_pi+_pi0_pi0"]/result.width_in_GeV, 0.0, "~chi0_1", "pi+", "pi0", "pi0");
2493  result.set_BF(partial_widths["N_pi+_pi+_pi-"]/result.width_in_GeV, 0.0, "~chi0_1", "pi+", "pi+", "pi-");
2494  }
2495 
2496  // Set other branching fractions to 0.
2497  result.set_BF(0.0, 0.0, psn.isul, "dbar");
2498  result.set_BF(0.0, 0.0, psn.isur, "dbar");
2499  result.set_BF(0.0, 0.0, psn.isdlbar, "u");
2500  result.set_BF(0.0, 0.0, psn.isdrbar, "u");
2501  result.set_BF(0.0, 0.0, psn.iscl, "sbar");
2502  result.set_BF(0.0, 0.0, psn.iscr, "sbar");
2503  result.set_BF(0.0, 0.0, psn.isslbar, "c");
2504  result.set_BF(0.0, 0.0, psn.issrbar, "c");
2505  result.set_BF(0.0, 0.0, psn.ist1, "bbar");
2506  result.set_BF(0.0, 0.0, psn.ist2, "bbar");
2507  result.set_BF(0.0, 0.0, psn.isb1bar, "t");
2508  result.set_BF(0.0, 0.0, psn.isb2bar, "t");
2509  result.set_BF(0.0, 0.0, psn.isnel, "e+");
2510  result.set_BF(0.0, 0.0, psn.isnmul, "mu+");
2511  result.set_BF(0.0, 0.0, psn.isntaul, "tau+");
2512  result.set_BF(0.0, 0.0, psn.isellbar, "nu_e");
2513  result.set_BF(0.0, 0.0, psn.iselrbar, "nu_e");
2514  result.set_BF(0.0, 0.0, psn.ismulbar, "nu_mu");
2515  result.set_BF(0.0, 0.0, psn.ismurbar, "nu_mu");
2516  result.set_BF(0.0, 0.0, psn.istau1bar, "nu_tau");
2517  result.set_BF(0.0, 0.0, psn.istau2bar, "nu_tau");
2518  result.set_BF(0.0, 0.0, "~chi0_1", "W+");
2519  result.set_BF(0.0, 0.0, "~chi0_2", "W+");
2520  result.set_BF(0.0, 0.0, "~chi0_3", "W+");
2521  result.set_BF(0.0, 0.0, "~chi0_4", "W+");
2522  result.set_BF(0.0, 0.0, "~chi0_1", "H+");
2523  result.set_BF(0.0, 0.0, "~chi0_2", "H+");
2524  result.set_BF(0.0, 0.0, "~chi0_3", "H+");
2525  result.set_BF(0.0, 0.0, "~chi0_4", "H+");
2526  result.set_BF(0.0, 0.0, "~G", "W+");
2527  result.set_BF(0.0, 0.0, "~G", "H+");
2528  result.set_BF(0.0, 0.0, "~G", "W+");
2529  result.set_BF(0.0, 0.0, "~G", "H+");
2530  result.set_BF(0.0, 0.0, "~chi0_1", "u", "dbar");
2531  result.set_BF(0.0, 0.0, "~chi0_2", "u", "dbar");
2532  result.set_BF(0.0, 0.0, "~chi0_3", "u", "dbar");
2533  result.set_BF(0.0, 0.0, "~chi0_4", "u", "dbar");
2534  result.set_BF(0.0, 0.0, "~chi0_1", "c", "sbar");
2535  result.set_BF(0.0, 0.0, "~chi0_2", "c", "sbar");
2536  result.set_BF(0.0, 0.0, "~chi0_3", "c", "sbar");
2537  result.set_BF(0.0, 0.0, "~chi0_4", "c", "sbar");
2538  result.set_BF(0.0, 0.0, "~chi0_1", "t", "bbar");
2539  result.set_BF(0.0, 0.0, "~chi0_2", "t", "bbar");
2540  result.set_BF(0.0, 0.0, "~chi0_3", "t", "bbar");
2541  result.set_BF(0.0, 0.0, "~chi0_4", "t", "bbar");
2542  // (We calculate ~chi_01 e+ nu_e)
2543  // result.set_BF(0.0, 0.0, "~chi0_1", "e+", "nu_e");
2544  result.set_BF(0.0, 0.0, "~chi0_2", "e+", "nu_e");
2545  result.set_BF(0.0, 0.0, "~chi0_3", "e+", "nu_e");
2546  result.set_BF(0.0, 0.0, "~chi0_4", "e+", "nu_e");
2547  // (We calculate ~chi_01 mu+ nu_mu)
2548  // result.set_BF(0.0, 0.0, "~chi0_1", "mu+", "nu_mu");
2549  result.set_BF(0.0, 0.0, "~chi0_2", "mu+", "nu_mu");
2550  result.set_BF(0.0, 0.0, "~chi0_3", "mu+", "nu_mu");
2551  result.set_BF(0.0, 0.0, "~chi0_4", "mu+", "nu_mu");
2552  result.set_BF(0.0, 0.0, "~chi0_1", "tau+", "nu_tau");
2553  result.set_BF(0.0, 0.0, "~chi0_2", "tau+", "nu_tau");
2554  result.set_BF(0.0, 0.0, "~chi0_3", "tau+", "nu_tau");
2555  result.set_BF(0.0, 0.0, "~chi0_4", "tau+", "nu_tau");
2556  result.set_BF(0.0, 0.0, "~g", "u", "dbar");
2557  result.set_BF(0.0, 0.0, "~g", "c", "sbar");
2558  result.set_BF(0.0, 0.0, "~g", "t", "bbar");
2559 
2560  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
2561  }
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry double
double integrate_cquad(std::function< double(double)> ftor, double a, double b, double abseps, double releps)
Integrate a std::function using GSL cquad.
Definition: integration.cpp:40
START_MODEL beta
Definition: Axions.hpp:35
std::complex< double > BW(double q2, double m2, double imag_term)
Breit-Wigner pole (complex)
Definition: DecayBit.cpp:84
double sqrt_lambda(double a, double b, double c)
Square root of the standard kinematic function lambda(a,b,c)
Definition: DecayBit.cpp:81
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
#define pow3(a)
Definition: DecayBit.cpp:64
const double root2
void chargino_plus_1_decays_smallsplit(DecayTable::Entry &result)
MSSM decays: chargino decays for small chargino–neutralino mass splitting.
Definition: DecayBit.cpp:2249
const double pi
Spectrum Spectrum
#define pow2(a)
Definition: DecayBit.cpp:63
str & gambit_version()
Statically construct a string containing the full GAMBIT version information and return a reference t...
Definition: version.cpp:32
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ chargino_plus_2_decays()

void Gambit::DecayBit::chargino_plus_2_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: chargino_plus_2.

Definition at line 1639 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1640  {
1641  using namespace Pipes::chargino_plus_2_decays;
1642  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1643 
1644  result.calculator = BEreq::cb_sd_charwidth.origin();
1645  result.calculator_version = BEreq::cb_sd_charwidth.version();
1646 
1647  result.width_in_GeV = BEreq::cb_sd_charwidth->chartot(2);
1648  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupl(2) : 0.0), 0.0, psn.isul, "dbar");
1649  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupr(2) : 0.0), 0.0, psn.isur, "dbar");
1650  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownl(2) : 0.0), 0.0, psn.isdlbar, "u");
1651  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownr(2) : 0.0), 0.0, psn.isdrbar, "u");
1652  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupl(2) : 0.0), 0.0, psn.iscl, "sbar");
1653  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupr(2) : 0.0), 0.0, psn.iscr, "sbar");
1654  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownl(2) : 0.0), 0.0, psn.isslbar, "c");
1655  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownr(2) : 0.0), 0.0, psn.issrbar, "c");
1656  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharst1(2) : 0.0), 0.0, psn.ist1, "bbar");
1657  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharst2(2) : 0.0), 0.0, psn.ist2, "bbar");
1658  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsb1(2) : 0.0), 0.0, psn.isb1bar, "t");
1659  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsb2(2) : 0.0), 0.0, psn.isb2bar, "t");
1660  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsnel(2) : 0.0), 0.0, psn.isnel, "e+");
1661  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsnel(2) : 0.0), 0.0, psn.isnmul, "mu+");
1662  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsn1(2) : 0.0), 0.0, psn.isntaul, "tau+");
1663  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsell(2) : 0.0), 0.0, psn.isellbar, "nu_e");
1664  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharselr(2) : 0.0), 0.0, psn.iselrbar, "nu_e");
1665  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsell(2) : 0.0), 0.0, psn.ismulbar, "nu_mu");
1666  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharselr(2) : 0.0), 0.0, psn.ismurbar, "nu_mu");
1667  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharstau1(2) : 0.0), 0.0, psn.istau1bar, "nu_tau");
1668  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharstau2(2) : 0.0), 0.0, psn.istau2bar, "nu_tau");
1669  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharzchic : 0.0), 0.0, "~chi+_1", "Z0");
1670  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(2,1) : 0.0), 0.0, "~chi0_1", "W+");
1671  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(2,2) : 0.0), 0.0, "~chi0_2", "W+");
1672  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(2,3) : 0.0), 0.0, "~chi0_3", "W+");
1673  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(2,4) : 0.0), 0.0, "~chi0_4", "W+");
1674  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhlchic : 0.0), 0.0, "~chi+_1", "h0_1");
1675  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhhchic : 0.0), 0.0, "~chi+_1", "h0_2");
1676  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhachic : 0.0), 0.0, "~chi+_1", "A0");
1677  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(2,1) : 0.0), 0.0, "~chi0_1", "H+");
1678  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(2,2) : 0.0), 0.0, "~chi0_2", "H+");
1679  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(2,3) : 0.0), 0.0, "~chi0_3", "H+");
1680  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(2,4) : 0.0), 0.0, "~chi0_4", "H+");
1681  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharwgravitino(2) : 0.0), 0.0, "~G", "W+");
1682  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharhcgravitino(2) : 0.0), 0.0, "~G", "H+");
1683  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharwgravitino(2) : 0.0), 0.0, "~G", "W+");
1684  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharhcgravitino(2) : 0.0), 0.0, "~G", "H+");
1685  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,1) : 0.0), 0.0, "~chi0_1", "u", "dbar");
1686  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,2) : 0.0), 0.0, "~chi0_2", "u", "dbar");
1687  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,3) : 0.0), 0.0, "~chi0_3", "u", "dbar");
1688  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,4) : 0.0), 0.0, "~chi0_4", "u", "dbar");
1689  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,1) : 0.0), 0.0, "~chi0_1", "c", "sbar");
1690  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,2) : 0.0), 0.0, "~chi0_2", "c", "sbar");
1691  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,3) : 0.0), 0.0, "~chi0_3", "c", "sbar");
1692  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,4) : 0.0), 0.0, "~chi0_4", "c", "sbar");
1693  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(2,1) : 0.0), 0.0, "~chi0_1", "t", "bbar");
1694  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(2,2) : 0.0), 0.0, "~chi0_2", "t", "bbar");
1695  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(2,3) : 0.0), 0.0, "~chi0_3", "t", "bbar");
1696  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(2,4) : 0.0), 0.0, "~chi0_4", "t", "bbar");
1697  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(2,1) : 0.0), 0.0, "~chi0_1", "e+", "nu_e");
1698  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(2,2) : 0.0), 0.0, "~chi0_2", "e+", "nu_e");
1699  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(2,3) : 0.0), 0.0, "~chi0_3", "e+", "nu_e");
1700  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(2,4) : 0.0), 0.0, "~chi0_4", "e+", "nu_e");
1701  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(2,1) : 0.0), 0.0, "~chi0_1", "mu+", "nu_mu");
1702  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(2,2) : 0.0), 0.0, "~chi0_2", "mu+", "nu_mu");
1703  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(2,3) : 0.0), 0.0, "~chi0_3", "mu+", "nu_mu");
1704  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(2,4) : 0.0), 0.0, "~chi0_4", "mu+", "nu_mu");
1705  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(2,1) : 0.0), 0.0, "~chi0_1", "tau+", "nu_tau");
1706  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(2,2) : 0.0), 0.0, "~chi0_2", "tau+", "nu_tau");
1707  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(2,3) : 0.0), 0.0, "~chi0_3", "tau+", "nu_tau");
1708  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(2,4) : 0.0), 0.0, "~chi0_4", "tau+", "nu_tau");
1709  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchupup : 0.0), 0.0, "~chi+_1", "u", "ubar");
1710  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchdodo : 0.0), 0.0, "~chi+_1", "d", "dbar");
1711  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchchch : 0.0), 0.0, "~chi+_1", "c", "cbar");
1712  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchstst : 0.0), 0.0, "~chi+_1", "s", "sbar");
1713  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchtoptop : 0.0), 0.0, "~chi+_1", "t", "tbar");
1714  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchbotbot : 0.0), 0.0, "~chi+_1", "b", "bbar");
1715  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchee : 0.0), 0.0, "~chi+_1", "e+", "e-");
1716  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchmumu : 0.0), 0.0, "~chi+_1", "mu+", "mu-");
1717  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchtautau : 0.0), 0.0, "~chi+_1", "tau+", "tau-");
1718  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchnene : 0.0), 0.0, "~chi+_1", "nu_e", "nubar_e");
1719  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchnmunmu : 0.0), 0.0, "~chi+_1", "nu_mu", "nubar_mu");
1720  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchntauntau : 0.0), 0.0, "~chi+_1", "nu_tau", "nubar_tau");
1721  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brglupdb(2) : 0.0), 0.0, "~g", "u", "dbar");
1722  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brglchsb(2) : 0.0), 0.0, "~g", "c", "sbar");
1723  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brgltopbb(2) : 0.0), 0.0, "~g", "t", "bbar");
1724 
1725  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1726  }
void chargino_plus_2_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: chargino_plus_2.
Definition: DecayBit.cpp:1639
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_first_sec_gen_mixing()

void Gambit::DecayBit::check_first_sec_gen_mixing ( int result)

SLHA1 mixing check flag This gets set non-zero if first or second generation left-right mixing exceeds the specified tolerance (which means that SLHA1 is an invalid format for this model point).

1 = u, 2 = d, 3 = c, 4 = s, 5 = e, 6 = mu

Definition at line 3221 of file DecayBit.cpp.

References Gambit::slhahelp::mass_es_from_gauge_es().

3222  {
3223  using namespace Pipes::check_first_sec_gen_mixing;
3224  const static double tol = runOptions->getValueOrDef<double>(1e-2, "gauge_mixing_tolerance");
3225  result = 0;
3226  double max_mixing;
3227  const SubSpectrum& mssm = (*Dep::MSSM_spectrum).get_HE();
3228  str x = slhahelp::mass_es_from_gauge_es("~u_L", max_mixing, mssm);
3229  if((max_mixing*max_mixing) <= 1-tol) result = 1;
3230  x = slhahelp::mass_es_from_gauge_es("~u_R", max_mixing, mssm);
3231  if((max_mixing*max_mixing) <= 1-tol) result = 1;
3232  x = slhahelp::mass_es_from_gauge_es("~d_L", max_mixing, mssm);
3233  if((max_mixing*max_mixing) <= 1-tol) result = 2;
3234  x = slhahelp::mass_es_from_gauge_es("~d_R", max_mixing, mssm);
3235  if((max_mixing*max_mixing) <= 1-tol) result = 2;
3236  x = slhahelp::mass_es_from_gauge_es("~c_L", max_mixing, mssm);
3237  if((max_mixing*max_mixing) <= 1-tol) result = 3;
3238  x = slhahelp::mass_es_from_gauge_es("~c_R", max_mixing, mssm);
3239  if((max_mixing*max_mixing) <= 1-tol) result = 3;
3240  x = slhahelp::mass_es_from_gauge_es("~s_L", max_mixing, mssm);
3241  if((max_mixing*max_mixing) <= 1-tol) result = 4;
3242  x = slhahelp::mass_es_from_gauge_es("~s_R", max_mixing, mssm);
3243  if((max_mixing*max_mixing) <= 1-tol) result = 4;
3244  x = slhahelp::mass_es_from_gauge_es("~e_L", max_mixing, mssm);
3245  if((max_mixing*max_mixing) <= 1-tol) result = 5;
3246  x = slhahelp::mass_es_from_gauge_es("~e_R", max_mixing, mssm);
3247  if((max_mixing*max_mixing) <= 1-tol) result = 5;
3248  x = slhahelp::mass_es_from_gauge_es("~mu_L", max_mixing, mssm);
3249  if((max_mixing*max_mixing) <= 1-tol) result = 6;
3250  x = slhahelp::mass_es_from_gauge_es("~mu_R", max_mixing, mssm);
3251  if((max_mixing*max_mixing) <= 1-tol) result = 6;
3252  }
std::string str
Shorthand for a standard string.
Definition: Analysis.hpp:35
void check_first_sec_gen_mixing(int &result)
SLHA1 mixing check flag This gets set non-zero if first or second generation left-right mixing exceed...
Definition: DecayBit.cpp:3221
str mass_es_from_gauge_es(str gauge_es, double &max_mixing, std::vector< double > &gauge_composition, const SubSpectrum &mssm)
indentifies the state with largest gauge_es content also fills largest max_mixing and full gauge_comp...
Here is the call graph for this function:

◆ check_width()

void Gambit::DecayBit::check_width ( const str info,
double w,
bool  raise_invalid_pt_negative_width = false,
bool  raise_invalid_pt_large_width = false 
)

Check if a width is negative or suspiciously large and raise an error.

Definition at line 92 of file DecayBit.cpp.

References Gambit::invalid_point(), and Gambit::invalid_point_exception::raise().

Referenced by A0_decays(), chargino_plus_1_decays(), chargino_plus_1_decays_SH(), chargino_plus_1_decays_smallsplit(), chargino_plus_2_decays(), DiracSingletDM_Higgs_decays(), FH_H_plus_decays(), FH_t_decays(), gluino_decays(), h0_2_decays(), H_plus_decays(), MajoranaSingletDM_Higgs_decays(), MSSM_h0_1_decays(), neutralino_1_decays(), neutralino_2_decays(), neutralino_3_decays(), neutralino_4_decays(), sbottom_1_decays(), sbottom_2_decays(), ScalarSingletDM_Higgs_decays(), scharm_l_decays(), scharm_r_decays(), sdown_l_decays(), sdown_r_decays(), selectron_l_decays(), selectron_r_decays(), set_FH_neutral_h_decay(), smuon_l_decays(), smuon_r_decays(), snu_electronl_decays(), snu_muonl_decays(), snu_taul_decays(), sstrange_l_decays(), sstrange_r_decays(), stau_1_decays(), stau_1_decays_SH(), stau_1_decays_smallsplit(), stau_2_decays(), stop_1_decays(), stop_2_decays(), sup_l_decays(), sup_r_decays(), and VectorSingletDM_Higgs_decays().

93  {
94  if (Utils::isnan(w)) DecayBit_error().raise(info, "Decay width is NaN!");
95  if (w < 0)
96  {
97  str nwiderr("Negative width returned!");
98  if (raise_invalid_pt_negative_width)
99  invalid_point().raise(nwiderr);
100  else
101  DecayBit_error().raise(info, nwiderr);
102  }
103  if (w > 1e7)
104  {
105  str lwiderr("Suspiciously large width returned: "+std::to_string(w)+" GeV");
106  if (raise_invalid_pt_large_width)
107  invalid_point().raise(lwiderr);
108  else
109  DecayBit_error().raise(info, lwiderr);
110  }
111  }
virtual void raise(const std::string &)
Raise the exception, i.e. throw it.
Definition: exceptions.cpp:422
std::string str
Shorthand for a standard string.
Definition: Analysis.hpp:35
invalid_point_exception & invalid_point()
Invalid point exceptions.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_SM_higgs_decays()

void Gambit::DecayBit::compute_SM_higgs_decays ( DecayTable::Entry result,
double  mh 
)

Populate SM Higgs decay channels for a higgs mass of m_h.

Definition at line 114 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, Gambit::gambit_version(), Gambit::invalid_point(), LOCAL_INFO, Gambit::invalid_point_exception::raise(), Gambit::DecayTable::Entry::set_BF(), Gambit::virtual_SMHiggs_widths(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by MSSM_inv_Higgs_BF(), Ref_SM_A0_decays_table(), Ref_SM_Higgs_decays_table(), and Ref_SM_other_Higgs_decays_table().

115  {
116  // Just kill off the point if the Higgs is < 1 GeV in mass.
117  if (mh < 1.) invalid_point().raise("Neutral higgs with mass < 1 GeV");
118  // If it's more than 16 TeV, just calculate as if it has a mass of 16 TeV. The BFs will
119  // be the same (2/3 WW, 1/3 Z), the width will just be underestimated. At this mass though,
120  // that shouldn't impact anything.
121  if (mh > 1.6e4)
122  {
123  std::stringstream msg;
124  msg << "Neutral higgs with mass > 16 TeV; calculating SM decays as if m = 16 TeV. Actual mass: " << mh*1e-3 << " TeV";
125  DecayBit_warning().raise(LOCAL_INFO, msg.str());
126  mh = 1.6e4;
127  }
128  result.calculator = "GAMBIT::DecayBit";
129  result.calculator_version = gambit_version();
130  result.width_in_GeV = virtual_SMHiggs_widths("Gamma",mh);
131  result.set_BF(virtual_SMHiggs_widths("bb",mh), 0.0, "b", "bbar");
132  result.set_BF(virtual_SMHiggs_widths("tautau",mh), 0.0, "tau+", "tau-");
133  result.set_BF(virtual_SMHiggs_widths("mumu",mh), 0.0, "mu+", "mu-");
134  result.set_BF(virtual_SMHiggs_widths("ss",mh), 0.0, "s", "sbar");
135  result.set_BF(virtual_SMHiggs_widths("cc",mh), 0.0, "c", "cbar");
136  result.set_BF(virtual_SMHiggs_widths("tt",mh), 0.0, "t", "tbar");
137  result.set_BF(virtual_SMHiggs_widths("gg",mh), 0.0, "g", "g");
138  result.set_BF(virtual_SMHiggs_widths("gammagamma",mh), 0.0, "gamma", "gamma");
139  result.set_BF(virtual_SMHiggs_widths("Zgamma",mh), 0.0, "Z0", "gamma");
140  result.set_BF(virtual_SMHiggs_widths("WW",mh), 0.0, "W+", "W-");
141  result.set_BF(virtual_SMHiggs_widths("ZZ",mh), 0.0, "Z0", "Z0");
142  }
#define LOCAL_INFO
Definition: local_info.hpp:34
double virtual_SMHiggs_widths(str, double)
Higgs branching ratios and total width Gamma [GeV], as function of mass [GeV] (90 - 300 GeV) ...
virtual void raise(const std::string &)
Raise the exception, i.e. throw it.
Definition: exceptions.cpp:422
str & gambit_version()
Statically construct a string containing the full GAMBIT version information and return a reference t...
Definition: version.cpp:32
Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum mh
invalid_point_exception & invalid_point()
Invalid point exceptions.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ CP_conjugate()

DecayTable::Entry Gambit::DecayBit::CP_conjugate ( const DecayTable::Entry in)

Construct a decay table entry for a particle from the entry for its antiparticle.

Construct a decay table entry for a particle, from the entry for its antiparticle.

Definition at line 27 of file decay_utils.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, Gambit::DecayTable::Entry::channels, Gambit::DecayTable::Entry::errors, Gambit::DecayTable::Entry::negative_error, Gambit::Models::ParticleDB(), Gambit::DecayTable::Entry::positive_error, Gambit::DecayTable::Entry::warnings, and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by chargino_minus_1_decays(), chargino_minus_2_decays(), H_minus_decays(), mu_minus_decays(), pi_minus_decays(), rho_minus_decays(), sbottombar_1_decays(), sbottombar_2_decays(), scharmbar_l_decays(), scharmbar_r_decays(), sdownbar_l_decays(), sdownbar_r_decays(), selectronbar_l_decays(), selectronbar_r_decays(), smuonbar_l_decays(), smuonbar_r_decays(), snubar_electronl_decays(), snubar_muonl_decays(), snubar_taul_decays(), sstrangebar_l_decays(), sstrangebar_r_decays(), staubar_1_decays(), staubar_2_decays(), stopbar_1_decays(), stopbar_2_decays(), supbar_l_decays(), supbar_r_decays(), tau_minus_decays(), tbar_decays(), and W_minus_decays().

28  {
29  DecayTable::Entry out;
30 
31  // Copy all the basic info to the new DecayTable entry
32  out.width_in_GeV = in.width_in_GeV;
33  out.positive_error = in.positive_error;
34  out.negative_error = out.negative_error;
35  out.calculator = in.calculator;
36  out.calculator_version = in.calculator_version;
37  out.warnings = in.warnings;
38  out.errors = in.errors;
39 
40  // Iterate over all the open decay channels
41  for (auto i : in.channels)
42  {
43  // Retrieve the decay final states
44  std::multiset< std::pair<int,int> > particles = i.first;
45  // Determine the antiparticles of the final states
46  std::multiset< std::pair<int,int> > antiparticles;
47  for (auto particle : particles)
48  {
49  std::pair<int,int> antiparticle(-1*(particle.first), particle.second);
50  // If the antiparticle exists as a distinct particle, add it.
51  if (Models::ParticleDB().has_particle(antiparticle)) antiparticles.insert(antiparticle);
52  //Otherwise, use the original particle
53  else antiparticles.insert(particle);
54  }
55  // Set the corresponding branching fraction and error in the conjugate entry
56  out.channels[antiparticles] = i.second;
57  }
58 
59  // Hand over the CP-conjugate entry
60  return out;
61  }
partmap & ParticleDB()
Database accessor function.
Definition: partmap.cpp:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DiracSingletDM_Higgs_decays()

void Gambit::DecayBit::DiracSingletDM_Higgs_decays ( DecayTable::Entry result)

Add the decay of Higgs to Dirac fermions for the DiracSingletDM models (see arXiv:1512.06458v4)

Definition at line 2954 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::channels, check_width(), Gambit::Par::dimensionless, Gambit::SubSpectrum::get(), Gambit::Spectrum::get(), Gambit::Spectrum::get_HE(), Gambit::DecayBit::MSSM_H::lambda(), LOCAL_INFO, Gambit::logger(), Gambit::Par::mass1, Gambit::pi, Gambit::Par::Pole_Mass, Gambit::Scanner::pow(), Gambit::DecayTable::Entry::set_BF(), v0, and Gambit::DecayTable::Entry::width_in_GeV.

2955  {
2956  using namespace Pipes::DiracSingletDM_Higgs_decays;
2957 
2958  // Get the spectrum information
2959  const Spectrum& spec = *Dep::DiracSingletDM_Z2_spectrum;
2960  const SubSpectrum& he = spec.get_HE();
2961  double mass = spec.get(Par::Pole_Mass,"F");
2962  double lambda = he.get(Par::dimensionless,"lF");
2963  double cxi = std::cos(he.get(Par::dimensionless,"xi"));
2964  double v0 = he.get(Par::mass1,"vev");
2965  double mhpole = spec.get(Par::Pole_Mass,"h0_1");
2966 
2967  // Get the reference SM Higgs decays
2968  result = *Dep::Reference_SM_Higgs_decay_rates;
2969 
2970  // Add the h -> FF width to the total
2971  double massratio2 = pow(mass/mhpole,2);
2972  double lfactor = (1 - 4*massratio2*pow(cxi,2));
2973  double gamma = (2.0*mass <= mhpole) ? ((mhpole*pow(v0*lambda,2))/(8.0*pi)) * sqrt(1.0 - 4.0*massratio2) * lfactor : 0.0;
2974  result.width_in_GeV = result.width_in_GeV + gamma;
2975 
2976  // Print out the h -> FF width for debugging
2977  logger() << "Gamma (h -> FF) = " << gamma << " GeV" << std::endl;
2978 
2979  // Rescale the SM decay branching fractions.
2980  double wscaling = Dep::Reference_SM_Higgs_decay_rates->width_in_GeV/result.width_in_GeV;
2981  for (auto it = result.channels.begin(); it != result.channels.end(); ++it)
2982  {
2983  it->second.first *= wscaling; // rescale BF
2984  it->second.second *= wscaling; // rescale error on BF
2985  }
2986 
2987  // Add the h->FF branching fraction
2988  result.set_BF(gamma/result.width_in_GeV, 0.0, "F", "F");
2989 
2990  // Make sure the width is sensible.
2991  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
2992  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
START_MODEL v0
const double pi
Logging::LogMaster & logger()
Function to retrieve a reference to the Gambit global log object.
Definition: logger.cpp:95
Spectrum Spectrum
double lambda(double x, double y, double z)
Definition: MSSM_H.hpp:38
double pow(const double &a)
Outputs a^i.
void DiracSingletDM_Higgs_decays(DecayTable::Entry &result)
Add the decay of Higgs to Dirac fermions for the DiracSingletDM models (see arXiv:1512.06458v4)
Definition: DecayBit.cpp:2954
Here is the call graph for this function:

◆ DiracSingletDM_inv_Higgs_BF()

void Gambit::DecayBit::DiracSingletDM_inv_Higgs_BF ( double BF)

Branching fraction for Higgs into Dirac singlet DM

Parameters
BF$\textrm{BR}(h\to F F)$

Definition at line 3394 of file DecayBit.cpp.

3395  {
3400  using namespace Pipes::DiracSingletDM_inv_Higgs_BF;
3401  BF = Dep::Higgs_decay_rates->BF("F", "F");
3402  }
void DiracSingletDM_inv_Higgs_BF(double &BF)
Definition: DecayBit.cpp:3394

◆ eta_decays()

void Gambit::DecayBit::eta_decays ( DecayTable::Entry result)

SM decays: eta Reference: 2017 PDG.

Definition at line 388 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, Gambit::gambit_version(), Gambit::DecayTable::Entry::negative_error, Gambit::DecayTable::Entry::positive_error, and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

389  {
390  result.calculator = "GAMBIT::DecayBit";
391  result.calculator_version = gambit_version();
392  result.width_in_GeV = 1.31e-06;
393  result.positive_error = 5.0e-08;
394  result.negative_error = 5.0e-08;
395  }
str & gambit_version()
Statically construct a string containing the full GAMBIT version information and return a reference t...
Definition: version.cpp:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FH_A0_decays()

void Gambit::DecayBit::FH_A0_decays ( DecayTable::Entry result)

FeynHiggs MSSM decays: A0.

Definition at line 563 of file DecayBit.cpp.

References set_FH_neutral_h_decay().

Referenced by main().

564  {
565  using namespace Pipes::FH_A0_decays;
566  bool invalidate = runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width");
567  set_FH_neutral_h_decay(result, 3, *Dep::FH_Couplings_output, *(Dep::SLHA_pseudonyms), invalidate, false);
568  }
void FH_A0_decays(DecayTable::Entry &result)
FeynHiggs MSSM decays: A0.
Definition: DecayBit.cpp:563
void set_FH_neutral_h_decay(DecayTable::Entry &result, int iH, const fh_Couplings &FH_input, const mass_es_pseudonyms &psn, bool invalidate, bool SM)
Set neutral h decays computed by FeynHiggs.
Definition: DecayBit.cpp:145
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FH_h0_2_decays()

void Gambit::DecayBit::FH_h0_2_decays ( DecayTable::Entry result)

FeynHiggs MSSM decays: h0_2.

Definition at line 555 of file DecayBit.cpp.

References set_FH_neutral_h_decay().

Referenced by main().

556  {
557  using namespace Pipes::FH_h0_2_decays;
558  bool invalidate = runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width");
559  set_FH_neutral_h_decay(result, 2, *Dep::FH_Couplings_output, *(Dep::SLHA_pseudonyms), invalidate, false);
560  }
void set_FH_neutral_h_decay(DecayTable::Entry &result, int iH, const fh_Couplings &FH_input, const mass_es_pseudonyms &psn, bool invalidate, bool SM)
Set neutral h decays computed by FeynHiggs.
Definition: DecayBit.cpp:145
void FH_h0_2_decays(DecayTable::Entry &result)
FeynHiggs MSSM decays: h0_2.
Definition: DecayBit.cpp:555
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FH_H_plus_decays()

void Gambit::DecayBit::FH_H_plus_decays ( DecayTable::Entry result)

FeynHiggs MSSM decays: H+.

Definition at line 571 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

572  {
573  using namespace Pipes::FH_H_plus_decays;
574 
575  // Get the mass pseudonyms for the gauge eigenstates
576  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
577 
578  // unpack FeynHiggs Couplings
579  fh_Couplings FH_input = *Dep::FH_Couplings_output;
580  result.calculator = FH_input.calculator;
581  result.calculator_version = FH_input.calculator_version;
582  // Set the total charged Higgs width
583  result.width_in_GeV = FH_input.gammas[3];
584  // Set the branching ratio offset, subtracting 1 for C array access instead of Fortran (as defined in FH header).
585  int offset = BRoffset-1;
586 
587  // SM fermion decays
588  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(1,1,1)+offset] : 0.0), 0.0, "e+", "nu_e");
589  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(1,2,2)+offset] : 0.0), 0.0, "mu+", "nu_mu");
590  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(1,2,2)+offset] : 0.0), 0.0, "tau+", "nu_tau");
591  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(2,1,1)+offset] : 0.0), 0.0, "u", "dbar");
592  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(2,1,2)+offset] : 0.0), 0.0, "u", "sbar");
593  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(2,1,3)+offset] : 0.0), 0.0, "u", "bbar");
594  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(2,2,1)+offset] : 0.0), 0.0, "c", "dbar");
595  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(2,2,2)+offset] : 0.0), 0.0, "c", "sbar");
596  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(2,2,3)+offset] : 0.0), 0.0, "c", "bbar");
597  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(2,3,1)+offset] : 0.0), 0.0, "t", "dbar");
598  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(2,3,2)+offset] : 0.0), 0.0, "t", "sbar");
599  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpFF(2,3,3)+offset] : 0.0), 0.0, "t", "bbar");
600 
601  // neutralino+chargino decays
602  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpNeuCha(1,1)+offset] : 0.0), 0.0, "~chi0_1", "~chi+_1");
603  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpNeuCha(1,2)+offset] : 0.0), 0.0, "~chi0_1", "~chi+_2");
604  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpNeuCha(2,1)+offset] : 0.0), 0.0, "~chi0_2", "~chi+_1");
605  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpNeuCha(2,2)+offset] : 0.0), 0.0, "~chi0_2", "~chi+_2");
606  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpNeuCha(3,1)+offset] : 0.0), 0.0, "~chi0_3", "~chi+_1");
607  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpNeuCha(3,2)+offset] : 0.0), 0.0, "~chi0_3", "~chi+_2");
608  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpNeuCha(4,1)+offset] : 0.0), 0.0, "~chi0_4", "~chi+_1");
609  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpNeuCha(4,2)+offset] : 0.0), 0.0, "~chi0_4", "~chi+_2");
610 
611  // higgs + W decays
612  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpHV(1)+offset] : 0.0), 0.0, "W+", "h0_1");
613  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpHV(2)+offset] : 0.0), 0.0, "W+", "h0_2");
614  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpHV(3)+offset] : 0.0), 0.0, "W+", "A0");
615 
616  // sfermion decays
617  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,1,1,1)+offset] : 0.0), 0.0, psn.isellbar, psn.isnel);
618  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,1,2,2)+offset] : 0.0), 0.0, psn.ismulbar, psn.isnmul);
619  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,1,3,3)+offset] : 0.0), 0.0, psn.istau1bar, psn.isntaul);
620  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,1,1,3,3)+offset] : 0.0), 0.0, psn.istau2bar, psn.isntaul);
621  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,2,1,1)+offset] : 0.0), 0.0, psn.isul, psn.isdlbar);
622  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,2,2,1,1)+offset] : 0.0), 0.0, psn.isul, psn.isdrbar);
623  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,1,2,1,1)+offset] : 0.0), 0.0, psn.isur, psn.isdlbar);
624  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,2,2,1,1)+offset] : 0.0), 0.0, psn.isur, psn.isdrbar);
625  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,2,1,2)+offset] : 0.0), 0.0, psn.isul, psn.isslbar);
626  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,2,2,1,2)+offset] : 0.0), 0.0, psn.isul, psn.issrbar);
627  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,1,2,1,2)+offset] : 0.0), 0.0, psn.isur, psn.isslbar);
628  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,2,2,1,2)+offset] : 0.0), 0.0, psn.isur, psn.issrbar);
629  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,2,1,3)+offset] : 0.0), 0.0, psn.isul, psn.isb1bar);
630  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,2,2,1,3)+offset] : 0.0), 0.0, psn.isul, psn.isb2bar);
631  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,1,2,1,3)+offset] : 0.0), 0.0, psn.isur, psn.isb1bar);
632  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,2,2,1,3)+offset] : 0.0), 0.0, psn.isur, psn.isb2bar);
633  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,2,2,1)+offset] : 0.0), 0.0, psn.iscl, psn.isdlbar);
634  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,2,2,2,1)+offset] : 0.0), 0.0, psn.iscl, psn.isdrbar);
635  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,1,2,2,1)+offset] : 0.0), 0.0, psn.iscr, psn.isdlbar);
636  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,2,2,2,1)+offset] : 0.0), 0.0, psn.iscr, psn.isdrbar);
637  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,2,2,2)+offset] : 0.0), 0.0, psn.iscl, psn.isslbar);
638  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,2,2,2,2)+offset] : 0.0), 0.0, psn.iscl, psn.issrbar);
639  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,1,2,2,2)+offset] : 0.0), 0.0, psn.iscr, psn.isslbar);
640  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,2,2,2,2)+offset] : 0.0), 0.0, psn.iscr, psn.issrbar);
641  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,2,2,3)+offset] : 0.0), 0.0, psn.iscl, psn.isb1bar);
642  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,2,2,2,3)+offset] : 0.0), 0.0, psn.iscl, psn.isb2bar);
643  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,1,2,2,3)+offset] : 0.0), 0.0, psn.iscr, psn.isb1bar);
644  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,2,2,2,3)+offset] : 0.0), 0.0, psn.iscr, psn.isb2bar);
645  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,2,3,1)+offset] : 0.0), 0.0, psn.ist1, psn.isdlbar);
646  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,2,2,3,1)+offset] : 0.0), 0.0, psn.ist1, psn.isdrbar);
647  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,1,2,3,1)+offset] : 0.0), 0.0, psn.ist2, psn.isdlbar);
648  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,2,2,3,1)+offset] : 0.0), 0.0, psn.ist2, psn.isdrbar);
649  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,2,3,2)+offset] : 0.0), 0.0, psn.ist1, psn.isslbar);
650  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,2,2,3,2)+offset] : 0.0), 0.0, psn.ist1, psn.issrbar);
651  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,1,2,3,2)+offset] : 0.0), 0.0, psn.ist2, psn.isslbar);
652  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,2,2,3,2)+offset] : 0.0), 0.0, psn.ist2, psn.issrbar);
653  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,1,2,3,3)+offset] : 0.0), 0.0, psn.ist1, psn.isb1bar);
654  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(1,2,2,3,3)+offset] : 0.0), 0.0, psn.ist1, psn.isb2bar);
655  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,1,2,3,3)+offset] : 0.0), 0.0, psn.ist2, psn.isb1bar);
656  result.set_BF((result.width_in_GeV > 0 ? FH_input.gammas[HpSfSf(2,2,2,3,3)+offset] : 0.0), 0.0, psn.ist2, psn.isb2bar);
657 
658  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
659  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void FH_H_plus_decays(DecayTable::Entry &result)
FeynHiggs MSSM decays: H+.
Definition: DecayBit.cpp:571
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FH_MSSM_h0_1_decays()

void Gambit::DecayBit::FH_MSSM_h0_1_decays ( DecayTable::Entry result)

FeynHiggs MSSM decays: h0_1.

Definition at line 547 of file DecayBit.cpp.

References set_FH_neutral_h_decay().

Referenced by main().

548  {
549  using namespace Pipes::FH_MSSM_h0_1_decays;
550  bool invalidate = runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width");
551  set_FH_neutral_h_decay(result, 1, *Dep::FH_Couplings_output, *(Dep::SLHA_pseudonyms), invalidate, false);
552  }
void FH_MSSM_h0_1_decays(DecayTable::Entry &result)
FeynHiggs MSSM decays: h0_1.
Definition: DecayBit.cpp:547
void set_FH_neutral_h_decay(DecayTable::Entry &result, int iH, const fh_Couplings &FH_input, const mass_es_pseudonyms &psn, bool invalidate, bool SM)
Set neutral h decays computed by FeynHiggs.
Definition: DecayBit.cpp:145
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FH_t_decays()

void Gambit::DecayBit::FH_t_decays ( DecayTable::Entry result)

FeynHiggs MSSM decays: t Reference for total width: 2017 PDG.

Definition at line 532 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::negative_error, Gambit::DecayTable::Entry::positive_error, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

533  {
534  using namespace Pipes::FH_t_decays;
535  fh_Couplings FH_input = *Pipes::FH_t_decays::Dep::FH_Couplings_output;
536  result.calculator = FH_input.calculator;
537  result.calculator_version = FH_input.calculator_version;
538  result.width_in_GeV = 1.41;
539  result.positive_error = 1.9e-01;
540  result.negative_error = 1.5e-01;
541  result.set_BF(FH_input.gammas[tBF(1)+BRoffset-1], 0.0, "W+", "b");
542  result.set_BF(FH_input.gammas[tBF(2)+BRoffset-1], 0.0, "H+", "b");
543  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
544  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void FH_t_decays(DecayTable::Entry &result)
FeynHiggs MSSM decays: t Reference for total width: 2017 PDG.
Definition: DecayBit.cpp:532
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_Higgs_invWidth_chi2()

daFunk::Funk Gambit::DecayBit::get_Higgs_invWidth_chi2 ( std::string  filename)

Definition at line 3257 of file DecayBit.cpp.

References daFunk::interp(), and Gambit::ASCIItableReader::setcolnames().

Referenced by lnL_Higgs_invWidth_SMlike().

3258  {
3259  ASCIItableReader table(filename);
3260  std::vector<std::string> colnames = initVector<std::string>("BR", "Delta_chi2");
3261  table.setcolnames(colnames);
3262  return daFunk::interp("BR", table["BR"], table["Delta_chi2"]);
3263  }
MATH_OPERATION(Dif,-) MATH_OPERATION(pow) MATH_OPERATION(fmin) MATH_OPERATION(fmax) class FunkInterp shared_ptr< FunkInterp > interp(T f, std::vector< double > x, std::vector< double > y)
Definition: daFunk.hpp:1349
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_mass_es_pseudonyms()

void Gambit::DecayBit::get_mass_es_pseudonyms ( mass_es_pseudonyms &  result)

Get MSSM mass eigenstate pseudonyms for the gauge eigenstates.

Definition at line 3205 of file DecayBit.cpp.

References Gambit::LogTags::debug.

Referenced by main().

3206  {
3207  using namespace Pipes::get_mass_es_pseudonyms;
3208  const SubSpectrum& mssm = (*Dep::MSSM_spectrum).get_HE();
3209 
3210  const static double tol = runOptions->getValueOrDef<double>(1e-2, "gauge_mixing_tolerance");
3211  const static bool pt_error = runOptions->getValueOrDef<bool>(true, "gauge_mixing_tolerance_invalidates_point_only");
3212  bool debug = runOptions->getValueOrDef<bool>(false, "debug");
3213  result.refill(mssm, tol, pt_error, debug);
3214  }
void get_mass_es_pseudonyms(mass_es_pseudonyms &result)
Get MSSM mass eigenstate pseudonyms for the gauge eigenstates.
Definition: DecayBit.cpp:3205
Here is the caller graph for this function:

◆ gluino_decays()

void Gambit::DecayBit::gluino_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: gluino.

Definition at line 894 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

895  {
896  using namespace Pipes::gluino_decays;
897  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
898 
899  result.calculator = BEreq::cb_sd_gluiwidth.origin();
900  result.calculator_version = BEreq::cb_sd_gluiwidth.version();
901 
902  result.width_in_GeV = BEreq::cb_sd_gluiwidth->gluitot;
903  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsdownl : 0.0), 0.0, psn.isdl, "dbar");
904  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsdownl : 0.0), 0.0, psn.isdlbar, "d");
905  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsdownr : 0.0), 0.0, psn.isdr, "dbar");
906  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsdownr : 0.0), 0.0, psn.isdrbar, "d");
907  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsupl : 0.0), 0.0, psn.isul, "ubar");
908  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsupl : 0.0), 0.0, psn.isulbar, "u");
909  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsupr : 0.0), 0.0, psn.isur, "ubar");
910  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsupr : 0.0), 0.0, psn.isurbar, "u");
911  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsdownl : 0.0), 0.0, psn.issl, "sbar");
912  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsdownl : 0.0), 0.0, psn.isslbar, "s");
913  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsdownr : 0.0), 0.0, psn.issr, "sbar");
914  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsdownr : 0.0), 0.0, psn.issrbar, "s");
915  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsupl : 0.0), 0.0, psn.iscl, "cbar");
916  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsupl : 0.0), 0.0, psn.isclbar, "c");
917  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsupr : 0.0), 0.0, psn.iscr, "cbar");
918  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsupr : 0.0), 0.0, psn.iscrbar, "c");
919  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsb1 : 0.0), 0.0, psn.isb1, "bbar");
920  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsb1 : 0.0), 0.0, psn.isb1bar, "b");
921  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsb2 : 0.0), 0.0, psn.isb2, "bbar");
922  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgsb2 : 0.0), 0.0, psn.isb2bar, "b");
923  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgst1 : 0.0), 0.0, psn.ist1, "tbar");
924  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgst1 : 0.0), 0.0, psn.ist1bar, "t");
925  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgst2 : 0.0), 0.0, psn.ist2, "tbar");
926  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui2body->brgst2 : 0.0), 0.0, psn.ist2bar, "t");
927  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_gluiloop->brglnjgluon(1) : 0.0), 0.0, "~chi0_1", "g");
928  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_gluiloop->brglnjgluon(2) : 0.0), 0.0, "~chi0_2", "g");
929  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_gluiloop->brglnjgluon(3) : 0.0), 0.0, "~chi0_3", "g");
930  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_gluiloop->brglnjgluon(4) : 0.0), 0.0, "~chi0_4", "g");
931  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgodn(1) : 0.0), 0.0, "~chi0_1", "d", "dbar");
932  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgodn(2) : 0.0), 0.0, "~chi0_2", "d", "dbar");
933  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgodn(3) : 0.0), 0.0, "~chi0_3", "d", "dbar");
934  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgodn(4) : 0.0), 0.0, "~chi0_4", "d", "dbar");
935  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoup(1) : 0.0), 0.0, "~chi0_1", "u", "ubar");
936  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoup(2) : 0.0), 0.0, "~chi0_2", "u", "ubar");
937  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoup(3) : 0.0), 0.0, "~chi0_3", "u", "ubar");
938  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoup(4) : 0.0), 0.0, "~chi0_4", "u", "ubar");
939  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgodn(1) : 0.0), 0.0, "~chi0_1", "s", "sbar");
940  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgodn(2) : 0.0), 0.0, "~chi0_2", "s", "sbar");
941  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgodn(3) : 0.0), 0.0, "~chi0_3", "s", "sbar");
942  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgodn(4) : 0.0), 0.0, "~chi0_4", "s", "sbar");
943  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoup(1) : 0.0), 0.0, "~chi0_1", "c", "cbar");
944  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoup(2) : 0.0), 0.0, "~chi0_2", "c", "cbar");
945  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoup(3) : 0.0), 0.0, "~chi0_3", "c", "cbar");
946  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoup(4) : 0.0), 0.0, "~chi0_4", "c", "cbar");
947  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgobt(1) : 0.0), 0.0, "~chi0_1", "b", "bbar");
948  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgobt(2) : 0.0), 0.0, "~chi0_2", "b", "bbar");
949  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgobt(3) : 0.0), 0.0, "~chi0_3", "b", "bbar");
950  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgobt(4) : 0.0), 0.0, "~chi0_4", "b", "bbar");
951  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgotp(1) : 0.0), 0.0, "~chi0_1", "t", "tbar");
952  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgotp(2) : 0.0), 0.0, "~chi0_2", "t", "tbar");
953  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgotp(3) : 0.0), 0.0, "~chi0_3", "t", "tbar");
954  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgotp(4) : 0.0), 0.0, "~chi0_4", "t", "tbar");
955  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoud(1) : 0.0), 0.0, "~chi+_1", "d", "ubar");
956  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoud(1) : 0.0), 0.0, "~chi-_1", "u", "dbar");
957  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoud(2) : 0.0), 0.0, "~chi+_2", "d", "ubar");
958  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoud(2) : 0.0), 0.0, "~chi-_2", "u", "dbar");
959  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoud(1) : 0.0), 0.0, "~chi+_1", "s", "cbar");
960  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoud(1) : 0.0), 0.0, "~chi-_1", "c", "sbar");
961  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoud(2) : 0.0), 0.0, "~chi+_2", "s", "cbar");
962  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgoud(2) : 0.0), 0.0, "~chi-_2", "c", "sbar");
963  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgotb(1) : 0.0), 0.0, "~chi+_1", "b", "tbar");
964  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgotb(1) : 0.0), 0.0, "~chi-_1", "t", "bbar");
965  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgotb(2) : 0.0), 0.0, "~chi+_2", "b", "tbar");
966  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brgotb(2) : 0.0), 0.0, "~chi-_2", "t", "bbar");
967  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brwst1b : 0.0), 0.0, psn.ist1, "bbar", "W-");
968  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brwst1b : 0.0), 0.0, psn.ist1bar, "b", "W+");
969  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brhcst1b : 0.0), 0.0, psn.ist1, "bbar", "H-");
970  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_glui3body->brhcst1b : 0.0), 0.0, psn.ist1bar, "b", "H+");
971 
972  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
973  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void gluino_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: gluino.
Definition: DecayBit.cpp:894
Here is the call graph for this function:
Here is the caller graph for this function:

◆ h0_2_decays()

void Gambit::DecayBit::h0_2_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: h0_2.

Definition at line 731 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

732  {
733  using namespace Pipes::h0_2_decays;
734  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
735 
736  result.calculator = BEreq::cb_widthhh_hdec.origin();
737  result.calculator_version = BEreq::cb_widthhh_hdec.version();
738 
739  result.width_in_GeV = BEreq::cb_widthhh_hdec->hhwdth;
740  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrb : 0.0), 0.0, "b", "bbar");
741  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrl : 0.0), 0.0, "tau+", "tau-");
742  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrm : 0.0), 0.0, "mu+", "mu-");
743  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrs : 0.0), 0.0, "s", "sbar");
744  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrc : 0.0), 0.0, "c", "cbar");
745  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrt : 0.0), 0.0, "t", "tbar");
746  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrg : 0.0), 0.0, "g", "g");
747  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrga : 0.0), 0.0, "gamma", "gamma");
748  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrzga : 0.0), 0.0, "Z0", "gamma");
749  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrw : 0.0), 0.0, "W+", "W-");
750  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrz : 0.0), 0.0, "Z0", "Z0");
751  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrh : 0.0), 0.0, "h0_1", "h0_1");
752  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbra : 0.0), 0.0, "A0", "A0");
753  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbraz : 0.0), 0.0, "Z0", "A0");
754  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrhw/2.0 : 0.0), 0.0, "W+", "H-");
755  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhh_hdec->hhbrhw/2.0 : 0.0), 0.0, "W-", "H+");
756  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsc(1,1) : 0.0), 0.0, "~chi+_1", "~chi-_1");
757  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsc(2,2) : 0.0), 0.0, "~chi+_2", "~chi-_2");
758  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsc(1,2) : 0.0), 0.0, "~chi+_1", "~chi-_2");
759  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsc(2,1) : 0.0), 0.0, "~chi+_2", "~chi-_1");
760  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsn(1,1) : 0.0), 0.0, "~chi0_1", "~chi0_1");
761  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsn(2,2) : 0.0), 0.0, "~chi0_2", "~chi0_2");
762  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsn(3,3) : 0.0), 0.0, "~chi0_3", "~chi0_3");
763  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsn(4,4) : 0.0), 0.0, "~chi0_4", "~chi0_4");
764  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsn(1,2)*2.0 : 0.0), 0.0, "~chi0_1", "~chi0_2");
765  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsn(1,3)*2.0 : 0.0), 0.0, "~chi0_1", "~chi0_3");
766  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsn(1,4)*2.0 : 0.0), 0.0, "~chi0_1", "~chi0_4");
767  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsn(2,3)*2.0 : 0.0), 0.0, "~chi0_2", "~chi0_3");
768  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsn(2,4)*2.0 : 0.0), 0.0, "~chi0_2", "~chi0_4");
769  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hhbrsn(3,4)*2.0 : 0.0), 0.0, "~chi0_3", "~chi0_4");
770  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsqul/2.0 : 0.0), 0.0, psn.isul, psn.isulbar);
771  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsqur/2.0 : 0.0), 0.0, psn.isur, psn.isurbar);
772  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsqul/2.0 : 0.0), 0.0, psn.iscl, psn.isclbar);
773  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsqur/2.0 : 0.0), 0.0, psn.iscr, psn.iscrbar);
774  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhst(1,1) : 0.0), 0.0, psn.ist1, psn.ist1bar);
775  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhst(2,2) : 0.0), 0.0, psn.ist2, psn.ist2bar);
776  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhst(1,2) : 0.0), 0.0, psn.ist1, psn.ist2bar);
777  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhst(2,1) : 0.0), 0.0, psn.ist2, psn.ist1bar);
778  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsqdl/2.0 : 0.0), 0.0, psn.isdl, psn.isdlbar);
779  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsqdr/2.0 : 0.0), 0.0, psn.isdr, psn.isdrbar);
780  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsqdl/2.0 : 0.0), 0.0, psn.issl, psn.isslbar);
781  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsqdr/2.0 : 0.0), 0.0, psn.issr, psn.issrbar);
782  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsb(1,1) : 0.0), 0.0, psn.isb1, psn.isb1bar);
783  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsb(2,2) : 0.0), 0.0, psn.isb2, psn.isb2bar);
784  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsb(1,2) : 0.0), 0.0, psn.isb1, psn.isb2bar);
785  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsb(2,1) : 0.0), 0.0, psn.isb2, psn.isb1bar);
786  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhslel/2.0 : 0.0), 0.0, psn.isell, psn.isellbar);
787  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsler/2.0 : 0.0), 0.0, psn.iselr, psn.iselrbar);
788  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhslel/2.0 : 0.0), 0.0, psn.ismul, psn.ismulbar);
789  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhsler/2.0 : 0.0), 0.0, psn.ismur, psn.ismurbar);
790  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhstau(1,1) : 0.0), 0.0, psn.istau1, psn.istau1bar);
791  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhstau(2,2) : 0.0), 0.0, psn.istau2, psn.istau2bar);
792  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhstau(1,2) : 0.0), 0.0, psn.istau1, psn.istau2bar);
793  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhstau(2,1) : 0.0), 0.0, psn.istau2, psn.istau1bar);
794  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhslnl/3.0 : 0.0), 0.0, psn.isnel, psn.isnelbar);
795  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhslnl/3.0 : 0.0), 0.0, psn.isnmul, psn.isnmulbar);
796  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhhslnl/3.0 : 0.0), 0.0, psn.isntaul, psn.isntaulbar);
797 
798  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"), true);
799  }
void h0_2_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: h0_2.
Definition: DecayBit.cpp:731
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
Here is the call graph for this function:

◆ H_minus_decays()

void Gambit::DecayBit::H_minus_decays ( DecayTable::Entry result)

MSSM decays: conjugates.

Definition at line 2787 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2787 { result = CP_conjugate(*Pipes::H_minus_decays::Dep::H_plus_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ H_plus_decays()

void Gambit::DecayBit::H_plus_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: H_plus.

Definition at line 853 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

854  {
855  using namespace Pipes::H_plus_decays;
856  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
857 
858  result.calculator = BEreq::cb_widthhc_hdec.origin();
859  result.calculator_version = BEreq::cb_widthhc_hdec.version();
860 
861  result.width_in_GeV = BEreq::cb_widthhc_hdec->hcwdth;
862  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhc_hdec->hcbrb: 0.0), 0.0, "c", "bbar");
863  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhc_hdec->hcbrl: 0.0), 0.0, "tau+", "nu_tau");
864  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhc_hdec->hcbrm: 0.0), 0.0, "mu+", "nu_mu");
865  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhc_hdec->hcbrbu: 0.0), 0.0, "u", "bbar");
866  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhc_hdec->hcbrs: 0.0), 0.0, "u", "sbar");
867  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhc_hdec->hcbrc: 0.0), 0.0, "c", "sbar");
868  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhc_hdec->hcbrt: 0.0), 0.0, "t", "bbar");
869  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhc_hdec->hcbrw: 0.0), 0.0, "W+", "h0_1");
870  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhc_hdec->hcbra: 0.0), 0.0, "W+", "A0");
871  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrsu(1,1) : 0.0), 0.0, "~chi+_1", "~chi0_1");
872  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrsu(1,2) : 0.0), 0.0, "~chi+_1", "~chi0_2");
873  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrsu(1,3) : 0.0), 0.0, "~chi+_1", "~chi0_3");
874  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrsu(1,4) : 0.0), 0.0, "~chi+_1", "~chi0_4");
875  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrsu(2,1) : 0.0), 0.0, "~chi+_2", "~chi0_1");
876  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrsu(2,2) : 0.0), 0.0, "~chi+_2", "~chi0_2");
877  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrsu(2,3) : 0.0), 0.0, "~chi+_2", "~chi0_3");
878  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrsu(2,4) : 0.0), 0.0, "~chi+_2", "~chi0_4");
879  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhcsl00/2.0: 0.0), 0.0, psn.isellbar, psn.isnel);
880  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhcsl00/2.0: 0.0), 0.0, psn.ismulbar, psn.isnmul);
881  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhcsl11: 0.0), 0.0, psn.istau1bar, psn.isntaul);
882  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhcsl21: 0.0), 0.0, psn.istau2bar, psn.isntaul);
883  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrsq/2.0: 0.0), 0.0, psn.isul, psn.isdlbar);
884  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrsq/2.0: 0.0), 0.0, psn.iscl, psn.isslbar);
885  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrstb(1,1) : 0.0), 0.0, psn.ist1, psn.isb1bar);
886  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrstb(2,2) : 0.0), 0.0, psn.ist2, psn.isb2bar);
887  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrstb(1,2) : 0.0), 0.0, psn.ist1, psn.isb2bar);
888  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hcbrstb(2,1) : 0.0), 0.0, psn.ist2, psn.isb1bar);
889 
890  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
891  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void H_plus_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: H_plus.
Definition: DecayBit.cpp:853
Here is the call graph for this function:
Here is the caller graph for this function:

◆ lnL_Higgs_invWidth_SMlike()

void Gambit::DecayBit::lnL_Higgs_invWidth_SMlike ( double lnL)

Log-likelihood for Higgs invisible branching ratio

We use log-likelihoods extracted from e.g., CMS-PAS-HIG-17-023

There are scripts

python ./DecayBit/data/convolve_with_theory.py <file> <frac_error> <min> <max>

for convolving a data file with a fractional theory error, and

python ./DecayBit/data/profile_theory.py <file> <frac_error> <min> <max>

for profiling a fractional theory error.

There are a few data files, e.g.,

./DecayBit/data/arXiv_1306.2941_Figure_8.dat
./DecayBit/data/CMS-PAS-HIG-17-023_Figure_7-b.dat
./DecayBit/data/CMS-PAS-HIG-17-023_Figure_7-b_10_convolved.dat
./DecayBit/data/CMS-PAS-HIG-17-023_Figure_7-b_10_profiled.dat

The first one is the default. The third and fourth ones include a 10% theory uncertainty in the branching fraction by convolving it and profiling it, respectively. The data file is specified in the YAML by the BR_h_inv_chi2_data_file option. The path is relative to the GAMBIT directory, GAMBIT_DIR.

Warning
This typically assumes that the Higgs is otherwise SM-like, i.e., no changes to production cross sections or any other decays.
Parameters
lnLLog-likelihood for Higgs invisible branching ratio

Definition at line 3404 of file DecayBit.cpp.

References get_Higgs_invWidth_chi2(), and LOCAL_INFO.

3405  {
3442  using namespace Pipes::lnL_Higgs_invWidth_SMlike;
3443 
3444  const double BF = *Dep::inv_Higgs_BF;
3445 
3446  if (BF < 0.)
3447  {
3448  DecayBit_error().raise(LOCAL_INFO, "negative BF");
3449  }
3450 
3451  const std::string default_name = "./DecayBit/data/arXiv_1306.2941_Figure_8.dat";
3452  const std::string name = runOptions->getValueOrDef<std::string>
3453  (default_name, "BR_h_inv_chi2_data_file");
3454  static daFunk::Funk chi2 = get_Higgs_invWidth_chi2(GAMBIT_DIR "/" + name);
3455  lnL = -0.5 * chi2->bind("BR")->eval(BF);
3456  }
#define LOCAL_INFO
Definition: local_info.hpp:34
void lnL_Higgs_invWidth_SMlike(double &lnL)
Definition: DecayBit.cpp:3404
daFunk::Funk get_Higgs_invWidth_chi2(std::string filename)
Definition: DecayBit.cpp:3257
shared_ptr< FunkBase > Funk
Definition: daFunk.hpp:113
Here is the call graph for this function:

◆ lnL_W_decays_chi2()

void Gambit::DecayBit::lnL_W_decays_chi2 ( double result)

Definition at line 3619 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::BF(), Gambit::DecayTable::Entry::BF_error(), Gambit::Stats::gaussian_loglikelihood(), Gambit::DecayTable::Entry::negative_error, Gambit::DecayTable::Entry::positive_error, Gambit::Scanner::pow(), W_plus_decay_rates, and Gambit::DecayTable::Entry::width_in_GeV.

3620  {
3621  using namespace Pipes::lnL_W_decays_chi2;
3622  std::vector<double> Wtoldecays = *Dep::W_to_l_decays;
3623  DecayTable::Entry decays = *Dep::W_plus_decay_rates;
3624 
3625  std::vector<double> Wwidth;
3626  std::vector<double> Wwidth_error;
3627 
3628  Wwidth.push_back(decays.width_in_GeV * decays.BF("e+","nu_e"));
3629  Wwidth_error.push_back(sqrt(pow(decays.width_in_GeV*decays.BF_error("e+","nu_e"),2) + pow(std::max(decays.positive_error, decays.negative_error)*decays.BF("e+","nu_e"),2)));
3630  Wwidth.push_back(decays.width_in_GeV * decays.BF("mu+","nu_mu"));
3631  Wwidth_error.push_back(sqrt(pow(decays.width_in_GeV*decays.BF_error("mu+","nu_mu"),2) + pow(std::max(decays.positive_error, decays.negative_error)*decays.BF("mu+","nu_mu"),2)));
3632  Wwidth.push_back(decays.width_in_GeV * decays.BF("tau+","nu_tau"));
3633  Wwidth_error.push_back(sqrt(pow(decays.width_in_GeV*decays.BF_error("tau+","nu_tau"),2) + pow(std::max(decays.positive_error, decays.negative_error)*decays.BF("tau+","nu_tau"),2)));
3634 
3635  result = Stats::gaussian_loglikelihood(Wtoldecays[0], Wwidth[0], 0.0, Wwidth_error[0], false);
3636  result += Stats::gaussian_loglikelihood(Wtoldecays[1], Wwidth[1], 0.0, Wwidth_error[1], false);
3637  result += Stats::gaussian_loglikelihood(Wtoldecays[2], Wwidth[2], 0.0, Wwidth_error[2], false);
3638  }
void lnL_W_decays_chi2(double &result)
Definition: DecayBit.cpp:3619
double gaussian_loglikelihood(double theory, double obs, double theoryerr, double obserr, bool profile_systematics)
Use a detection to compute a simple chi-square-like log likelihood, for the case when obs is Gaussian...
Definition: statistics.cpp:133
Spectrum W_plus_decay_rates
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:

◆ lnL_Z_inv()

void Gambit::DecayBit::lnL_Z_inv ( double lnL)

Log-likelihood from LEP measurements of $Z$-boson invisible width

Warning
This is valid for SM, RHN models and for MSSM-like models with Z-boson invisible decays to neutralinos and neutrinos
Parameters
lnLLog-likelihood

Definition at line 3458 of file DecayBit.cpp.

References Gambit::triplet< TYPE >::central, Gambit::DecayBit::MSSM_Z::gamma_chi_0(), Gambit::DecayBit::SM_Z::gamma_inv, Gambit::Stats::gaussian_loglikelihood(), Gambit::triplet< TYPE >::lower, Gambit::DecayBit::SM_Z::mu, Gambit::Scanner::pow(), Gambit::DecayBit::SM_Z::sigma, and Gambit::triplet< TYPE >::upper.

3459  {
3469  using namespace Pipes::lnL_Z_inv;
3470  const triplet<double> gamma_nu = *Dep::Z_gamma_nu;
3471  double gamma_inv = gamma_nu.central;
3472  const double tau_nu = 0.5 * (gamma_nu.upper + gamma_nu.lower);
3473  double tau = tau_nu;
3474 
3475  if(ModelInUse("MSSM63atQ") or ModelInUse("MSSM63atMGUT"))
3476  {
3477  const triplet<double> gamma_chi_0 = *Dep::Z_gamma_chi_0;
3478  gamma_inv += gamma_chi_0.central;
3479  // Average + and - errors
3480  const double tau_chi_0 = 0.5 * (gamma_chi_0.upper + gamma_chi_0.lower);
3481  // Add theory errors in quadrature
3482  tau = std::sqrt(pow(tau, 2) + pow(tau_chi_0, 2));
3483  }
3484 
3485  lnL = Stats::gaussian_loglikelihood(gamma_inv, SM_Z::gamma_inv.mu, tau, SM_Z::gamma_inv.sigma, false);
3486 
3487  }
void lnL_Z_inv(double &lnL)
Definition: DecayBit.cpp:3458
double gaussian_loglikelihood(double theory, double obs, double theoryerr, double obserr, bool profile_systematics)
Use a detection to compute a simple chi-square-like log likelihood, for the case when obs is Gaussian...
Definition: statistics.cpp:133
constexpr struct Gambit::DecayBit::SM_Z::@0 gamma_inv
<ahref=" http://pdglive.lbl.gov/BranchingRatio.action?desig=9&parCode=S044 ">PDG measurement of invis...
const double sigma
Definition: SM_Z.hpp:43
const double mu
Definition: SM_Z.hpp:42
double pow(const double &a)
Outputs a^i.
double gamma_chi_0(int i, int j, std::array< double, 4 > m, std::array< std::array< double, 4 >, 4 > Z, double g2=0.652, double MZ=91., double sw2=0.22)
Definition: MSSM_Z.hpp:29
Here is the call graph for this function:

◆ MajoranaSingletDM_Higgs_decays()

void Gambit::DecayBit::MajoranaSingletDM_Higgs_decays ( DecayTable::Entry result)

Add the decay of Higgs to Majorana fermions for the MajoranaSingletDM models (see arXiv:1512.06458v4)

Definition at line 2911 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::channels, check_width(), Gambit::Par::dimensionless, Gambit::SubSpectrum::get(), Gambit::Spectrum::get(), Gambit::Spectrum::get_HE(), Gambit::DecayBit::MSSM_H::lambda(), LOCAL_INFO, Gambit::logger(), MajoranaSingletDM_Z2_spectrum, Gambit::Par::mass1, Gambit::pi, Gambit::Par::Pole_Mass, Gambit::Scanner::pow(), Gambit::DecayTable::Entry::set_BF(), v0, and Gambit::DecayTable::Entry::width_in_GeV.

2912  {
2913  using namespace Pipes::MajoranaSingletDM_Higgs_decays;
2914 
2915  // Get the spectrum information
2917  const SubSpectrum& he = spec.get_HE();
2918  double mass = spec.get(Par::Pole_Mass,"X");
2919  double lambda = he.get(Par::dimensionless,"lX");
2920  double cxi = std::cos(he.get(Par::dimensionless,"xi"));
2921  double v0 = he.get(Par::mass1,"vev");
2922  double mhpole = spec.get(Par::Pole_Mass,"h0_1");
2923 
2924  // Get the reference SM Higgs decays
2925  result = *Dep::Reference_SM_Higgs_decay_rates;
2926 
2927  // Add the h -> XX width to the total
2928  double massratio2 = pow(mass/mhpole,2);
2929  double lfactor = (1 - 4*massratio2*pow(cxi,2));
2930  double gamma = (2.0*mass <= mhpole) ? ((mhpole*pow(v0*lambda,2))/(16.0*pi)) * sqrt(1.0 - 4.0*massratio2) * lfactor : 0.0;
2931  result.width_in_GeV = result.width_in_GeV + gamma;
2932 
2933  // Print out the h -> XX width for debugging
2934  logger() << "Gamma (h -> XX) = " << gamma << " GeV" << std::endl;
2935 
2936  // Rescale the SM decay branching fractions.
2937  double wscaling = Dep::Reference_SM_Higgs_decay_rates->width_in_GeV/result.width_in_GeV;
2938  for (auto it = result.channels.begin(); it != result.channels.end(); ++it)
2939  {
2940  it->second.first *= wscaling; // rescale BF
2941  it->second.second *= wscaling; // rescale error on BF
2942  }
2943 
2944  // Add the h->XX branching fraction
2945  result.set_BF(gamma/result.width_in_GeV, 0.0, "X", "X");
2946 
2947  // Make sure the width is sensible.
2948  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
2949  }
Spectrum Spectrum Spectrum Spectrum Spectrum MajoranaSingletDM_Z2_spectrum
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
START_MODEL v0
void MajoranaSingletDM_Higgs_decays(DecayTable::Entry &result)
Add the decay of Higgs to Majorana fermions for the MajoranaSingletDM models (see arXiv:1512...
Definition: DecayBit.cpp:2911
const double pi
Logging::LogMaster & logger()
Function to retrieve a reference to the Gambit global log object.
Definition: logger.cpp:95
Spectrum Spectrum
double lambda(double x, double y, double z)
Definition: MSSM_H.hpp:38
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:

◆ MajoranaSingletDM_inv_Higgs_BF()

void Gambit::DecayBit::MajoranaSingletDM_inv_Higgs_BF ( double BF)

Branching fraction for Higgs into Majorana singlet DM

Parameters
BF$\textrm{BR}(h\to X X)$

Definition at line 3384 of file DecayBit.cpp.

3385  {
3390  using namespace Pipes::MajoranaSingletDM_inv_Higgs_BF;
3391  BF = Dep::Higgs_decay_rates->BF("X", "X");
3392  }
void MajoranaSingletDM_inv_Higgs_BF(double &BF)
Definition: DecayBit.cpp:3384

◆ MSSM_h0_1_decays()

void Gambit::DecayBit::MSSM_h0_1_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: h0_1.

Definition at line 662 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

663  {
664  using namespace Pipes::MSSM_h0_1_decays;
665  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
666 
667  result.calculator = BEreq::cb_widthhl_hdec.origin();
668  result.calculator_version = BEreq::cb_widthhl_hdec.version();
669 
670  result.width_in_GeV = BEreq::cb_widthhl_hdec->hlwdth;
671  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrb : 0.0), 0.0, "b", "bbar");
672  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrl : 0.0), 0.0, "tau+", "tau-");
673  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrm : 0.0), 0.0, "mu+", "mu-");
674  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrs : 0.0), 0.0, "s", "sbar");
675  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrc : 0.0), 0.0, "c", "cbar");
676  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrt : 0.0), 0.0, "t", "tbar");
677  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrg : 0.0), 0.0, "g", "g");
678  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrga : 0.0), 0.0, "gamma", "gamma");
679  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrzga : 0.0), 0.0, "gamma", "Z0");
680  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrw : 0.0), 0.0, "W+", "W-");
681  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrhw/2.0 : 0.0), 0.0, "W+", "H-");
682  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrhw/2.0 : 0.0), 0.0, "W-", "H+");
683  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_widthhl_hdec->hlbrz : 0.0), 0.0, "Z0", "Z0");
684  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsc(1,1) : 0.0), 0.0, "~chi+_1", "~chi-_1");
685  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsc(2,2) : 0.0), 0.0, "~chi+_2", "~chi-_2");
686  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsc(1,2) : 0.0), 0.0, "~chi+_1", "~chi-_2");
687  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsc(2,1) : 0.0), 0.0, "~chi+_2", "~chi-_1");
688  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsn(1,1) : 0.0), 0.0, "~chi0_1", "~chi0_1");
689  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsn(2,2) : 0.0), 0.0, "~chi0_2", "~chi0_2");
690  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsn(3,3) : 0.0), 0.0, "~chi0_3", "~chi0_3");
691  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsn(4,4) : 0.0), 0.0, "~chi0_4", "~chi0_4");
692  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsn(1,2)*2.0 : 0.0), 0.0, "~chi0_1", "~chi0_2");
693  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsn(1,3)*2.0 : 0.0), 0.0, "~chi0_1", "~chi0_3");
694  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsn(1,4)*2.0 : 0.0), 0.0, "~chi0_1", "~chi0_4");
695  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsn(2,3)*2.0 : 0.0), 0.0, "~chi0_2", "~chi0_3");
696  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsn(2,4)*2.0 : 0.0), 0.0, "~chi0_2", "~chi0_4");
697  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisusy_hdec->hlbrsn(3,4)*2.0 : 0.0), 0.0, "~chi0_3", "~chi0_4");
698 
699  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsqul/2.0 : 0.0), 0.0, psn.isul, psn.isulbar);
700  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsqur/2.0 : 0.0), 0.0, psn.isur, psn.isurbar);
701  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsqul/2.0 : 0.0), 0.0, psn.iscl, psn.isclbar);
702  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsqur/2.0 : 0.0), 0.0, psn.iscr, psn.iscrbar);
703  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlst(1,1) : 0.0), 0.0, psn.ist1, psn.ist1bar);
704  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlst(2,2) : 0.0), 0.0, psn.ist2, psn.ist2bar);
705  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlst(1,2) : 0.0), 0.0, psn.ist1, psn.ist2bar);
706  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlst(2,1) : 0.0), 0.0, psn.ist2, psn.ist1bar);
707  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsqdl/2.0 : 0.0), 0.0, psn.isdl, psn.isdlbar);
708  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsqdr/2.0 : 0.0), 0.0, psn.isdr, psn.isdrbar);
709  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsqdl/2.0 : 0.0), 0.0, psn.issl, psn.isslbar);
710  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsqdr/2.0 : 0.0), 0.0, psn.issr, psn.issrbar);
711  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsb(1,1) : 0.0), 0.0, psn.isb1, psn.isb1bar);
712  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsb(2,2) : 0.0), 0.0, psn.isb2, psn.isb2bar);
713  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsb(1,2) : 0.0), 0.0, psn.isb1, psn.isb2bar);
714  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsb(2,1) : 0.0), 0.0, psn.isb2, psn.isb1bar);
715  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlslel/2.0 : 0.0), 0.0, psn.isell, psn.isellbar);
716  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsler/2.0 : 0.0), 0.0, psn.iselr, psn.iselrbar);
717  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlslel/2.0 : 0.0), 0.0, psn.ismul, psn.ismulbar);
718  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlsler/2.0 : 0.0), 0.0, psn.ismur, psn.ismurbar);
719  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlstau(1,1) : 0.0), 0.0, psn.istau1, psn.istau1bar);
720  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlstau(2,2) : 0.0), 0.0, psn.istau2, psn.istau2bar);
721  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlstau(1,2) : 0.0), 0.0, psn.istau1, psn.istau2bar);
722  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlstau(2,1) : 0.0), 0.0, psn.istau2, psn.istau1bar);
723  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlslnl/3.0 : 0.0), 0.0, psn.isnel, psn.isnelbar);
724  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlslnl/3.0 : 0.0), 0.0, psn.isnmul, psn.isnmulbar);
725  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_wisfer_hdec->bhlslnl/3.0 : 0.0), 0.0, psn.isntaul, psn.isntaulbar);
726 
727  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"), true);
728  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void MSSM_h0_1_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: h0_1.
Definition: DecayBit.cpp:662
Here is the call graph for this function:

◆ MSSM_inv_Higgs_BF()

void Gambit::DecayBit::MSSM_inv_Higgs_BF ( double BF)

Branching fraction for Higgs into pair of lightest neutralinos

Warning
Tree-level formulas
Assumes decoupling limit for Higgs mixing angle

\[ \alpha = \beta - \frac12 \pi \]

Only includes neutralinos, charginos and SM-like width in total width
Parameters
BF$\textrm{BR}(h\to\chi^0_1\chi^0_1)$

Definition at line 3266 of file DecayBit.cpp.

References alpha, beta, compute_SM_higgs_decays(), Gambit::Par::dimensionless, Gambit::DecayBit::MSSM_H::gamma_h_chi(), Gambit::DecayBit::MSSM_H::gamma_h_chi_0(), Gambit::DecayBit::SM_Z::gamma_inv, Gambit::SubSpectrum::get(), Gambit::Spectrum::get(), Gambit::SMInputs::GF, LOCAL_INFO, mh, MSSM_spectrum, mw, Gambit::pi, Gambit::Par::Pole_Mass, Gambit::Par::Pole_Mixing, Gambit::SubSpectrum::safeget(), and Gambit::DecayTable::Entry::width_in_GeV.

3267  {
3281  using namespace Pipes::MSSM_inv_Higgs_BF;
3282  const Spectrum& spec = *Dep::MSSM_spectrum;
3283  const SubSpectrum& MSSM = Dep::MSSM_spectrum->get_HE();
3284  const SMInputs& SM = Dep::MSSM_spectrum->get_SMInputs();
3285 
3286  // Neutralino masses with phases
3287  std::array<double, 4> m_0;
3288  for (int i = 0; i <= 3; i += 1)
3289  {
3290  m_0[i] = spec.get(Par::Pole_Mass, "~chi0", i + 1);
3291  }
3292 
3293  // Neutralino mixing matrix
3294  std::array<std::array<double, 4>, 4> Z;
3295  for (int i = 0; i <= 3; i += 1)
3296  {
3297  for (int j = 0; j <= 3; j += 1)
3298  {
3299  Z[i][j] = MSSM.get(Par::Pole_Mixing, "~chi0", i + 1, j + 1);
3300  }
3301  }
3302 
3303  // Chargino masses
3304  std::array<double, 2> m_pm;
3305  for (int i = 0; i <= 1; i += 1)
3306  {
3307  m_pm[i] = spec.get(Par::Pole_Mass, "~chi+", i + 1);
3308  }
3309 
3310  // Chargino mixing matrices
3311  std::array<std::array<double, 2>, 2> U, V;
3312  for (int i = 0; i <= 1; i += 1)
3313  {
3314  for (int j = 0; j <= 1; j += 1)
3315  {
3316  U[i][j] = MSSM.get(Par::Pole_Mixing, "~chi-", i + 1, j + 1);
3317  V[i][j] = MSSM.get(Par::Pole_Mixing, "~chi+", i + 1, j + 1);
3318  }
3319  }
3320 
3321  // SM parameters
3322  const double mh = MSSM.get(Par::Pole_Mass, "h0_1");
3323  const double mw = MSSM.get(Par::Pole_Mass, "W+");
3324  const double GF = SM.GF;
3325  const double sw2 = MSSM.safeget(Par::dimensionless, "sinW2");
3326 
3327  // Higgs mixing angle
3328  const double beta = atan(MSSM.safeget(Par::dimensionless, "tanbeta"));
3329  const double alpha = beta - 0.5 * pi;
3330 
3331  // Higgs invisible width
3332  double gamma_inv = 0.;
3333  try
3334  {
3335  gamma_inv = MSSM_H::gamma_h_chi_0(0, 0, m_0, Z, alpha, mh, mw, GF, sw2);
3336  }
3337  catch (const std::invalid_argument& e)
3338  {
3339  DecayBit_error().raise(LOCAL_INFO, e.what());
3340  }
3341 
3342  // SM-like Higgs width
3343  DecayTable::Entry SM_h;
3344  compute_SM_higgs_decays(SM_h, mh);
3345  const double gamma_SM = SM_h.width_in_GeV;
3346 
3347  // Width to neutralinos and charginos
3348  double gamma_chi = 0.;
3349  try
3350  {
3351  gamma_chi = MSSM_H::gamma_h_chi(m_pm, m_0, U, V, Z, alpha, mh, mw, GF, sw2);
3352  }
3353  catch (const std::invalid_argument& e)
3354  {
3355  DecayBit_error().raise(LOCAL_INFO, e.what());
3356  }
3357 
3358  // Total Higgs width
3359  double gamma_tot = gamma_SM + gamma_chi;
3360 
3361  BF = gamma_inv / gamma_tot;
3362  }
Spectrum Spectrum Spectrum mw
START_MODEL beta
Definition: Axions.hpp:35
double gamma_h_chi(std::array< double, 2 > m_pm, std::array< double, 4 > m_0, std::array< std::array< double, 2 >, 2 > U, std::array< std::array< double, 2 >, 2 > V, std::array< std::array< double, 4 >, 4 > Z, double alpha, double mh=125., double mw=80.385, double GF=1.1663787e-5, double sw2=0.22)
Definition: MSSM_H.hpp:174
#define LOCAL_INFO
Definition: local_info.hpp:34
constexpr struct Gambit::DecayBit::SM_Z::@0 gamma_inv
<ahref=" http://pdglive.lbl.gov/BranchingRatio.action?desig=9&parCode=S044 ">PDG measurement of invis...
START_MODEL alpha
const double pi
void compute_SM_higgs_decays(DecayTable::Entry &result, double mh)
Populate SM Higgs decay channels for a higgs mass of m_h.
Definition: DecayBit.cpp:114
double gamma_h_chi_0(int i, int j, std::array< double, 4 > m, std::array< std::array< double, 4 >, 4 > Z, double alpha, double mh=125., double mw=80.385, double GF=1.1663787e-5, double sw2=0.22)
Definition: MSSM_H.hpp:90
Spectrum Spectrum
Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum mh
void MSSM_inv_Higgs_BF(double &BF)
Definition: DecayBit.cpp:3266
Here is the call graph for this function:

◆ mu_minus_decays()

void Gambit::DecayBit::mu_minus_decays ( DecayTable::Entry result)

Definition at line 445 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

445 { result = CP_conjugate(*Pipes::mu_minus_decays::Dep::mu_plus_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mu_plus_decays()

void Gambit::DecayBit::mu_plus_decays ( DecayTable::Entry result)

SM decays: mu+ Reference: 2017 PDG.

Definition at line 329 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, Gambit::gambit_version(), Gambit::DecayTable::Entry::negative_error, Gambit::DecayTable::Entry::positive_error, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

330  {
331  result.calculator = "GAMBIT::DecayBit";
332  result.calculator_version = gambit_version();
333  result.width_in_GeV = 2.9959837e-19;
334  result.positive_error = 3.0e-25;
335  result.negative_error = 3.0e-25;
336  result.set_BF(1.0, 0.0, "e+", "nu_e", "nubar_mu");
337  }
str & gambit_version()
Statically construct a string containing the full GAMBIT version information and return a reference t...
Definition: version.cpp:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ neutralino_1_decays()

void Gambit::DecayBit::neutralino_1_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: neutralino_1.

Definition at line 1729 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1730  {
1731  using namespace Pipes::neutralino_1_decays;
1732  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1733 
1734  result.calculator = BEreq::cb_sd_neutwidth.origin();
1735  result.calculator_version = BEreq::cb_sd_neutwidth.version();
1736 
1737  result.width_in_GeV = BEreq::cb_sd_neutwidth->neuttot(1);
1738  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(1,1) : 0.0), 0.0, "~chi+_1", "W-");
1739  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(1,1) : 0.0), 0.0, "~chi-_1", "W+");
1740  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(1,2) : 0.0), 0.0, "~chi+_2", "W-");
1741  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(1,2) : 0.0), 0.0, "~chi-_2", "W+");
1742  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(1,1) : 0.0), 0.0, "~chi+_1", "H-");
1743  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(1,1) : 0.0), 0.0, "~chi-_1", "H+");
1744  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(1,2) : 0.0), 0.0, "~chi+_2", "H-");
1745  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(1,2) : 0.0), 0.0, "~chi-_2", "H+");
1746  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(1) : 0.0), 0.0, psn.isul, "ubar");
1747  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(1) : 0.0), 0.0, psn.isulbar, "u");
1748  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(1) : 0.0), 0.0, psn.isur, "ubar");
1749  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(1) : 0.0), 0.0, psn.isurbar, "u");
1750  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(1) : 0.0), 0.0, psn.isdl, "dbar");
1751  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(1) : 0.0), 0.0, psn.isdlbar, "d");
1752  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(1) : 0.0), 0.0, psn.isdr, "dbar");
1753  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(1) : 0.0), 0.0, psn.isdrbar, "d");
1754  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(1) : 0.0), 0.0, psn.iscl, "cbar");
1755  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(1) : 0.0), 0.0, psn.isclbar, "c");
1756  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(1) : 0.0), 0.0, psn.iscr, "cbar");
1757  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(1) : 0.0), 0.0, psn.iscrbar, "c");
1758  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(1) : 0.0), 0.0, psn.issl, "sbar");
1759  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(1) : 0.0), 0.0, psn.isslbar, "s");
1760  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(1) : 0.0), 0.0, psn.issr, "sbar");
1761  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(1) : 0.0), 0.0, psn.issrbar, "s");
1762  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(1) : 0.0), 0.0, psn.ist1, "tbar");
1763  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(1) : 0.0), 0.0, psn.ist1bar, "t");
1764  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(1) : 0.0), 0.0, psn.ist2, "tbar");
1765  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(1) : 0.0), 0.0, psn.ist2bar, "t");
1766  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(1) : 0.0), 0.0, psn.isb1, "bbar");
1767  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(1) : 0.0), 0.0, psn.isb1bar, "b");
1768  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(1) : 0.0), 0.0, psn.isb2, "bbar");
1769  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(1) : 0.0), 0.0, psn.isb2bar, "b");
1770  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(1) : 0.0), 0.0, psn.isell, "e+");
1771  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(1) : 0.0), 0.0, psn.isellbar, "e-");
1772  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(1) : 0.0), 0.0, psn.iselr, "e+");
1773  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(1) : 0.0), 0.0, psn.iselrbar, "e-");
1774  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(1) : 0.0), 0.0, psn.ismul, "mu+");
1775  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(1) : 0.0), 0.0, psn.ismulbar, "mu-");
1776  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(1) : 0.0), 0.0, psn.ismur, "mu+");
1777  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(1) : 0.0), 0.0, psn.ismurbar, "mu-");
1778  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(1) : 0.0), 0.0, psn.istau1, "tau+");
1779  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(1) : 0.0), 0.0, psn.istau1bar, "tau-");
1780  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(1) : 0.0), 0.0, psn.istau2, "tau+");
1781  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(1) : 0.0), 0.0, psn.istau2bar, "tau-");
1782  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(1) : 0.0), 0.0, psn.isnel, "nubar_e");
1783  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(1) : 0.0), 0.0, psn.isnelbar, "nu_e");
1784  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(1) : 0.0), 0.0, psn.isnmul, "nubar_mu");
1785  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(1) : 0.0), 0.0, psn.isnmulbar, "nu_mu");
1786  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(1) : 0.0), 0.0, psn.isntaul, "nubar_tau");
1787  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(1) : 0.0), 0.0, psn.isntaulbar, "nu_tau");
1788  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(1) : 0.0), 0.0, "~G", "gamma");
1789  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(1) : 0.0), 0.0, "~G", "Z0");
1790  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(1) : 0.0), 0.0, "~G", "h0_1");
1791  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(1) : 0.0), 0.0, "~G", "h0_2");
1792  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(1) : 0.0), 0.0, "~G", "A0");
1793  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(1) : 0.0), 0.0, "~G", "gamma");
1794  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(1) : 0.0), 0.0, "~G", "Z0");
1795  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(1) : 0.0), 0.0, "~G", "h0_1");
1796  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(1) : 0.0), 0.0, "~G", "h0_2");
1797  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(1) : 0.0), 0.0, "~G", "A0");
1798  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(1,1) : 0.0), 0.0, "~chi+_1", "ubar", "d");
1799  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(1,1) : 0.0), 0.0, "~chi-_1", "dbar", "u");
1800  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(1,2) : 0.0), 0.0, "~chi+_2", "ubar", "d");
1801  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(1,2) : 0.0), 0.0, "~chi-_2", "dbar", "u");
1802  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(1,1) : 0.0), 0.0, "~chi+_1", "cbar", "s");
1803  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(1,1) : 0.0), 0.0, "~chi-_1", "sbar", "c");
1804  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(1,2) : 0.0), 0.0, "~chi+_2", "cbar", "s");
1805  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(1,2) : 0.0), 0.0, "~chi-_2", "sbar", "c");
1806  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(1,1) : 0.0), 0.0, "~chi+_1", "tbar", "b");
1807  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(1,1) : 0.0), 0.0, "~chi-_1", "bbar", "t");
1808  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(1,2) : 0.0), 0.0, "~chi+_2", "tbar", "b");
1809  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(1,2) : 0.0), 0.0, "~chi-_2", "bbar", "t");
1810  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(1,1) : 0.0), 0.0, "~chi+_1", "nubar_e", "e-");
1811  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(1,1) : 0.0), 0.0, "~chi-_1", "nu_e", "e+");
1812  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(1,2) : 0.0), 0.0, "~chi+_2", "nubar_e", "e-");
1813  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(1,2) : 0.0), 0.0, "~chi-_2", "nu_e", "e+");
1814  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(1,1) : 0.0), 0.0, "~chi+_1", "nubar_mu", "mu-");
1815  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(1,1) : 0.0), 0.0, "~chi-_1", "nu_mu", "mu+");
1816  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(1,2) : 0.0), 0.0, "~chi+_2", "nubar_mu", "mu-");
1817  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(1,2) : 0.0), 0.0, "~chi-_2", "nu_mu", "mu+");
1818  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(1,1) : 0.0), 0.0, "~chi+_1", "nubar_tau", "tau-");
1819  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(1,1) : 0.0), 0.0, "~chi-_1", "nu_tau", "tau+");
1820  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(1,2) : 0.0), 0.0, "~chi+_2", "nubar_tau", "tau-");
1821  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(1,2) : 0.0), 0.0, "~chi-_2", "nu_tau", "tau+");
1822  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglup(1) : 0.0), 0.0, "~g", "ubar", "u");
1823  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgldo(1) : 0.0), 0.0, "~g", "dbar", "d");
1824  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglch(1) : 0.0), 0.0, "~g", "cbar", "c");
1825  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglst(1) : 0.0), 0.0, "~g", "sbar", "s");
1826  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgltop(1) : 0.0), 0.0, "~g", "tbar", "t");
1827  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglbot(1) : 0.0), 0.0, "~g", "bbar", "b");
1828 
1829  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1830  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void neutralino_1_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: neutralino_1.
Definition: DecayBit.cpp:1729
Here is the call graph for this function:
Here is the caller graph for this function:

◆ neutralino_2_decays()

void Gambit::DecayBit::neutralino_2_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: neutralino_2.

Definition at line 1833 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1834  {
1835  using namespace Pipes::neutralino_2_decays;
1836  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1837 
1838  result.calculator = BEreq::cb_sd_neutwidth.origin();
1839  result.calculator_version = BEreq::cb_sd_neutwidth.version();
1840 
1841  result.width_in_GeV = BEreq::cb_sd_neutwidth->neuttot(2);
1842  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(2,1) : 0.0), 0.0, "~chi0_1", "Z0");
1843  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(2,1) : 0.0), 0.0, "~chi+_1", "W-");
1844  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(2,1) : 0.0), 0.0, "~chi-_1", "W+");
1845  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(2,2) : 0.0), 0.0, "~chi+_2", "W-");
1846  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(2,2) : 0.0), 0.0, "~chi-_2", "W+");
1847  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(2,1) : 0.0), 0.0, "~chi0_1", "h0_1");
1848  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(2,1) : 0.0), 0.0, "~chi0_1", "h0_2");
1849  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(2,1) : 0.0), 0.0, "~chi0_1", "A0");
1850  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(2,1) : 0.0), 0.0, "~chi+_1", "H-");
1851  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(2,1) : 0.0), 0.0, "~chi-_1", "H+");
1852  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(2,2) : 0.0), 0.0, "~chi+_2", "H-");
1853  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(2,2) : 0.0), 0.0, "~chi-_2", "H+");
1854  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(2) : 0.0), 0.0, psn.isul, "ubar");
1855  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(2) : 0.0), 0.0, psn.isulbar, "u");
1856  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(2) : 0.0), 0.0, psn.isur, "ubar");
1857  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(2) : 0.0), 0.0, psn.isurbar, "u");
1858  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(2) : 0.0), 0.0, psn.isdl, "dbar");
1859  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(2) : 0.0), 0.0, psn.isdlbar, "d");
1860  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(2) : 0.0), 0.0, psn.isdr, "dbar");
1861  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(2) : 0.0), 0.0, psn.isdrbar, "d");
1862  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(2) : 0.0), 0.0, psn.iscl, "cbar");
1863  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(2) : 0.0), 0.0, psn.isclbar, "c");
1864  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(2) : 0.0), 0.0, psn.iscr, "cbar");
1865  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(2) : 0.0), 0.0, psn.iscrbar, "c");
1866  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(2) : 0.0), 0.0, psn.issl, "sbar");
1867  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(2) : 0.0), 0.0, psn.isslbar, "s");
1868  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(2) : 0.0), 0.0, psn.issr, "sbar");
1869  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(2) : 0.0), 0.0, psn.issrbar, "s");
1870  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(2) : 0.0), 0.0, psn.ist1, "tbar");
1871  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(2) : 0.0), 0.0, psn.ist1bar, "t");
1872  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(2) : 0.0), 0.0, psn.ist2, "tbar");
1873  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(2) : 0.0), 0.0, psn.ist2bar, "t");
1874  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(2) : 0.0), 0.0, psn.isb1, "bbar");
1875  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(2) : 0.0), 0.0, psn.isb1bar, "b");
1876  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(2) : 0.0), 0.0, psn.isb2, "bbar");
1877  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(2) : 0.0), 0.0, psn.isb2bar, "b");
1878  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(2) : 0.0), 0.0, psn.isell, "e+");
1879  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(2) : 0.0), 0.0, psn.isellbar, "e-");
1880  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(2) : 0.0), 0.0, psn.iselr, "e+");
1881  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(2) : 0.0), 0.0, psn.iselrbar, "e-");
1882  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(2) : 0.0), 0.0, psn.ismul, "mu+");
1883  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(2) : 0.0), 0.0, psn.ismulbar, "mu-");
1884  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(2) : 0.0), 0.0, psn.ismur, "mu+");
1885  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(2) : 0.0), 0.0, psn.ismurbar, "mu-");
1886  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(2) : 0.0), 0.0, psn.istau1, "tau+");
1887  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(2) : 0.0), 0.0, psn.istau1bar, "tau-");
1888  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(2) : 0.0), 0.0, psn.istau2, "tau+");
1889  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(2) : 0.0), 0.0, psn.istau2bar, "tau-");
1890  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(2) : 0.0), 0.0, psn.isnel, "nubar_e");
1891  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(2) : 0.0), 0.0, psn.isnelbar, "nu_e");
1892  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(2) : 0.0), 0.0, psn.isnmul, "nubar_mu");
1893  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(2) : 0.0), 0.0, psn.isnmulbar, "nu_mu");
1894  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(2) : 0.0), 0.0, psn.isntaul, "nubar_tau");
1895  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(2) : 0.0), 0.0, psn.isntaulbar, "nu_tau");
1896  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(2) : 0.0), 0.0, "~G", "gamma");
1897  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(2) : 0.0), 0.0, "~G", "Z0");
1898  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(2) : 0.0), 0.0, "~G", "h0_1");
1899  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(2) : 0.0), 0.0, "~G", "h0_2");
1900  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(2) : 0.0), 0.0, "~G", "A0");
1901  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(2,1) : 0.0), 0.0, "~chi0_1", "gamma");
1902  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(2) : 0.0), 0.0, "~G", "gamma");
1903  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(2) : 0.0), 0.0, "~G", "Z0");
1904  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(2) : 0.0), 0.0, "~G", "h0_1");
1905  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(2) : 0.0), 0.0, "~G", "h0_2");
1906  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(2) : 0.0), 0.0, "~G", "A0");
1907  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(2,1) : 0.0), 0.0, "~chi0_1", "ubar", "u");
1908  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(2,1) : 0.0), 0.0, "~chi0_1", "dbar", "d");
1909  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(2,1) : 0.0), 0.0, "~chi0_1", "cbar", "c");
1910  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(2,1) : 0.0), 0.0, "~chi0_1", "sbar", "s");
1911  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(2,1) : 0.0), 0.0, "~chi0_1", "tbar", "t");
1912  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(2,1) : 0.0), 0.0, "~chi0_1", "bbar", "b");
1913  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(2,1) : 0.0), 0.0, "~chi0_1", "e+", "e-");
1914  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(2,1) : 0.0), 0.0, "~chi0_1", "mu+", "mu-");
1915  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(2,1) : 0.0), 0.0, "~chi0_1", "tau+", "tau-");
1916  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnue(2,1) : 0.0), 0.0, "~chi0_1", "nubar_e", "nu_e");
1917  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnumu(2,1) : 0.0), 0.0, "~chi0_1", "nubar_mu", "nu_mu");
1918  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnutau(2,1) : 0.0), 0.0, "~chi0_1", "nubar_tau", "nu_tau");
1919  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(2,1) : 0.0), 0.0, "~chi+_1", "ubar", "d");
1920  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(2,1) : 0.0), 0.0, "~chi-_1", "dbar", "u");
1921  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(2,2) : 0.0), 0.0, "~chi+_2", "ubar", "d");
1922  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(2,2) : 0.0), 0.0, "~chi-_2", "dbar", "u");
1923  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(2,1) : 0.0), 0.0, "~chi+_1", "cbar", "s");
1924  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(2,1) : 0.0), 0.0, "~chi-_1", "sbar", "c");
1925  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(2,2) : 0.0), 0.0, "~chi+_2", "cbar", "s");
1926  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(2,2) : 0.0), 0.0, "~chi-_2", "sbar", "c");
1927  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(2,1) : 0.0), 0.0, "~chi+_1", "tbar", "b");
1928  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(2,1) : 0.0), 0.0, "~chi-_1", "bbar", "t");
1929  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(2,2) : 0.0), 0.0, "~chi+_2", "tbar", "b");
1930  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(2,2) : 0.0), 0.0, "~chi-_2", "bbar", "t");
1931  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(2,1) : 0.0), 0.0, "~chi+_1", "nubar_e", "e-");
1932  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(2,1) : 0.0), 0.0, "~chi-_1", "nu_e", "e+");
1933  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(2,2) : 0.0), 0.0, "~chi+_2", "nubar_e", "e-");
1934  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(2,2) : 0.0), 0.0, "~chi-_2", "nu_e", "e+");
1935  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(2,1) : 0.0), 0.0, "~chi+_1", "nubar_mu", "mu-");
1936  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(2,1) : 0.0), 0.0, "~chi-_1", "nu_mu", "mu+");
1937  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(2,2) : 0.0), 0.0, "~chi+_2", "nubar_mu", "mu-");
1938  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(2,2) : 0.0), 0.0, "~chi-_2", "nu_mu", "mu+");
1939  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(2,1) : 0.0), 0.0, "~chi+_1", "nubar_tau", "tau-");
1940  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(2,1) : 0.0), 0.0, "~chi-_1", "nu_tau", "tau+");
1941  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(2,2) : 0.0), 0.0, "~chi+_2", "nubar_tau", "tau-");
1942  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(2,2) : 0.0), 0.0, "~chi-_2", "nu_tau", "tau+");
1943  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglup(2) : 0.0), 0.0, "~g", "ubar", "u");
1944  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgldo(2) : 0.0), 0.0, "~g", "dbar", "d");
1945  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglch(2) : 0.0), 0.0, "~g", "cbar", "c");
1946  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglst(2) : 0.0), 0.0, "~g", "sbar", "s");
1947  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgltop(2) : 0.0), 0.0, "~g", "tbar", "t");
1948  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglbot(2) : 0.0), 0.0, "~g", "bbar", "b");
1949 
1950  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1951  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void neutralino_2_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: neutralino_2.
Definition: DecayBit.cpp:1833
Here is the call graph for this function:
Here is the caller graph for this function:

◆ neutralino_3_decays()

void Gambit::DecayBit::neutralino_3_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: neutralino_3.

Definition at line 1954 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1955  {
1956  using namespace Pipes::neutralino_3_decays;
1957  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1958 
1959  result.calculator = BEreq::cb_sd_neutwidth.origin();
1960  result.calculator_version = BEreq::cb_sd_neutwidth.version();
1961 
1962  result.width_in_GeV = BEreq::cb_sd_neutwidth->neuttot(3);
1963  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(3,1) : 0.0), 0.0, "~chi0_1", "Z0");
1964  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(3,2) : 0.0), 0.0, "~chi0_2", "Z0");
1965  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(3,1) : 0.0), 0.0, "~chi+_1", "W-");
1966  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(3,1) : 0.0), 0.0, "~chi-_1", "W+");
1967  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(3,2) : 0.0), 0.0, "~chi+_2", "W-");
1968  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(3,2) : 0.0), 0.0, "~chi-_2", "W+");
1969  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(3,1) : 0.0), 0.0, "~chi0_1", "h0_1");
1970  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(3,1) : 0.0), 0.0, "~chi0_1", "h0_2");
1971  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(3,1) : 0.0), 0.0, "~chi0_1", "A0");
1972  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(3,2) : 0.0), 0.0, "~chi0_2", "h0_1");
1973  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(3,2) : 0.0), 0.0, "~chi0_2", "h0_2");
1974  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(3,2) : 0.0), 0.0, "~chi0_2", "A0");
1975  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(3,1) : 0.0), 0.0, "~chi+_1", "H-");
1976  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(3,1) : 0.0), 0.0, "~chi-_1", "H+");
1977  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(3,2) : 0.0), 0.0, "~chi+_2", "H-");
1978  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(3,2) : 0.0), 0.0, "~chi-_2", "H+");
1979  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(3) : 0.0), 0.0, psn.isul, "ubar");
1980  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(3) : 0.0), 0.0, psn.isulbar, "u");
1981  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(3) : 0.0), 0.0, psn.isur, "ubar");
1982  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(3) : 0.0), 0.0, psn.isurbar, "u");
1983  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(3) : 0.0), 0.0, psn.isdl, "dbar");
1984  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(3) : 0.0), 0.0, psn.isdlbar, "d");
1985  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(3) : 0.0), 0.0, psn.isdr, "dbar");
1986  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(3) : 0.0), 0.0, psn.isdrbar, "d");
1987  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(3) : 0.0), 0.0, psn.iscl, "cbar");
1988  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(3) : 0.0), 0.0, psn.isclbar, "c");
1989  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(3) : 0.0), 0.0, psn.iscr, "cbar");
1990  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(3) : 0.0), 0.0, psn.iscrbar, "c");
1991  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(3) : 0.0), 0.0, psn.issl, "sbar");
1992  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(3) : 0.0), 0.0, psn.isslbar, "s");
1993  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(3) : 0.0), 0.0, psn.issr, "sbar");
1994  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(3) : 0.0), 0.0, psn.issrbar, "s");
1995  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(3) : 0.0), 0.0, psn.ist1, "tbar");
1996  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(3) : 0.0), 0.0, psn.ist1bar, "t");
1997  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(3) : 0.0), 0.0, psn.ist2, "tbar");
1998  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(3) : 0.0), 0.0, psn.ist2bar, "t");
1999  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(3) : 0.0), 0.0, psn.isb1, "bbar");
2000  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(3) : 0.0), 0.0, psn.isb1bar, "b");
2001  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(3) : 0.0), 0.0, psn.isb2, "bbar");
2002  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(3) : 0.0), 0.0, psn.isb2bar, "b");
2003  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(3) : 0.0), 0.0, psn.isell, "e+");
2004  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(3) : 0.0), 0.0, psn.isellbar, "e-");
2005  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(3) : 0.0), 0.0, psn.iselr, "e+");
2006  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(3) : 0.0), 0.0, psn.iselrbar, "e-");
2007  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(3) : 0.0), 0.0, psn.ismul, "mu+");
2008  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(3) : 0.0), 0.0, psn.ismulbar, "mu-");
2009  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(3) : 0.0), 0.0, psn.ismur, "mu+");
2010  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(3) : 0.0), 0.0, psn.ismurbar, "mu-");
2011  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(3) : 0.0), 0.0, psn.istau1, "tau+");
2012  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(3) : 0.0), 0.0, psn.istau1bar, "tau-");
2013  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(3) : 0.0), 0.0, psn.istau2, "tau+");
2014  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(3) : 0.0), 0.0, psn.istau2bar, "tau-");
2015  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(3) : 0.0), 0.0, psn.isnel, "nubar_e");
2016  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(3) : 0.0), 0.0, psn.isnelbar, "nu_e");
2017  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(3) : 0.0), 0.0, psn.isnmul, "nubar_mu");
2018  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(3) : 0.0), 0.0, psn.isnmulbar, "nu_mu");
2019  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(3) : 0.0), 0.0, psn.isntaul, "nubar_tau");
2020  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(3) : 0.0), 0.0, psn.isntaulbar, "nu_tau");
2021  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(3) : 0.0), 0.0, "~G", "gamma");
2022  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(3) : 0.0), 0.0, "~G", "Z0");
2023  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(3) : 0.0), 0.0, "~G", "h0_1");
2024  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(3) : 0.0), 0.0, "~G", "h0_2");
2025  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(3) : 0.0), 0.0, "~G", "A0");
2026  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(3,1) : 0.0), 0.0, "~chi0_1", "gamma");
2027  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(3,2) : 0.0), 0.0, "~chi0_2", "gamma");
2028  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(3) : 0.0), 0.0, "~G", "gamma");
2029  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(3) : 0.0), 0.0, "~G", "Z0");
2030  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(3) : 0.0), 0.0, "~G", "h0_1");
2031  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(3) : 0.0), 0.0, "~G", "h0_2");
2032  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(3) : 0.0), 0.0, "~G", "A0");
2033  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(3,1) : 0.0), 0.0, "~chi0_1", "ubar", "u");
2034  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(3,1) : 0.0), 0.0, "~chi0_1", "dbar", "d");
2035  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(3,1) : 0.0), 0.0, "~chi0_1", "cbar", "c");
2036  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(3,1) : 0.0), 0.0, "~chi0_1", "sbar", "s");
2037  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(3,1) : 0.0), 0.0, "~chi0_1", "tbar", "t");
2038  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(3,1) : 0.0), 0.0, "~chi0_1", "bbar", "b");
2039  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(3,1) : 0.0), 0.0, "~chi0_1", "e+", "e-");
2040  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(3,1) : 0.0), 0.0, "~chi0_1", "mu+", "mu-");
2041  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(3,1) : 0.0), 0.0, "~chi0_1", "tau+", "tau-");
2042  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnue(3,1) : 0.0), 0.0, "~chi0_1", "nubar_e", "nu_e");
2043  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnumu(3,1) : 0.0), 0.0, "~chi0_1", "nubar_mu", "nu_mu");
2044  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnutau(3,1) : 0.0), 0.0, "~chi0_1", "nubar_tau", "nu_tau");
2045  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(3,2) : 0.0), 0.0, "~chi0_2", "ubar", "u");
2046  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(3,2) : 0.0), 0.0, "~chi0_2", "dbar", "d");
2047  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(3,2) : 0.0), 0.0, "~chi0_2", "cbar", "c");
2048  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(3,2) : 0.0), 0.0, "~chi0_2", "sbar", "s");
2049  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(3,2) : 0.0), 0.0, "~chi0_2", "tbar", "t");
2050  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(3,2) : 0.0), 0.0, "~chi0_2", "bbar", "b");
2051  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(3,2) : 0.0), 0.0, "~chi0_2", "e+", "e-");
2052  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(3,2) : 0.0), 0.0, "~chi0_2", "mu+", "mu-");
2053  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(3,2) : 0.0), 0.0, "~chi0_2", "tau+", "tau-");
2054  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnue(3,2) : 0.0), 0.0, "~chi0_2", "nubar_e", "nu_e");
2055  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnumu(3,2) : 0.0), 0.0, "~chi0_2", "nubar_mu", "nu_mu");
2056  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnutau(3,2) : 0.0), 0.0, "~chi0_2", "nubar_tau", "nu_tau");
2057  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(3,1) : 0.0), 0.0, "~chi+_1", "ubar", "d");
2058  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(3,1) : 0.0), 0.0, "~chi-_1", "dbar", "u");
2059  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(3,2) : 0.0), 0.0, "~chi+_2", "ubar", "d");
2060  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(3,2) : 0.0), 0.0, "~chi-_2", "dbar", "u");
2061  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(3,1) : 0.0), 0.0, "~chi+_1", "cbar", "s");
2062  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(3,1) : 0.0), 0.0, "~chi-_1", "sbar", "c");
2063  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(3,2) : 0.0), 0.0, "~chi+_2", "cbar", "s");
2064  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(3,2) : 0.0), 0.0, "~chi-_2", "sbar", "c");
2065  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(3,1) : 0.0), 0.0, "~chi+_1", "tbar", "b");
2066  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(3,1) : 0.0), 0.0, "~chi-_1", "bbar", "t");
2067  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(3,2) : 0.0), 0.0, "~chi+_2", "tbar", "b");
2068  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(3,2) : 0.0), 0.0, "~chi-_2", "bbar", "t");
2069  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(3,1) : 0.0), 0.0, "~chi+_1", "nubar_e", "e-");
2070  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(3,1) : 0.0), 0.0, "~chi-_1", "nu_e", "e+");
2071  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(3,2) : 0.0), 0.0, "~chi+_2", "nubar_e", "e-");
2072  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(3,2) : 0.0), 0.0, "~chi-_2", "nu_e", "e+");
2073  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(3,1) : 0.0), 0.0, "~chi+_1", "nubar_mu", "mu-");
2074  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(3,1) : 0.0), 0.0, "~chi-_1", "nu_mu", "mu+");
2075  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(3,2) : 0.0), 0.0, "~chi+_2", "nubar_mu", "mu-");
2076  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(3,2) : 0.0), 0.0, "~chi-_2", "nu_mu", "mu+");
2077  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(3,1) : 0.0), 0.0, "~chi+_1", "nubar_tau", "tau-");
2078  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(3,1) : 0.0), 0.0, "~chi-_1", "nu_tau", "tau+");
2079  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(3,2) : 0.0), 0.0, "~chi+_2", "nubar_tau", "tau-");
2080  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(3,2) : 0.0), 0.0, "~chi-_2", "nu_tau", "tau+");
2081  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglup(3) : 0.0), 0.0, "~g", "ubar", "u");
2082  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgldo(3) : 0.0), 0.0, "~g", "dbar", "d");
2083  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglch(3) : 0.0), 0.0, "~g", "cbar", "c");
2084  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglst(3) : 0.0), 0.0, "~g", "sbar", "s");
2085  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgltop(3) : 0.0), 0.0, "~g", "tbar", "t");
2086  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglbot(3) : 0.0), 0.0, "~g", "bbar", "b");
2087 
2088  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
2089  }
void neutralino_3_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: neutralino_3.
Definition: DecayBit.cpp:1954
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
Here is the call graph for this function:
Here is the caller graph for this function:

◆ neutralino_4_decays()

void Gambit::DecayBit::neutralino_4_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: neutralino_4.

Definition at line 2092 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

2093  {
2094  using namespace Pipes::neutralino_4_decays;
2095  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
2096 
2097  result.calculator = BEreq::cb_sd_neutwidth.origin();
2098  result.calculator_version = BEreq::cb_sd_neutwidth.version();
2099 
2100  result.width_in_GeV = BEreq::cb_sd_neutwidth->neuttot(4);
2101  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(4,1) : 0.0), 0.0, "~chi0_1", "Z0");
2102  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(4,2) : 0.0), 0.0, "~chi0_2", "Z0");
2103  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(4,3) : 0.0), 0.0, "~chi0_3", "Z0");
2104  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(4,1) : 0.0), 0.0, "~chi+_1", "W-");
2105  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(4,1) : 0.0), 0.0, "~chi-_1", "W+");
2106  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(4,2) : 0.0), 0.0, "~chi+_2", "W-");
2107  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(4,2) : 0.0), 0.0, "~chi-_2", "W+");
2108  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(4,1) : 0.0), 0.0, "~chi0_1", "h0_1");
2109  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(4,1) : 0.0), 0.0, "~chi0_1", "h0_2");
2110  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(4,1) : 0.0), 0.0, "~chi0_1", "A0");
2111  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(4,2) : 0.0), 0.0, "~chi0_2", "h0_1");
2112  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(4,2) : 0.0), 0.0, "~chi0_2", "h0_2");
2113  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(4,2) : 0.0), 0.0, "~chi0_2", "A0");
2114  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(4,3) : 0.0), 0.0, "~chi0_3", "h0_1");
2115  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(4,3) : 0.0), 0.0, "~chi0_3", "h0_2");
2116  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(4,3) : 0.0), 0.0, "~chi0_3", "A0");
2117  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(4,1) : 0.0), 0.0, "~chi+_1", "H-");
2118  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(4,1) : 0.0), 0.0, "~chi-_1", "H+");
2119  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(4,2) : 0.0), 0.0, "~chi+_2", "H-");
2120  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(4,2) : 0.0), 0.0, "~chi-_2", "H+");
2121  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(4) : 0.0), 0.0, psn.isul, "ubar");
2122  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(4) : 0.0), 0.0, psn.isulbar, "u");
2123  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(4) : 0.0), 0.0, psn.isur, "ubar");
2124  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(4) : 0.0), 0.0, psn.isurbar, "u");
2125  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(4) : 0.0), 0.0, psn.isdl, "dbar");
2126  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(4) : 0.0), 0.0, psn.isdlbar, "d");
2127  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(4) : 0.0), 0.0, psn.isdr, "dbar");
2128  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(4) : 0.0), 0.0, psn.isdrbar, "d");
2129  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(4) : 0.0), 0.0, psn.iscl, "cbar");
2130  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(4) : 0.0), 0.0, psn.isclbar, "c");
2131  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(4) : 0.0), 0.0, psn.iscr, "cbar");
2132  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(4) : 0.0), 0.0, psn.iscrbar, "c");
2133  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(4) : 0.0), 0.0, psn.issl, "sbar");
2134  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(4) : 0.0), 0.0, psn.isslbar, "s");
2135  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(4) : 0.0), 0.0, psn.issr, "sbar");
2136  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(4) : 0.0), 0.0, psn.issrbar, "s");
2137  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(4) : 0.0), 0.0, psn.ist1, "tbar");
2138  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(4) : 0.0), 0.0, psn.ist1bar, "t");
2139  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(4) : 0.0), 0.0, psn.ist2, "tbar");
2140  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(4) : 0.0), 0.0, psn.ist2bar, "t");
2141  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(4) : 0.0), 0.0, psn.isb1, "bbar");
2142  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(4) : 0.0), 0.0, psn.isb1bar, "b");
2143  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(4) : 0.0), 0.0, psn.isb2, "bbar");
2144  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(4) : 0.0), 0.0, psn.isb2bar, "b");
2145  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(4) : 0.0), 0.0, psn.isell, "e+");
2146  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(4) : 0.0), 0.0, psn.isellbar, "e-");
2147  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(4) : 0.0), 0.0, psn.iselr, "e+");
2148  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(4) : 0.0), 0.0, psn.iselrbar, "e-");
2149  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(4) : 0.0), 0.0, psn.ismul, "mu+");
2150  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(4) : 0.0), 0.0, psn.ismulbar, "mu-");
2151  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(4) : 0.0), 0.0, psn.ismur, "mu+");
2152  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(4) : 0.0), 0.0, psn.ismurbar, "mu-");
2153  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(4) : 0.0), 0.0, psn.istau1, "tau+");
2154  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(4) : 0.0), 0.0, psn.istau1bar, "tau-");
2155  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(4) : 0.0), 0.0, psn.istau2, "tau+");
2156  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(4) : 0.0), 0.0, psn.istau2bar, "tau-");
2157  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(4) : 0.0), 0.0, psn.isnel, "nubar_e");
2158  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(4) : 0.0), 0.0, psn.isnelbar, "nu_e");
2159  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(4) : 0.0), 0.0, psn.isnmul, "nubar_mu");
2160  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(4) : 0.0), 0.0, psn.isnmulbar, "nu_mu");
2161  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(4) : 0.0), 0.0, psn.isntaul, "nubar_tau");
2162  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(4) : 0.0), 0.0, psn.isntaulbar, "nu_tau");
2163  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(4) : 0.0), 0.0, "~G", "gamma");
2164  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(4) : 0.0), 0.0, "~G", "Z0");
2165  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(4) : 0.0), 0.0, "~G", "h0_1");
2166  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(4) : 0.0), 0.0, "~G", "h0_2");
2167  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(4) : 0.0), 0.0, "~G", "A0");
2168  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(4,1) : 0.0), 0.0, "~chi0_1", "gamma");
2169  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(4,2) : 0.0), 0.0, "~chi0_2", "gamma");
2170  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(4,3) : 0.0), 0.0, "~chi0_3", "gamma");
2171  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(4) : 0.0), 0.0, "~G", "gamma");
2172  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(4) : 0.0), 0.0, "~G", "Z0");
2173  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(4) : 0.0), 0.0, "~G", "h0_1");
2174  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(4) : 0.0), 0.0, "~G", "h0_2");
2175  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(4) : 0.0), 0.0, "~G", "A0");
2176  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(4,1) : 0.0), 0.0, "~chi0_1", "ubar", "u");
2177  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(4,1) : 0.0), 0.0, "~chi0_1", "dbar", "d");
2178  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(4,1) : 0.0), 0.0, "~chi0_1", "cbar", "c");
2179  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(4,1) : 0.0), 0.0, "~chi0_1", "sbar", "s");
2180  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(4,1) : 0.0), 0.0, "~chi0_1", "tbar", "t");
2181  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(4,1) : 0.0), 0.0, "~chi0_1", "bbar", "b");
2182  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(4,1) : 0.0), 0.0, "~chi0_1", "e+", "e-");
2183  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(4,1) : 0.0), 0.0, "~chi0_1", "mu+", "mu-");
2184  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(4,1) : 0.0), 0.0, "~chi0_1", "tau+", "tau-");
2185  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnue(4,1) : 0.0), 0.0, "~chi0_1", "nubar_e", "nu_e");
2186  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnumu(4,1) : 0.0), 0.0, "~chi0_1", "nubar_mu", "nu_mu");
2187  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnutau(4,1) : 0.0), 0.0, "~chi0_1", "nubar_tau", "nu_tau");
2188  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(4,2) : 0.0), 0.0, "~chi0_2", "ubar", "u");
2189  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(4,2) : 0.0), 0.0, "~chi0_2", "dbar", "d");
2190  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(4,2) : 0.0), 0.0, "~chi0_2", "cbar", "c");
2191  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(4,2) : 0.0), 0.0, "~chi0_2", "sbar", "s");
2192  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(4,2) : 0.0), 0.0, "~chi0_2", "tbar", "t");
2193  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(4,2) : 0.0), 0.0, "~chi0_2", "bbar", "b");
2194  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(4,2) : 0.0), 0.0, "~chi0_2", "e+", "e-");
2195  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(4,2) : 0.0), 0.0, "~chi0_2", "mu+", "mu-");
2196  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(4,2) : 0.0), 0.0, "~chi0_2", "tau+", "tau-");
2197  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnue(4,2) : 0.0), 0.0, "~chi0_2", "nubar_e", "nu_e");
2198  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnumu(4,2) : 0.0), 0.0, "~chi0_2", "nubar_mu", "nu_mu");
2199  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnutau(4,2) : 0.0), 0.0, "~chi0_2", "nubar_tau", "nu_tau");
2200  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(4,3) : 0.0), 0.0, "~chi0_3", "ubar", "u");
2201  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(4,3) : 0.0), 0.0, "~chi0_3", "dbar", "d");
2202  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(4,3) : 0.0), 0.0, "~chi0_3", "cbar", "c");
2203  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(4,3) : 0.0), 0.0, "~chi0_3", "sbar", "s");
2204  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(4,3) : 0.0), 0.0, "~chi0_3", "tbar", "t");
2205  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(4,3) : 0.0), 0.0, "~chi0_3", "bbar", "b");
2206  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(4,3) : 0.0), 0.0, "~chi0_3", "e+", "e-");
2207  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(4,3) : 0.0), 0.0, "~chi0_3", "mu+", "mu-");
2208  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(4,3) : 0.0), 0.0, "~chi0_3", "tau+", "tau-");
2209  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnue(4,3) : 0.0), 0.0, "~chi0_3", "nubar_e", "nu_e");
2210  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnumu(4,3) : 0.0), 0.0, "~chi0_3", "nubar_mu", "nu_mu");
2211  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutnutau(4,3) : 0.0), 0.0, "~chi0_3", "nubar_tau", "nu_tau");
2212  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(4,1) : 0.0), 0.0, "~chi+_1", "ubar", "d");
2213  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(4,1) : 0.0), 0.0, "~chi-_1", "dbar", "u");
2214  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(4,2) : 0.0), 0.0, "~chi+_2", "ubar", "d");
2215  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(4,2) : 0.0), 0.0, "~chi-_2", "dbar", "u");
2216  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(4,1) : 0.0), 0.0, "~chi+_1", "cbar", "s");
2217  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(4,1) : 0.0), 0.0, "~chi-_1", "sbar", "c");
2218  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(4,2) : 0.0), 0.0, "~chi+_2", "cbar", "s");
2219  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(4,2) : 0.0), 0.0, "~chi-_2", "sbar", "c");
2220  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(4,1) : 0.0), 0.0, "~chi+_1", "tbar", "b");
2221  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(4,1) : 0.0), 0.0, "~chi-_1", "bbar", "t");
2222  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(4,2) : 0.0), 0.0, "~chi+_2", "tbar", "b");
2223  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(4,2) : 0.0), 0.0, "~chi-_2", "bbar", "t");
2224  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(4,1) : 0.0), 0.0, "~chi+_1", "nubar_e", "e-");
2225  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(4,1) : 0.0), 0.0, "~chi-_1", "nu_e", "e+");
2226  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(4,2) : 0.0), 0.0, "~chi+_2", "nubar_e", "e-");
2227  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(4,2) : 0.0), 0.0, "~chi-_2", "nu_e", "e+");
2228  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(4,1) : 0.0), 0.0, "~chi+_1", "nubar_mu", "mu-");
2229  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(4,1) : 0.0), 0.0, "~chi-_1", "nu_mu", "mu+");
2230  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(4,2) : 0.0), 0.0, "~chi+_2", "nubar_mu", "mu-");
2231  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(4,2) : 0.0), 0.0, "~chi-_2", "nu_mu", "mu+");
2232  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(4,1) : 0.0), 0.0, "~chi+_1", "nubar_tau", "tau-");
2233  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(4,1) : 0.0), 0.0, "~chi-_1", "nu_tau", "tau+");
2234  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(4,2) : 0.0), 0.0, "~chi+_2", "nubar_tau", "tau-");
2235  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(4,2) : 0.0), 0.0, "~chi-_2", "nu_tau", "tau+");
2236  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglup(4) : 0.0), 0.0, "~g", "ubar", "u");
2237  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgldo(4) : 0.0), 0.0, "~g", "dbar", "d");
2238  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglch(4) : 0.0), 0.0, "~g", "cbar", "c");
2239  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglst(4) : 0.0), 0.0, "~g", "sbar", "s");
2240  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgltop(4) : 0.0), 0.0, "~g", "tbar", "t");
2241  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglbot(4) : 0.0), 0.0, "~g", "bbar", "b");
2242 
2243  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
2244  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void neutralino_4_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: neutralino_4.
Definition: DecayBit.cpp:2092
Here is the call graph for this function:
Here is the caller graph for this function:

◆ omega_decays()

void Gambit::DecayBit::omega_decays ( DecayTable::Entry result)

SM decays: omega Reference: 2017 PDG.

Definition at line 421 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, Gambit::gambit_version(), Gambit::DecayTable::Entry::negative_error, Gambit::DecayTable::Entry::positive_error, and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

422  {
423  result.calculator = "GAMBIT::DecayBit";
424  result.calculator_version = gambit_version();
425  result.width_in_GeV = 8.49e-03;
426  result.positive_error = 8.0e-05;
427  result.negative_error = 8.0e-05;
428  }
str & gambit_version()
Statically construct a string containing the full GAMBIT version information and return a reference t...
Definition: version.cpp:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pi_0_decays()

void Gambit::DecayBit::pi_0_decays ( DecayTable::Entry result)

SM decays: pi0 Reference: 2017 PDG.

Definition at line 360 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, Gambit::gambit_version(), Gambit::DecayTable::Entry::negative_error, Gambit::DecayTable::Entry::positive_error, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

361  {
362  result.calculator = "GAMBIT::DecayBit";
363  result.calculator_version = gambit_version();
364  result.width_in_GeV = 7.73e-09;
365  result.positive_error = 1.6e-10;
366  result.negative_error = 1.6e-10;
367  result.set_BF(0.98823, 0.00034, "gamma", "gamma");
368  result.set_BF(0.01174, 0.00035, "e+", "e-", "gamma");
369  result.set_BF(3.34e-5, 0.16e-5, "e+", "e-", "e+", "e-");
370  result.set_BF(6.46e-8, 0.33e-8, "e+", "e-");
371  }
str & gambit_version()
Statically construct a string containing the full GAMBIT version information and return a reference t...
Definition: version.cpp:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pi_minus_decays()

void Gambit::DecayBit::pi_minus_decays ( DecayTable::Entry result)

Definition at line 447 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

447 { result = CP_conjugate(*Pipes::pi_minus_decays::Dep::pi_plus_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pi_plus_decays()

void Gambit::DecayBit::pi_plus_decays ( DecayTable::Entry result)

SM decays: pi+ Reference: 2017 PDG.

Definition at line 375 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, Gambit::gambit_version(), Gambit::DecayTable::Entry::negative_error, Gambit::DecayTable::Entry::positive_error, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

376  {
377  result.calculator = "GAMBIT::DecayBit";
378  result.calculator_version = gambit_version();
379  result.width_in_GeV = 2.5284e-17;
380  result.positive_error = 4.9e-21;
381  result.negative_error = 4.9e-21;
382  result.set_BF(0.9998770, 0.0000004, "mu+", "nu_mu");
383  result.set_BF(1.230e-4, 0.004e-4, "e+", "nu_e");
384  }
str & gambit_version()
Statically construct a string containing the full GAMBIT version information and return a reference t...
Definition: version.cpp:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Ref_SM_A0_decays_FH()

void Gambit::DecayBit::Ref_SM_A0_decays_FH ( DecayTable::Entry result)

Reference SM Higgs decays from FeynHiggs: A0.

Definition at line 512 of file DecayBit.cpp.

References set_FH_neutral_h_decay().

513  {
514  using namespace Pipes::Ref_SM_A0_decays_FH;
515  bool invalidate = runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width");
516  set_FH_neutral_h_decay(result, 3, *Dep::FH_Couplings_output, *(Dep::SLHA_pseudonyms), invalidate, true);
517  }
void set_FH_neutral_h_decay(DecayTable::Entry &result, int iH, const fh_Couplings &FH_input, const mass_es_pseudonyms &psn, bool invalidate, bool SM)
Set neutral h decays computed by FeynHiggs.
Definition: DecayBit.cpp:145
void Ref_SM_A0_decays_FH(DecayTable::Entry &result)
Reference SM Higgs decays from FeynHiggs: A0.
Definition: DecayBit.cpp:512
Here is the call graph for this function:

◆ Ref_SM_A0_decays_table()

void Gambit::DecayBit::Ref_SM_A0_decays_table ( DecayTable::Entry result)

Reference SM Higgs decays from LHCHiggsXSWG: A0.

Definition at line 486 of file DecayBit.cpp.

References compute_SM_higgs_decays(), MSSM_spectrum, and Gambit::Par::Pole_Mass.

487  {
488  using namespace Pipes::Ref_SM_A0_decays_table;
489  double mA0 = Dep::MSSM_spectrum->get(Par::Pole_Mass, "A0");
490  compute_SM_higgs_decays(result, mA0);
491  }
void compute_SM_higgs_decays(DecayTable::Entry &result, double mh)
Populate SM Higgs decay channels for a higgs mass of m_h.
Definition: DecayBit.cpp:114
void Ref_SM_A0_decays_table(DecayTable::Entry &result)
Reference SM Higgs decays from LHCHiggsXSWG: A0.
Definition: DecayBit.cpp:486
Here is the call graph for this function:

◆ Ref_SM_Higgs_decays_FH()

void Gambit::DecayBit::Ref_SM_Higgs_decays_FH ( DecayTable::Entry result)

Reference SM Higgs decays from FeynHiggs: h0_1.

Definition at line 494 of file DecayBit.cpp.

References MSSM_spectrum, set_FH_neutral_h_decay(), and Gambit::SMlike_higgs_PDG_code().

495  {
496  using namespace Pipes::Ref_SM_Higgs_decays_FH;
497  const SubSpectrum& spec = Dep::MSSM_spectrum->get_HE();
498  int higgs = (SMlike_higgs_PDG_code(spec) == 25 ? 1 : 2);
499  bool invalidate = runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width");
500  set_FH_neutral_h_decay(result, higgs, *Dep::FH_Couplings_output, *(Dep::SLHA_pseudonyms), invalidate, true);
501  }
void set_FH_neutral_h_decay(DecayTable::Entry &result, int iH, const fh_Couplings &FH_input, const mass_es_pseudonyms &psn, bool invalidate, bool SM)
Set neutral h decays computed by FeynHiggs.
Definition: DecayBit.cpp:145
int SMlike_higgs_PDG_code(const SubSpectrum &)
Determine which MSSM higgs is most SM-like.
void Ref_SM_Higgs_decays_FH(DecayTable::Entry &result)
Reference SM Higgs decays from FeynHiggs: h0_1.
Definition: DecayBit.cpp:494
Here is the call graph for this function:

◆ Ref_SM_Higgs_decays_table()

void Gambit::DecayBit::Ref_SM_Higgs_decays_table ( DecayTable::Entry result)

Reference SM Higgs decays.

These functions are given a different capability to regular decay functions, to allow other module functions to specifically depend on the SM values for reference, even when scanning another model.Reference SM Higgs decays from LHCHiggsXSWG: most SM-like Higgs

Definition at line 460 of file DecayBit.cpp.

References compute_SM_higgs_decays(), Gambit::invalid_point(), mh, and Gambit::invalid_point_exception::raise().

461  {
462  using namespace Pipes::Ref_SM_Higgs_decays_table;
463  double mh = Dep::mh->central;
464  double minmass = runOptions->getValueOrDef<double>(90.0, "higgs_minmass");
465  double maxmass = runOptions->getValueOrDef<double>(160.0, "higgs_maxmass");
466  // Invalidate the point if higgs mass is outside the range over which the tables of the LHCHiggsXSWG are most reliable.
467  if (mh < minmass or mh > maxmass)
468  {
469  std::stringstream msg;
470  msg << "Computed Higgs mass is " << mh << "; This is outside of the accurate range for "
471  << "tables from the LHCHiggsXSWG, which is " << minmass << "--" << maxmass << " GeV.";
472  invalid_point().raise(msg.str());
473  }
474  compute_SM_higgs_decays(result, mh);
475  }
void Ref_SM_Higgs_decays_table(DecayTable::Entry &result)
Reference SM Higgs decays.
Definition: DecayBit.cpp:460
virtual void raise(const std::string &)
Raise the exception, i.e. throw it.
Definition: exceptions.cpp:422
void compute_SM_higgs_decays(DecayTable::Entry &result, double mh)
Populate SM Higgs decay channels for a higgs mass of m_h.
Definition: DecayBit.cpp:114
Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum mh
invalid_point_exception & invalid_point()
Invalid point exceptions.
Here is the call graph for this function:

◆ Ref_SM_other_Higgs_decays_FH()

void Gambit::DecayBit::Ref_SM_other_Higgs_decays_FH ( DecayTable::Entry result)

Reference SM Higgs decays from FeynHiggs: h0_2.

Definition at line 503 of file DecayBit.cpp.

References MSSM_spectrum, set_FH_neutral_h_decay(), and Gambit::SMlike_higgs_PDG_code().

504  {
505  using namespace Pipes::Ref_SM_other_Higgs_decays_FH;
506  const SubSpectrum& spec = Dep::MSSM_spectrum->get_HE();
507  int other_higgs = (SMlike_higgs_PDG_code(spec) == 25 ? 2 : 1);
508  bool invalidate = runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width");
509  set_FH_neutral_h_decay(result, other_higgs, *Dep::FH_Couplings_output, *(Dep::SLHA_pseudonyms), invalidate, true);
510  }
void set_FH_neutral_h_decay(DecayTable::Entry &result, int iH, const fh_Couplings &FH_input, const mass_es_pseudonyms &psn, bool invalidate, bool SM)
Set neutral h decays computed by FeynHiggs.
Definition: DecayBit.cpp:145
int SMlike_higgs_PDG_code(const SubSpectrum &)
Determine which MSSM higgs is most SM-like.
void Ref_SM_other_Higgs_decays_FH(DecayTable::Entry &result)
Reference SM Higgs decays from FeynHiggs: h0_2.
Definition: DecayBit.cpp:503
Here is the call graph for this function:

◆ Ref_SM_other_Higgs_decays_table()

void Gambit::DecayBit::Ref_SM_other_Higgs_decays_table ( DecayTable::Entry result)

Reference SM Higgs decays from LHCHiggsXSWG: least SM-like Higgs.

Definition at line 477 of file DecayBit.cpp.

References compute_SM_higgs_decays(), MSSM_spectrum, Gambit::Par::Pole_Mass, and Gambit::SMlike_higgs_PDG_code().

478  {
480  const SubSpectrum& spec = Dep::MSSM_spectrum->get_HE();
481  int other_higgs = (SMlike_higgs_PDG_code(spec) == 25 ? 35 : 25);
482  double m_other = Dep::MSSM_spectrum->get(Par::Pole_Mass, other_higgs, 0);
483  compute_SM_higgs_decays(result, m_other);
484  }
void Ref_SM_other_Higgs_decays_table(DecayTable::Entry &result)
Reference SM Higgs decays from LHCHiggsXSWG: least SM-like Higgs.
Definition: DecayBit.cpp:477
int SMlike_higgs_PDG_code(const SubSpectrum &)
Determine which MSSM higgs is most SM-like.
void compute_SM_higgs_decays(DecayTable::Entry &result, double mh)
Populate SM Higgs decay channels for a higgs mass of m_h.
Definition: DecayBit.cpp:114
Here is the call graph for this function:

◆ RHN_W_to_l_decays()

void Gambit::DecayBit::RHN_W_to_l_decays ( std::vector< double > &  result)

Definition at line 3596 of file DecayBit.cpp.

References Gambit::SMInputs::GF, M, Gambit::SMInputs::mE, Gambit::SMInputs::mMu, Gambit::SMInputs::mTau, mw, Gambit::Scanner::pow(), and SMINPUTS.

3597  {
3598  using namespace Pipes::RHN_W_to_l_decays;
3599  SMInputs sminputs = *Dep::SMINPUTS;
3600  Eigen::Matrix3cd Theta = *Dep::SeesawI_Theta;
3601  double Gmu = sminputs.GF;
3602  double mw = Dep::mw->central;
3603 
3604  Eigen::Matrix3d ThetaNorm = (Theta * Theta.adjoint()).real();
3605  std::vector<double> ml = {sminputs.mE, sminputs.mMu, sminputs.mTau};
3606  std::vector<double> M = {*Param["M_1"], *Param["M_2"], *Param["M_3"]};
3607 
3608  result.clear();
3609  for(int i=0; i<3; i++)
3610  {
3611  if(M[i] < mw)
3612  result.push_back(Gmu*pow(mw,3)/(6*sqrt(2)*M_PI)*pow(1.0 - pow(ml[i]/mw,2),2)*(1.0 + pow(ml[i]/mw,2))/sqrt(1.0 - ThetaNorm(0,0) -ThetaNorm(1,1)));
3613  else
3614  result.push_back(Gmu*pow(mw,3)/(6*sqrt(2)*M_PI)*(1.0-ThetaNorm(i,i))*pow(1.0 - pow(ml[i]/mw,2),2)*(1.0 + pow(ml[i]/mw,2))/sqrt(1.0 - ThetaNorm(0,0) -ThetaNorm(1,1)));
3615  }
3616  }
Spectrum Spectrum Spectrum mw
void RHN_W_to_l_decays(std::vector< double > &result)
Definition: DecayBit.cpp:3596
START_MODEL M
double pow(const double &a)
Outputs a^i.
Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum SMINPUTS
Here is the call graph for this function:

◆ rho1450_decays()

void Gambit::DecayBit::rho1450_decays ( DecayTable::Entry result)

SM decays: rho1450 Reference: 2017 PDG.

Definition at line 432 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, Gambit::gambit_version(), Gambit::DecayTable::Entry::negative_error, Gambit::DecayTable::Entry::positive_error, and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

433  {
434  result.calculator = "GAMBIT::DecayBit";
435  result.calculator_version = gambit_version();
436  result.width_in_GeV = 4.0e-1;
437  result.positive_error = 6.0e-02;
438  result.negative_error = 6.0e-02;
439  }
str & gambit_version()
Statically construct a string containing the full GAMBIT version information and return a reference t...
Definition: version.cpp:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rho_0_decays()

void Gambit::DecayBit::rho_0_decays ( DecayTable::Entry result)

SM decays: rho0 Reference: 2017 PDG.

Definition at line 399 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, Gambit::gambit_version(), Gambit::DecayTable::Entry::negative_error, Gambit::DecayTable::Entry::positive_error, and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

400  {
401  result.calculator = "GAMBIT::DecayBit";
402  result.calculator_version = gambit_version();
403  result.width_in_GeV = 1.478e-01;
404  result.positive_error = 9.0e-04;
405  result.negative_error = 9.0e-04;
406  }
str & gambit_version()
Statically construct a string containing the full GAMBIT version information and return a reference t...
Definition: version.cpp:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rho_minus_decays()

void Gambit::DecayBit::rho_minus_decays ( DecayTable::Entry result)

Definition at line 448 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

448 { result = CP_conjugate(*Pipes::rho_minus_decays::Dep::rho_plus_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rho_plus_decays()

void Gambit::DecayBit::rho_plus_decays ( DecayTable::Entry result)

SM decays: rho+ Reference: 2017 PDG.

Definition at line 410 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, Gambit::gambit_version(), Gambit::DecayTable::Entry::negative_error, Gambit::DecayTable::Entry::positive_error, and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

411  {
412  result.calculator = "GAMBIT::DecayBit";
413  result.calculator_version = gambit_version();
414  result.width_in_GeV = 1.491e-01;
415  result.positive_error = 8.0e-04;
416  result.negative_error = 8.0e-04;
417  }
str & gambit_version()
Statically construct a string containing the full GAMBIT version information and return a reference t...
Definition: version.cpp:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sbottom_1_decays()

void Gambit::DecayBit::sbottom_1_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: sbottom_1.

Definition at line 1108 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1109  {
1110  using namespace Pipes::sbottom_1_decays;
1111  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1112 
1113  result.calculator = BEreq::cb_sd_sbotwidth.origin();
1114  result.calculator_version = BEreq::cb_sd_sbotwidth.version();
1115 
1116  result.width_in_GeV = BEreq::cb_sd_sbotwidth->sbottot(1);
1117  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1neutt(1) : 0.0), 0.0, "~chi0_1", "b");
1118  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1neutt(2) : 0.0), 0.0, "~chi0_2", "b");
1119  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1neutt(3) : 0.0), 0.0, "~chi0_3", "b");
1120  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1neutt(4) : 0.0), 0.0, "~chi0_4", "b");
1121  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1chart(1) : 0.0), 0.0, "~chi-_1", "t");
1122  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1chart(2) : 0.0), 0.0, "~chi-_2", "t");
1123  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1glui : 0.0), 0.0, "~g", "b");
1124  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1hcst(1) : 0.0), 0.0, psn.ist1, "H-");
1125  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1hcst(2) : 0.0), 0.0, psn.ist2, "H-");
1126  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1wst(1) : 0.0), 0.0, psn.ist1, "W-");
1127  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1wst(2) : 0.0), 0.0, psn.ist2, "W-");
1128  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsntau(1,1) : 0.0), 0.0, psn.isntaulbar, "t", "tau-");
1129  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsnel(1) : 0.0), 0.0, psn.isnelbar, "t", "e-");
1130  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsnel(1) : 0.0), 0.0, psn.isnmulbar, "t", "mu-");
1131  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbstau(1,1) : 0.0), 0.0, psn.istau1, "t", "nubar_tau");
1132  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbstau(1,2) : 0.0), 0.0, psn.istau2, "t", "nubar_tau");
1133  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(1,1) : 0.0), 0.0, psn.isell, "t", "nubar_e");
1134  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(1,2) : 0.0), 0.0, psn.iselr, "t", "nubar_e");
1135  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(1,1) : 0.0), 0.0, psn.ismul, "t", "nubar_mu");
1136  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(1,2) : 0.0), 0.0, psn.ismur, "t", "nubar_mu");
1137  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtstsb(1,1) : 0.0), 0.0, psn.ist1bar, "t", "b");
1138  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtstsb(1,2) : 0.0), 0.0, psn.ist2bar, "t", "b");
1139  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtbstb(1,1) : 0.0), 0.0, psn.ist1, "tbar", "b");
1140  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtbstb(1,2) : 0.0), 0.0, psn.ist2, "tbar", "b");
1141  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(1,1) : 0.0), 0.0, psn.ist1, "ubar", "d");
1142  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(1,2) : 0.0), 0.0, psn.ist2, "ubar", "d");
1143  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(1,1) : 0.0), 0.0, psn.ist1, "cbar", "s");
1144  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(1,2) : 0.0), 0.0, psn.ist2, "cbar", "s");
1145  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtaustnu(1,1) : 0.0), 0.0, psn.ist1, "tau-", "nubar_tau");
1146  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtaustnu(1,2) : 0.0), 0.0, psn.ist2, "tau-", "nubar_tau");
1147  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(1,1) : 0.0), 0.0, psn.ist1, "e-", "nubar_e");
1148  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(1,2) : 0.0), 0.0, psn.ist1, "e-", "nubar_e");
1149  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(1,1) : 0.0), 0.0, psn.ist1, "mu-", "nubar_mu");
1150  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(1,2) : 0.0), 0.0, psn.ist1, "mu-", "nubar_mu");
1151 
1152  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1153  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void sbottom_1_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: sbottom_1.
Definition: DecayBit.cpp:1108
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sbottom_2_decays()

void Gambit::DecayBit::sbottom_2_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: sbottom_2.

Definition at line 1156 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1157  {
1158  using namespace Pipes::sbottom_2_decays;
1159  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1160 
1161  result.calculator = BEreq::cb_sd_sbotwidth.origin();
1162  result.calculator_version = BEreq::cb_sd_sbotwidth.version();
1163 
1164  result.width_in_GeV = BEreq::cb_sd_sbotwidth->sbottot(2);
1165  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2neutt(1) : 0.0), 0.0, "~chi0_1", "b");
1166  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2neutt(2) : 0.0), 0.0, "~chi0_2", "b");
1167  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2neutt(3) : 0.0), 0.0, "~chi0_3", "b");
1168  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2neutt(4) : 0.0), 0.0, "~chi0_4", "b");
1169  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2chart(1) : 0.0), 0.0, "~chi-_1", "t");
1170  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2chart(2) : 0.0), 0.0, "~chi-_2", "t");
1171  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2glui : 0.0), 0.0, "~g", "b");
1172  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2hl : 0.0), 0.0, psn.isb1, "h0_1");
1173  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2hh : 0.0), 0.0, psn.isb1, "h0_2");
1174  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2ha : 0.0), 0.0, psn.isb1, "A0");
1175  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2hcst(1) : 0.0), 0.0, psn.ist1, "H-");
1176  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2hcst(2) : 0.0), 0.0, psn.ist2, "H-");
1177  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2zbot : 0.0), 0.0, psn.isb1, "Z0");
1178  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2wst(1) : 0.0), 0.0, psn.ist1, "W-");
1179  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2wst(2) : 0.0), 0.0, psn.ist2, "W-");
1180  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsntau(2,1) : 0.0), 0.0, psn.isntaulbar, "t", "tau-");
1181  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsnel(2) : 0.0), 0.0, psn.isnelbar, "t", "e-");
1182  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsnel(2) : 0.0), 0.0, psn.isnmulbar, "t", "mu-");
1183  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbstau(2,1) : 0.0), 0.0, psn.istau1, "t", "nubar_tau");
1184  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbstau(2,2) : 0.0), 0.0, psn.istau2, "t", "nubar_tau");
1185  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(2,1) : 0.0), 0.0, psn.isell, "t", "nubar_e");
1186  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(2,2) : 0.0), 0.0, psn.iselr, "t", "nubar_e");
1187  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(2,1) : 0.0), 0.0, psn.ismul, "t", "nubar_mu");
1188  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(2,2) : 0.0), 0.0, psn.ismur, "t", "nubar_mu");
1189  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtstsb(2,1) : 0.0), 0.0, psn.ist1bar, "t", "b");
1190  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtstsb(2,2) : 0.0), 0.0, psn.ist2bar, "t", "b");
1191  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtbstb(2,1) : 0.0), 0.0, psn.ist1, "tbar", "b");
1192  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtbstb(2,2) : 0.0), 0.0, psn.ist2, "tbar", "b");
1193  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(2,1) : 0.0), 0.0, psn.ist1, "ubar", "d");
1194  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(2,2) : 0.0), 0.0, psn.ist2, "ubar", "d");
1195  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(2,1) : 0.0), 0.0, psn.ist1, "cbar", "s");
1196  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(2,2) : 0.0), 0.0, psn.ist2, "cbar", "s");
1197  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtaustnu(2,1) : 0.0), 0.0, psn.ist1, "tau-", "nubar_tau");
1198  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtaustnu(2,2) : 0.0), 0.0, psn.ist2, "tau-", "nubar_tau");
1199  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(2,1) : 0.0), 0.0, psn.ist1, "e-", "nubar_e");
1200  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(2,2) : 0.0), 0.0, psn.ist1, "e-", "nubar_e");
1201  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(2,1) : 0.0), 0.0, psn.ist1, "mu-", "nubar_mu");
1202  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(2,2) : 0.0), 0.0, psn.ist1, "mu-", "nubar_mu");
1203  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1bb : 0.0), 0.0, psn.isb1, "b", "bbar");
1204  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1starbb : 0.0), 0.0, psn.isb1bar, "b", "b");
1205  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1tt : 0.0), 0.0, psn.isb1, "t", "tbar");
1206  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1uu : 0.0), 0.0, psn.isb1, "u", "ubar");
1207  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1dd : 0.0), 0.0, psn.isb1, "d", "dbar");
1208  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1uu : 0.0), 0.0, psn.isb1, "c", "cbar");
1209  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1dd : 0.0), 0.0, psn.isb1, "s", "sbar");
1210  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1ee : 0.0), 0.0, psn.isb1, "e-", "e+");
1211  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1ee : 0.0), 0.0, psn.isb1, "mu-", "mu+");
1212  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1tautau : 0.0), 0.0, psn.isb1, "tau-", "tau+");
1213  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1nunu : 0.0), 0.0, psn.isb1, "nu_e", "nubar_e");
1214  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1nunu : 0.0), 0.0, psn.isb1, "nu_mu", "nubar_mu");
1215  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1nunu : 0.0), 0.0, psn.isb1, "nu_tau", "nubar_tau");
1216 
1217  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1218  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void sbottom_2_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: sbottom_2.
Definition: DecayBit.cpp:1156
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sbottombar_1_decays()

void Gambit::DecayBit::sbottombar_1_decays ( DecayTable::Entry result)

Definition at line 2790 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2790 { result = CP_conjugate(*Pipes::sbottombar_1_decays::Dep::sbottom_1_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sbottombar_2_decays()

void Gambit::DecayBit::sbottombar_2_decays ( DecayTable::Entry result)

Definition at line 2791 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2791 { result = CP_conjugate(*Pipes::sbottombar_2_decays::Dep::sbottom_2_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ScalarSingletDM_Higgs_decays()

void Gambit::DecayBit::ScalarSingletDM_Higgs_decays ( DecayTable::Entry result)

Add the decay of Higgs to singlets for the ScalarSingletDM models.

Definition at line 2817 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::channels, check_width(), Gambit::Par::dimensionless, Gambit::SubSpectrum::get(), Gambit::DecayBit::MSSM_H::lambda(), LOCAL_INFO, Gambit::Par::mass1, Gambit::pi, Gambit::Par::Pole_Mass, Gambit::Scanner::pow(), ScalarSingletDM_Z2_spectrum, ScalarSingletDM_Z3_spectrum, Gambit::DecayTable::Entry::set_BF(), v0, and Gambit::DecayTable::Entry::width_in_GeV.

2818  {
2819  using namespace Pipes::ScalarSingletDM_Higgs_decays;
2820 
2821  // Get the spectrum information
2822  bool self_conjugate = true;
2823  dep_bucket<Spectrum>* spectrum_dependency = nullptr;
2824  if (ModelInUse("ScalarSingletDM_Z2") or ModelInUse("ScalarSingletDM_Z2_running"))
2825  {
2826  spectrum_dependency = &Dep::ScalarSingletDM_Z2_spectrum;
2827  }
2828  else if (ModelInUse("ScalarSingletDM_Z3") or ModelInUse("ScalarSingletDM_Z3_running"))
2829  {
2830  spectrum_dependency = &Dep::ScalarSingletDM_Z3_spectrum;
2831  self_conjugate = false;
2832  }
2833  else DecayBit_error().raise(LOCAL_INFO, "No valid model for ScalarSingletDM_Higgs_decays.");
2834  const SubSpectrum& he = (*spectrum_dependency)->get_HE();
2835 
2836  double mass = (*spectrum_dependency)->get(Par::Pole_Mass,"S");
2837  double lambda = he.get(Par::dimensionless,"lambda_hS");
2838  double v0 = he.get(Par::mass1,"vev");
2839  double mhpole = (*spectrum_dependency)->get(Par::Pole_Mass,"h0_1");
2840 
2841  // Get the reference SM Higgs decays
2842  result = *Dep::Reference_SM_Higgs_decay_rates;
2843 
2844  // Add the h->SS width to the total
2845  double massratio2 = pow(mass/mhpole,2);
2846  double gamma = (2.0*mass <= mhpole) ? pow(lambda*v0,2)/(16.0*pi*mhpole) * sqrt(1.0 - 4.0*massratio2) : 0.0;
2847  // Include symmetry factor of two to account for identical final state particles
2848  if (self_conjugate) gamma = 0.5 * gamma;
2849  result.width_in_GeV = result.width_in_GeV + gamma;
2850 
2851  // Rescale the SM decay branching fractions.
2852  double wscaling = Dep::Reference_SM_Higgs_decay_rates->width_in_GeV/result.width_in_GeV;
2853  for (auto it = result.channels.begin(); it != result.channels.end(); ++it)
2854  {
2855  it->second.first *= wscaling; // rescale BF
2856  it->second.second *= wscaling; // rescale error on BF
2857  }
2858 
2859  // Add the h->SS branching fraction
2860  result.set_BF(gamma/result.width_in_GeV, 0.0, "S", "S");
2861 
2862  // Make sure the width is sensible.
2863  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
2864  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
START_MODEL v0
Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum ScalarSingletDM_Z3_spectrum
const double pi
double lambda(double x, double y, double z)
Definition: MSSM_H.hpp:38
double pow(const double &a)
Outputs a^i.
void ScalarSingletDM_Higgs_decays(DecayTable::Entry &result)
Add the decay of Higgs to singlets for the ScalarSingletDM models.
Definition: DecayBit.cpp:2817
Here is the call graph for this function:

◆ ScalarSingletDM_inv_Higgs_BF()

void Gambit::DecayBit::ScalarSingletDM_inv_Higgs_BF ( double BF)

Branching fraction for Higgs into scalar singlet DM

Parameters
BF$\textrm{BR}(h\to S S)$

Definition at line 3364 of file DecayBit.cpp.

3365  {
3370  using namespace Pipes::ScalarSingletDM_inv_Higgs_BF;
3371  BF = Dep::Higgs_decay_rates->BF("S", "S");
3372  }
void ScalarSingletDM_inv_Higgs_BF(double &BF)
Definition: DecayBit.cpp:3364

◆ scharm_l_decays()

void Gambit::DecayBit::scharm_l_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: scharm_l.

Definition at line 1292 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1293  {
1294  using namespace Pipes::scharm_l_decays;
1295  result.calculator = BEreq::cb_sd_supwidth.origin();
1296  result.calculator_version = BEreq::cb_sd_supwidth.version();
1297  result.width_in_GeV = BEreq::cb_sd_supwidth->supltot2;
1298  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplnup(1) : 0.0), 0.0, "~chi0_1", "c");
1299  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplnup(2) : 0.0), 0.0, "~chi0_2", "c");
1300  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplnup(3) : 0.0), 0.0, "~chi0_3", "c");
1301  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplnup(4) : 0.0), 0.0, "~chi0_4", "c");
1302  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplcdow(1) : 0.0), 0.0, "~chi+_1", "s");
1303  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplcdow(2) : 0.0), 0.0, "~chi+_2", "s");
1304  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplglui : 0.0), 0.0, "~g", "c");
1305  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1306  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void scharm_l_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: scharm_l.
Definition: DecayBit.cpp:1292
Here is the call graph for this function:
Here is the caller graph for this function:

◆ scharm_r_decays()

void Gambit::DecayBit::scharm_r_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: scharm_r.

Definition at line 1309 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1310  {
1311  using namespace Pipes::scharm_r_decays;
1312  result.calculator = BEreq::cb_sd_supwidth.origin();
1313  result.calculator_version = BEreq::cb_sd_supwidth.version();
1314  result.width_in_GeV = BEreq::cb_sd_supwidth->suprtot2;
1315  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprnup(1) : 0.0), 0.0, "~chi0_1", "c");
1316  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprnup(2) : 0.0), 0.0, "~chi0_2", "c");
1317  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprnup(3) : 0.0), 0.0, "~chi0_3", "c");
1318  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprnup(4) : 0.0), 0.0, "~chi0_4", "c");
1319  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprcdow(1) : 0.0), 0.0, "~chi+_1", "s");
1320  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprcdow(2) : 0.0), 0.0, "~chi+_2", "s");
1321  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprglui : 0.0), 0.0, "~g", "c");
1322  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1323  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void scharm_r_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: scharm_r.
Definition: DecayBit.cpp:1309
Here is the call graph for this function:
Here is the caller graph for this function:

◆ scharmbar_l_decays()

void Gambit::DecayBit::scharmbar_l_decays ( DecayTable::Entry result)

Definition at line 2796 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2796 { result = CP_conjugate(*Pipes::scharmbar_l_decays::Dep::scharm_l_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ scharmbar_r_decays()

void Gambit::DecayBit::scharmbar_r_decays ( DecayTable::Entry result)

Definition at line 2797 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2797 { result = CP_conjugate(*Pipes::scharmbar_r_decays::Dep::scharm_r_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sdown_l_decays()

void Gambit::DecayBit::sdown_l_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: sdown_l.

Definition at line 1258 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1259  {
1260  using namespace Pipes::sdown_l_decays;
1261  result.calculator = BEreq::cb_sd_sdownwidth.origin();
1262  result.calculator_version = BEreq::cb_sd_sdownwidth.version();
1263  result.width_in_GeV = BEreq::cb_sd_sdownwidth->sdowltot2;
1264  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlndow(1) : 0.0), 0.0, "~chi0_1", "d");
1265  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlndow(2) : 0.0), 0.0, "~chi0_2", "d");
1266  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlndow(3) : 0.0), 0.0, "~chi0_3", "d");
1267  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlndow(4) : 0.0), 0.0, "~chi0_4", "d");
1268  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlchup(1) : 0.0), 0.0, "~chi-_1", "u");
1269  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlchup(2) : 0.0), 0.0, "~chi-_2", "u");
1270  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlglui : 0.0), 0.0, "~g", "d");
1271  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1272  }
void sdown_l_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: sdown_l.
Definition: DecayBit.cpp:1258
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sdown_r_decays()

void Gambit::DecayBit::sdown_r_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: sdown_r.

Definition at line 1275 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1276  {
1277  using namespace Pipes::sdown_r_decays;
1278  result.calculator = BEreq::cb_sd_sdownwidth.origin();
1279  result.calculator_version = BEreq::cb_sd_sdownwidth.version();
1280  result.width_in_GeV = BEreq::cb_sd_sdownwidth->sdowrtot2;
1281  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrndow(1) : 0.0), 0.0, "~chi0_1", "d");
1282  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrndow(2) : 0.0), 0.0, "~chi0_2", "d");
1283  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrndow(3) : 0.0), 0.0, "~chi0_3", "d");
1284  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrndow(4) : 0.0), 0.0, "~chi0_4", "d");
1285  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrchup(1) : 0.0), 0.0, "~chi-_1", "u");
1286  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrchup(2) : 0.0), 0.0, "~chi-_2", "u");
1287  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrglui : 0.0), 0.0, "~g", "d");
1288  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1289  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void sdown_r_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: sdown_r.
Definition: DecayBit.cpp:1275
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sdownbar_l_decays()

void Gambit::DecayBit::sdownbar_l_decays ( DecayTable::Entry result)

Definition at line 2794 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2794 { result = CP_conjugate(*Pipes::sdownbar_l_decays::Dep::sdown_l_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sdownbar_r_decays()

void Gambit::DecayBit::sdownbar_r_decays ( DecayTable::Entry result)

Definition at line 2795 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2795 { result = CP_conjugate(*Pipes::sdownbar_r_decays::Dep::sdown_r_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ selectron_l_decays()

void Gambit::DecayBit::selectron_l_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: selectron_l.

Definition at line 1360 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1361  {
1362  using namespace Pipes::selectron_l_decays;
1363  result.calculator = BEreq::cb_sd_selwidth.origin();
1364  result.calculator_version = BEreq::cb_sd_selwidth.version();
1365  result.width_in_GeV = BEreq::cb_sd_selwidth->selltot2;
1366  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(1) : 0.0), 0.0, "~chi0_1", "e-");
1367  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(2) : 0.0), 0.0, "~chi0_2", "e-");
1368  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(3) : 0.0), 0.0, "~chi0_3", "e-");
1369  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(4) : 0.0), 0.0, "~chi0_4", "e-");
1370  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellcharnue(1) : 0.0), 0.0, "~chi-_1", "nu_e");
1371  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellcharnue(2) : 0.0), 0.0, "~chi-_2", "nu_e");
1372  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1373  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void selectron_l_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: selectron_l.
Definition: DecayBit.cpp:1360
Here is the call graph for this function:
Here is the caller graph for this function:

◆ selectron_r_decays()

void Gambit::DecayBit::selectron_r_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: selectron_r.

Definition at line 1376 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1377  {
1378  using namespace Pipes::selectron_r_decays;
1379  result.calculator = BEreq::cb_sd_selwidth.origin();
1380  result.calculator_version = BEreq::cb_sd_selwidth.version();
1381  result.width_in_GeV = BEreq::cb_sd_selwidth->selrtot2;
1382  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(1) : 0.0), 0.0, "~chi0_1", "e-");
1383  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(2) : 0.0), 0.0, "~chi0_2", "e-");
1384  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(3) : 0.0), 0.0, "~chi0_3", "e-");
1385  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(4) : 0.0), 0.0, "~chi0_4", "e-");
1386  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrcharnue(1) : 0.0), 0.0, "~chi-_1", "nu_e");
1387  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrcharnue(2) : 0.0), 0.0, "~chi-_2", "nu_e");
1388  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1389  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void selectron_r_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: selectron_r.
Definition: DecayBit.cpp:1376
Here is the call graph for this function:
Here is the caller graph for this function:

◆ selectronbar_l_decays()

void Gambit::DecayBit::selectronbar_l_decays ( DecayTable::Entry result)

Definition at line 2800 of file DecayBit.cpp.

References CP_conjugate(), and selectron_l_decay_rates.

Referenced by main().

DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry selectron_l_decay_rates
Here is the call graph for this function:
Here is the caller graph for this function:

◆ selectronbar_r_decays()

void Gambit::DecayBit::selectronbar_r_decays ( DecayTable::Entry result)

Definition at line 2801 of file DecayBit.cpp.

References CP_conjugate(), and selectron_r_decay_rates.

Referenced by main().

DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry selectron_r_decay_rates
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_FH_neutral_h_decay()

void Gambit::DecayBit::set_FH_neutral_h_decay ( DecayTable::Entry result,
int  iH,
const fh_Couplings &  FH_input,
const mass_es_pseudonyms &  psn,
bool  invalidate,
bool  SM 
)

Set neutral h decays computed by FeynHiggs.

Definition at line 145 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by FH_A0_decays(), FH_h0_2_decays(), FH_MSSM_h0_1_decays(), Ref_SM_A0_decays_FH(), Ref_SM_Higgs_decays_FH(), and Ref_SM_other_Higgs_decays_FH().

146  {
147  // Set the array and its offset according to whether we want the SM or BSM decays
148  const fh_real* widths = SM ? FH_input.gammas_sm : FH_input.gammas;
149  const int local_offset = SM ? BRSMoffset-1 : BRoffset-1;
150 
151  // Set the calculator info (presumably FeynHiggs...)
152  result.calculator = FH_input.calculator;
153  result.calculator_version = FH_input.calculator_version;
154 
155  // Set the total Higgs width
156  result.width_in_GeV = widths[iH-1];
157 
158  // vector-boson pair decays
159  result.set_BF((result.width_in_GeV > 0 ? widths[H0VV(iH,1)+local_offset] : 0.0), 0.0, "gamma", "gamma");
160  result.set_BF((result.width_in_GeV > 0 ? widths[H0VV(iH,2)+local_offset] : 0.0), 0.0, "gamma", "Z0");
161  result.set_BF((result.width_in_GeV > 0 ? widths[H0VV(iH,3)+local_offset] : 0.0), 0.0, "Z0", "Z0");
162  result.set_BF((result.width_in_GeV > 0 ? widths[H0VV(iH,4)+local_offset] : 0.0), 0.0, "W+", "W-");
163  result.set_BF((result.width_in_GeV > 0 ? widths[H0VV(iH,5)+local_offset] : 0.0), 0.0, "g", "g");
164 
165  // SM fermion decays
166  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,1,1,1)+local_offset] : 0.0), 0.0, "nu_e", "nubar_e");
167  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,1,2,2)+local_offset] : 0.0), 0.0, "nu_mu", "nubar_mu");
168  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,1,3,3)+local_offset] : 0.0), 0.0, "nu_tau", "nubar_tau");
169  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,2,1,1)+local_offset] : 0.0), 0.0, "e+", "e-");
170  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,2,2,2)+local_offset] : 0.0), 0.0, "mu+", "mu-");
171  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,2,3,3)+local_offset] : 0.0), 0.0, "tau+", "tau-");
172  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,3,1,1)+local_offset] : 0.0), 0.0, "u", "ubar");
173  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,3,2,2)+local_offset] : 0.0), 0.0, "c", "cbar");
174  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,3,3,3)+local_offset] : 0.0), 0.0, "t", "tbar");
175  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,4,1,1)+local_offset] : 0.0), 0.0, "d", "dbar");
176  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,4,2,2)+local_offset] : 0.0), 0.0, "s", "sbar");
177  result.set_BF((result.width_in_GeV > 0 ? widths[H0FF(iH,4,3,3)+local_offset] : 0.0), 0.0, "b", "bbar");
178 
179  if (not SM)
180  {
181  // chargino decays
182  result.set_BF((result.width_in_GeV > 0 ? widths[H0ChaCha(iH,1,1)+local_offset] : 0.0), 0.0, "~chi-_1", "~chi+_1");
183  result.set_BF((result.width_in_GeV > 0 ? widths[H0ChaCha(iH,1,2)+local_offset] : 0.0), 0.0, "~chi-_1", "~chi+_2");
184  result.set_BF((result.width_in_GeV > 0 ? widths[H0ChaCha(iH,2,1)+local_offset] : 0.0), 0.0, "~chi-_2", "~chi+_1");
185  result.set_BF((result.width_in_GeV > 0 ? widths[H0ChaCha(iH,2,2)+local_offset] : 0.0), 0.0, "~chi-_2", "~chi+_2");
186 
187  // neutralino decays
188  result.set_BF((result.width_in_GeV > 0 ? widths[H0NeuNeu(iH,1,1)+local_offset] : 0.0), 0.0, "~chi0_1", "~chi0_1");
189  result.set_BF((result.width_in_GeV > 0 ? widths[H0NeuNeu(iH,2,2)+local_offset] : 0.0), 0.0, "~chi0_2", "~chi0_2");
190  result.set_BF((result.width_in_GeV > 0 ? widths[H0NeuNeu(iH,3,3)+local_offset] : 0.0), 0.0, "~chi0_3", "~chi0_3");
191  result.set_BF((result.width_in_GeV > 0 ? widths[H0NeuNeu(iH,4,4)+local_offset] : 0.0), 0.0, "~chi0_4", "~chi0_4");
192  result.set_BF((result.width_in_GeV > 0 ? widths[H0NeuNeu(iH,1,2)+local_offset] : 0.0), 0.0, "~chi0_1", "~chi0_2");
193  result.set_BF((result.width_in_GeV > 0 ? widths[H0NeuNeu(iH,1,3)+local_offset] : 0.0), 0.0, "~chi0_1", "~chi0_3");
194  result.set_BF((result.width_in_GeV > 0 ? widths[H0NeuNeu(iH,1,4)+local_offset] : 0.0), 0.0, "~chi0_1", "~chi0_4");
195  result.set_BF((result.width_in_GeV > 0 ? widths[H0NeuNeu(iH,2,3)+local_offset] : 0.0), 0.0, "~chi0_2", "~chi0_3");
196  result.set_BF((result.width_in_GeV > 0 ? widths[H0NeuNeu(iH,2,4)+local_offset] : 0.0), 0.0, "~chi0_2", "~chi0_4");
197  result.set_BF((result.width_in_GeV > 0 ? widths[H0NeuNeu(iH,3,4)+local_offset] : 0.0), 0.0, "~chi0_3", "~chi0_4");
198 
199  // higgs + Z0 decays
200  result.set_BF((result.width_in_GeV > 0 ? widths[H0HV(iH,1)+local_offset] : 0.0), 0.0, "h0_1", "Z0");
201  result.set_BF((result.width_in_GeV > 0 ? widths[H0HV(iH,2)+local_offset] : 0.0), 0.0, "h0_2", "Z0");
202  result.set_BF((result.width_in_GeV > 0 ? widths[H0HV(iH,3)+local_offset] : 0.0), 0.0, "A0", "Z0");
203 
204  // higgs+higgs decays
205  result.set_BF((result.width_in_GeV > 0 ? widths[H0HH(iH,1,1)+local_offset] : 0.0), 0.0, "h0_1", "h0_1");
206  result.set_BF((result.width_in_GeV > 0 ? widths[H0HH(iH,2,2)+local_offset] : 0.0), 0.0, "h0_2", "h0_2");
207  result.set_BF((result.width_in_GeV > 0 ? widths[H0HH(iH,3,3)+local_offset] : 0.0), 0.0, "A0", "A0");
208  result.set_BF((result.width_in_GeV > 0 ? widths[H0HH(iH,4,4)+local_offset] : 0.0), 0.0, "H+", "H-");
209  result.set_BF((result.width_in_GeV > 0 ? widths[H0HH(iH,1,2)+local_offset] : 0.0), 0.0, "h0_1", "h0_2");
210  result.set_BF((result.width_in_GeV > 0 ? widths[H0HH(iH,1,3)+local_offset] : 0.0), 0.0, "h0_1", "A0");
211  result.set_BF((result.width_in_GeV > 0 ? widths[H0HH(iH,2,3)+local_offset] : 0.0), 0.0, "h0_2", "A0");
212 
213  // FH does not compute h0_1/h0_2/A0 --> H+W- / H-W+
214 
215  // sfermion decays
216  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,1,1)+local_offset] : 0.0), 0.0, psn.isnel, psn.isnelbar);
217  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,1,2)+local_offset] : 0.0), 0.0, psn.isnmul, psn.isnmulbar);
218  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,1,3)+local_offset] : 0.0), 0.0, psn.isntaul, psn.isntaulbar);
219  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,2,1)+local_offset] : 0.0), 0.0, psn.isell, psn.isellbar);
220  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,2,2,1)+local_offset] : 0.0), 0.0, psn.isell, psn.iselrbar);
221  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,1,2,1)+local_offset] : 0.0), 0.0, psn.iselr, psn.isellbar);
222  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,2,2,1)+local_offset] : 0.0), 0.0, psn.iselr, psn.iselrbar);
223  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,2,2)+local_offset] : 0.0), 0.0, psn.ismul, psn.ismulbar);
224  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,2,2,2)+local_offset] : 0.0), 0.0, psn.ismul, psn.ismurbar);
225  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,1,2,2)+local_offset] : 0.0), 0.0, psn.ismur, psn.ismulbar);
226  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,2,2,2)+local_offset] : 0.0), 0.0, psn.ismur, psn.ismurbar);
227  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,2,3)+local_offset] : 0.0), 0.0, psn.istau1, psn.istau1bar);
228  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,2,2,3)+local_offset] : 0.0), 0.0, psn.istau1, psn.istau2bar);
229  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,1,2,3)+local_offset] : 0.0), 0.0, psn.istau2, psn.istau1bar);
230  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,2,2,3)+local_offset] : 0.0), 0.0, psn.istau2, psn.istau2bar);
231  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,3,1)+local_offset] : 0.0), 0.0, psn.isul, psn.isulbar);
232  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,2,3,1)+local_offset] : 0.0), 0.0, psn.isul, psn.isurbar);
233  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,1,3,1)+local_offset] : 0.0), 0.0, psn.isur, psn.isulbar);
234  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,2,3,1)+local_offset] : 0.0), 0.0, psn.isur, psn.isurbar);
235  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,3,2)+local_offset] : 0.0), 0.0, psn.iscl, psn.isclbar);
236  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,2,3,2)+local_offset] : 0.0), 0.0, psn.iscl, psn.iscrbar);
237  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,1,3,2)+local_offset] : 0.0), 0.0, psn.iscr, psn.isclbar);
238  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,2,3,2)+local_offset] : 0.0), 0.0, psn.iscr, psn.iscrbar);
239  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,3,3)+local_offset] : 0.0), 0.0, psn.ist1, psn.ist1bar);
240  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,2,3,3)+local_offset] : 0.0), 0.0, psn.ist1, psn.ist2bar);
241  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,1,3,3)+local_offset] : 0.0), 0.0, psn.ist2, psn.ist1bar);
242  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,2,3,3)+local_offset] : 0.0), 0.0, psn.ist2, psn.ist2bar);
243  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,3,1)+local_offset] : 0.0), 0.0, psn.isdl, psn.isdlbar);
244  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,2,3,1)+local_offset] : 0.0), 0.0, psn.isdl, psn.isdrbar);
245  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,1,3,1)+local_offset] : 0.0), 0.0, psn.isdr, psn.isdlbar);
246  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,2,3,1)+local_offset] : 0.0), 0.0, psn.isdr, psn.isdrbar);
247  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,3,2)+local_offset] : 0.0), 0.0, psn.issl, psn.isslbar);
248  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,2,3,2)+local_offset] : 0.0), 0.0, psn.issl, psn.issrbar);
249  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,1,3,2)+local_offset] : 0.0), 0.0, psn.issr, psn.isslbar);
250  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,2,3,2)+local_offset] : 0.0), 0.0, psn.issr, psn.issrbar);
251  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,1,3,3)+local_offset] : 0.0), 0.0, psn.isb1, psn.isb1bar);
252  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,1,2,3,3)+local_offset] : 0.0), 0.0, psn.isb1, psn.isb2bar);
253  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,1,3,3)+local_offset] : 0.0), 0.0, psn.isb2, psn.isb1bar);
254  result.set_BF((result.width_in_GeV > 0 ? widths[H0SfSf(iH,2,2,3,3)+local_offset] : 0.0), 0.0, psn.isb2, psn.isb2bar);
255  }
256 
257  check_width(LOCAL_INFO, result.width_in_GeV, invalidate);
258  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SM_Higgs_decays()

void Gambit::DecayBit::SM_Higgs_decays ( DecayTable::Entry result)

SM decays: Higgs.

Definition at line 522 of file DecayBit.cpp.

523  {
524  result = *Pipes::SM_Higgs_decays::Dep::Reference_SM_Higgs_decay_rates;
525  }

◆ smuon_l_decays()

void Gambit::DecayBit::smuon_l_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: smuon_l.

Definition at line 1392 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1393  {
1394  using namespace Pipes::smuon_l_decays;
1395  result.calculator = BEreq::cb_sd_selwidth.origin();
1396  result.calculator_version = BEreq::cb_sd_selwidth.version();
1397  result.width_in_GeV = BEreq::cb_sd_selwidth->selltot2;
1398  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(1) : 0.0), 0.0, "~chi0_1", "mu-");
1399  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(2) : 0.0), 0.0, "~chi0_2", "mu-");
1400  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(3) : 0.0), 0.0, "~chi0_3", "mu-");
1401  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(4) : 0.0), 0.0, "~chi0_4", "mu-");
1402  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellcharnue(1) : 0.0), 0.0, "~chi-_1", "nu_mu");
1403  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellcharnue(2) : 0.0), 0.0, "~chi-_2", "nu_mu");
1404  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1405  }
void smuon_l_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: smuon_l.
Definition: DecayBit.cpp:1392
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
Here is the call graph for this function:
Here is the caller graph for this function:

◆ smuon_r_decays()

void Gambit::DecayBit::smuon_r_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: smuon_r.

Definition at line 1408 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1409  {
1410  using namespace Pipes::smuon_r_decays;
1411  result.calculator = BEreq::cb_sd_selwidth.origin();
1412  result.calculator_version = BEreq::cb_sd_selwidth.version();
1413  result.width_in_GeV = BEreq::cb_sd_selwidth->selrtot2;
1414  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(1) : 0.0), 0.0, "~chi0_1", "mu-");
1415  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(2) : 0.0), 0.0, "~chi0_2", "mu-");
1416  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(3) : 0.0), 0.0, "~chi0_3", "mu-");
1417  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(4) : 0.0), 0.0, "~chi0_4", "mu-");
1418  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrcharnue(1) : 0.0), 0.0, "~chi-_1", "nu_mu");
1419  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrcharnue(2) : 0.0), 0.0, "~chi-_2", "nu_mu");
1420  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1421  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void smuon_r_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: smuon_r.
Definition: DecayBit.cpp:1408
Here is the call graph for this function:
Here is the caller graph for this function:

◆ smuonbar_l_decays()

void Gambit::DecayBit::smuonbar_l_decays ( DecayTable::Entry result)

Definition at line 2802 of file DecayBit.cpp.

References CP_conjugate(), and smuon_l_decay_rates.

Referenced by main().

DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry smuon_l_decay_rates
Here is the call graph for this function:
Here is the caller graph for this function:

◆ smuonbar_r_decays()

void Gambit::DecayBit::smuonbar_r_decays ( DecayTable::Entry result)

Definition at line 2803 of file DecayBit.cpp.

References CP_conjugate(), and smuon_r_decay_rates.

Referenced by main().

DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry smuon_r_decay_rates
Here is the call graph for this function:
Here is the caller graph for this function:

◆ snu_electronl_decays()

void Gambit::DecayBit::snu_electronl_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: snu_electronl.

Definition at line 1491 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1492  {
1493  using namespace Pipes::snu_electronl_decays;
1494  result.calculator = BEreq::cb_sd_snelwidth.origin();
1495  result.calculator_version = BEreq::cb_sd_snelwidth.version();
1496  result.width_in_GeV = BEreq::cb_sd_snelwidth->sneltot2;
1497  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(1) : 0.0), 0.0, "~chi0_1", "nu_e");
1498  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(2) : 0.0), 0.0, "~chi0_2", "nu_e");
1499  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(3) : 0.0), 0.0, "~chi0_3", "nu_e");
1500  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(4) : 0.0), 0.0, "~chi0_4", "nu_e");
1501  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellchar(1) : 0.0), 0.0, "~chi+_1", "e-");
1502  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellchar(2) : 0.0), 0.0, "~chi+_2", "e-");
1503  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1504  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void snu_electronl_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: snu_electronl.
Definition: DecayBit.cpp:1491
Here is the call graph for this function:
Here is the caller graph for this function:

◆ snu_muonl_decays()

void Gambit::DecayBit::snu_muonl_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: snu_muonl.

Definition at line 1507 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1508  {
1509  using namespace Pipes::snu_muonl_decays;
1510  result.calculator = BEreq::cb_sd_snelwidth.origin();
1511  result.calculator_version = BEreq::cb_sd_snelwidth.version();
1512  result.width_in_GeV = BEreq::cb_sd_snelwidth->sneltot2;
1513  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(1) : 0.0), 0.0, "~chi0_1", "nu_mu");
1514  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(2) : 0.0), 0.0, "~chi0_2", "nu_mu");
1515  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(3) : 0.0), 0.0, "~chi0_3", "nu_mu");
1516  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(4) : 0.0), 0.0, "~chi0_4", "nu_mu");
1517  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellchar(1) : 0.0), 0.0, "~chi+_1", "mu-");
1518  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellchar(2) : 0.0), 0.0, "~chi+_2", "mu-");
1519  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1520  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void snu_muonl_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: snu_muonl.
Definition: DecayBit.cpp:1507
Here is the call graph for this function:
Here is the caller graph for this function:

◆ snu_taul_decays()

void Gambit::DecayBit::snu_taul_decays ( DecayTable::Entry result)

SUSY-HIT MSSM decays: snu_taul Note that SUSY-HIT calls ~nu_tau_L "snutau1" even though it has no RH (~)nus.

Definition at line 1524 of file DecayBit.cpp.

References Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), LOCAL_INFO, Gambit::DecayTable::Entry::set_BF(), and Gambit::DecayTable::Entry::width_in_GeV.

Referenced by main().

1525  {
1526  using namespace Pipes::snu_taul_decays;
1527  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1528 
1529  result.calculator = BEreq::cb_sd_sntauwidth.origin();
1530  result.calculator_version = BEreq::cb_sd_sntauwidth.version();
1531 
1532  result.width_in_GeV = BEreq::cb_sd_sntauwidth->sntautot2;
1533  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sntau2body->brsntauneut(1) : 0.0), 0.0, "~chi0_1", "nu_tau");
1534  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sntau2body->brsntauneut(2) : 0.0), 0.0, "~chi0_2", "nu_tau");
1535  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sntau2body->brsntauneut(3) : 0.0), 0.0, "~chi0_3", "nu_tau");
1536  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sntau2body->brsntauneut(4) : 0.0), 0.0, "~chi0_4", "nu_tau");
1537  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sntau2body->brsntauchar(1) : 0.0), 0.0, "~chi+_1", "tau-");
1538  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sntau2body->brsntauchar(2) : 0.0), 0.0, "~chi+_2", "tau-");
1539  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sntau2body->brsntau1hcstau(1) : 0.0), 0.0, psn.istau1bar, "H-");
1540  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sntau2body->brsntau1hcstau(2) : 0.0), 0.0, psn.istau2bar, "H-");
1541  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sntau2body->brsntau1wstau(1) : 0.0), 0.0, psn.istau1bar, "W-");
1542  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sntau2body->brsntau1wstau(2) : 0.0), 0.0, psn.istau2bar, "W-");
1543 
1544  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1545  }
void check_width(const str &info, double &w, bool raise_invalid_pt_negative_width=false, bool raise_invalid_pt_large_width=false)
Check if a width is negative or suspiciously large and raise an error.
Definition: DecayBit.cpp:92
#define LOCAL_INFO
Definition: local_info.hpp:34
void snu_taul_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: snu_taul Note that SUSY-HIT calls ~nu_tau_L "snutau1" even though it has no RH ...
Definition: DecayBit.cpp:1524
Here is the call graph for this function:
Here is the caller graph for this function:

◆ snubar_electronl_decays()

void Gambit::DecayBit::snubar_electronl_decays ( DecayTable::Entry result)

Definition at line 2806 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2806 { result = CP_conjugate(*Pipes::snubar_electronl_decays::Dep::snu_electronl_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ snubar_muonl_decays()

void Gambit::DecayBit::snubar_muonl_decays ( DecayTable::Entry result)

Definition at line 2807 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2807 { result = CP_conjugate(*Pipes::snubar_muonl_decays::Dep::snu_muonl_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ snubar_taul_decays()

void Gambit::DecayBit::snubar_taul_decays ( DecayTable::Entry result)

Definition at line 2808 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2808 { result = CP_conjugate(*Pipes::snubar_taul_decays::Dep::snu_taul_decay_rates); }
DecayTable::Entry CP_conjugate(const DecayTable::Entry &)
Construct a decay table entry for a particle from the entry for its antiparticle. ...
Definition: decay_utils.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sqrt_lambda()