gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
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_decaytable_as_map (map_str_dbl &map)
 Convert the DecayTable to a format where we can print each individual channel's BF. 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 3022 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().

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

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

3211  {
3212  using namespace Pipes::all_decays_from_SLHA;
3213  if (not runOptions->hasKey("SLHA_decay_filenames"))
3214  {
3215  DecayBit_error().raise(LOCAL_INFO, "Option \"SLHA_decay_filenames\" is required to use this function.");
3216  }
3217  static unsigned int counter = 0;
3218  std::vector<str> filenames = runOptions->getValue<std::vector<str> >("SLHA_decay_filenames");
3219  logger() << "Reading SLHA file: " << filenames[counter] << EOM;
3220  std::ifstream ifs(filenames[counter]);
3221  if(!ifs.good()) backend_error().raise(LOCAL_INFO, "SLHA file not found.");
3222  SLHAstruct slha(ifs);
3223  ifs.close();
3224  counter++;
3225  if (counter >= filenames.size()) counter = 0;
3226  decays = DecayTable(slha);
3227  }
void all_decays_from_SLHA(DecayTable &decays)
Read an SLHA2 file in and use it to create a GAMBIT DecayTable.
Definition: DecayBit.cpp:3210
#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:100
EXPORT_SYMBOLS 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 2833 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2833 { 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 2834 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2834 { 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 1567 of file DecayBit.cpp.

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

Referenced by main().

1568  {
1569  using namespace Pipes::chargino_plus_1_decays;
1570 
1571  // Collect results from the decay calculation for small chargino--neutralino mass splitting.
1572  // If this result is non-empty it should be used.
1573  DecayTable::Entry smallsplit_decays = *Dep::chargino_plus_1_decay_rates_smallsplit;
1574  if (smallsplit_decays.channels.size() > 0)
1575  result = smallsplit_decays;
1576  // Else, use the SUSY-HIT results
1577  else
1578  result = *Dep::chargino_plus_1_decay_rates_SH;
1579 
1580  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1581  }
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:1567
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 1584 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().

1585  {
1586  using namespace Pipes::chargino_plus_1_decays_SH;
1587  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1588 
1589  result.calculator = BEreq::cb_sd_charwidth.origin();
1590  result.calculator_version = BEreq::cb_sd_charwidth.version();
1591 
1592  result.width_in_GeV = BEreq::cb_sd_charwidth->chartot(1);
1593  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupl(1) : 0.0), 0.0, psn.isul, "dbar");
1594  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupr(1) : 0.0), 0.0, psn.isur, "dbar");
1595  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownl(1) : 0.0), 0.0, psn.isdlbar, "u");
1596  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownr(1) : 0.0), 0.0, psn.isdrbar, "u");
1597  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupl(1) : 0.0), 0.0, psn.iscl, "sbar");
1598  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupr(1) : 0.0), 0.0, psn.iscr, "sbar");
1599  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownl(1) : 0.0), 0.0, psn.isslbar, "c");
1600  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownr(1) : 0.0), 0.0, psn.issrbar, "c");
1601  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharst1(1) : 0.0), 0.0, psn.ist1, "bbar");
1602  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharst2(1) : 0.0), 0.0, psn.ist2, "bbar");
1603  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsb1(1) : 0.0), 0.0, psn.isb1bar, "t");
1604  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsb2(1) : 0.0), 0.0, psn.isb2bar, "t");
1605  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsnel(1) : 0.0), 0.0, psn.isnel, "e+");
1606  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsnel(1) : 0.0), 0.0, psn.isnmul, "mu+");
1607  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsn1(1) : 0.0), 0.0, psn.isntaul, "tau+");
1608  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsell(1) : 0.0), 0.0, psn.isellbar, "nu_e");
1609  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharselr(1) : 0.0), 0.0, psn.iselrbar, "nu_e");
1610  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsell(1) : 0.0), 0.0, psn.ismulbar, "nu_mu");
1611  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharselr(1) : 0.0), 0.0, psn.ismurbar, "nu_mu");
1612  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharstau1(1) : 0.0), 0.0, psn.istau1bar, "nu_tau");
1613  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharstau2(1) : 0.0), 0.0, psn.istau2bar, "nu_tau");
1614  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(1,1) : 0.0), 0.0, "~chi0_1", "W+");
1615  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(1,2) : 0.0), 0.0, "~chi0_2", "W+");
1616  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(1,3) : 0.0), 0.0, "~chi0_3", "W+");
1617  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(1,4) : 0.0), 0.0, "~chi0_4", "W+");
1618  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(1,1) : 0.0), 0.0, "~chi0_1", "H+");
1619  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(1,2) : 0.0), 0.0, "~chi0_2", "H+");
1620  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(1,3) : 0.0), 0.0, "~chi0_3", "H+");
1621  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(1,4) : 0.0), 0.0, "~chi0_4", "H+");
1622  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharwgravitino(1) : 0.0), 0.0, "~G", "W+");
1623  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharhcgravitino(1) : 0.0), 0.0, "~G", "H+");
1624  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharwgravitino(1) : 0.0), 0.0, "~G", "W+");
1625  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharhcgravitino(1) : 0.0), 0.0, "~G", "H+");
1626  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,1) : 0.0), 0.0, "~chi0_1", "u", "dbar");
1627  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,2) : 0.0), 0.0, "~chi0_2", "u", "dbar");
1628  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,3) : 0.0), 0.0, "~chi0_3", "u", "dbar");
1629  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,4) : 0.0), 0.0, "~chi0_4", "u", "dbar");
1630  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,1) : 0.0), 0.0, "~chi0_1", "c", "sbar");
1631  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,2) : 0.0), 0.0, "~chi0_2", "c", "sbar");
1632  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,3) : 0.0), 0.0, "~chi0_3", "c", "sbar");
1633  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(1,4) : 0.0), 0.0, "~chi0_4", "c", "sbar");
1634  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(1,1) : 0.0), 0.0, "~chi0_1", "t", "bbar");
1635  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(1,2) : 0.0), 0.0, "~chi0_2", "t", "bbar");
1636  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(1,3) : 0.0), 0.0, "~chi0_3", "t", "bbar");
1637  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(1,4) : 0.0), 0.0, "~chi0_4", "t", "bbar");
1638  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(1,1) : 0.0), 0.0, "~chi0_1", "e+", "nu_e");
1639  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(1,2) : 0.0), 0.0, "~chi0_2", "e+", "nu_e");
1640  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(1,3) : 0.0), 0.0, "~chi0_3", "e+", "nu_e");
1641  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(1,4) : 0.0), 0.0, "~chi0_4", "e+", "nu_e");
1642  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(1,1) : 0.0), 0.0, "~chi0_1", "mu+", "nu_mu");
1643  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(1,2) : 0.0), 0.0, "~chi0_2", "mu+", "nu_mu");
1644  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(1,3) : 0.0), 0.0, "~chi0_3", "mu+", "nu_mu");
1645  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(1,4) : 0.0), 0.0, "~chi0_4", "mu+", "nu_mu");
1646  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(1,1) : 0.0), 0.0, "~chi0_1", "tau+", "nu_tau");
1647  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(1,2) : 0.0), 0.0, "~chi0_2", "tau+", "nu_tau");
1648  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(1,3) : 0.0), 0.0, "~chi0_3", "tau+", "nu_tau");
1649  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(1,4) : 0.0), 0.0, "~chi0_4", "tau+", "nu_tau");
1650  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brglupdb(1) : 0.0), 0.0, "~g", "u", "dbar");
1651  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brglchsb(1) : 0.0), 0.0, "~g", "c", "sbar");
1652  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brgltopbb(1) : 0.0), 0.0, "~g", "t", "bbar");
1653 
1654  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1655  }
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:1584
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 2268 of file DecayBit.cpp.

References beta, BW(), Gambit::DecayTable::Entry::calculator, Gambit::DecayTable::Entry::calculator_version, check_width(), double, g, Gambit::gambit_version(), Gambit::SubSpectrum::get(), 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().

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

1659  {
1660  using namespace Pipes::chargino_plus_2_decays;
1661  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1662 
1663  result.calculator = BEreq::cb_sd_charwidth.origin();
1664  result.calculator_version = BEreq::cb_sd_charwidth.version();
1665 
1666  result.width_in_GeV = BEreq::cb_sd_charwidth->chartot(2);
1667  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupl(2) : 0.0), 0.0, psn.isul, "dbar");
1668  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupr(2) : 0.0), 0.0, psn.isur, "dbar");
1669  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownl(2) : 0.0), 0.0, psn.isdlbar, "u");
1670  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownr(2) : 0.0), 0.0, psn.isdrbar, "u");
1671  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupl(2) : 0.0), 0.0, psn.iscl, "sbar");
1672  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsupr(2) : 0.0), 0.0, psn.iscr, "sbar");
1673  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownl(2) : 0.0), 0.0, psn.isslbar, "c");
1674  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsdownr(2) : 0.0), 0.0, psn.issrbar, "c");
1675  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharst1(2) : 0.0), 0.0, psn.ist1, "bbar");
1676  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharst2(2) : 0.0), 0.0, psn.ist2, "bbar");
1677  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsb1(2) : 0.0), 0.0, psn.isb1bar, "t");
1678  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsb2(2) : 0.0), 0.0, psn.isb2bar, "t");
1679  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsnel(2) : 0.0), 0.0, psn.isnel, "e+");
1680  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsnel(2) : 0.0), 0.0, psn.isnmul, "mu+");
1681  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsn1(2) : 0.0), 0.0, psn.isntaul, "tau+");
1682  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsell(2) : 0.0), 0.0, psn.isellbar, "nu_e");
1683  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharselr(2) : 0.0), 0.0, psn.iselrbar, "nu_e");
1684  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharsell(2) : 0.0), 0.0, psn.ismulbar, "nu_mu");
1685  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharselr(2) : 0.0), 0.0, psn.ismurbar, "nu_mu");
1686  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharstau1(2) : 0.0), 0.0, psn.istau1bar, "nu_tau");
1687  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharstau2(2) : 0.0), 0.0, psn.istau2bar, "nu_tau");
1688  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharzchic : 0.0), 0.0, "~chi+_1", "Z0");
1689  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(2,1) : 0.0), 0.0, "~chi0_1", "W+");
1690  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(2,2) : 0.0), 0.0, "~chi0_2", "W+");
1691  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(2,3) : 0.0), 0.0, "~chi0_3", "W+");
1692  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharwneut(2,4) : 0.0), 0.0, "~chi0_4", "W+");
1693  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhlchic : 0.0), 0.0, "~chi+_1", "h0_1");
1694  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhhchic : 0.0), 0.0, "~chi+_1", "h0_2");
1695  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhachic : 0.0), 0.0, "~chi+_1", "A0");
1696  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(2,1) : 0.0), 0.0, "~chi0_1", "H+");
1697  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(2,2) : 0.0), 0.0, "~chi0_2", "H+");
1698  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(2,3) : 0.0), 0.0, "~chi0_3", "H+");
1699  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2body->brcharhcneut(2,4) : 0.0), 0.0, "~chi0_4", "H+");
1700  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharwgravitino(2) : 0.0), 0.0, "~G", "W+");
1701  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharhcgravitino(2) : 0.0), 0.0, "~G", "H+");
1702  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharwgravitino(2) : 0.0), 0.0, "~G", "W+");
1703  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char2bodygrav->brcharhcgravitino(2) : 0.0), 0.0, "~G", "H+");
1704  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,1) : 0.0), 0.0, "~chi0_1", "u", "dbar");
1705  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,2) : 0.0), 0.0, "~chi0_2", "u", "dbar");
1706  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,3) : 0.0), 0.0, "~chi0_3", "u", "dbar");
1707  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,4) : 0.0), 0.0, "~chi0_4", "u", "dbar");
1708  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,1) : 0.0), 0.0, "~chi0_1", "c", "sbar");
1709  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,2) : 0.0), 0.0, "~chi0_2", "c", "sbar");
1710  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,3) : 0.0), 0.0, "~chi0_3", "c", "sbar");
1711  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnupdb(2,4) : 0.0), 0.0, "~chi0_4", "c", "sbar");
1712  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(2,1) : 0.0), 0.0, "~chi0_1", "t", "bbar");
1713  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(2,2) : 0.0), 0.0, "~chi0_2", "t", "bbar");
1714  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(2,3) : 0.0), 0.0, "~chi0_3", "t", "bbar");
1715  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntopbb(2,4) : 0.0), 0.0, "~chi0_4", "t", "bbar");
1716  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(2,1) : 0.0), 0.0, "~chi0_1", "e+", "nu_e");
1717  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(2,2) : 0.0), 0.0, "~chi0_2", "e+", "nu_e");
1718  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(2,3) : 0.0), 0.0, "~chi0_3", "e+", "nu_e");
1719  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnelnue(2,4) : 0.0), 0.0, "~chi0_4", "e+", "nu_e");
1720  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(2,1) : 0.0), 0.0, "~chi0_1", "mu+", "nu_mu");
1721  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(2,2) : 0.0), 0.0, "~chi0_2", "mu+", "nu_mu");
1722  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(2,3) : 0.0), 0.0, "~chi0_3", "mu+", "nu_mu");
1723  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brnmunumu(2,4) : 0.0), 0.0, "~chi0_4", "mu+", "nu_mu");
1724  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(2,1) : 0.0), 0.0, "~chi0_1", "tau+", "nu_tau");
1725  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(2,2) : 0.0), 0.0, "~chi0_2", "tau+", "nu_tau");
1726  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(2,3) : 0.0), 0.0, "~chi0_3", "tau+", "nu_tau");
1727  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brntaunut(2,4) : 0.0), 0.0, "~chi0_4", "tau+", "nu_tau");
1728  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchupup : 0.0), 0.0, "~chi+_1", "u", "ubar");
1729  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchdodo : 0.0), 0.0, "~chi+_1", "d", "dbar");
1730  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchchch : 0.0), 0.0, "~chi+_1", "c", "cbar");
1731  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchstst : 0.0), 0.0, "~chi+_1", "s", "sbar");
1732  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchtoptop : 0.0), 0.0, "~chi+_1", "t", "tbar");
1733  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchbotbot : 0.0), 0.0, "~chi+_1", "b", "bbar");
1734  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchee : 0.0), 0.0, "~chi+_1", "e+", "e-");
1735  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchmumu : 0.0), 0.0, "~chi+_1", "mu+", "mu-");
1736  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchtautau : 0.0), 0.0, "~chi+_1", "tau+", "tau-");
1737  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchnene : 0.0), 0.0, "~chi+_1", "nu_e", "nubar_e");
1738  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchnmunmu : 0.0), 0.0, "~chi+_1", "nu_mu", "nubar_mu");
1739  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brchntauntau : 0.0), 0.0, "~chi+_1", "nu_tau", "nubar_tau");
1740  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brglupdb(2) : 0.0), 0.0, "~g", "u", "dbar");
1741  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brglchsb(2) : 0.0), 0.0, "~g", "c", "sbar");
1742  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_char3body->brgltopbb(2) : 0.0), 0.0, "~g", "t", "bbar");
1743 
1744  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1745  }
void chargino_plus_2_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: chargino_plus_2.
Definition: DecayBit.cpp:1658
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 3330 of file DecayBit.cpp.

