gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
DarkBit_standalone_ScalarSingletDM_Z2.cpp File Reference

Example of GAMBIT DarkBit standalone main program. More...

Include dependency graph for DarkBit_standalone_ScalarSingletDM_Z2.cpp:

Go to the source code of this file.

Functions

 QUICK_FUNCTION (DarkBit, decay_rates, NEW_CAPABILITY, createDecays, DecayTable,()) QUICK_FUNCTION(DarkBit
 
ScalarSingletDM_Z2 QUICK_FUNCTION (DarkBit, cascadeMC_gammaSpectra, OLD_CAPABILITY, CMC_dummy, DarkBit::stringFunkMap,()) namespace Gambit
 
int main ()
 

Variables

 ScalarSingletDM_Z2_spectrum
 
 OLD_CAPABILITY
 
 createSpectrum
 
 Spectrum
 

Detailed Description

Example of GAMBIT DarkBit standalone main program.


Authors (add name and date if you modify):

Author
Christoph Weniger
Date
2016 Feb
Author
Sebastian Wild
Date
2016 Aug
Author
Jonathan Cornell
Date
2016, 2020

Definition in file DarkBit_standalone_ScalarSingletDM_Z2.cpp.

Function Documentation

◆ main()

int main ( )

Definition at line 76 of file DarkBit_standalone_ScalarSingletDM_Z2.cpp.

References Gambit::DarkBit::annihilation_rate_Sun(), Gambit::backend_error(), Gambit::DarkBit::capture_rate_Sun_const_xsec(), Gambit::DarkBit::cascadeMC_DecayTable(), Gambit::DarkBit::cascadeMC_EventCount(), Gambit::DarkBit::cascadeMC_FinalStates(), cascadeMC_gammaSpectra, Gambit::DarkBit::cascadeMC_GenerateChain(), Gambit::DarkBit::cascadeMC_Histograms(), Gambit::DarkBit::cascadeMC_InitialState(), Gambit::DarkBit::cascadeMC_LoopManager(), Gambit::DarkBit::createDecays(), createSpectrum, Gambit::DarkBit::DarkMatter_ID_ScalarSingletDM(), Gambit::DarkBit::DarkMatterConj_ID_ScalarSingletDM(), Gambit::DarkBit::DarkSUSY_PointInit_LocalHalo_func(), Gambit::DarkBit::DD_couplings_MicrOmegas(), Gambit::DarkBit::DD_couplings_ScalarSingletDM_Z2(), Gambit::DarkBit::DM_process_from_ProcessCatalog(), Gambit::EOM, Gambit::DarkBit::equilibration_time_Sun(), Gambit::DarkBit::ExtractLocalMaxwellianHalo(), Gambit::DarkBit::GA_AnnYield_General(), Gambit::DarkBit::GA_missingFinalStates(), Gambit::DarkBit::GalacticHalo_Einasto(), Gambit::DarkBit::IC79_loglike(), Gambit::DarkBit::IC79SL_bgloglike(), Gambit::DarkBit::IC79SL_full(), Gambit::DarkBit::IC79SL_loglike(), Gambit::DarkBit::IC79WH_bgloglike(), Gambit::DarkBit::IC79WH_full(), Gambit::DarkBit::IC79WH_loglike(), Gambit::DarkBit::IC79WL_bgloglike(), Gambit::DarkBit::IC79WL_full(), Gambit::DarkBit::IC79WL_loglike(), Gambit::LogTags::info, Gambit::initialise_standalone_logs(), Gambit::DarkBit::lnL_FermiLATdwarfs_gamLike(), Gambit::DarkBit::lnL_oh2_Simple(), LOCAL_INFO, Gambit::logger(), Gambit::model_warning(), Gambit::DarkBit::mwimp_generic(), Gambit::DarkBit::nuyield_from_DS(), Gambit::DarkBit::RD_fraction_one(), Gambit::DarkBit::RD_oh2_DS_general(), Gambit::DarkBit::RD_oh2_MicrOmegas(), Gambit::DarkBit::RD_oh2_Xf_MicrOmegas(), Gambit::DarkBit::RD_spectrum_from_ProcessCatalog(), Gambit::DarkBit::RD_spectrum_ordered_func(), Gambit::ModelParameters::setValue(), Gambit::DarkBit::sigma_SD_p_simple(), Gambit::DarkBit::sigma_SI_p_simple(), Gambit::DarkBit::sigmav_late_universe(), Gambit::DarkBit::SimYieldTable_DarkSUSY(), and Gambit::DarkBit::TH_ProcessCatalog_ScalarSingletDM_Z2().

77 {
78 
79  try
80  {
81 
82  std::cout << std::endl
83  << "Start DarkBit Scalar Singlet DM standalone example!" << std::endl;
84  std::cout << "---------------------------------------------------" << std::endl;
85  std::cout << std::endl;
86  std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl;
87  std::cout << "This program needs DarkBit/data/SM.slha for SM parameters and " << std::endl;
88  std::cout << "DarkBit/data/decays.slha for the Higgs width and branching fraction. If " << std::endl;
89  std::cout << "these are not present, it dies!" << std::endl;
90  std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl;
91  std::cout << std::endl;
92 
93  // ---- Initialise logging and exceptions ----
94 
95  initialise_standalone_logs("runs/DarkBit_standalone_ScalarSingletDM_Z2/logs/");
96  logger()<<"Running DarkBit standalone example"<<LogTags::info<<EOM;
97  model_warning().set_fatal(true);
98 
99 
100  // ---- Check that required backends are present ----
101 
102  if (not Backends::backendInfo().works["DarkSUSY_generic_wimp6.2.5"]) backend_error().raise(LOCAL_INFO, "DarkSUSY 6.2.5 for a generic WIMP is missing!");
103  if (not Backends::backendInfo().works["MicrOmegas_ScalarSingletDM_Z23.6.9.2"]) backend_error().raise(LOCAL_INFO, "MicrOmegas 3.6.9.2 for ScalarSingletDM_Z2 is missing!");
104  if (not Backends::backendInfo().works["gamLike1.0.1"]) backend_error().raise(LOCAL_INFO, "gamLike 1.0.1 is missing!");
105  if (not Backends::backendInfo().works["DDCalc2.2.0"]) backend_error().raise(LOCAL_INFO, "DDCalc 2.2.0 is missing!");
106  if (not Backends::backendInfo().works["nulike1.0.9"]) backend_error().raise(LOCAL_INFO, "nulike 1.0.9 is missing!");
107 
108 
109  // ---- Initialize models ----
110 
111  // Initialize ScalarSingletDM_Z2 model -- Adjust the model parameters here:
112  ModelParameters* SingletDM_primary_parameters = Models::ScalarSingletDM_Z2::Functown::primary_parameters.getcontentsPtr();
113  SingletDM_primary_parameters->setValue("mS", 1000.);
114  SingletDM_primary_parameters->setValue("lambda_hS", 1.0);
115 
116  // Initialize halo model
117  ModelParameters* Halo_primary_parameters = Models::Halo_Einasto::Functown::primary_parameters.getcontentsPtr();
118  Halo_primary_parameters->setValue("rho0", 0.4);
119  Halo_primary_parameters->setValue("rhos", 0.08);
120  Halo_primary_parameters->setValue("vrot", 235.);
121  Halo_primary_parameters->setValue("v0", 235.);
122  Halo_primary_parameters->setValue("vesc", 550.);
123  Halo_primary_parameters->setValue("rs", 20.);
124  Halo_primary_parameters->setValue("r_sun", 8.5);
125  Halo_primary_parameters->setValue("alpha", 0.17);
126 
127 
128  // --- Resolve halo dependencies ---
129  ExtractLocalMaxwellianHalo.notifyOfModel("Halo_Einasto");
130  ExtractLocalMaxwellianHalo.resolveDependency(&Models::Halo_Einasto::Functown::primary_parameters);
131  ExtractLocalMaxwellianHalo.reset_and_calculate();
132 
133  GalacticHalo_Einasto.notifyOfModel("Halo_Einasto");
134  GalacticHalo_Einasto.resolveDependency(&Models::Halo_Einasto::Functown::primary_parameters);
135  GalacticHalo_Einasto.reset_and_calculate();
136 
137  // Initialize nuclear_params_fnq model
138  ModelParameters* nuclear_params_fnq = Models::nuclear_params_fnq::Functown::primary_parameters.getcontentsPtr();
139  nuclear_params_fnq->setValue("fpd", 0.034);
140  nuclear_params_fnq->setValue("fpu", 0.023);
141  nuclear_params_fnq->setValue("fps", 0.14);
142  nuclear_params_fnq->setValue("fnd", 0.041);
143  nuclear_params_fnq->setValue("fnu", 0.019);
144  nuclear_params_fnq->setValue("fns", 0.14);
145  nuclear_params_fnq->setValue("deltad", -0.40);
146  nuclear_params_fnq->setValue("deltau", 0.74);
147  nuclear_params_fnq->setValue("deltas", -0.12);
148 
149 
150  // ---- Initialize spectrum and decays ---
151 
152  createSpectrum.notifyOfModel("ScalarSingletDM_Z2");
153  createSpectrum.resolveDependency(&Models::ScalarSingletDM_Z2::Functown::primary_parameters);
154  createSpectrum.reset_and_calculate();
155 
156  createDecays.notifyOfModel("ScalarSingletDM_Z2");
157  createDecays.reset_and_calculate();
158 
159 
160  // ---- Set up basic internal structures for direct & indirect detection ----
161 
162  // Set identifier for DM particle
163  DarkMatter_ID_ScalarSingletDM.notifyOfModel("ScalarSingletDM_Z2");
164  DarkMatter_ID_ScalarSingletDM.reset_and_calculate();
165  DarkMatterConj_ID_ScalarSingletDM.notifyOfModel("ScalarSingletDM_Z2");
166  DarkMatterConj_ID_ScalarSingletDM.reset_and_calculate();
167 
168  // Set up process catalog
169  TH_ProcessCatalog_ScalarSingletDM_Z2.notifyOfModel("ScalarSingletDM_Z2");
172  TH_ProcessCatalog_ScalarSingletDM_Z2.reset_and_calculate();
173 
174  // Assume for direct and indirect detection likelihoods that dark matter
175  // density is always the measured one (despite relic density results)
176  RD_fraction_one.reset_and_calculate();
177 
178  // Set generic WIMP mass object
180  mwimp_generic.resolveDependency(&DarkMatter_ID_ScalarSingletDM);
181  mwimp_generic.reset_and_calculate();
182 
183  // Set generic annihilation rate in late universe (v->0 limit)
187  sigmav_late_universe.reset_and_calculate();
188 
189  // ---- Initialize backends ----
190 
191  // Initialize nulike backend
192  Backends::nulike_1_0_9::Functown::nulike_bounds.setStatus(2);
193  nulike_1_0_9_init.reset_and_calculate();
194 
195  // Initialize gamLike backend
196  gamLike_1_0_1_init.reset_and_calculate();
197 
198  // Initialize MicrOmegas backend (specific for ScalarSingletDM_Z2)
199  MicrOmegas_ScalarSingletDM_Z2_3_6_9_2_init.notifyOfModel("ScalarSingletDM_Z2");
200  MicrOmegas_ScalarSingletDM_Z2_3_6_9_2_init.resolveDependency(&createSpectrum);
201  MicrOmegas_ScalarSingletDM_Z2_3_6_9_2_init.resolveDependency(&createDecays);
202  MicrOmegas_ScalarSingletDM_Z2_3_6_9_2_init.reset_and_calculate();
203  // For the below VXdecay = 0 - no 3 body final states via virtual X
204  // 1 - annihilations to 3 body final states via virtual X
205  // 2 - (co)annihilations to 3 body final states via virtual X
206  MicrOmegas_ScalarSingletDM_Z2_3_6_9_2_init.setOption<int>("VZdecay", 1);
207  MicrOmegas_ScalarSingletDM_Z2_3_6_9_2_init.setOption<int>("VWdecay", 1);
208  MicrOmegas_ScalarSingletDM_Z2_3_6_9_2_init.reset_and_calculate();
209 
210  // Initialize DarkSUSY backend
211  DarkSUSY_generic_wimp_6_2_5_init.reset_and_calculate();
212 
213  // Initialize DarkSUSY Local Halo Model
216  DarkSUSY_PointInit_LocalHalo_func.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::dshmcom);
217  DarkSUSY_PointInit_LocalHalo_func.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::dshmisodf);
218  DarkSUSY_PointInit_LocalHalo_func.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::dshmframevelcom);
219  DarkSUSY_PointInit_LocalHalo_func.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::dshmnoclue);
220  DarkSUSY_PointInit_LocalHalo_func.reset_and_calculate();
221 
222  // ---- Relic density ----
223 
224  // Relic density calculation with MicrOmegas
225  RD_oh2_Xf_MicrOmegas.notifyOfModel("ScalarSingletDM_Z2");
226  RD_oh2_Xf_MicrOmegas.resolveBackendReq(&Backends::MicrOmegas_ScalarSingletDM_Z2_3_6_9_2::Functown::darkOmega);
227  RD_oh2_Xf_MicrOmegas.reset_and_calculate();
228  RD_oh2_MicrOmegas.resolveDependency(&RD_oh2_Xf_MicrOmegas);
229  RD_oh2_MicrOmegas.reset_and_calculate();
230 
231  // Retrieve and print MicrOmegas result
232  logger() << "Omega h^2 from MicrOmegas: " << RD_oh2_MicrOmegas(0) << LogTags::info << EOM;
233 
234  // Relic density calculation with GAMBIT (DarkSUSY Boltzmann solver)
238  RD_spectrum_from_ProcessCatalog.reset_and_calculate();
239 
240  RD_eff_annrate_from_ProcessCatalog.resolveDependency(&TH_ProcessCatalog_ScalarSingletDM_Z2);
241  RD_eff_annrate_from_ProcessCatalog.resolveDependency(&DarkMatter_ID_ScalarSingletDM);
242  RD_eff_annrate_from_ProcessCatalog.resolveDependency(&DarkMatterConj_ID_ScalarSingletDM);
243  RD_eff_annrate_from_ProcessCatalog.reset_and_calculate();
244 
246  RD_spectrum_ordered_func.reset_and_calculate();
247 
248  RD_oh2_DS_general.resolveDependency(&RD_spectrum_ordered_func);
249  RD_oh2_DS_general.resolveDependency(&RD_eff_annrate_from_ProcessCatalog);
250  RD_oh2_DS_general.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::rdpars);
251  RD_oh2_DS_general.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::rdtime);
252  RD_oh2_DS_general.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::dsrdcom);
253  RD_oh2_DS_general.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::dsrdstart);
254  RD_oh2_DS_general.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::dsrdens);
255  RD_oh2_DS_general.setOption<int>("fast", 1); // 0: normal; 1: fast; 2: dirty
256  RD_oh2_DS_general.reset_and_calculate();
257 
258  // Retrieve and print GAMBIT result
259  logger() << "Omega h^2 from GAMBIT: " << RD_oh2_DS_general(0) << LogTags::info << EOM;
260 
261  // Calculate WMAP likelihoods
262  // Uncomment one of the following two line to choose which Omega h^2 value to use
263  //lnL_oh2_Simple.resolveDependency(&RD_oh2_MicrOmegas);
264  lnL_oh2_Simple.resolveDependency(&RD_oh2_DS_general);
265  lnL_oh2_Simple.reset_and_calculate();
266 
267  logger() << "Relic density lnL: " << lnL_oh2_Simple((0)) << LogTags::info << EOM;
268 
269  // ---- Direct detection -----
270 
271  // Calculate DD couplings with Micromegas
272 
273  DD_couplings_MicrOmegas.notifyOfModel("ScalarSingletDM_Z2");
274  DD_couplings_MicrOmegas.notifyOfModel("nuclear_params_fnq");
275  DD_couplings_MicrOmegas.resolveDependency(&Models::nuclear_params_fnq::Functown::primary_parameters);
276  DD_couplings_MicrOmegas.resolveBackendReq(&Backends::MicrOmegas_ScalarSingletDM_Z2_3_6_9_2::Functown::nucleonAmplitudes);
277  DD_couplings_MicrOmegas.resolveBackendReq(&Backends::MicrOmegas_ScalarSingletDM_Z2_3_6_9_2::Functown::FeScLoop);
278  DD_couplings_MicrOmegas.resolveBackendReq(&Backends::MicrOmegas_ScalarSingletDM_Z2_3_6_9_2::Functown::mocommon_);
279  DD_couplings_MicrOmegas.reset_and_calculate();
280 
281  // Calculate DD couplings with GAMBIT
282 
283  DD_couplings_ScalarSingletDM_Z2.notifyOfModel("nuclear_params_fnq");
284  DD_couplings_ScalarSingletDM_Z2.notifyOfModel("ScalarSingletDM_Z2");
285  DD_couplings_ScalarSingletDM_Z2.resolveDependency(&Models::nuclear_params_fnq::Functown::primary_parameters);
287  DD_couplings_ScalarSingletDM_Z2.reset_and_calculate();
288 
289  // Set generic scattering cross-sections for later use
290  double sigma_SI_p_GB, sigma_SI_p_MO;
291 
292  sigma_SI_p_simple.resolveDependency(&DD_couplings_MicrOmegas);
293  sigma_SI_p_simple.resolveDependency(&mwimp_generic);
294  sigma_SI_p_simple.reset_and_calculate();
295  sigma_SI_p_MO = sigma_SI_p_simple(0);
296 
297  sigma_SD_p_simple.resolveDependency(&DD_couplings_MicrOmegas);
298  sigma_SD_p_simple.resolveDependency(&mwimp_generic);
299  sigma_SD_p_simple.reset_and_calculate();
300 
301  logger() << "sigma_SI,p with MicrOmegas: " << sigma_SI_p_simple(0) << LogTags::info << EOM;
302 
303  // Set generic scattering cross-sections for later use
305  sigma_SI_p_simple.reset_and_calculate();
306  sigma_SI_p_GB = sigma_SI_p_simple(0);
307 
309  sigma_SD_p_simple.reset_and_calculate();
310 
311  logger() << "sigma_SI,p with GAMBIT: " << sigma_SI_p_simple(0) << LogTags::info << EOM;
312 
313  // Initialize DDCalc backend
314  Backends::DDCalc_2_2_0::Functown::DDCalc_CalcRates_simple.setStatus(2);
315  Backends::DDCalc_2_2_0::Functown::DDCalc_Experiment.setStatus(2);
316  Backends::DDCalc_2_2_0::Functown::DDCalc_LogLikelihood.setStatus(2);
317 
318  DDCalc_2_2_0_init.resolveDependency(&ExtractLocalMaxwellianHalo);
319  DDCalc_2_2_0_init.resolveDependency(&RD_fraction_one);
320  DDCalc_2_2_0_init.resolveDependency(&mwimp_generic);
321  // Choose one of the two below lines to determine where the couplings used in the likelihood
322  // calculation come from
323  DDCalc_2_2_0_init.resolveDependency(&DD_couplings_ScalarSingletDM_Z2);
324  //DDCalc_2_2_0_init.resolveDependency(&DD_couplings_MicrOmegas);
325  DDCalc_2_2_0_init.reset_and_calculate();
326 
327  // Calculate direct detection rates for LUX 2016
328  LUX_2016_Calc.resolveBackendReq(&Backends::DDCalc_2_2_0::Functown::DDCalc_Experiment);
329  LUX_2016_Calc.resolveBackendReq(&Backends::DDCalc_2_2_0::Functown::DDCalc_CalcRates_simple);
330  LUX_2016_Calc.reset_and_calculate();
331 
332  // Calculate direct detection likelihood for LUX 2016
333  LUX_2016_GetLogLikelihood.resolveDependency(&LUX_2016_Calc);
334  LUX_2016_GetLogLikelihood.resolveBackendReq(&Backends::DDCalc_2_2_0::Functown::DDCalc_Experiment);
335  LUX_2016_GetLogLikelihood.resolveBackendReq(&Backends::DDCalc_2_2_0::Functown::DDCalc_LogLikelihood);
336  LUX_2016_GetLogLikelihood.reset_and_calculate();
337 
338  logger() << "LUX_2016 lnL: " << LUX_2016_GetLogLikelihood(0) << LogTags::info << EOM;
339 
340  // ---- Gamma-ray yields ----
341 
342  // Initialize tabulated gamma-ray yields
343  SimYieldTable_DarkSUSY.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::dsanyield_sim);
344  SimYieldTable_DarkSUSY.reset_and_calculate();
345 
346  // Identify process as annihilation rather than decay
349  DM_process_from_ProcessCatalog.reset_and_calculate();
350 
351  // Collect missing final states for simulation in cascade MC
353  GA_missingFinalStates.resolveDependency(&SimYieldTable_DarkSUSY);
357  GA_missingFinalStates.reset_and_calculate();
358 
359  // Infer for which type of final states particles MC should be performed
360  cascadeMC_FinalStates.setOption<std::vector<std::string>>("cMC_finalStates", daFunk::vec<std::string>("gamma"));
361  cascadeMC_FinalStates.reset_and_calculate();
362 
363  // Collect decay information for cascade MC
365  cascadeMC_DecayTable.resolveDependency(&SimYieldTable_DarkSUSY);
366  cascadeMC_DecayTable.reset_and_calculate();
367 
368  // Set up MC loop manager for cascade MC
369  cascadeMC_LoopManager.resolveDependency(&GA_missingFinalStates);
370  std::vector<functor*> nested_functions = initVector<functor*>(
372  cascadeMC_LoopManager.setNestedList(nested_functions);
373 
374  // Set up initial state for cascade MC step
375  cascadeMC_InitialState.resolveDependency(&GA_missingFinalStates);
376  cascadeMC_InitialState.resolveLoopManager(&cascadeMC_LoopManager);
377 
378  // Perform MC step for cascade MC
379  cascadeMC_GenerateChain.resolveDependency(&cascadeMC_InitialState);
380  cascadeMC_GenerateChain.resolveDependency(&cascadeMC_DecayTable);
381  cascadeMC_GenerateChain.resolveLoopManager(&cascadeMC_LoopManager);
382 
383  // Generate histogram for cascade MC
384  cascadeMC_Histograms.resolveDependency(&cascadeMC_InitialState);
385  cascadeMC_Histograms.resolveDependency(&cascadeMC_GenerateChain);
386  cascadeMC_Histograms.resolveDependency(&TH_ProcessCatalog_ScalarSingletDM_Z2);
387  cascadeMC_Histograms.resolveDependency(&SimYieldTable_DarkSUSY);
388  cascadeMC_Histograms.resolveDependency(&cascadeMC_FinalStates);
389  cascadeMC_Histograms.resolveLoopManager(&cascadeMC_LoopManager);
390 
391  // Check convergence of cascade MC
392  cascadeMC_EventCount.resolveDependency(&cascadeMC_InitialState);
393  cascadeMC_EventCount.resolveLoopManager(&cascadeMC_LoopManager);
394 
395  // Start cascade MC loop
396  cascadeMC_LoopManager.reset_and_calculate();
397 
398  // Infer gamma-ray spectra for recorded MC results
399  cascadeMC_gammaSpectra.resolveDependency(&GA_missingFinalStates);
400  cascadeMC_gammaSpectra.resolveDependency(&cascadeMC_FinalStates);
401  cascadeMC_gammaSpectra.resolveDependency(&cascadeMC_Histograms);
402  cascadeMC_gammaSpectra.resolveDependency(&cascadeMC_EventCount);
403  cascadeMC_gammaSpectra.reset_and_calculate();
404 
405  // Calculate total gamma-ray yield (cascade MC + tabulated results)
407  GA_AnnYield_General.resolveDependency(&SimYieldTable_DarkSUSY);
410  GA_AnnYield_General.resolveDependency(&cascadeMC_gammaSpectra);
411  GA_AnnYield_General.reset_and_calculate();
412 
413  // Calculate Fermi LAT dwarf likelihood
415  lnL_FermiLATdwarfs_gamLike.resolveDependency(&RD_fraction_one);
417  lnL_FermiLATdwarfs_gamLike.resolveBackendReq(&Backends::gamLike_1_0_1::Functown::lnL);
418  lnL_FermiLATdwarfs_gamLike.reset_and_calculate();
419 
420  logger() << "Fermi LAT dwarf spheroidal lnL: " << lnL_FermiLATdwarfs_gamLike(0) << LogTags::info << EOM;
421 
422  // ---- IceCube limits ----
423 
424  // Infer WIMP capture rate in Sun
425  capture_rate_Sun_const_xsec.resolveDependency(&mwimp_generic);
428  capture_rate_Sun_const_xsec.resolveDependency(&RD_fraction_one);
429  capture_rate_Sun_const_xsec.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::dssenu_capsuntab);
432  capture_rate_Sun_const_xsec.reset_and_calculate();
433 
434  // Infer WIMP equilibration time in Sun
438  equilibration_time_Sun.resolveDependency(&mwimp_generic);
440  equilibration_time_Sun.reset_and_calculate();
441 
442  // Infer WIMP annihilation rate in Sun
443  annihilation_rate_Sun.resolveDependency(&equilibration_time_Sun);
445  annihilation_rate_Sun.reset_and_calculate();
446 
447  // Infer neutrino yield from Sun
449  nuyield_from_DS.resolveDependency(&mwimp_generic);
450  nuyield_from_DS.resolveDependency(&sigmav_late_universe);
453  nuyield_from_DS.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::dsgenericwimp_nusetup);
454  nuyield_from_DS.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::neutrino_yield);
455  nuyield_from_DS.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::DS_neutral_h_decay_channels);
456  nuyield_from_DS.resolveBackendReq(&Backends::DarkSUSY_generic_wimp_6_2_5::Functown::DS_charged_h_decay_channels);
457  nuyield_from_DS.reset_and_calculate();
458 
459  // Calculate number of events at IceCube
460  IC79WH_full.resolveDependency(&mwimp_generic);
461  IC79WH_full.resolveDependency(&annihilation_rate_Sun);
462  IC79WH_full.resolveDependency(&nuyield_from_DS);
463  IC79WH_full.resolveBackendReq(&Backends::nulike_1_0_9::Functown::nulike_bounds);
464  IC79WH_full.reset_and_calculate();
465  IC79WL_full.resolveDependency(&mwimp_generic);
466  IC79WL_full.resolveDependency(&annihilation_rate_Sun);
467  IC79WL_full.resolveDependency(&nuyield_from_DS);
468  IC79WL_full.resolveBackendReq(&Backends::nulike_1_0_9::Functown::nulike_bounds);
469  IC79WL_full.reset_and_calculate();
470  IC79SL_full.resolveDependency(&mwimp_generic);
471  IC79SL_full.resolveDependency(&annihilation_rate_Sun);
472  IC79SL_full.resolveDependency(&nuyield_from_DS);
473  IC79SL_full.resolveBackendReq(&Backends::nulike_1_0_9::Functown::nulike_bounds);
474  IC79SL_full.reset_and_calculate();
475 
476  // Calculate IceCube likelihood
477  IC79WH_bgloglike.resolveDependency(&IC79WH_full);
478  IC79WH_bgloglike.reset_and_calculate();
479  IC79WH_loglike.resolveDependency(&IC79WH_full);
480  IC79WH_loglike.reset_and_calculate();
481  IC79WL_bgloglike.resolveDependency(&IC79WL_full);
482  IC79WL_bgloglike.reset_and_calculate();
483  IC79WL_loglike.resolveDependency(&IC79WL_full);
484  IC79WL_loglike.reset_and_calculate();
485  IC79SL_bgloglike.resolveDependency(&IC79SL_full);
486  IC79SL_bgloglike.reset_and_calculate();
487  IC79SL_loglike.resolveDependency(&IC79SL_full);
488  IC79SL_loglike.reset_and_calculate();
489  IC79_loglike.resolveDependency(&IC79WH_bgloglike);
490  IC79_loglike.resolveDependency(&IC79WH_loglike);
491  IC79_loglike.resolveDependency(&IC79WL_bgloglike);
492  IC79_loglike.resolveDependency(&IC79WL_loglike);
493  IC79_loglike.resolveDependency(&IC79SL_bgloglike);
494  IC79_loglike.resolveDependency(&IC79SL_loglike);
495  IC79_loglike.reset_and_calculate();
496 
497  logger() << "IceCube 79 lnL: " << IC79_loglike(0) << LogTags::info << EOM;
498 
499  // ---- Dump results on screen ----
500 
501  cout << endl;
502  cout << "Omega h^2 from MicrOmegas: " << RD_oh2_MicrOmegas(0) << endl;
503  cout << "Omega h^2 from DarkSUSY (via DarkBit): " << RD_oh2_DS_general(0) << endl;
504  cout << "Relic density lnL: " << lnL_oh2_Simple(0) << endl;
505  cout << "sigma_SI,p with MicrOmegas: " << sigma_SI_p_MO << endl;
506  cout << "sigma_SI,p with DarkBit: " << sigma_SI_p_GB << endl;
507  cout << "LUX_2016 lnL: " << LUX_2016_GetLogLikelihood(0) << endl;
508  cout << "Fermi LAT dwarf spheroidal lnL: " << lnL_FermiLATdwarfs_gamLike(0) << endl;
509  cout << "IceCube 79 lnL: " << IC79_loglike(0) << endl;
510  }
511 
512  catch (std::exception& e)
513  {
514  std::cout << "DarkBit_standalone_ScalarSingletDM_Z2 has exited with fatal exception: " << e.what() << std::endl;
515  }
516 
517  return 0;
518 }
void cascadeMC_FinalStates(std::vector< std::string > &list)
Function for retrieving list of final states for cascade decays.
Definition: Cascades.cpp:41
void GA_missingFinalStates(std::vector< std::string > &result)
Identification of final states that are not yet tabulated.
Definition: GamYields.cpp:61
void IC79WL_full(nudata &result)
79-string IceCube WL sample: predicted signal and background counts, observed counts and likelihoods...
void DD_couplings_ScalarSingletDM_Z2(DM_nucleon_couplings &result)
Direct detection couplings for Z2 scalar singlet DM.
void equilibration_time_Sun(double &result)
Equilibration time for capture and annihilation of dark matter in the Sun (s)
void sigmav_late_universe(double &result)
Retrieve the total thermally-averaged annihilation cross-section for indirect detection (cm^3 / s)...
Definition: DarkBit.cpp:70
void DarkSUSY_PointInit_LocalHalo_func(bool &result)
Function to set Local Halo Parameters in DarkSUSY (DS 6)
void IC79SL_bgloglike(double &result)
void sigma_SI_p_simple(double &result)
Simple calculator of the spin-independent WIMP-proton cross-section.
void IC79WL_bgloglike(double &result)
void RD_fraction_one(double &result)
#define LOCAL_INFO
Definition: local_info.hpp:34
void SimYieldTable_DarkSUSY(SimYieldTable &result)
SimYieldTable based on DarkSUSY6 tabulated results.
Definition: GamYields.cpp:640
void cascadeMC_InitialState(std::string &pID)
Function selecting initial state for decay chain.
Definition: Cascades.cpp:140
void IC79WL_loglike(double &result)
void RD_oh2_Xf_MicrOmegas(ddpair &result)
Relic density directly from a call of initialized MicrOmegas.
void createDecays(DecayTable &outDecays)
void TH_ProcessCatalog_ScalarSingletDM_Z2(DarkBit::TH_ProcessCatalog &result)
Set up process catalog for Z2 scalar singlet DM.
void nuyield_from_DS(nuyield_info &result)
Neutrino yield function pointer and setup.
void annihilation_rate_Sun(double &result)
Annihilation rate of dark matter in the Sun (s^-1)
void IC79WH_loglike(double &result)
void IC79SL_loglike(double &result)
warning & model_warning()
Model warnings.
void RD_spectrum_from_ProcessCatalog(RD_spectrum_type &result)
Collects information about resonances and threshold energies directly from the ProcessCatalog [NB: th...
void lnL_oh2_Simple(double &result)
Likelihood for cosmological relic density constraints.
void DD_couplings_MicrOmegas(DM_nucleon_couplings &result)
Get direct detection couplings from initialized MicrOmegas.
error & backend_error()
Backend errors.
void DarkMatterConj_ID_ScalarSingletDM(std::string &result)
void cascadeMC_EventCount(std::map< std::string, int > &counts)
Event counter for cascade decays.
Definition: Cascades.cpp:175
void setValue(std::string const &inkey, double const &value)
Set single parameter value.
void IC79SL_full(nudata &result)
79-string IceCube SL sample: predicted signal and background counts, observed counts and likelihoods...
void cascadeMC_GenerateChain(DarkBit::DecayChain::ChainContainer &chain)
Function for generating decay chains.
Definition: Cascades.cpp:198
void DarkMatter_ID_ScalarSingletDM(std::string &result)
void capture_rate_Sun_const_xsec(double &result)
Capture rate of regular dark matter in the Sun (no v-dependent or q-dependent cross-sections) (s^-1)...
void GA_AnnYield_General(daFunk::Funk &result)
General routine to derive annihilation yield.
Definition: GamYields.cpp:420
void initialise_standalone_logs(str)
Logger setup standalone utility function.
void lnL_FermiLATdwarfs_gamLike(double &result)
Fermi LAT dwarf likelihoods, using gamLike backend.
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
void IC79WH_full(nudata &result)
79-string IceCube WH sample: predicted signal and background counts, observed counts and likelihoods...
void IC79_loglike(double &result)
Composite IceCube 79-string likelihood function.
void ExtractLocalMaxwellianHalo(LocalMaxwellianHalo &result)
Module function providing local density and velocity dispersion parameters.
Definition: DarkBit.cpp:177
void IC79WH_bgloglike(double &result)
void mwimp_generic(double &result)
Retrieve the DM mass in GeV for generic models (GeV)
Definition: DarkBit.cpp:60
void sigma_SD_p_simple(double &result)
Simple calculator of the spin-dependent WIMP-proton cross-section.
void cascadeMC_LoopManager()
Loop manager for cascade decays.
Definition: Cascades.cpp:80
void cascadeMC_Histograms(std::map< std::string, std::map< std::string, SimpleHist > > &result)
Function responsible for histogramming, and evaluating end conditions for event loop.
Definition: Cascades.cpp:363
void RD_oh2_MicrOmegas(double &result)
void cascadeMC_DecayTable(DarkBit::DecayChain::DecayTable &table)
Function setting up the decay table used in decay chains.
Definition: Cascades.cpp:58
void DM_process_from_ProcessCatalog(std::string &result)
Information about the nature of the DM process in question (i.e.
Definition: DarkBit.cpp:114
void RD_oh2_DS_general(double &result)
General routine for calculation of relic density, using DarkSUSY 6+ Boltzmann solver.
void GalacticHalo_Einasto(GalacticHaloProperties &result)
Module function to generate GalacticHaloProperties for Einasto profile.
Definition: DarkBit.cpp:165
void RD_spectrum_ordered_func(RD_spectrum_type &result)
Order RD_spectrum object and derive coannihilation thresholds.
Here is the call graph for this function:

◆ QUICK_FUNCTION() [1/2]

QUICK_FUNCTION ( DarkBit  ,
decay_rates  ,
NEW_CAPABILITY  ,
createDecays  ,
DecayTable  ,
()   
)

◆ QUICK_FUNCTION() [2/2]

ScalarSingletDM_Z2 QUICK_FUNCTION ( DarkBit  ,
cascadeMC_gammaSpectra  ,
OLD_CAPABILITY  ,
CMC_dummy  ,
DarkBit::stringFunkMap  ,
()   
)

Definition at line 33 of file DarkBit_standalone_ScalarSingletDM_Z2.cpp.

References CMC_dummy, Gambit::DarkBit::createDecays(), createSpectrum, Gambit::Models::ScalarSingletDM_Z2Model::HiggsPoleMass, Gambit::Models::ScalarSingletDM_Z2Model::HiggsVEV, Gambit::read_SLHA(), Gambit::Models::ScalarSingletDM_Z2Model::SingletLambda, and Gambit::Models::ScalarSingletDM_Z2Model::SingletPoleMass.

37 {
38 
39  namespace DarkBit
40  {
41 
42  // Dummy functor for returning empty cascadeMC result spectra
43  void CMC_dummy(DarkBit::stringFunkMap& result)
44  {
46  result = sfm;
47  }
48 
49  // Create spectrum object from SLHA file SM.slha and ScalarSingletDM_Z2 model parameters
50  void createSpectrum(Spectrum& outSpec)
51  {
52  using namespace Pipes::createSpectrum;
53  std::string inputFileName = "DarkBit/data/SM.slha";
54 
56  singletmodel.HiggsPoleMass = 125.;
57  singletmodel.HiggsVEV = 246.;
58  singletmodel.SingletPoleMass = *Param["mS"];
59  singletmodel.SingletLambda = *Param["lambda_hS"];
60 
61  SLHAstruct slhaea = read_SLHA(inputFileName);
62  outSpec = spectrum_from_SLHAea<Models::ScalarSingletDM_Z2SimpleSpec, Models::ScalarSingletDM_Z2Model>(singletmodel, slhaea, Spectrum::mc_info(), Spectrum::mr_info());
63  }
64 
65  // Create decay object from SLHA file decays.slha
66  void createDecays(DecayTable& outDecays)
67  {
68  using namespace Pipes::createDecays;
69 
70  std::string filename = "DarkBit/data/decays.slha";
71  outDecays = DecayTable(filename);
72  }
73  }
74 }
SMslha_SLHAstruct SLHAstruct read_SLHA(str slha)
Read an SLHA file in to an SLHAea object with some error-checking.
void createDecays(DecayTable &outDecays)
std::map< str, daFunk::Funk > stringFunkMap
Definition: SimpleHist.hpp:101
SLHAea::Coll SLHAstruct
Less confusing name for SLHAea container class.
GAMBIT native decay table class.
Definition: decay_table.hpp:35
std::vector< YAML::sdd > mc_info
Typedefs for making it easier to manipulate mass cut and mass ratio cut info.
Definition: spectrum.hpp:119
Simple extension of the SMHiggsSimpleSpec "model object" to include scalar singlet DM parameters We c...
std::vector< YAML::ssdd > mr_info
Definition: spectrum.hpp:120
"Standard Model" (low-energy) plus high-energy model container class
Definition: spectrum.hpp:110
Here is the call graph for this function:

Variable Documentation

◆ createSpectrum

createSpectrum

Definition at line 32 of file DarkBit_standalone_ScalarSingletDM_Z2.cpp.

Referenced by main(), and QUICK_FUNCTION().

◆ OLD_CAPABILITY

OLD_CAPABILITY

Definition at line 32 of file DarkBit_standalone_ScalarSingletDM_Z2.cpp.

◆ ScalarSingletDM_Z2_spectrum

◆ Spectrum