References Gambit::slhahelp::mass_es_from_gauge_es().

3331  {
3332  using namespace Pipes::check_first_sec_gen_mixing;
3333  const static double tol = runOptions->getValueOrDef<double>(1e-2, "gauge_mixing_tolerance");
3334  result = 0;
3335  double max_mixing;
3336  const SubSpectrum& mssm = (*Dep::MSSM_spectrum).get_HE();
3337  str x = slhahelp::mass_es_from_gauge_es("~u_L", max_mixing, mssm);
3338  if((max_mixing*max_mixing) <= 1-tol) result = 1;
3339  x = slhahelp::mass_es_from_gauge_es("~u_R", max_mixing, mssm);
3340  if((max_mixing*max_mixing) <= 1-tol) result = 1;
3341  x = slhahelp::mass_es_from_gauge_es("~d_L", max_mixing, mssm);
3342  if((max_mixing*max_mixing) <= 1-tol) result = 2;
3343  x = slhahelp::mass_es_from_gauge_es("~d_R", max_mixing, mssm);
3344  if((max_mixing*max_mixing) <= 1-tol) result = 2;
3345  x = slhahelp::mass_es_from_gauge_es("~c_L", max_mixing, mssm);
3346  if((max_mixing*max_mixing) <= 1-tol) result = 3;
3347  x = slhahelp::mass_es_from_gauge_es("~c_R", max_mixing, mssm);
3348  if((max_mixing*max_mixing) <= 1-tol) result = 3;
3349  x = slhahelp::mass_es_from_gauge_es("~s_L", max_mixing, mssm);
3350  if((max_mixing*max_mixing) <= 1-tol) result = 4;
3351  x = slhahelp::mass_es_from_gauge_es("~s_R", max_mixing, mssm);
3352  if((max_mixing*max_mixing) <= 1-tol) result = 4;
3353  x = slhahelp::mass_es_from_gauge_es("~e_L", max_mixing, mssm);
3354  if((max_mixing*max_mixing) <= 1-tol) result = 5;
3355  x = slhahelp::mass_es_from_gauge_es("~e_R", max_mixing, mssm);
3356  if((max_mixing*max_mixing) <= 1-tol) result = 5;
3357  x = slhahelp::mass_es_from_gauge_es("~mu_L", max_mixing, mssm);
3358  if((max_mixing*max_mixing) <= 1-tol) result = 6;
3359  x = slhahelp::mass_es_from_gauge_es("~mu_R", max_mixing, mssm);
3360  if((max_mixing*max_mixing) <= 1-tol) result = 6;
3361  }
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:3330
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. Exact override of base method.
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. Exact override of base method.
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:36
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 2978 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.

2979  {
2980  using namespace Pipes::DiracSingletDM_Higgs_decays;
2981 
2982  // Get the spectrum information
2983  const Spectrum& spec = *Dep::DiracSingletDM_Z2_spectrum;
2984  const SubSpectrum& he = spec.get_HE();
2985  double mass = spec.get(Par::Pole_Mass,"F");
2986  double lambda = he.get(Par::dimensionless,"lF");
2987  double cxi = std::cos(he.get(Par::dimensionless,"xi"));
2988  double v0 = he.get(Par::mass1,"vev");
2989  double mhpole = spec.get(Par::Pole_Mass,"h0_1");
2990 
2991  // Get the reference SM Higgs decays
2992  result = *Dep::Reference_SM_Higgs_decay_rates;
2993 
2994  // Add the h -> FF width to the total
2995  double massratio2 = pow(mass/mhpole,2);
2996  double lfactor = (1 - 4*massratio2*pow(cxi,2));
2997  double gamma = (2.0*mass <= mhpole) ? ((mhpole*pow(v0*lambda,2))/(8.0*pi)) * sqrt(1.0 - 4.0*massratio2) * lfactor : 0.0;
2998  result.width_in_GeV = result.width_in_GeV + gamma;
2999 
3000  // Print out the h -> FF width for debugging
3001  logger() << "Gamma (h -> FF) = " << gamma << " GeV" << std::endl;
3002 
3003  // Rescale the SM decay branching fractions.
3004  double wscaling = Dep::Reference_SM_Higgs_decay_rates->width_in_GeV/result.width_in_GeV;
3005  for (auto it = result.channels.begin(); it != result.channels.end(); ++it)
3006  {
3007  it->second.first *= wscaling; // rescale BF
3008  it->second.second *= wscaling; // rescale error on BF
3009  }
3010 
3011  // Add the h->FF branching fraction
3012  result.set_BF(gamma/result.width_in_GeV, 0.0, "F", "F");
3013 
3014  // Make sure the width is sensible.
3015  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
3016  }
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
EXPORT_SYMBOLS Logging::LogMaster & logger()
Function to retrieve a reference to the Gambit global log object.
Definition: logger.cpp:95
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:2978
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 3503 of file DecayBit.cpp.

3504  {
3509  using namespace Pipes::DiracSingletDM_inv_Higgs_BF;
3510  BF = Dep::Higgs_decay_rates->BF("F", "F");
3511  }
void DiracSingletDM_inv_Higgs_BF(double &BF)
Definition: DecayBit.cpp:3503

◆ 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_decaytable_as_map()

void Gambit::DecayBit::get_decaytable_as_map ( map_str_dbl map)

Convert the DecayTable to a format where we can print each individual channel's BF.

Otherwise just print the specific, named channels

Definition at line 3230 of file DecayBit.cpp.

References Gambit::DecayTable::at(), Gambit::DecayTable::Entry::BF(), Gambit::DecayTable::Entry::channels, Gambit::Models::ParticleDB(), and Gambit::DecayTable::particles.

3231  {
3232  using namespace Pipes::get_decaytable_as_map;
3233 
3234  const DecayTable* tbl = &(*Dep::decay_rates);
3235 
3236  std::vector<std::vector<str> > bfs;
3237  std::string channel;
3238  double BF = 0.0;
3239 
3240  // If the user specifies "printall" -- then print everything.
3241  bool printall = runOptions->getValueOrDef(false, "printall");
3242  if (printall)
3243  {
3244  // Iterate through DecayTable.
3245  for (auto it = tbl->particles.begin(); it != tbl->particles.end(); ++it)
3246  {
3247  std::pair<int, int> pdg = it->first;
3248  std::vector<str> bf = {Models::ParticleDB().partmap::long_name(pdg)};
3249  bfs.push_back(bf);
3250  }
3251  }
3252 
3254  else
3255  {
3256  std::vector<std::vector<str> > BFs; // Empty set of braching fractions.
3257  bfs = runOptions->getValueOrDef<std::vector<std::vector<str> > >(BFs, "BFs");
3258  }
3259 
3260  // Iterate through branching ratios
3261  for ( const auto &row : bfs )
3262  {
3263 
3264  std::string decaypart = row.front();
3265  const DecayTable::Entry entry = tbl->at(decaypart);
3266 
3267  // If the entry is a single particle, then add every BF for this channel
3268  if ( row.size() == 1 )
3269  {
3270  for (auto it = entry.channels.begin(); it != entry.channels.end(); ++it)
3271  {
3272  BF = it->second.first;
3273 
3274  std::multiset< std::pair<int,int> > ch = it->first;
3275  std::vector<str> chan;
3276 
3277  // Create a vector of final states by particle name.
3278  for (auto it2 = ch.begin(); it2 != ch.end(); ++it2) chan.push_back(Models::ParticleDB().partmap::long_name(*it2));
3279 
3280  // Write the name of the output channel.
3281  channel = row[0] + "->" + chan[0] + "+" + chan[1];
3282 
3283  // + 3-body decay case: add the third final state particle if needed.
3284  if (chan.size() == 3) channel += "+" + chan[2];
3285 
3286  map[channel] = BF;
3287  }
3288 
3289  }
3290 
3291  // No 1-body decays..
3292 
3293  // 2-body decays channel-by-channel
3294  else if ( row.size() == 3 )
3295  {
3296  BF = entry.BF( row[1], row[2] );
3297  channel = row[0] + "->" + row[1] + "+" + row[2];
3298  map[channel] = BF;
3299  }
3300 
3301  // 3-body decays channel-by-channel
3302  // (SB: I don't think we have these yet. But if/when we do, they will be supported)
3303  else if (row.size() == 4 )
3304  {
3305  BF = entry.BF( row[1], row[2], row[3] );
3306  channel = row[0] + "->" + row[1] + "+" + row[2] + "+" + row[3];
3307  map[channel] = BF;
3308  }
3309  }
3310  }
void get_decaytable_as_map(map_str_dbl &map)
Convert the DecayTable to a format where we can print each individual channel&#39;s BF.
Definition: DecayBit.cpp:3230
partmap & ParticleDB()
Database accessor function.
Definition: partmap.cpp:36
Here is the call graph for this function:

◆ get_Higgs_invWidth_chi2()

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

Definition at line 3366 of file DecayBit.cpp.

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

Referenced by lnL_Higgs_invWidth_SMlike().

3367  {
3368  ASCIItableReader table(filename);
3369  std::vector<std::string> colnames = initVector<std::string>("BR", "Delta_chi2");
3370  table.setcolnames(colnames);
3371  return daFunk::interp("BR", table["BR"], table["Delta_chi2"]);
3372  }
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 3314 of file DecayBit.cpp.

References Gambit::LogTags::debug.

Referenced by main().

3315  {
3316  using namespace Pipes::get_mass_es_pseudonyms;
3317  const SubSpectrum& mssm = (*Dep::MSSM_spectrum).get_HE();
3318 
3319  const static double tol = runOptions->getValueOrDef<double>(1e-2, "gauge_mixing_tolerance");
3320  const static bool pt_error = runOptions->getValueOrDef<bool>(true, "gauge_mixing_tolerance_invalidates_point_only");
3321  bool debug = runOptions->getValueOrDef<bool>(false, "debug");
3322  result.refill(mssm, tol, pt_error, debug);
3323  }
void get_mass_es_pseudonyms(mass_es_pseudonyms &result)
Get MSSM mass eigenstate pseudonyms for the gauge eigenstates.
Definition: DecayBit.cpp:3314
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 2811 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2811 { 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 3513 of file DecayBit.cpp.

References get_Higgs_invWidth_chi2(), and LOCAL_INFO.

3514  {
3551  using namespace Pipes::lnL_Higgs_invWidth_SMlike;
3552 
3553  const double BF = *Dep::inv_Higgs_BF;
3554 
3555  if (BF < 0.)
3556  {
3557  DecayBit_error().raise(LOCAL_INFO, "negative BF");
3558  }
3559 
3560  const std::string default_name = "./DecayBit/data/arXiv_1306.2941_Figure_8.dat";
3561  const std::string name = runOptions->getValueOrDef<std::string>
3562  (default_name, "BR_h_inv_chi2_data_file");
3563  static daFunk::Funk chi2 = get_Higgs_invWidth_chi2(GAMBIT_DIR "/" + name);
3564  lnL = -0.5 * chi2->bind("BR")->eval(BF);
3565  }
#define LOCAL_INFO
Definition: local_info.hpp:34
void lnL_Higgs_invWidth_SMlike(double &lnL)
Definition: DecayBit.cpp:3513
daFunk::Funk get_Higgs_invWidth_chi2(std::string filename)
Definition: DecayBit.cpp:3366
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 3728 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.

3729  {
3730  using namespace Pipes::lnL_W_decays_chi2;
3731  std::vector<double> Wtoldecays = *Dep::W_to_l_decays;
3732  DecayTable::Entry decays = *Dep::W_plus_decay_rates;
3733 
3734  std::vector<double> Wwidth;
3735  std::vector<double> Wwidth_error;
3736 
3737  Wwidth.push_back(decays.width_in_GeV * decays.BF("e+","nu_e"));
3738  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)));
3739  Wwidth.push_back(decays.width_in_GeV * decays.BF("mu+","nu_mu"));
3740  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)));
3741  Wwidth.push_back(decays.width_in_GeV * decays.BF("tau+","nu_tau"));
3742  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)));
3743 
3744  result = Stats::gaussian_loglikelihood(Wtoldecays[0], Wwidth[0], 0.0, Wwidth_error[0], false);
3745  result += Stats::gaussian_loglikelihood(Wtoldecays[1], Wwidth[1], 0.0, Wwidth_error[1], false);
3746  result += Stats::gaussian_loglikelihood(Wtoldecays[2], Wwidth[2], 0.0, Wwidth_error[2], false);
3747  }
void lnL_W_decays_chi2(double &result)
Definition: DecayBit.cpp:3728
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 3567 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.

3568  {
3578  using namespace Pipes::lnL_Z_inv;
3579  const triplet<double> gamma_nu = *Dep::Z_gamma_nu;
3580  double gamma_inv = gamma_nu.central;
3581  const double tau_nu = 0.5 * (gamma_nu.upper + gamma_nu.lower);
3582  double tau = tau_nu;
3583 
3584  if(ModelInUse("MSSM63atQ") or ModelInUse("MSSM63atMGUT"))
3585  {
3586  const triplet<double> gamma_chi_0 = *Dep::Z_gamma_chi_0;
3587  gamma_inv += gamma_chi_0.central;
3588  // Average + and - errors
3589  const double tau_chi_0 = 0.5 * (gamma_chi_0.upper + gamma_chi_0.lower);
3590  // Add theory errors in quadrature
3591  tau = std::sqrt(pow(tau, 2) + pow(tau_chi_0, 2));
3592  }
3593 
3594  lnL = Stats::gaussian_loglikelihood(gamma_inv, SM_Z::gamma_inv.mu, tau, SM_Z::gamma_inv.sigma, false);
3595 
3596  }
void lnL_Z_inv(double &lnL)
Definition: DecayBit.cpp:3567
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 2935 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.

2936  {
2937  using namespace Pipes::MajoranaSingletDM_Higgs_decays;
2938 
2939  // Get the spectrum information
2941  const SubSpectrum& he = spec.get_HE();
2942  double mass = spec.get(Par::Pole_Mass,"X");
2943  double lambda = he.get(Par::dimensionless,"lX");
2944  double cxi = std::cos(he.get(Par::dimensionless,"xi"));
2945  double v0 = he.get(Par::mass1,"vev");
2946  double mhpole = spec.get(Par::Pole_Mass,"h0_1");
2947 
2948  // Get the reference SM Higgs decays
2949  result = *Dep::Reference_SM_Higgs_decay_rates;
2950 
2951  // Add the h -> XX width to the total
2952  double massratio2 = pow(mass/mhpole,2);
2953  double lfactor = (1 - 4*massratio2*pow(cxi,2));
2954  double gamma = (2.0*mass <= mhpole) ? ((mhpole*pow(v0*lambda,2))/(16.0*pi)) * sqrt(1.0 - 4.0*massratio2) * lfactor : 0.0;
2955  result.width_in_GeV = result.width_in_GeV + gamma;
2956 
2957  // Print out the h -> XX width for debugging
2958  logger() << "Gamma (h -> XX) = " << gamma << " GeV" << std::endl;
2959 
2960  // Rescale the SM decay branching fractions.
2961  double wscaling = Dep::Reference_SM_Higgs_decay_rates->width_in_GeV/result.width_in_GeV;
2962  for (auto it = result.channels.begin(); it != result.channels.end(); ++it)
2963  {
2964  it->second.first *= wscaling; // rescale BF
2965  it->second.second *= wscaling; // rescale error on BF
2966  }
2967 
2968  // Add the h->XX branching fraction
2969  result.set_BF(gamma/result.width_in_GeV, 0.0, "X", "X");
2970 
2971  // Make sure the width is sensible.
2972  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
2973  }
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:2935
const double pi
EXPORT_SYMBOLS Logging::LogMaster & logger()
Function to retrieve a reference to the Gambit global log object.
Definition: logger.cpp:95
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 3493 of file DecayBit.cpp.

3494  {
3499  using namespace Pipes::MajoranaSingletDM_inv_Higgs_BF;
3500  BF = Dep::Higgs_decay_rates->BF("X", "X");
3501  }
void MajoranaSingletDM_inv_Higgs_BF(double &BF)
Definition: DecayBit.cpp:3493

◆ 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 3375 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.

3376  {
3390  using namespace Pipes::MSSM_inv_Higgs_BF;
3391  const Spectrum& spec = *Dep::MSSM_spectrum;
3392  const SubSpectrum& MSSM = Dep::MSSM_spectrum->get_HE();
3393  const SMInputs& SM = Dep::MSSM_spectrum->get_SMInputs();
3394 
3395  // Neutralino masses with phases
3396  std::array<double, 4> m_0;
3397  for (int i = 0; i <= 3; i += 1)
3398  {
3399  m_0[i] = spec.get(Par::Pole_Mass, "~chi0", i + 1);
3400  }
3401 
3402  // Neutralino mixing matrix
3403  std::array<std::array<double, 4>, 4> Z;
3404  for (int i = 0; i <= 3; i += 1)
3405  {
3406  for (int j = 0; j <= 3; j += 1)
3407  {
3408  Z[i][j] = MSSM.get(Par::Pole_Mixing, "~chi0", i + 1, j + 1);
3409  }
3410  }
3411 
3412  // Chargino masses
3413  std::array<double, 2> m_pm;
3414  for (int i = 0; i <= 1; i += 1)
3415  {
3416  m_pm[i] = spec.get(Par::Pole_Mass, "~chi+", i + 1);
3417  }
3418 
3419  // Chargino mixing matrices
3420  std::array<std::array<double, 2>, 2> U, V;
3421  for (int i = 0; i <= 1; i += 1)
3422  {
3423  for (int j = 0; j <= 1; j += 1)
3424  {
3425  U[i][j] = MSSM.get(Par::Pole_Mixing, "~chi-", i + 1, j + 1);
3426  V[i][j] = MSSM.get(Par::Pole_Mixing, "~chi+", i + 1, j + 1);
3427  }
3428  }
3429 
3430  // SM parameters
3431  const double mh = MSSM.get(Par::Pole_Mass, "h0_1");
3432  const double mw = MSSM.get(Par::Pole_Mass, "W+");
3433  const double GF = SM.GF;
3434  const double sw2 = MSSM.safeget(Par::dimensionless, "sinW2");
3435 
3436  // Higgs mixing angle
3437  const double beta = atan(MSSM.safeget(Par::dimensionless, "tanbeta"));
3438  const double alpha = beta - 0.5 * pi;
3439 
3440  // Higgs invisible width
3441  double gamma_inv = 0.;
3442  try
3443  {
3444  gamma_inv = MSSM_H::gamma_h_chi_0(0, 0, m_0, Z, alpha, mh, mw, GF, sw2);
3445  }
3446  catch (const std::invalid_argument& e)
3447  {
3448  DecayBit_error().raise(LOCAL_INFO, e.what());
3449  }
3450 
3451  // SM-like Higgs width
3452  DecayTable::Entry SM_h;
3453  compute_SM_higgs_decays(SM_h, mh);
3454  const double gamma_SM = SM_h.width_in_GeV;
3455 
3456  // Width to neutralinos and charginos
3457  double gamma_chi = 0.;
3458  try
3459  {
3460  gamma_chi = MSSM_H::gamma_h_chi(m_pm, m_0, U, V, Z, alpha, mh, mw, GF, sw2);
3461  }
3462  catch (const std::invalid_argument& e)
3463  {
3464  DecayBit_error().raise(LOCAL_INFO, e.what());
3465  }
3466 
3467  // Total Higgs width
3468  double gamma_tot = gamma_SM + gamma_chi;
3469 
3470  BF = gamma_inv / gamma_tot;
3471  }
Spectrum Spectrum Spectrum mw
START_MODEL beta
Definition: Axions.hpp:36
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 mh
void MSSM_inv_Higgs_BF(double &BF)
Definition: DecayBit.cpp:3375
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 1748 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().

1749  {
1750  using namespace Pipes::neutralino_1_decays;
1751  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1752 
1753  result.calculator = BEreq::cb_sd_neutwidth.origin();
1754  result.calculator_version = BEreq::cb_sd_neutwidth.version();
1755 
1756  result.width_in_GeV = BEreq::cb_sd_neutwidth->neuttot(1);
1757  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(1,1) : 0.0), 0.0, "~chi+_1", "W-");
1758  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(1,1) : 0.0), 0.0, "~chi-_1", "W+");
1759  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(1,2) : 0.0), 0.0, "~chi+_2", "W-");
1760  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(1,2) : 0.0), 0.0, "~chi-_2", "W+");
1761  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(1,1) : 0.0), 0.0, "~chi+_1", "H-");
1762  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(1,1) : 0.0), 0.0, "~chi-_1", "H+");
1763  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(1,2) : 0.0), 0.0, "~chi+_2", "H-");
1764  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(1,2) : 0.0), 0.0, "~chi-_2", "H+");
1765  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(1) : 0.0), 0.0, psn.isul, "ubar");
1766  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(1) : 0.0), 0.0, psn.isulbar, "u");
1767  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(1) : 0.0), 0.0, psn.isur, "ubar");
1768  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(1) : 0.0), 0.0, psn.isurbar, "u");
1769  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(1) : 0.0), 0.0, psn.isdl, "dbar");
1770  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(1) : 0.0), 0.0, psn.isdlbar, "d");
1771  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(1) : 0.0), 0.0, psn.isdr, "dbar");
1772  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(1) : 0.0), 0.0, psn.isdrbar, "d");
1773  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(1) : 0.0), 0.0, psn.iscl, "cbar");
1774  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(1) : 0.0), 0.0, psn.isclbar, "c");
1775  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(1) : 0.0), 0.0, psn.iscr, "cbar");
1776  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(1) : 0.0), 0.0, psn.iscrbar, "c");
1777  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(1) : 0.0), 0.0, psn.issl, "sbar");
1778  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(1) : 0.0), 0.0, psn.isslbar, "s");
1779  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(1) : 0.0), 0.0, psn.issr, "sbar");
1780  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(1) : 0.0), 0.0, psn.issrbar, "s");
1781  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(1) : 0.0), 0.0, psn.ist1, "tbar");
1782  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(1) : 0.0), 0.0, psn.ist1bar, "t");
1783  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(1) : 0.0), 0.0, psn.ist2, "tbar");
1784  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(1) : 0.0), 0.0, psn.ist2bar, "t");
1785  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(1) : 0.0), 0.0, psn.isb1, "bbar");
1786  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(1) : 0.0), 0.0, psn.isb1bar, "b");
1787  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(1) : 0.0), 0.0, psn.isb2, "bbar");
1788  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(1) : 0.0), 0.0, psn.isb2bar, "b");
1789  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(1) : 0.0), 0.0, psn.isell, "e+");
1790  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(1) : 0.0), 0.0, psn.isellbar, "e-");
1791  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(1) : 0.0), 0.0, psn.iselr, "e+");
1792  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(1) : 0.0), 0.0, psn.iselrbar, "e-");
1793  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(1) : 0.0), 0.0, psn.ismul, "mu+");
1794  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(1) : 0.0), 0.0, psn.ismulbar, "mu-");
1795  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(1) : 0.0), 0.0, psn.ismur, "mu+");
1796  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(1) : 0.0), 0.0, psn.ismurbar, "mu-");
1797  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(1) : 0.0), 0.0, psn.istau1, "tau+");
1798  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(1) : 0.0), 0.0, psn.istau1bar, "tau-");
1799  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(1) : 0.0), 0.0, psn.istau2, "tau+");
1800  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(1) : 0.0), 0.0, psn.istau2bar, "tau-");
1801  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(1) : 0.0), 0.0, psn.isnel, "nubar_e");
1802  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(1) : 0.0), 0.0, psn.isnelbar, "nu_e");
1803  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(1) : 0.0), 0.0, psn.isnmul, "nubar_mu");
1804  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(1) : 0.0), 0.0, psn.isnmulbar, "nu_mu");
1805  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(1) : 0.0), 0.0, psn.isntaul, "nubar_tau");
1806  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(1) : 0.0), 0.0, psn.isntaulbar, "nu_tau");
1807  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(1) : 0.0), 0.0, "~G", "gamma");
1808  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(1) : 0.0), 0.0, "~G", "Z0");
1809  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(1) : 0.0), 0.0, "~G", "h0_1");
1810  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(1) : 0.0), 0.0, "~G", "h0_2");
1811  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(1) : 0.0), 0.0, "~G", "A0");
1812  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(1) : 0.0), 0.0, "~G", "gamma");
1813  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(1) : 0.0), 0.0, "~G", "Z0");
1814  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(1) : 0.0), 0.0, "~G", "h0_1");
1815  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(1) : 0.0), 0.0, "~G", "h0_2");
1816  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(1) : 0.0), 0.0, "~G", "A0");
1817  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(1,1) : 0.0), 0.0, "~chi+_1", "ubar", "d");
1818  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(1,1) : 0.0), 0.0, "~chi-_1", "dbar", "u");
1819  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(1,2) : 0.0), 0.0, "~chi+_2", "ubar", "d");
1820  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(1,2) : 0.0), 0.0, "~chi-_2", "dbar", "u");
1821  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(1,1) : 0.0), 0.0, "~chi+_1", "cbar", "s");
1822  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(1,1) : 0.0), 0.0, "~chi-_1", "sbar", "c");
1823  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(1,2) : 0.0), 0.0, "~chi+_2", "cbar", "s");
1824  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(1,2) : 0.0), 0.0, "~chi-_2", "sbar", "c");
1825  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(1,1) : 0.0), 0.0, "~chi+_1", "tbar", "b");
1826  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(1,1) : 0.0), 0.0, "~chi-_1", "bbar", "t");
1827  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(1,2) : 0.0), 0.0, "~chi+_2", "tbar", "b");
1828  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(1,2) : 0.0), 0.0, "~chi-_2", "bbar", "t");
1829  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(1,1) : 0.0), 0.0, "~chi+_1", "nubar_e", "e-");
1830  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(1,1) : 0.0), 0.0, "~chi-_1", "nu_e", "e+");
1831  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(1,2) : 0.0), 0.0, "~chi+_2", "nubar_e", "e-");
1832  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(1,2) : 0.0), 0.0, "~chi-_2", "nu_e", "e+");
1833  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(1,1) : 0.0), 0.0, "~chi+_1", "nubar_mu", "mu-");
1834  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(1,1) : 0.0), 0.0, "~chi-_1", "nu_mu", "mu+");
1835  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(1,2) : 0.0), 0.0, "~chi+_2", "nubar_mu", "mu-");
1836  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(1,2) : 0.0), 0.0, "~chi-_2", "nu_mu", "mu+");
1837  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(1,1) : 0.0), 0.0, "~chi+_1", "nubar_tau", "tau-");
1838  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(1,1) : 0.0), 0.0, "~chi-_1", "nu_tau", "tau+");
1839  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(1,2) : 0.0), 0.0, "~chi+_2", "nubar_tau", "tau-");
1840  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(1,2) : 0.0), 0.0, "~chi-_2", "nu_tau", "tau+");
1841  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglup(1) : 0.0), 0.0, "~g", "ubar", "u");
1842  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgldo(1) : 0.0), 0.0, "~g", "dbar", "d");
1843  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglch(1) : 0.0), 0.0, "~g", "cbar", "c");
1844  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglst(1) : 0.0), 0.0, "~g", "sbar", "s");
1845  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgltop(1) : 0.0), 0.0, "~g", "tbar", "t");
1846  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglbot(1) : 0.0), 0.0, "~g", "bbar", "b");
1847 
1848  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1849  }
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:1748
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 1852 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().

1853  {
1854  using namespace Pipes::neutralino_2_decays;
1855  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1856 
1857  result.calculator = BEreq::cb_sd_neutwidth.origin();
1858  result.calculator_version = BEreq::cb_sd_neutwidth.version();
1859 
1860  result.width_in_GeV = BEreq::cb_sd_neutwidth->neuttot(2);
1861  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(2,1) : 0.0), 0.0, "~chi0_1", "Z0");
1862  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(2,1) : 0.0), 0.0, "~chi+_1", "W-");
1863  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(2,1) : 0.0), 0.0, "~chi-_1", "W+");
1864  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(2,2) : 0.0), 0.0, "~chi+_2", "W-");
1865  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(2,2) : 0.0), 0.0, "~chi-_2", "W+");
1866  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(2,1) : 0.0), 0.0, "~chi0_1", "h0_1");
1867  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(2,1) : 0.0), 0.0, "~chi0_1", "h0_2");
1868  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(2,1) : 0.0), 0.0, "~chi0_1", "A0");
1869  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(2,1) : 0.0), 0.0, "~chi+_1", "H-");
1870  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(2,1) : 0.0), 0.0, "~chi-_1", "H+");
1871  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(2,2) : 0.0), 0.0, "~chi+_2", "H-");
1872  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(2,2) : 0.0), 0.0, "~chi-_2", "H+");
1873  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(2) : 0.0), 0.0, psn.isul, "ubar");
1874  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(2) : 0.0), 0.0, psn.isulbar, "u");
1875  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(2) : 0.0), 0.0, psn.isur, "ubar");
1876  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(2) : 0.0), 0.0, psn.isurbar, "u");
1877  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(2) : 0.0), 0.0, psn.isdl, "dbar");
1878  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(2) : 0.0), 0.0, psn.isdlbar, "d");
1879  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(2) : 0.0), 0.0, psn.isdr, "dbar");
1880  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(2) : 0.0), 0.0, psn.isdrbar, "d");
1881  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(2) : 0.0), 0.0, psn.iscl, "cbar");
1882  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(2) : 0.0), 0.0, psn.isclbar, "c");
1883  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(2) : 0.0), 0.0, psn.iscr, "cbar");
1884  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(2) : 0.0), 0.0, psn.iscrbar, "c");
1885  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(2) : 0.0), 0.0, psn.issl, "sbar");
1886  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(2) : 0.0), 0.0, psn.isslbar, "s");
1887  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(2) : 0.0), 0.0, psn.issr, "sbar");
1888  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(2) : 0.0), 0.0, psn.issrbar, "s");
1889  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(2) : 0.0), 0.0, psn.ist1, "tbar");
1890  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(2) : 0.0), 0.0, psn.ist1bar, "t");
1891  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(2) : 0.0), 0.0, psn.ist2, "tbar");
1892  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(2) : 0.0), 0.0, psn.ist2bar, "t");
1893  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(2) : 0.0), 0.0, psn.isb1, "bbar");
1894  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(2) : 0.0), 0.0, psn.isb1bar, "b");
1895  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(2) : 0.0), 0.0, psn.isb2, "bbar");
1896  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(2) : 0.0), 0.0, psn.isb2bar, "b");
1897  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(2) : 0.0), 0.0, psn.isell, "e+");
1898  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(2) : 0.0), 0.0, psn.isellbar, "e-");
1899  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(2) : 0.0), 0.0, psn.iselr, "e+");
1900  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(2) : 0.0), 0.0, psn.iselrbar, "e-");
1901  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(2) : 0.0), 0.0, psn.ismul, "mu+");
1902  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(2) : 0.0), 0.0, psn.ismulbar, "mu-");
1903  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(2) : 0.0), 0.0, psn.ismur, "mu+");
1904  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(2) : 0.0), 0.0, psn.ismurbar, "mu-");
1905  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(2) : 0.0), 0.0, psn.istau1, "tau+");
1906  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(2) : 0.0), 0.0, psn.istau1bar, "tau-");
1907  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(2) : 0.0), 0.0, psn.istau2, "tau+");
1908  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(2) : 0.0), 0.0, psn.istau2bar, "tau-");
1909  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(2) : 0.0), 0.0, psn.isnel, "nubar_e");
1910  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(2) : 0.0), 0.0, psn.isnelbar, "nu_e");
1911  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(2) : 0.0), 0.0, psn.isnmul, "nubar_mu");
1912  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(2) : 0.0), 0.0, psn.isnmulbar, "nu_mu");
1913  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(2) : 0.0), 0.0, psn.isntaul, "nubar_tau");
1914  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(2) : 0.0), 0.0, psn.isntaulbar, "nu_tau");
1915  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(2) : 0.0), 0.0, "~G", "gamma");
1916  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(2) : 0.0), 0.0, "~G", "Z0");
1917  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(2) : 0.0), 0.0, "~G", "h0_1");
1918  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(2) : 0.0), 0.0, "~G", "h0_2");
1919  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(2) : 0.0), 0.0, "~G", "A0");
1920  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(2,1) : 0.0), 0.0, "~chi0_1", "gamma");
1921  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(2) : 0.0), 0.0, "~G", "gamma");
1922  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(2) : 0.0), 0.0, "~G", "Z0");
1923  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(2) : 0.0), 0.0, "~G", "h0_1");
1924  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(2) : 0.0), 0.0, "~G", "h0_2");
1925  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(2) : 0.0), 0.0, "~G", "A0");
1926  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(2,1) : 0.0), 0.0, "~chi0_1", "ubar", "u");
1927  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(2,1) : 0.0), 0.0, "~chi0_1", "dbar", "d");
1928  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(2,1) : 0.0), 0.0, "~chi0_1", "cbar", "c");
1929  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(2,1) : 0.0), 0.0, "~chi0_1", "sbar", "s");
1930  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(2,1) : 0.0), 0.0, "~chi0_1", "tbar", "t");
1931  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(2,1) : 0.0), 0.0, "~chi0_1", "bbar", "b");
1932  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(2,1) : 0.0), 0.0, "~chi0_1", "e+", "e-");
1933  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(2,1) : 0.0), 0.0, "~chi0_1", "mu+", "mu-");
1934  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(2,1) : 0.0), 0.0, "~chi0_1", "tau+", "tau-");
1935  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");
1936  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");
1937  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");
1938  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(2,1) : 0.0), 0.0, "~chi+_1", "ubar", "d");
1939  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(2,1) : 0.0), 0.0, "~chi-_1", "dbar", "u");
1940  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(2,2) : 0.0), 0.0, "~chi+_2", "ubar", "d");
1941  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(2,2) : 0.0), 0.0, "~chi-_2", "dbar", "u");
1942  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(2,1) : 0.0), 0.0, "~chi+_1", "cbar", "s");
1943  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(2,1) : 0.0), 0.0, "~chi-_1", "sbar", "c");
1944  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(2,2) : 0.0), 0.0, "~chi+_2", "cbar", "s");
1945  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(2,2) : 0.0), 0.0, "~chi-_2", "sbar", "c");
1946  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(2,1) : 0.0), 0.0, "~chi+_1", "tbar", "b");
1947  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(2,1) : 0.0), 0.0, "~chi-_1", "bbar", "t");
1948  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(2,2) : 0.0), 0.0, "~chi+_2", "tbar", "b");
1949  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(2,2) : 0.0), 0.0, "~chi-_2", "bbar", "t");
1950  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(2,1) : 0.0), 0.0, "~chi+_1", "nubar_e", "e-");
1951  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(2,1) : 0.0), 0.0, "~chi-_1", "nu_e", "e+");
1952  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(2,2) : 0.0), 0.0, "~chi+_2", "nubar_e", "e-");
1953  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(2,2) : 0.0), 0.0, "~chi-_2", "nu_e", "e+");
1954  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(2,1) : 0.0), 0.0, "~chi+_1", "nubar_mu", "mu-");
1955  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(2,1) : 0.0), 0.0, "~chi-_1", "nu_mu", "mu+");
1956  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(2,2) : 0.0), 0.0, "~chi+_2", "nubar_mu", "mu-");
1957  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(2,2) : 0.0), 0.0, "~chi-_2", "nu_mu", "mu+");
1958  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(2,1) : 0.0), 0.0, "~chi+_1", "nubar_tau", "tau-");
1959  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(2,1) : 0.0), 0.0, "~chi-_1", "nu_tau", "tau+");
1960  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(2,2) : 0.0), 0.0, "~chi+_2", "nubar_tau", "tau-");
1961  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(2,2) : 0.0), 0.0, "~chi-_2", "nu_tau", "tau+");
1962  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglup(2) : 0.0), 0.0, "~g", "ubar", "u");
1963  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgldo(2) : 0.0), 0.0, "~g", "dbar", "d");
1964  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglch(2) : 0.0), 0.0, "~g", "cbar", "c");
1965  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglst(2) : 0.0), 0.0, "~g", "sbar", "s");
1966  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgltop(2) : 0.0), 0.0, "~g", "tbar", "t");
1967  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglbot(2) : 0.0), 0.0, "~g", "bbar", "b");
1968 
1969  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1970  }
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:1852
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 1973 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().

1974  {
1975  using namespace Pipes::neutralino_3_decays;
1976  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1977 
1978  result.calculator = BEreq::cb_sd_neutwidth.origin();
1979  result.calculator_version = BEreq::cb_sd_neutwidth.version();
1980 
1981  result.width_in_GeV = BEreq::cb_sd_neutwidth->neuttot(3);
1982  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(3,1) : 0.0), 0.0, "~chi0_1", "Z0");
1983  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(3,2) : 0.0), 0.0, "~chi0_2", "Z0");
1984  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(3,1) : 0.0), 0.0, "~chi+_1", "W-");
1985  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(3,1) : 0.0), 0.0, "~chi-_1", "W+");
1986  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(3,2) : 0.0), 0.0, "~chi+_2", "W-");
1987  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(3,2) : 0.0), 0.0, "~chi-_2", "W+");
1988  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(3,1) : 0.0), 0.0, "~chi0_1", "h0_1");
1989  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(3,1) : 0.0), 0.0, "~chi0_1", "h0_2");
1990  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(3,1) : 0.0), 0.0, "~chi0_1", "A0");
1991  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(3,2) : 0.0), 0.0, "~chi0_2", "h0_1");
1992  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(3,2) : 0.0), 0.0, "~chi0_2", "h0_2");
1993  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(3,2) : 0.0), 0.0, "~chi0_2", "A0");
1994  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(3,1) : 0.0), 0.0, "~chi+_1", "H-");
1995  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(3,1) : 0.0), 0.0, "~chi-_1", "H+");
1996  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(3,2) : 0.0), 0.0, "~chi+_2", "H-");
1997  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(3,2) : 0.0), 0.0, "~chi-_2", "H+");
1998  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(3) : 0.0), 0.0, psn.isul, "ubar");
1999  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(3) : 0.0), 0.0, psn.isulbar, "u");
2000  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(3) : 0.0), 0.0, psn.isur, "ubar");
2001  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(3) : 0.0), 0.0, psn.isurbar, "u");
2002  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(3) : 0.0), 0.0, psn.isdl, "dbar");
2003  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(3) : 0.0), 0.0, psn.isdlbar, "d");
2004  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(3) : 0.0), 0.0, psn.isdr, "dbar");
2005  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(3) : 0.0), 0.0, psn.isdrbar, "d");
2006  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(3) : 0.0), 0.0, psn.iscl, "cbar");
2007  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(3) : 0.0), 0.0, psn.isclbar, "c");
2008  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(3) : 0.0), 0.0, psn.iscr, "cbar");
2009  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(3) : 0.0), 0.0, psn.iscrbar, "c");
2010  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(3) : 0.0), 0.0, psn.issl, "sbar");
2011  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(3) : 0.0), 0.0, psn.isslbar, "s");
2012  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(3) : 0.0), 0.0, psn.issr, "sbar");
2013  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(3) : 0.0), 0.0, psn.issrbar, "s");
2014  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(3) : 0.0), 0.0, psn.ist1, "tbar");
2015  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(3) : 0.0), 0.0, psn.ist1bar, "t");
2016  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(3) : 0.0), 0.0, psn.ist2, "tbar");
2017  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(3) : 0.0), 0.0, psn.ist2bar, "t");
2018  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(3) : 0.0), 0.0, psn.isb1, "bbar");
2019  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(3) : 0.0), 0.0, psn.isb1bar, "b");
2020  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(3) : 0.0), 0.0, psn.isb2, "bbar");
2021  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(3) : 0.0), 0.0, psn.isb2bar, "b");
2022  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(3) : 0.0), 0.0, psn.isell, "e+");
2023  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(3) : 0.0), 0.0, psn.isellbar, "e-");
2024  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(3) : 0.0), 0.0, psn.iselr, "e+");
2025  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(3) : 0.0), 0.0, psn.iselrbar, "e-");
2026  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(3) : 0.0), 0.0, psn.ismul, "mu+");
2027  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(3) : 0.0), 0.0, psn.ismulbar, "mu-");
2028  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(3) : 0.0), 0.0, psn.ismur, "mu+");
2029  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(3) : 0.0), 0.0, psn.ismurbar, "mu-");
2030  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(3) : 0.0), 0.0, psn.istau1, "tau+");
2031  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(3) : 0.0), 0.0, psn.istau1bar, "tau-");
2032  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(3) : 0.0), 0.0, psn.istau2, "tau+");
2033  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(3) : 0.0), 0.0, psn.istau2bar, "tau-");
2034  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(3) : 0.0), 0.0, psn.isnel, "nubar_e");
2035  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(3) : 0.0), 0.0, psn.isnelbar, "nu_e");
2036  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(3) : 0.0), 0.0, psn.isnmul, "nubar_mu");
2037  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(3) : 0.0), 0.0, psn.isnmulbar, "nu_mu");
2038  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(3) : 0.0), 0.0, psn.isntaul, "nubar_tau");
2039  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(3) : 0.0), 0.0, psn.isntaulbar, "nu_tau");
2040  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(3) : 0.0), 0.0, "~G", "gamma");
2041  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(3) : 0.0), 0.0, "~G", "Z0");
2042  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(3) : 0.0), 0.0, "~G", "h0_1");
2043  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(3) : 0.0), 0.0, "~G", "h0_2");
2044  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(3) : 0.0), 0.0, "~G", "A0");
2045  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(3,1) : 0.0), 0.0, "~chi0_1", "gamma");
2046  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(3,2) : 0.0), 0.0, "~chi0_2", "gamma");
2047  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(3) : 0.0), 0.0, "~G", "gamma");
2048  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(3) : 0.0), 0.0, "~G", "Z0");
2049  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(3) : 0.0), 0.0, "~G", "h0_1");
2050  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(3) : 0.0), 0.0, "~G", "h0_2");
2051  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(3) : 0.0), 0.0, "~G", "A0");
2052  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(3,1) : 0.0), 0.0, "~chi0_1", "ubar", "u");
2053  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(3,1) : 0.0), 0.0, "~chi0_1", "dbar", "d");
2054  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(3,1) : 0.0), 0.0, "~chi0_1", "cbar", "c");
2055  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(3,1) : 0.0), 0.0, "~chi0_1", "sbar", "s");
2056  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(3,1) : 0.0), 0.0, "~chi0_1", "tbar", "t");
2057  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(3,1) : 0.0), 0.0, "~chi0_1", "bbar", "b");
2058  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(3,1) : 0.0), 0.0, "~chi0_1", "e+", "e-");
2059  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(3,1) : 0.0), 0.0, "~chi0_1", "mu+", "mu-");
2060  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(3,1) : 0.0), 0.0, "~chi0_1", "tau+", "tau-");
2061  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");
2062  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");
2063  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");
2064  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(3,2) : 0.0), 0.0, "~chi0_2", "ubar", "u");
2065  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(3,2) : 0.0), 0.0, "~chi0_2", "dbar", "d");
2066  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(3,2) : 0.0), 0.0, "~chi0_2", "cbar", "c");
2067  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(3,2) : 0.0), 0.0, "~chi0_2", "sbar", "s");
2068  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(3,2) : 0.0), 0.0, "~chi0_2", "tbar", "t");
2069  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(3,2) : 0.0), 0.0, "~chi0_2", "bbar", "b");
2070  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(3,2) : 0.0), 0.0, "~chi0_2", "e+", "e-");
2071  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(3,2) : 0.0), 0.0, "~chi0_2", "mu+", "mu-");
2072  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(3,2) : 0.0), 0.0, "~chi0_2", "tau+", "tau-");
2073  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");
2074  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");
2075  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");
2076  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(3,1) : 0.0), 0.0, "~chi+_1", "ubar", "d");
2077  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(3,1) : 0.0), 0.0, "~chi-_1", "dbar", "u");
2078  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(3,2) : 0.0), 0.0, "~chi+_2", "ubar", "d");
2079  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(3,2) : 0.0), 0.0, "~chi-_2", "dbar", "u");
2080  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(3,1) : 0.0), 0.0, "~chi+_1", "cbar", "s");
2081  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(3,1) : 0.0), 0.0, "~chi-_1", "sbar", "c");
2082  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(3,2) : 0.0), 0.0, "~chi+_2", "cbar", "s");
2083  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(3,2) : 0.0), 0.0, "~chi-_2", "sbar", "c");
2084  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(3,1) : 0.0), 0.0, "~chi+_1", "tbar", "b");
2085  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(3,1) : 0.0), 0.0, "~chi-_1", "bbar", "t");
2086  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(3,2) : 0.0), 0.0, "~chi+_2", "tbar", "b");
2087  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(3,2) : 0.0), 0.0, "~chi-_2", "bbar", "t");
2088  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(3,1) : 0.0), 0.0, "~chi+_1", "nubar_e", "e-");
2089  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(3,1) : 0.0), 0.0, "~chi-_1", "nu_e", "e+");
2090  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(3,2) : 0.0), 0.0, "~chi+_2", "nubar_e", "e-");
2091  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(3,2) : 0.0), 0.0, "~chi-_2", "nu_e", "e+");
2092  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(3,1) : 0.0), 0.0, "~chi+_1", "nubar_mu", "mu-");
2093  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(3,1) : 0.0), 0.0, "~chi-_1", "nu_mu", "mu+");
2094  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(3,2) : 0.0), 0.0, "~chi+_2", "nubar_mu", "mu-");
2095  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(3,2) : 0.0), 0.0, "~chi-_2", "nu_mu", "mu+");
2096  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(3,1) : 0.0), 0.0, "~chi+_1", "nubar_tau", "tau-");
2097  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(3,1) : 0.0), 0.0, "~chi-_1", "nu_tau", "tau+");
2098  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(3,2) : 0.0), 0.0, "~chi+_2", "nubar_tau", "tau-");
2099  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(3,2) : 0.0), 0.0, "~chi-_2", "nu_tau", "tau+");
2100  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglup(3) : 0.0), 0.0, "~g", "ubar", "u");
2101  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgldo(3) : 0.0), 0.0, "~g", "dbar", "d");
2102  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglch(3) : 0.0), 0.0, "~g", "cbar", "c");
2103  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglst(3) : 0.0), 0.0, "~g", "sbar", "s");
2104  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgltop(3) : 0.0), 0.0, "~g", "tbar", "t");
2105  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglbot(3) : 0.0), 0.0, "~g", "bbar", "b");
2106 
2107  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
2108  }
void neutralino_3_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: neutralino_3.
Definition: DecayBit.cpp:1973
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 2111 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().

2112  {
2113  using namespace Pipes::neutralino_4_decays;
2114  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
2115 
2116  result.calculator = BEreq::cb_sd_neutwidth.origin();
2117  result.calculator_version = BEreq::cb_sd_neutwidth.version();
2118 
2119  result.width_in_GeV = BEreq::cb_sd_neutwidth->neuttot(4);
2120  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(4,1) : 0.0), 0.0, "~chi0_1", "Z0");
2121  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(4,2) : 0.0), 0.0, "~chi0_2", "Z0");
2122  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutzneut(4,3) : 0.0), 0.0, "~chi0_3", "Z0");
2123  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(4,1) : 0.0), 0.0, "~chi+_1", "W-");
2124  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(4,1) : 0.0), 0.0, "~chi-_1", "W+");
2125  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(4,2) : 0.0), 0.0, "~chi+_2", "W-");
2126  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutwchar(4,2) : 0.0), 0.0, "~chi-_2", "W+");
2127  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(4,1) : 0.0), 0.0, "~chi0_1", "h0_1");
2128  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(4,1) : 0.0), 0.0, "~chi0_1", "h0_2");
2129  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(4,1) : 0.0), 0.0, "~chi0_1", "A0");
2130  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(4,2) : 0.0), 0.0, "~chi0_2", "h0_1");
2131  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(4,2) : 0.0), 0.0, "~chi0_2", "h0_2");
2132  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(4,2) : 0.0), 0.0, "~chi0_2", "A0");
2133  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthlneut(4,3) : 0.0), 0.0, "~chi0_3", "h0_1");
2134  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthhneut(4,3) : 0.0), 0.0, "~chi0_3", "h0_2");
2135  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthaneut(4,3) : 0.0), 0.0, "~chi0_3", "A0");
2136  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(4,1) : 0.0), 0.0, "~chi+_1", "H-");
2137  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(4,1) : 0.0), 0.0, "~chi-_1", "H+");
2138  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(4,2) : 0.0), 0.0, "~chi+_2", "H-");
2139  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneuthcchar(4,2) : 0.0), 0.0, "~chi-_2", "H+");
2140  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(4) : 0.0), 0.0, psn.isul, "ubar");
2141  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(4) : 0.0), 0.0, psn.isulbar, "u");
2142  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(4) : 0.0), 0.0, psn.isur, "ubar");
2143  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(4) : 0.0), 0.0, psn.isurbar, "u");
2144  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(4) : 0.0), 0.0, psn.isdl, "dbar");
2145  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(4) : 0.0), 0.0, psn.isdlbar, "d");
2146  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(4) : 0.0), 0.0, psn.isdr, "dbar");
2147  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(4) : 0.0), 0.0, psn.isdrbar, "d");
2148  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(4) : 0.0), 0.0, psn.iscl, "cbar");
2149  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupl(4) : 0.0), 0.0, psn.isclbar, "c");
2150  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(4) : 0.0), 0.0, psn.iscr, "cbar");
2151  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsupr(4) : 0.0), 0.0, psn.iscrbar, "c");
2152  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(4) : 0.0), 0.0, psn.issl, "sbar");
2153  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownl(4) : 0.0), 0.0, psn.isslbar, "s");
2154  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(4) : 0.0), 0.0, psn.issr, "sbar");
2155  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsdownr(4) : 0.0), 0.0, psn.issrbar, "s");
2156  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(4) : 0.0), 0.0, psn.ist1, "tbar");
2157  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst1(4) : 0.0), 0.0, psn.ist1bar, "t");
2158  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(4) : 0.0), 0.0, psn.ist2, "tbar");
2159  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutst2(4) : 0.0), 0.0, psn.ist2bar, "t");
2160  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(4) : 0.0), 0.0, psn.isb1, "bbar");
2161  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb1(4) : 0.0), 0.0, psn.isb1bar, "b");
2162  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(4) : 0.0), 0.0, psn.isb2, "bbar");
2163  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsb2(4) : 0.0), 0.0, psn.isb2bar, "b");
2164  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(4) : 0.0), 0.0, psn.isell, "e+");
2165  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(4) : 0.0), 0.0, psn.isellbar, "e-");
2166  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(4) : 0.0), 0.0, psn.iselr, "e+");
2167  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(4) : 0.0), 0.0, psn.iselrbar, "e-");
2168  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(4) : 0.0), 0.0, psn.ismul, "mu+");
2169  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsell(4) : 0.0), 0.0, psn.ismulbar, "mu-");
2170  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(4) : 0.0), 0.0, psn.ismur, "mu+");
2171  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutselr(4) : 0.0), 0.0, psn.ismurbar, "mu-");
2172  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(4) : 0.0), 0.0, psn.istau1, "tau+");
2173  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau1(4) : 0.0), 0.0, psn.istau1bar, "tau-");
2174  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(4) : 0.0), 0.0, psn.istau2, "tau+");
2175  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutstau2(4) : 0.0), 0.0, psn.istau2bar, "tau-");
2176  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(4) : 0.0), 0.0, psn.isnel, "nubar_e");
2177  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(4) : 0.0), 0.0, psn.isnelbar, "nu_e");
2178  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(4) : 0.0), 0.0, psn.isnmul, "nubar_mu");
2179  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsnel(4) : 0.0), 0.0, psn.isnmulbar, "nu_mu");
2180  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(4) : 0.0), 0.0, psn.isntaul, "nubar_tau");
2181  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2body->brneutsn1(4) : 0.0), 0.0, psn.isntaulbar, "nu_tau");
2182  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(4) : 0.0), 0.0, "~G", "gamma");
2183  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(4) : 0.0), 0.0, "~G", "Z0");
2184  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(4) : 0.0), 0.0, "~G", "h0_1");
2185  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(4) : 0.0), 0.0, "~G", "h0_2");
2186  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(4) : 0.0), 0.0, "~G", "A0");
2187  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(4,1) : 0.0), 0.0, "~chi0_1", "gamma");
2188  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(4,2) : 0.0), 0.0, "~chi0_2", "gamma");
2189  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neutloop->brnraddec(4,3) : 0.0), 0.0, "~chi0_3", "gamma");
2190  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutgamgrav(4) : 0.0), 0.0, "~G", "gamma");
2191  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneutzgrav(4) : 0.0), 0.0, "~G", "Z0");
2192  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthlgrav(4) : 0.0), 0.0, "~G", "h0_1");
2193  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthhgrav(4) : 0.0), 0.0, "~G", "h0_2");
2194  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut2bodygrav->brneuthagrav(4) : 0.0), 0.0, "~G", "A0");
2195  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(4,1) : 0.0), 0.0, "~chi0_1", "ubar", "u");
2196  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(4,1) : 0.0), 0.0, "~chi0_1", "dbar", "d");
2197  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(4,1) : 0.0), 0.0, "~chi0_1", "cbar", "c");
2198  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(4,1) : 0.0), 0.0, "~chi0_1", "sbar", "s");
2199  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(4,1) : 0.0), 0.0, "~chi0_1", "tbar", "t");
2200  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(4,1) : 0.0), 0.0, "~chi0_1", "bbar", "b");
2201  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(4,1) : 0.0), 0.0, "~chi0_1", "e+", "e-");
2202  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(4,1) : 0.0), 0.0, "~chi0_1", "mu+", "mu-");
2203  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(4,1) : 0.0), 0.0, "~chi0_1", "tau+", "tau-");
2204  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");
2205  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");
2206  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");
2207  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(4,2) : 0.0), 0.0, "~chi0_2", "ubar", "u");
2208  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(4,2) : 0.0), 0.0, "~chi0_2", "dbar", "d");
2209  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(4,2) : 0.0), 0.0, "~chi0_2", "cbar", "c");
2210  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(4,2) : 0.0), 0.0, "~chi0_2", "sbar", "s");
2211  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(4,2) : 0.0), 0.0, "~chi0_2", "tbar", "t");
2212  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(4,2) : 0.0), 0.0, "~chi0_2", "bbar", "b");
2213  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(4,2) : 0.0), 0.0, "~chi0_2", "e+", "e-");
2214  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(4,2) : 0.0), 0.0, "~chi0_2", "mu+", "mu-");
2215  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(4,2) : 0.0), 0.0, "~chi0_2", "tau+", "tau-");
2216  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");
2217  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");
2218  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");
2219  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutup(4,3) : 0.0), 0.0, "~chi0_3", "ubar", "u");
2220  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutdow(4,3) : 0.0), 0.0, "~chi0_3", "dbar", "d");
2221  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutch(4,3) : 0.0), 0.0, "~chi0_3", "cbar", "c");
2222  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutst(4,3) : 0.0), 0.0, "~chi0_3", "sbar", "s");
2223  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttop(4,3) : 0.0), 0.0, "~chi0_3", "tbar", "t");
2224  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutbot(4,3) : 0.0), 0.0, "~chi0_3", "bbar", "b");
2225  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutel(4,3) : 0.0), 0.0, "~chi0_3", "e+", "e-");
2226  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneutmu(4,3) : 0.0), 0.0, "~chi0_3", "mu+", "mu-");
2227  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brneuttau(4,3) : 0.0), 0.0, "~chi0_3", "tau+", "tau-");
2228  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");
2229  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");
2230  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");
2231  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(4,1) : 0.0), 0.0, "~chi+_1", "ubar", "d");
2232  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(4,1) : 0.0), 0.0, "~chi-_1", "dbar", "u");
2233  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(4,2) : 0.0), 0.0, "~chi+_2", "ubar", "d");
2234  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchubd(4,2) : 0.0), 0.0, "~chi-_2", "dbar", "u");
2235  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(4,1) : 0.0), 0.0, "~chi+_1", "cbar", "s");
2236  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(4,1) : 0.0), 0.0, "~chi-_1", "sbar", "c");
2237  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(4,2) : 0.0), 0.0, "~chi+_2", "cbar", "s");
2238  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchcbs(4,2) : 0.0), 0.0, "~chi-_2", "sbar", "c");
2239  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(4,1) : 0.0), 0.0, "~chi+_1", "tbar", "b");
2240  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(4,1) : 0.0), 0.0, "~chi-_1", "bbar", "t");
2241  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(4,2) : 0.0), 0.0, "~chi+_2", "tbar", "b");
2242  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtbb(4,2) : 0.0), 0.0, "~chi-_2", "bbar", "t");
2243  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(4,1) : 0.0), 0.0, "~chi+_1", "nubar_e", "e-");
2244  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(4,1) : 0.0), 0.0, "~chi-_1", "nu_e", "e+");
2245  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(4,2) : 0.0), 0.0, "~chi+_2", "nubar_e", "e-");
2246  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchelne(4,2) : 0.0), 0.0, "~chi-_2", "nu_e", "e+");
2247  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(4,1) : 0.0), 0.0, "~chi+_1", "nubar_mu", "mu-");
2248  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(4,1) : 0.0), 0.0, "~chi-_1", "nu_mu", "mu+");
2249  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(4,2) : 0.0), 0.0, "~chi+_2", "nubar_mu", "mu-");
2250  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchmunmu(4,2) : 0.0), 0.0, "~chi-_2", "nu_mu", "mu+");
2251  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(4,1) : 0.0), 0.0, "~chi+_1", "nubar_tau", "tau-");
2252  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(4,1) : 0.0), 0.0, "~chi-_1", "nu_tau", "tau+");
2253  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(4,2) : 0.0), 0.0, "~chi+_2", "nubar_tau", "tau-");
2254  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brchtauntau(4,2) : 0.0), 0.0, "~chi-_2", "nu_tau", "tau+");
2255  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglup(4) : 0.0), 0.0, "~g", "ubar", "u");
2256  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgldo(4) : 0.0), 0.0, "~g", "dbar", "d");
2257  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglch(4) : 0.0), 0.0, "~g", "cbar", "c");
2258  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglst(4) : 0.0), 0.0, "~g", "sbar", "s");
2259  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brgltop(4) : 0.0), 0.0, "~g", "tbar", "t");
2260  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_neut3body->brglbot(4) : 0.0), 0.0, "~g", "bbar", "b");
2261 
2262  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
2263  }
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:2111
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. Exact override of base method.
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 3705 of file DecayBit.cpp.

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

3706  {
3707  using namespace Pipes::RHN_W_to_l_decays;
3708  SMInputs sminputs = *Dep::SMINPUTS;
3709  Eigen::Matrix3cd Theta = *Dep::SeesawI_Theta;
3710  double Gmu = sminputs.GF;
3711  double mw = Dep::mw->central;
3712 
3713  Eigen::Matrix3d ThetaNorm = (Theta * Theta.adjoint()).real();
3714  std::vector<double> ml = {sminputs.mE, sminputs.mMu, sminputs.mTau};
3715  std::vector<double> M = {*Param["M_1"], *Param["M_2"], *Param["M_3"]};
3716 
3717  result.clear();
3718  for(int i=0; i<3; i++)
3719  {
3720  if(M[i] < mw)
3721  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)));
3722  else
3723  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)));
3724  }
3725  }
Spectrum Spectrum Spectrum mw
void RHN_W_to_l_decays(std::vector< double > &result)
Definition: DecayBit.cpp:3705
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 1127 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().

1128  {
1129  using namespace Pipes::sbottom_1_decays;
1130  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1131 
1132  result.calculator = BEreq::cb_sd_sbotwidth.origin();
1133  result.calculator_version = BEreq::cb_sd_sbotwidth.version();
1134 
1135  result.width_in_GeV = BEreq::cb_sd_sbotwidth->sbottot(1);
1136  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1neutt(1) : 0.0), 0.0, "~chi0_1", "b");
1137  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1neutt(2) : 0.0), 0.0, "~chi0_2", "b");
1138  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1neutt(3) : 0.0), 0.0, "~chi0_3", "b");
1139  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1neutt(4) : 0.0), 0.0, "~chi0_4", "b");
1140  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1chart(1) : 0.0), 0.0, "~chi-_1", "t");
1141  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1chart(2) : 0.0), 0.0, "~chi-_2", "t");
1142  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1glui : 0.0), 0.0, "~g", "b");
1143  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1hcst(1) : 0.0), 0.0, psn.ist1, "H-");
1144  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1hcst(2) : 0.0), 0.0, psn.ist2, "H-");
1145  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1wst(1) : 0.0), 0.0, psn.ist1, "W-");
1146  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb1wst(2) : 0.0), 0.0, psn.ist2, "W-");
1147  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsntau(1,1) : 0.0), 0.0, psn.isntaulbar, "t", "tau-");
1148  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsnel(1) : 0.0), 0.0, psn.isnelbar, "t", "e-");
1149  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsnel(1) : 0.0), 0.0, psn.isnmulbar, "t", "mu-");
1150  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbstau(1,1) : 0.0), 0.0, psn.istau1, "t", "nubar_tau");
1151  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbstau(1,2) : 0.0), 0.0, psn.istau2, "t", "nubar_tau");
1152  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(1,1) : 0.0), 0.0, psn.isell, "t", "nubar_e");
1153  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(1,2) : 0.0), 0.0, psn.iselr, "t", "nubar_e");
1154  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(1,1) : 0.0), 0.0, psn.ismul, "t", "nubar_mu");
1155  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(1,2) : 0.0), 0.0, psn.ismur, "t", "nubar_mu");
1156  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtstsb(1,1) : 0.0), 0.0, psn.ist1bar, "t", "b");
1157  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtstsb(1,2) : 0.0), 0.0, psn.ist2bar, "t", "b");
1158  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtbstb(1,1) : 0.0), 0.0, psn.ist1, "tbar", "b");
1159  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtbstb(1,2) : 0.0), 0.0, psn.ist2, "tbar", "b");
1160  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(1,1) : 0.0), 0.0, psn.ist1, "ubar", "d");
1161  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(1,2) : 0.0), 0.0, psn.ist2, "ubar", "d");
1162  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(1,1) : 0.0), 0.0, psn.ist1, "cbar", "s");
1163  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(1,2) : 0.0), 0.0, psn.ist2, "cbar", "s");
1164  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtaustnu(1,1) : 0.0), 0.0, psn.ist1, "tau-", "nubar_tau");
1165  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtaustnu(1,2) : 0.0), 0.0, psn.ist2, "tau-", "nubar_tau");
1166  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(1,1) : 0.0), 0.0, psn.ist1, "e-", "nubar_e");
1167  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(1,2) : 0.0), 0.0, psn.ist1, "e-", "nubar_e");
1168  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(1,1) : 0.0), 0.0, psn.ist1, "mu-", "nubar_mu");
1169  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(1,2) : 0.0), 0.0, psn.ist1, "mu-", "nubar_mu");
1170 
1171  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1172  }
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:1127
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 1175 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().

1176  {
1177  using namespace Pipes::sbottom_2_decays;
1178  mass_es_pseudonyms psn = *(Dep::SLHA_pseudonyms);
1179 
1180  result.calculator = BEreq::cb_sd_sbotwidth.origin();
1181  result.calculator_version = BEreq::cb_sd_sbotwidth.version();
1182 
1183  result.width_in_GeV = BEreq::cb_sd_sbotwidth->sbottot(2);
1184  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2neutt(1) : 0.0), 0.0, "~chi0_1", "b");
1185  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2neutt(2) : 0.0), 0.0, "~chi0_2", "b");
1186  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2neutt(3) : 0.0), 0.0, "~chi0_3", "b");
1187  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2neutt(4) : 0.0), 0.0, "~chi0_4", "b");
1188  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2chart(1) : 0.0), 0.0, "~chi-_1", "t");
1189  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2chart(2) : 0.0), 0.0, "~chi-_2", "t");
1190  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2glui : 0.0), 0.0, "~g", "b");
1191  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2hl : 0.0), 0.0, psn.isb1, "h0_1");
1192  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2hh : 0.0), 0.0, psn.isb1, "h0_2");
1193  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2ha : 0.0), 0.0, psn.isb1, "A0");
1194  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2hcst(1) : 0.0), 0.0, psn.ist1, "H-");
1195  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2hcst(2) : 0.0), 0.0, psn.ist2, "H-");
1196  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2zbot : 0.0), 0.0, psn.isb1, "Z0");
1197  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2wst(1) : 0.0), 0.0, psn.ist1, "W-");
1198  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot2body->brsb2wst(2) : 0.0), 0.0, psn.ist2, "W-");
1199  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsntau(2,1) : 0.0), 0.0, psn.isntaulbar, "t", "tau-");
1200  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsnel(2) : 0.0), 0.0, psn.isnelbar, "t", "e-");
1201  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsnel(2) : 0.0), 0.0, psn.isnmulbar, "t", "mu-");
1202  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbstau(2,1) : 0.0), 0.0, psn.istau1, "t", "nubar_tau");
1203  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbstau(2,2) : 0.0), 0.0, psn.istau2, "t", "nubar_tau");
1204  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(2,1) : 0.0), 0.0, psn.isell, "t", "nubar_e");
1205  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(2,2) : 0.0), 0.0, psn.iselr, "t", "nubar_e");
1206  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(2,1) : 0.0), 0.0, psn.ismul, "t", "nubar_mu");
1207  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbsel(2,2) : 0.0), 0.0, psn.ismur, "t", "nubar_mu");
1208  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtstsb(2,1) : 0.0), 0.0, psn.ist1bar, "t", "b");
1209  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtstsb(2,2) : 0.0), 0.0, psn.ist2bar, "t", "b");
1210  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtbstb(2,1) : 0.0), 0.0, psn.ist1, "tbar", "b");
1211  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtbstb(2,2) : 0.0), 0.0, psn.ist2, "tbar", "b");
1212  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(2,1) : 0.0), 0.0, psn.ist1, "ubar", "d");
1213  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(2,2) : 0.0), 0.0, psn.ist2, "ubar", "d");
1214  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(2,1) : 0.0), 0.0, psn.ist1, "cbar", "s");
1215  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbupstdow(2,2) : 0.0), 0.0, psn.ist2, "cbar", "s");
1216  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtaustnu(2,1) : 0.0), 0.0, psn.ist1, "tau-", "nubar_tau");
1217  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbtaustnu(2,2) : 0.0), 0.0, psn.ist2, "tau-", "nubar_tau");
1218  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(2,1) : 0.0), 0.0, psn.ist1, "e-", "nubar_e");
1219  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(2,2) : 0.0), 0.0, psn.ist1, "e-", "nubar_e");
1220  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(2,1) : 0.0), 0.0, psn.ist1, "mu-", "nubar_mu");
1221  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsbelstnu(2,2) : 0.0), 0.0, psn.ist1, "mu-", "nubar_mu");
1222  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1bb : 0.0), 0.0, psn.isb1, "b", "bbar");
1223  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1starbb : 0.0), 0.0, psn.isb1bar, "b", "b");
1224  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1tt : 0.0), 0.0, psn.isb1, "t", "tbar");
1225  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1uu : 0.0), 0.0, psn.isb1, "u", "ubar");
1226  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1dd : 0.0), 0.0, psn.isb1, "d", "dbar");
1227  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1uu : 0.0), 0.0, psn.isb1, "c", "cbar");
1228  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1dd : 0.0), 0.0, psn.isb1, "s", "sbar");
1229  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1ee : 0.0), 0.0, psn.isb1, "e-", "e+");
1230  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1ee : 0.0), 0.0, psn.isb1, "mu-", "mu+");
1231  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1tautau : 0.0), 0.0, psn.isb1, "tau-", "tau+");
1232  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1nunu : 0.0), 0.0, psn.isb1, "nu_e", "nubar_e");
1233  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1nunu : 0.0), 0.0, psn.isb1, "nu_mu", "nubar_mu");
1234  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sbot3body->brsb2sb1nunu : 0.0), 0.0, psn.isb1, "nu_tau", "nubar_tau");
1235 
1236  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1237  }
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:1175
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 2814 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2814 { 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 2815 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2815 { 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 2841 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.

2842  {
2843  using namespace Pipes::ScalarSingletDM_Higgs_decays;
2844 
2845  // Get the spectrum information
2846  bool self_conjugate = true;
2847  dep_bucket<Spectrum>* spectrum_dependency = nullptr;
2848  if (ModelInUse("ScalarSingletDM_Z2") or ModelInUse("ScalarSingletDM_Z2_running"))
2849  {
2850  spectrum_dependency = &Dep::ScalarSingletDM_Z2_spectrum;
2851  }
2852  else if (ModelInUse("ScalarSingletDM_Z3") or ModelInUse("ScalarSingletDM_Z3_running"))
2853  {
2854  spectrum_dependency = &Dep::ScalarSingletDM_Z3_spectrum;
2855  self_conjugate = false;
2856  }
2857  else DecayBit_error().raise(LOCAL_INFO, "No valid model for ScalarSingletDM_Higgs_decays.");
2858  const SubSpectrum& he = (*spectrum_dependency)->get_HE();
2859 
2860  double mass = (*spectrum_dependency)->get(Par::Pole_Mass,"S");
2861  double lambda = he.get(Par::dimensionless,"lambda_hS");
2862  double v0 = he.get(Par::mass1,"vev");
2863  double mhpole = (*spectrum_dependency)->get(Par::Pole_Mass,"h0_1");
2864 
2865  // Get the reference SM Higgs decays
2866  result = *Dep::Reference_SM_Higgs_decay_rates;
2867 
2868  // Add the h->SS width to the total
2869  double massratio2 = pow(mass/mhpole,2);
2870  double gamma = (2.0*mass <= mhpole) ? pow(lambda*v0,2)/(16.0*pi*mhpole) * sqrt(1.0 - 4.0*massratio2) : 0.0;
2871  // Include symmetry factor of two to account for identical final state particles
2872  if (self_conjugate) gamma = 0.5 * gamma;
2873  result.width_in_GeV = result.width_in_GeV + gamma;
2874 
2875  // Rescale the SM decay branching fractions.
2876  double wscaling = Dep::Reference_SM_Higgs_decay_rates->width_in_GeV/result.width_in_GeV;
2877  for (auto it = result.channels.begin(); it != result.channels.end(); ++it)
2878  {
2879  it->second.first *= wscaling; // rescale BF
2880  it->second.second *= wscaling; // rescale error on BF
2881  }
2882 
2883  // Add the h->SS branching fraction
2884  result.set_BF(gamma/result.width_in_GeV, 0.0, "S", "S");
2885 
2886  // Make sure the width is sensible.
2887  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
2888  }
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:2841
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 3473 of file DecayBit.cpp.

3474  {
3479  using namespace Pipes::ScalarSingletDM_inv_Higgs_BF;
3480  BF = Dep::Higgs_decay_rates->BF("S", "S");
3481  }
void ScalarSingletDM_inv_Higgs_BF(double &BF)
Definition: DecayBit.cpp:3473

◆ scharm_l_decays()

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

SUSY-HIT MSSM decays: scharm_l.

Definition at line 1311 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().

1312  {
1313  using namespace Pipes::scharm_l_decays;
1314  result.calculator = BEreq::cb_sd_supwidth.origin();
1315  result.calculator_version = BEreq::cb_sd_supwidth.version();
1316  result.width_in_GeV = BEreq::cb_sd_supwidth->supltot2;
1317  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplnup(1) : 0.0), 0.0, "~chi0_1", "c");
1318  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplnup(2) : 0.0), 0.0, "~chi0_2", "c");
1319  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplnup(3) : 0.0), 0.0, "~chi0_3", "c");
1320  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplnup(4) : 0.0), 0.0, "~chi0_4", "c");
1321  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplcdow(1) : 0.0), 0.0, "~chi+_1", "s");
1322  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplcdow(2) : 0.0), 0.0, "~chi+_2", "s");
1323  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuplglui : 0.0), 0.0, "~g", "c");
1324  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1325  }
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:1311
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 1328 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().

1329  {
1330  using namespace Pipes::scharm_r_decays;
1331  result.calculator = BEreq::cb_sd_supwidth.origin();
1332  result.calculator_version = BEreq::cb_sd_supwidth.version();
1333  result.width_in_GeV = BEreq::cb_sd_supwidth->suprtot2;
1334  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprnup(1) : 0.0), 0.0, "~chi0_1", "c");
1335  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprnup(2) : 0.0), 0.0, "~chi0_2", "c");
1336  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprnup(3) : 0.0), 0.0, "~chi0_3", "c");
1337  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprnup(4) : 0.0), 0.0, "~chi0_4", "c");
1338  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprcdow(1) : 0.0), 0.0, "~chi+_1", "s");
1339  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprcdow(2) : 0.0), 0.0, "~chi+_2", "s");
1340  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sup2body->brsuprglui : 0.0), 0.0, "~g", "c");
1341  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1342  }
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:1328
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 2820 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2820 { 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 2821 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2821 { 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 1277 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().

1278  {
1279  using namespace Pipes::sdown_l_decays;
1280  result.calculator = BEreq::cb_sd_sdownwidth.origin();
1281  result.calculator_version = BEreq::cb_sd_sdownwidth.version();
1282  result.width_in_GeV = BEreq::cb_sd_sdownwidth->sdowltot2;
1283  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlndow(1) : 0.0), 0.0, "~chi0_1", "d");
1284  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlndow(2) : 0.0), 0.0, "~chi0_2", "d");
1285  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlndow(3) : 0.0), 0.0, "~chi0_3", "d");
1286  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlndow(4) : 0.0), 0.0, "~chi0_4", "d");
1287  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlchup(1) : 0.0), 0.0, "~chi-_1", "u");
1288  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlchup(2) : 0.0), 0.0, "~chi-_2", "u");
1289  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowlglui : 0.0), 0.0, "~g", "d");
1290  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1291  }
void sdown_l_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: sdown_l.
Definition: DecayBit.cpp:1277
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 1294 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().

1295  {
1296  using namespace Pipes::sdown_r_decays;
1297  result.calculator = BEreq::cb_sd_sdownwidth.origin();
1298  result.calculator_version = BEreq::cb_sd_sdownwidth.version();
1299  result.width_in_GeV = BEreq::cb_sd_sdownwidth->sdowrtot2;
1300  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrndow(1) : 0.0), 0.0, "~chi0_1", "d");
1301  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrndow(2) : 0.0), 0.0, "~chi0_2", "d");
1302  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrndow(3) : 0.0), 0.0, "~chi0_3", "d");
1303  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrndow(4) : 0.0), 0.0, "~chi0_4", "d");
1304  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrchup(1) : 0.0), 0.0, "~chi-_1", "u");
1305  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrchup(2) : 0.0), 0.0, "~chi-_2", "u");
1306  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sdown2body->brsdowrglui : 0.0), 0.0, "~g", "d");
1307  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1308  }
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:1294
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 2818 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2818 { 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 2819 of file DecayBit.cpp.

References CP_conjugate().

Referenced by main().

2819 { 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 1379 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().

1380  {
1381  using namespace Pipes::selectron_l_decays;
1382  result.calculator = BEreq::cb_sd_selwidth.origin();
1383  result.calculator_version = BEreq::cb_sd_selwidth.version();
1384  result.width_in_GeV = BEreq::cb_sd_selwidth->selltot2;
1385  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(1) : 0.0), 0.0, "~chi0_1", "e-");
1386  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(2) : 0.0), 0.0, "~chi0_2", "e-");
1387  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(3) : 0.0), 0.0, "~chi0_3", "e-");
1388  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(4) : 0.0), 0.0, "~chi0_4", "e-");
1389  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellcharnue(1) : 0.0), 0.0, "~chi-_1", "nu_e");
1390  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellcharnue(2) : 0.0), 0.0, "~chi-_2", "nu_e");
1391  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
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
void selectron_l_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: selectron_l.
Definition: DecayBit.cpp:1379
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 1395 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().

1396  {
1397  using namespace Pipes::selectron_r_decays;
1398  result.calculator = BEreq::cb_sd_selwidth.origin();
1399  result.calculator_version = BEreq::cb_sd_selwidth.version();
1400  result.width_in_GeV = BEreq::cb_sd_selwidth->selrtot2;
1401  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(1) : 0.0), 0.0, "~chi0_1", "e-");
1402  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(2) : 0.0), 0.0, "~chi0_2", "e-");
1403  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(3) : 0.0), 0.0, "~chi0_3", "e-");
1404  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(4) : 0.0), 0.0, "~chi0_4", "e-");
1405  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrcharnue(1) : 0.0), 0.0, "~chi-_1", "nu_e");
1406  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrcharnue(2) : 0.0), 0.0, "~chi-_2", "nu_e");
1407  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1408  }
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:1395
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 2824 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 2825 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 1411 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().

1412  {
1413  using namespace Pipes::smuon_l_decays;
1414  result.calculator = BEreq::cb_sd_selwidth.origin();
1415  result.calculator_version = BEreq::cb_sd_selwidth.version();
1416  result.width_in_GeV = BEreq::cb_sd_selwidth->selltot2;
1417  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(1) : 0.0), 0.0, "~chi0_1", "mu-");
1418  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(2) : 0.0), 0.0, "~chi0_2", "mu-");
1419  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(3) : 0.0), 0.0, "~chi0_3", "mu-");
1420  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellneute(4) : 0.0), 0.0, "~chi0_4", "mu-");
1421  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellcharnue(1) : 0.0), 0.0, "~chi-_1", "nu_mu");
1422  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brsellcharnue(2) : 0.0), 0.0, "~chi-_2", "nu_mu");
1423  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1424  }
void smuon_l_decays(DecayTable::Entry &result)
SUSY-HIT MSSM decays: smuon_l.
Definition: DecayBit.cpp:1411
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 1427 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().

1428  {
1429  using namespace Pipes::smuon_r_decays;
1430  result.calculator = BEreq::cb_sd_selwidth.origin();
1431  result.calculator_version = BEreq::cb_sd_selwidth.version();
1432  result.width_in_GeV = BEreq::cb_sd_selwidth->selrtot2;
1433  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(1) : 0.0), 0.0, "~chi0_1", "mu-");
1434  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(2) : 0.0), 0.0, "~chi0_2", "mu-");
1435  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(3) : 0.0), 0.0, "~chi0_3", "mu-");
1436  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrneute(4) : 0.0), 0.0, "~chi0_4", "mu-");
1437  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrcharnue(1) : 0.0), 0.0, "~chi-_1", "nu_mu");
1438  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_sel2body->brselrcharnue(2) : 0.0), 0.0, "~chi-_2", "nu_mu");
1439  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1440  }
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:1427
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 2826 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 2827 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 1510 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().

1511  {
1512  using namespace Pipes::snu_electronl_decays;
1513  result.calculator = BEreq::cb_sd_snelwidth.origin();
1514  result.calculator_version = BEreq::cb_sd_snelwidth.version();
1515  result.width_in_GeV = BEreq::cb_sd_snelwidth->sneltot2;
1516  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(1) : 0.0), 0.0, "~chi0_1", "nu_e");
1517  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(2) : 0.0), 0.0, "~chi0_2", "nu_e");
1518  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(3) : 0.0), 0.0, "~chi0_3", "nu_e");
1519  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(4) : 0.0), 0.0, "~chi0_4", "nu_e");
1520  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellchar(1) : 0.0), 0.0, "~chi+_1", "e-");
1521  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellchar(2) : 0.0), 0.0, "~chi+_2", "e-");
1522  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1523  }
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:1510
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 1526 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().

1527  {
1528  using namespace Pipes::snu_muonl_decays;
1529  result.calculator = BEreq::cb_sd_snelwidth.origin();
1530  result.calculator_version = BEreq::cb_sd_snelwidth.version();
1531  result.width_in_GeV = BEreq::cb_sd_snelwidth->sneltot2;
1532  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(1) : 0.0), 0.0, "~chi0_1", "nu_mu");
1533  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(2) : 0.0), 0.0, "~chi0_2", "nu_mu");
1534  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(3) : 0.0), 0.0, "~chi0_3", "nu_mu");
1535  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellneut(4) : 0.0), 0.0, "~chi0_4", "nu_mu");
1536  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellchar(1) : 0.0), 0.0, "~chi+_1", "mu-");
1537  result.set_BF((result.width_in_GeV > 0 ? BEreq::cb_sd_snel2body->brsnellchar(2) : 0.0), 0.0, "~chi+_2", "mu-");
1538  check_width(LOCAL_INFO, result.width_in_GeV, runOptions->getValueOrDef<bool>(false, "invalid_point_for_negative_width"));
1539  }
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:1526
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 &