gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-252-gf9a3f78
a Global And Modular Bsm Inference Tool
DarkBit_rollcall.hpp
Go to the documentation of this file.
1 // GAMBIT: Global and Modular BSM Inference Tool
2 // *********************************************
86 
87 #ifndef __DarkBit_rollcall_hpp__
88 #define __DarkBit_rollcall_hpp__
89 
91 
92 #define MODULE DarkBit
94 
96  #define CAPABILITY DarkSUSY5_PointInit_LocalHalo
98  #define FUNCTION DarkSUSY5_PointInit_LocalHalo_func
99  START_FUNCTION(bool)
100  DEPENDENCY(RD_fraction, double)
101  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
102  BACKEND_REQ(dshmcom, (ds5), DS5_HMCOM)
103  BACKEND_REQ(dshmisodf, (ds5), DS_HMISODF)
104  BACKEND_REQ(dshmframevelcom, (ds5), DS_HMFRAMEVELCOM)
105  BACKEND_REQ(dshmnoclue, (ds5), DS_HMNOCLUE)
106  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
107  #undef FUNCTION
108  #undef CAPABILITY
109 
110  #define CAPABILITY DarkSUSY_PointInit_LocalHalo
112  #define FUNCTION DarkSUSY_PointInit_LocalHalo_func
113  START_FUNCTION(bool)
114  DEPENDENCY(RD_fraction, double)
115  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
116  BACKEND_REQ(dshmcom, (ds6), DS_HMCOM)
117  BACKEND_REQ(dshmisodf, (ds6), DS_HMISODF)
118  BACKEND_REQ(dshmframevelcom, (ds6), DS_HMFRAMEVELCOM)
119  BACKEND_REQ(dshmnoclue, (ds6), DS_HMNOCLUE)
120  BACKEND_OPTION((DarkSUSY_MSSM, 6.1.1, 6.2.2), (ds6)) // Only DS6
121  BACKEND_OPTION((DarkSUSY_generic_wimp, 6.1.1, 6.2.2), (ds6)) // Only DS6
122  FORCE_SAME_BACKEND(ds6)
123  #undef FUNCTION
124  #undef CAPABILITY
125 
126  // Relic density -----------------------------------------
127 
128  #define CAPABILITY RD_spectrum
130  #define FUNCTION RD_spectrum_MSSM // No longer DS specific!
131  START_FUNCTION(RD_spectrum_type)
133  DEPENDENCY(DarkMatter_ID, std::string)
134  DEPENDENCY(decay_rates,DecayTable)
135  #undef FUNCTION
136  #define FUNCTION RD_spectrum_SUSY_DS5
137  START_FUNCTION(RD_spectrum_type)
138  BACKEND_REQ(mspctm, (ds5), DS5_MSPCTM)
139  BACKEND_REQ(widths, (ds5), DS5_WIDTHS)
140  BACKEND_REQ(intdof, (ds5), DS_INTDOF)
141  BACKEND_REQ(pacodes, (ds5), DS5_PACODES)
142  BACKEND_REQ(DS5particle_code, (ds5), int, (const str&))
143  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
144  #undef FUNCTION
145  #define FUNCTION RD_spectrum_from_ProcessCatalog
146  START_FUNCTION(RD_spectrum_type)
147  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
148  DEPENDENCY(DarkMatter_ID, std::string)
152  #undef FUNCTION
153  #undef CAPABILITY
154 
155  #define CAPABILITY RD_spectrum_ordered
157  #define FUNCTION RD_spectrum_ordered_func
158  START_FUNCTION(RD_spectrum_type)
159  DEPENDENCY(RD_spectrum, RD_spectrum_type)
160  #undef FUNCTION
161  #undef CAPABILITY
162 
163  #define CAPABILITY RD_eff_annrate_DS5prep
165  #define FUNCTION RD_annrate_DS5prep_func
166  START_FUNCTION(int)
167  DEPENDENCY(RD_spectrum, RD_spectrum_type)
168  BACKEND_REQ(rdmgev, (ds5), DS5_RDMGEV)
169  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5))
170  #undef FUNCTION
171  #undef CAPABILITY
172 
173  #define CAPABILITY RD_eff_annrate_DSprep_MSSM
175  #define FUNCTION RD_annrate_DSprep_MSSM_func
176  START_FUNCTION(int)
177  DEPENDENCY(RD_spectrum_ordered, RD_spectrum_type)
178  BACKEND_REQ(dsancoann, (ds6), DS_DSANCOANN)
179  BACKEND_REQ(DSparticle_code, (ds6), int, (const str&))
180  BACKEND_OPTION((DarkSUSY_MSSM, 6.1.1, 6.2.2), (ds6))
181  FORCE_SAME_BACKEND(ds6)
182  #undef FUNCTION
183  #undef CAPABILITY
184 
185  #define CAPABILITY RD_eff_annrate
187  #define FUNCTION RD_eff_annrate_DS5_MSSM
189  ALLOW_MODELS(MSSM63atQ)
190  DEPENDENCY(RD_eff_annrate_DS5prep, int)
191  BACKEND_REQ(dsanwx, (ds5), double, (double&))
192  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5))
193  #undef FUNCTION
194  #define FUNCTION RD_eff_annrate_DS_MSSM
196  ALLOW_MODELS(MSSM63atQ)
197  DEPENDENCY(RD_eff_annrate_DSprep_MSSM, int)
198  BACKEND_REQ(dsanwx, (ds6), double, (double&))
199  BACKEND_OPTION((DarkSUSY_MSSM, 6.1.1, 6.2.2), (ds6))
200  #undef FUNCTION
201  #define FUNCTION RD_eff_annrate_from_ProcessCatalog
203  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
204  DEPENDENCY(DarkMatter_ID, std::string)
205  ALLOW_MODELS(ScalarSingletDM_Z2, ScalarSingletDM_Z2_running,
206  DiracSingletDM_Z2, MajoranaSingletDM_Z2, VectorSingletDM_Z2)
207  #undef FUNCTION
208  #undef CAPABILITY
209 
210  #define CAPABILITY RD_oh2
212 
214  #define FUNCTION RD_oh2_DS_general
215  START_FUNCTION(double)
216  DEPENDENCY(RD_spectrum_ordered, RD_spectrum_type)
217  DEPENDENCY(RD_eff_annrate, fptr_dd)
218  #ifdef DARKBIT_RD_DEBUG
220  #endif
221  BACKEND_REQ(rdpars, (ds6), DS_RDPARS)
222  BACKEND_REQ(rdtime, (ds6), DS_RDTIME)
223  BACKEND_REQ(dsrdcom, (ds6), void, ())
224  BACKEND_REQ(dsrdstart,(ds6),void,(int&, double(&)[1000], double(&)[1000], int&, double(&)[1000], double(&)[1000], int&, double(&)[1000]))
225  BACKEND_REQ(dsrdens, (ds6), void, (double(*)(double&), double&, double&, int&, int&, int&))
226  BACKEND_OPTION((DarkSUSY_MSSM),(ds6))
227  BACKEND_OPTION((DarkSUSY_generic_wimp),(ds6))
228  FORCE_SAME_BACKEND(ds6)
229  #undef FUNCTION
230 
231  #define FUNCTION RD_oh2_DS5_general
232  START_FUNCTION(double)
233  DEPENDENCY(RD_spectrum_ordered, RD_spectrum_type)
234  DEPENDENCY(RD_eff_annrate, fptr_dd)
235  #ifdef DARKBIT_RD_DEBUG
237  #endif
238  BACKEND_REQ(dsrdthlim, (ds5), void, ())
239  BACKEND_REQ(dsrdtab, (ds5), void, (double(*)(double&), double&, int&))
240  BACKEND_REQ(dsrdeqn, (ds5), void, (double(*)(double&),double&,double&,double&,double&,int&))
241  BACKEND_REQ(dsrdwintp, (ds5), double, (double&))
242  BACKEND_REQ(DS5particle_code, (ds5), int, (const str&))
243  BACKEND_REQ(widths, (ds5), DS5_WIDTHS)
244  BACKEND_REQ(rdmgev, (ds5), DS5_RDMGEV)
245  BACKEND_REQ(rdpth, (ds5), DS_RDPTH)
246  BACKEND_REQ(rdpars, (ds5), DS_RDPARS)
247  BACKEND_REQ(rdswitch, (ds5), DS_RDSWITCH)
248  BACKEND_REQ(rdlun, (ds5), DS_RDLUN)
249  BACKEND_REQ(rdpadd, (ds5), DS_RDPADD)
250  BACKEND_REQ(rddof, (ds5), DS_RDDOF)
251  BACKEND_REQ(rderrors, (ds5), DS_RDERRORS)
252  BACKEND_REQ(rdtime, (ds5), DS_RDTIME)
253  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
254  #undef FUNCTION
255 
257  // TODO: corresponding function for DS6+ not yet implemented
258  #define FUNCTION RD_oh2_DarkSUSY_DS5
259  START_FUNCTION(double)
260  ALLOW_MODELS(MSSM63atQ)
261  BACKEND_REQ(dsrdomega, (ds5), double, (int&,int&,double&,int&,int&,int&))
262  BACKEND_REQ(rderrors, (ds5), DS_RDERRORS)
263  BACKEND_REQ(rdtime, (ds5), DS_RDTIME)
264  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
265  #undef FUNCTION
266 
268  #define FUNCTION RD_oh2_MicrOmegas
269  START_FUNCTION(double)
270  DEPENDENCY(RD_oh2_Xf, ddpair)
271  #undef FUNCTION
272 
274  #define FUNCTION RD_oh2_Axions
275  START_FUNCTION(double)
276  ALLOW_MODEL(GeneralALP)
277  DEPENDENCY(AxionOscillationTemperature, double)
278  DEPENDENCY(T_cmb, double)
279  #undef FUNCTION
280  #undef CAPABILITY
281 
282 
284  #define CAPABILITY RD_oh2_Xf
286  #define FUNCTION RD_oh2_Xf_MicrOmegas
288  BACKEND_REQ(oh2, (gimmemicro), double, (double*,int,double))
289  BACKEND_OPTION((MicrOmegas_MSSM), (gimmemicro))
290  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z2), (gimmemicro))
291  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z3), (gimmemicro))
292  BACKEND_OPTION((MicrOmegas_VectorSingletDM_Z2), (gimmemicro))
293  BACKEND_OPTION((MicrOmegas_MajoranaSingletDM_Z2), (gimmemicro))
294  BACKEND_OPTION((MicrOmegas_DiracSingletDM_Z2),(gimmemicro))
295  ALLOW_MODELS(MSSM63atQ, MSSM63atMGUT,
296  ScalarSingletDM_Z2, ScalarSingletDM_Z2_running,
297  ScalarSingletDM_Z3, ScalarSingletDM_Z3_running,
298  DiracSingletDM_Z2, MajoranaSingletDM_Z2, VectorSingletDM_Z2)
299  #undef FUNCTION
300  #undef CAPABILITY
301 
302 
304  #define CAPABILITY Xf
306  #define FUNCTION Xf_MicrOmegas
307  START_FUNCTION(double)
308  DEPENDENCY(RD_oh2_Xf, ddpair)
309  #undef FUNCTION
310  #undef CAPABILITY
311 
313  #define CAPABILITY relic_density_contributions
315  #define FUNCTION print_channel_contributions_MicrOmegas
316  START_FUNCTION(double)
317  DEPENDENCY(Xf, double)
318  BACKEND_REQ(momegas_print_channels, () , double, (double, double, double, int, FILE*))
319  #undef FUNCTION
320  #undef CAPABILITY
321 
323  #define CAPABILITY semi_annihilation_fraction
325  #define FUNCTION get_semi_ann_MicrOmegas
326  START_FUNCTION(double)
327  DEPENDENCY(Xf, double)
328  BACKEND_REQ(get_oneChannel, (gimmemicro) , double, (double,double,char*,char*,char*,char*))
329  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z3),(gimmemicro))
330  #undef FUNCTION
331  #undef CAPABILITY
332 
334  #define CAPABILITY RD_fraction
336  #define FUNCTION RD_fraction_one
337  START_FUNCTION(double)
338  #undef FUNCTION
339  #define FUNCTION RD_fraction_leq_one
340  START_FUNCTION(double)
341  DEPENDENCY(RD_oh2, double)
342  #undef FUNCTION
343  #define FUNCTION RD_fraction_rescaled
344  START_FUNCTION(double)
345  DEPENDENCY(RD_oh2, double)
346  #undef FUNCTION
347  #undef CAPABILITY
348 
349 
350  // Cascade decays --------------------------------------------
351 
353  #define CAPABILITY cascadeMC_FinalStates
355  #define FUNCTION cascadeMC_FinalStates
356  START_FUNCTION(std::vector<std::string>)
357  #undef FUNCTION
358  #undef CAPABILITY
359 
361  #define CAPABILITY cascadeMC_DecayTable
363  #define FUNCTION cascadeMC_DecayTable
364  START_FUNCTION(DecayChain::DecayTable)
365  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
366  DEPENDENCY(SimYieldTable, SimYieldTable)
367  #undef FUNCTION
368  #undef CAPABILITY
369 
371  #define CAPABILITY cascadeMC_LoopManagement
373  #define FUNCTION cascadeMC_LoopManager
374  START_FUNCTION(void, CAN_MANAGE_LOOPS)
375  DEPENDENCY(GA_missingFinalStates, std::vector<std::string>)
376  #undef FUNCTION
377  #undef CAPABILITY
378 
380  #define CAPABILITY cascadeMC_InitialState
382  #define FUNCTION cascadeMC_InitialState
383  START_FUNCTION(std::string)
384  DEPENDENCY(GA_missingFinalStates, std::vector<std::string>)
385  NEEDS_MANAGER(cascadeMC_LoopManagement)
386  #undef FUNCTION
387  #undef CAPABILITY
388 
390  #define CAPABILITY cascadeMC_EventCount
392  #define FUNCTION cascadeMC_EventCount
394  DEPENDENCY(cascadeMC_InitialState, std::string)
395  NEEDS_MANAGER(cascadeMC_LoopManagement)
396  #undef FUNCTION
397  #undef CAPABILITY
398 
400  #define CAPABILITY cascadeMC_ChainEvent
402  #define FUNCTION cascadeMC_GenerateChain
403  START_FUNCTION(DecayChain::ChainContainer)
404  DEPENDENCY(cascadeMC_InitialState, std::string)
405  DEPENDENCY(cascadeMC_DecayTable, DecayChain::DecayTable)
406  NEEDS_MANAGER(cascadeMC_LoopManagement)
407  #undef FUNCTION
408  #undef CAPABILITY
409 
411  #define CAPABILITY cascadeMC_Histograms
413  #define FUNCTION cascadeMC_Histograms
415  DEPENDENCY(cascadeMC_InitialState, std::string)
416  DEPENDENCY(cascadeMC_ChainEvent, DecayChain::ChainContainer)
417  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
418  DEPENDENCY(SimYieldTable, SimYieldTable)
419  DEPENDENCY(cascadeMC_FinalStates,std::vector<std::string>)
420  NEEDS_MANAGER(cascadeMC_LoopManagement)
421  #undef FUNCTION
422  #undef CAPABILITY
423 
425  #define CAPABILITY cascadeMC_gammaSpectra
427  #define FUNCTION cascadeMC_gammaSpectra
429  DEPENDENCY(GA_missingFinalStates, std::vector<std::string>)
430  DEPENDENCY(cascadeMC_FinalStates,std::vector<std::string>)
433  #undef FUNCTION
434  #undef CAPABILITY
435 
436  /*
438  #define CAPABILITY cascadeMC_PrintResult
439  START_CAPABILITY
440  #define FUNCTION cascadeMC_PrintResult
441  START_FUNCTION(bool)
442  DEPENDENCY(cascadeMC_Histograms, simpleHistContainter)
443  DEPENDENCY(cascadeMC_EventCount, stringIntMap)
444  #undef FUNCTION
445  #undef CAPABILITY
446  */
447 
448  // Gamma rays --------------------------------------------
449 
450  #define CAPABILITY GA_missingFinalStates
452  #define FUNCTION GA_missingFinalStates
453  START_FUNCTION(std::vector<std::string>)
454  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
455  DEPENDENCY(SimYieldTable, SimYieldTable)
456  DEPENDENCY(DarkMatter_ID, std::string)
457  #undef FUNCTION
458  #undef CAPABILITY
459 
460  #define CAPABILITY GA_AnnYield
462  #define FUNCTION GA_AnnYield_General
464  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
465  DEPENDENCY(SimYieldTable, SimYieldTable)
467  DEPENDENCY(DarkMatter_ID, std::string)
468  #undef FUNCTION
469  #undef CAPABILITY
470 
471  #define CAPABILITY TH_ProcessCatalog
473 
475  #define FUNCTION TH_ProcessCatalog_DS5_MSSM
476  START_FUNCTION(TH_ProcessCatalog)
478  DEPENDENCY(DarkMatter_ID, std::string)
479  DEPENDENCY(decay_rates,DecayTable)
480  BACKEND_REQ(dssigmav, (ds5), double, (int&))
481  BACKEND_REQ(dsIBffdxdy, (ds5), double, (int&, double&, double&))
482  BACKEND_REQ(dsIBhhdxdy, (ds5), double, (int&, double&, double&))
483  BACKEND_REQ(dsIBwhdxdy, (ds5), double, (int&, double&, double&))
484  BACKEND_REQ(dsIBwwdxdy, (ds5), double, (int&, double&, double&))
485  BACKEND_REQ(IBintvars, (ds5), DS_IBINTVARS)
486  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
487  #undef FUNCTION
488 
490  #define FUNCTION TH_ProcessCatalog_DS_MSSM
491  START_FUNCTION(TH_ProcessCatalog)
493  DEPENDENCY(DarkMatter_ID, std::string)
494  DEPENDENCY(decay_rates,DecayTable)
495  BACKEND_REQ(dssigmav0, (ds6), double, (int&,int&))
496  BACKEND_REQ(dssigmav0tot, (ds6), double, ())
497  BACKEND_REQ(dsIBffdxdy, (ds6), double, (int&, double&, double&))
498  BACKEND_REQ(dsIBhhdxdy, (ds6), double, (int&, double&, double&))
499  BACKEND_REQ(dsIBwhdxdy, (ds6), double, (int&, double&, double&))
500  BACKEND_REQ(dsIBwwdxdy, (ds6), double, (int&, double&, double&))
501  BACKEND_REQ(IBintvars, (ds6), DS_IBINTVARS)
502  BACKEND_OPTION((DarkSUSY_MSSM, 6.1.1, 6.2.2), (ds6)) // Only for DarkSUSY6 MSSM
503  FORCE_SAME_BACKEND(ds6)
504  #undef FUNCTION
505 
506  #define FUNCTION TH_ProcessCatalog_ScalarSingletDM_Z2
507  START_FUNCTION(TH_ProcessCatalog)
508  DEPENDENCY(decay_rates, DecayTable)
510  ALLOW_MODELS(ScalarSingletDM_Z2,ScalarSingletDM_Z2_running)
511  #undef FUNCTION
512 
513  #define FUNCTION TH_ProcessCatalog_ScalarSingletDM_Z3
514  START_FUNCTION(TH_ProcessCatalog)
515  DEPENDENCY(decay_rates, DecayTable)
517  BACKEND_REQ(calcSpectrum, (gimmemicro) , double, (int, double*, double*, double*, double*, double*, double*, int*))
518  BACKEND_REQ(vSigmaCh, (gimmemicro), MicrOmegas::aChannel*)
519  FORCE_SAME_BACKEND(gimmemicro)
520  ALLOW_MODELS(ScalarSingletDM_Z3,ScalarSingletDM_Z3_running)
521  #undef FUNCTION
522 
523  #define FUNCTION TH_ProcessCatalog_VectorSingletDM_Z2
524  START_FUNCTION(TH_ProcessCatalog)
526  DEPENDENCY(decay_rates, DecayTable)
528  #undef FUNCTION
529 
530  #define FUNCTION TH_ProcessCatalog_MajoranaSingletDM_Z2
531  START_FUNCTION(TH_ProcessCatalog)
533  DEPENDENCY(decay_rates, DecayTable)
534  ALLOW_MODELS(MajoranaSingletDM_Z2)
535  #undef FUNCTION
536 
537  #define FUNCTION TH_ProcessCatalog_DiracSingletDM_Z2
538  START_FUNCTION(TH_ProcessCatalog)
539  DEPENDENCY(decay_rates, DecayTable)
540  DEPENDENCY(DiracSingletDM_Z2_spectrum, Spectrum)
541  ALLOW_MODELS(DiracSingletDM_Z2)
542  #undef FUNCTION
543  #undef CAPABILITY
544 
545  #define CAPABILITY set_gamLike_GC_halo
547  #define FUNCTION set_gamLike_GC_halo
548  START_FUNCTION(bool)
549  DEPENDENCY(GalacticHalo, GalacticHaloProperties)
550  BACKEND_REQ(set_halo_profile, (gamLike), void, (int, const std::vector<double> &, const std::vector<double> &, double))
551  #undef FUNCTION
552  #undef CAPABILITY
553 
554  #define CAPABILITY lnL_FermiLATdwarfs
556  #define FUNCTION lnL_FermiLATdwarfs_gamLike
557  START_FUNCTION(double)
558  DEPENDENCY(GA_AnnYield, daFunk::Funk)
559  DEPENDENCY(RD_fraction, double)
560  BACKEND_REQ(lnL, (gamLike), double, (int, const std::vector<double> &, const std::vector<double> &))
561  #undef FUNCTION
562  #undef CAPABILITY
563 
564  #define CAPABILITY lnL_FermiGC
566  #define FUNCTION lnL_FermiGC_gamLike
567  START_FUNCTION(double)
568  DEPENDENCY(GA_AnnYield, daFunk::Funk)
569  DEPENDENCY(RD_fraction, double)
571  BACKEND_REQ(lnL, (gamLike), double, (int, const std::vector<double> &, const std::vector<double> &))
572  #undef FUNCTION
573  #undef CAPABILITY
574 
575  #define CAPABILITY lnL_CTAGC
577  #define FUNCTION lnL_CTAGC_gamLike
578  START_FUNCTION(double)
579  DEPENDENCY(GA_AnnYield, daFunk::Funk)
580  DEPENDENCY(RD_fraction, double)
581  //DEPENDENCY(set_gamLike_GC_halo, bool)
582  BACKEND_REQ(lnL, (gamLike), double, (int, const std::vector<double> &, const std::vector<double> &))
583  #undef FUNCTION
584  #undef CAPABILITY
585 
586  #define CAPABILITY lnL_HESSGC
588  #define FUNCTION lnL_HESSGC_gamLike
589  START_FUNCTION(double)
590  DEPENDENCY(GA_AnnYield, daFunk::Funk)
591  DEPENDENCY(RD_fraction, double)
593  BACKEND_REQ(lnL, (gamLike), double, (int, const std::vector<double> &, const std::vector<double> &))
594  #undef FUNCTION
595  #undef CAPABILITY
596 
597  #define CAPABILITY dump_GammaSpectrum
599  #define FUNCTION dump_GammaSpectrum
600  START_FUNCTION(double)
601  DEPENDENCY(GA_AnnYield, daFunk::Funk)
602  #undef FUNCTION
603  #undef CAPABILITY
604 
605  #define CAPABILITY lnL_oh2
607  #define FUNCTION lnL_oh2_Simple
608  START_FUNCTION(double)
609  DEPENDENCY(RD_oh2, double)
610  #undef FUNCTION
611  #define FUNCTION lnL_oh2_upperlimit
612  START_FUNCTION(double)
613  DEPENDENCY(RD_oh2, double)
614  #undef FUNCTION
615  #undef CAPABILITY
616 
617  // Local DM density likelihood
618 
619  #define CAPABILITY lnL_rho0
621  #define FUNCTION lnL_rho0_lognormal
622  START_FUNCTION(double)
623  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
624  #undef FUNCTION
625  #undef CAPABILITY
626 
627  #define CAPABILITY lnL_vrot
629  #define FUNCTION lnL_vrot_gaussian
630  START_FUNCTION(double)
631  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
632  #undef FUNCTION
633  #undef CAPABILITY
634 
635  #define CAPABILITY lnL_v0
637  #define FUNCTION lnL_v0_gaussian
638  START_FUNCTION(double)
639  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
640  #undef FUNCTION
641  #undef CAPABILITY
642 
643  #define CAPABILITY lnL_vesc
645  #define FUNCTION lnL_vesc_gaussian
646  START_FUNCTION(double)
647  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
648  #undef FUNCTION
649  #undef CAPABILITY
650 
651  // Simple WIMP property extractors =======================================
652 
653  // Retrieve the DM mass in GeV for generic models
654  QUICK_FUNCTION(DarkBit, mwimp, NEW_CAPABILITY, mwimp_generic, double, (),
655  (TH_ProcessCatalog, TH_ProcessCatalog), (DarkMatter_ID, std::string))
656 
657  // Retrieve the total thermally-averaged annihilation cross-section for indirect detection (cm^3 / s)
658  #define CAPABILITY sigmav
660 
661  #define FUNCTION sigmav_late_universe
662  START_FUNCTION(double)
663  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
664  DEPENDENCY(DarkMatter_ID, std::string)
665  #undef FUNCTION
666 
667  #define FUNCTION sigmav_late_universe_MicrOmegas
668  START_FUNCTION(double)
669  BACKEND_REQ(calcSpectrum, (gimmemicro) , double, (int, double*, double*, double*, double*, double*, double*, int*))
670  BACKEND_OPTION((MicrOmegas_MSSM),(gimmemicro))
671  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z2),(gimmemicro))
672  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z3),(gimmemicro))
673  BACKEND_OPTION((MicrOmegas_VectorSingletDM_Z2),(gimmemicro))
674  FORCE_SAME_BACKEND(gimmemicro)
675  #undef FUNCTION
676 
677  #undef CAPABILITY
678 
679  // DIRECT DETECTION ==================================================
680 
681  // Determine the DM-nucleon couplings
682  #define CAPABILITY DD_couplings
684 
685  #define FUNCTION DD_couplings_DarkSUSY_DS5
686  START_FUNCTION(DM_nucleon_couplings)
687  BACKEND_REQ(get_DD_couplings, (ds5), std::vector<double>, ())
688  BACKEND_REQ(mspctm, (ds5), DS5_MSPCTM)
689  BACKEND_REQ(ddcom, (ds5), DS5_DDCOM)
690  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
691  ALLOW_JOINT_MODEL(nuclear_params_fnq,MSSM63atQ)
692  #undef FUNCTION
693 
694  #define FUNCTION DD_couplings_DarkSUSY_MSSM
695  START_FUNCTION(DM_nucleon_couplings)
696  BACKEND_REQ(get_DD_couplings, (ds6), std::vector<double>, ())
697  BACKEND_REQ(ddcomlegacy, (ds6), DS_DDCOMLEGACY)
698  BACKEND_REQ(ddmssmcom, (ds6), DS_DDMSSMCOM)
699  BACKEND_OPTION((DarkSUSY_MSSM, 6.1.1, 6.2.2), (ds6)) // Only for DarkSUSY6 MSSM
700  FORCE_SAME_BACKEND(ds6)
701  ALLOW_JOINT_MODEL(nuclear_params_fnq,MSSM63atQ)
702  #undef FUNCTION
703 
704  #define FUNCTION DD_couplings_MicrOmegas
705  START_FUNCTION(DM_nucleon_couplings)
706  BACKEND_REQ(nucleonAmplitudes, (gimmemicro), int, (double(*)(double,double,double,double), double*, double*, double*, double*))
707  BACKEND_REQ(FeScLoop, (gimmemicro), double, (double, double, double, double))
708  BACKEND_REQ(MOcommon, (gimmemicro), MicrOmegas::MOcommonSTR)
709  ALLOW_MODEL_DEPENDENCE(nuclear_params_fnq, MSSM63atQ,
710  ScalarSingletDM_Z2, ScalarSingletDM_Z2_running,
711  ScalarSingletDM_Z3, ScalarSingletDM_Z3_running,
713  MODEL_GROUP(group1, (nuclear_params_fnq))
714  MODEL_GROUP(group2, (MSSM63atQ,
715  ScalarSingletDM_Z2, ScalarSingletDM_Z2_running,
716  ScalarSingletDM_Z3, ScalarSingletDM_Z3_running,
718  ALLOW_MODEL_COMBINATION(group1, group2)
719  BACKEND_OPTION((MicrOmegas_MSSM),(gimmemicro))
720  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z2),(gimmemicro))
721  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z3),(gimmemicro))
722  BACKEND_OPTION((MicrOmegas_VectorSingletDM_Z2),(gimmemicro))
723  FORCE_SAME_BACKEND(gimmemicro)
724  #undef FUNCTION
725 
726  #define FUNCTION DD_couplings_ScalarSingletDM_Z2
727  START_FUNCTION(DM_nucleon_couplings)
729  ALLOW_MODEL_DEPENDENCE(nuclear_params_fnq, ScalarSingletDM_Z2, ScalarSingletDM_Z2_running)
730  MODEL_GROUP(group1, (nuclear_params_fnq))
731  MODEL_GROUP(group2, (ScalarSingletDM_Z2, ScalarSingletDM_Z2_running))
732  ALLOW_MODEL_COMBINATION(group1, group2)
733  #undef FUNCTION
734 
735  #define FUNCTION DD_couplings_ScalarSingletDM_Z3
736  START_FUNCTION(DM_nucleon_couplings)
738  ALLOW_MODEL_DEPENDENCE(nuclear_params_fnq, ScalarSingletDM_Z3, ScalarSingletDM_Z3_running)
739  MODEL_GROUP(group1, (nuclear_params_fnq))
740  MODEL_GROUP(group2, (ScalarSingletDM_Z3, ScalarSingletDM_Z3_running))
741  ALLOW_MODEL_COMBINATION(group1, group2)
742  #undef FUNCTION
743 
744  #define FUNCTION DD_couplings_VectorSingletDM_Z2
745  START_FUNCTION(DM_nucleon_couplings)
747  ALLOW_JOINT_MODEL(nuclear_params_fnq, VectorSingletDM_Z2)
748  #undef FUNCTION
749 
750  #undef CAPABILITY
751 
752  #define CAPABILITY DD_couplings_fermionic_HP
754 
755  #define FUNCTION DD_couplings_MajoranaSingletDM_Z2
756  START_FUNCTION(DM_nucleon_couplings_fermionic_HP)
758  ALLOW_JOINT_MODEL(nuclear_params_fnq, MajoranaSingletDM_Z2)
759  #undef FUNCTION
760 
761  #define FUNCTION DD_couplings_DiracSingletDM_Z2
762  START_FUNCTION(DM_nucleon_couplings_fermionic_HP)
763  DEPENDENCY(DiracSingletDM_Z2_spectrum, Spectrum)
764  ALLOW_JOINT_MODEL(nuclear_params_fnq, DiracSingletDM_Z2)
765  #undef FUNCTION
766 
767  #undef CAPABILITY
768 
769  // Simple calculators of the spin-(in)dependent WIMP-proton and WIMP-neutron cross-sections
770  QUICK_FUNCTION(DarkBit, sigma_SI_p, NEW_CAPABILITY, sigma_SI_p_simple, double, (), (DD_couplings, DM_nucleon_couplings), (mwimp, double))
771  QUICK_FUNCTION(DarkBit, sigma_SI_n, NEW_CAPABILITY, sigma_SI_n_simple, double, (), (DD_couplings, DM_nucleon_couplings), (mwimp, double))
772  QUICK_FUNCTION(DarkBit, sigma_SD_p, NEW_CAPABILITY, sigma_SD_p_simple, double, (), (DD_couplings, DM_nucleon_couplings), (mwimp, double))
773  QUICK_FUNCTION(DarkBit, sigma_SD_n, NEW_CAPABILITY, sigma_SD_n_simple, double, (), (DD_couplings, DM_nucleon_couplings), (mwimp, double))
774 
775  // Generalized v^2n, q^2n DM-nucleon cross sections
776  #define CAPABILITY sigma_SI_p
777  #define FUNCTION sigma_SI_vnqn
779  DEPENDENCY(mwimp,double)
780  DEPENDENCY(DD_couplings_fermionic_HP,DM_nucleon_couplings_fermionic_HP)
781  ALLOW_MODELS(DiracSingletDM_Z2, MajoranaSingletDM_Z2)
782  #undef FUNCTION
783  #undef CAPABILITY
784 
785  #define CAPABILITY sigma_SD_p
786  //Spin-dependent general v^2n q^2n cross section
787  #define FUNCTION sigma_SD_vnqn
789  DEPENDENCY(mwimp,double)
790  DEPENDENCY(DD_couplings_fermionic_HP,DM_nucleon_couplings_fermionic_HP)
791  ALLOW_MODELS(DiracSingletDM_Z2, MajoranaSingletDM_Z2)
792  #undef FUNCTION
793  #undef CAPABILITY
794 
795  // Likelihoods for nuclear parameters:
796  #define CAPABILITY lnL_SI_nuclear_parameters
798  #define FUNCTION lnL_sigmas_sigmal
799  START_FUNCTION(double)
800  ALLOW_MODEL(nuclear_params_sigmas_sigmal)
801  #undef FUNCTION
802  #undef CAPABILITY
803 
804  #define CAPABILITY lnL_SD_nuclear_parameters
806  #define FUNCTION lnL_deltaq
807  START_FUNCTION(double)
808  ALLOW_MODELS(nuclear_params_fnq)
809  #undef FUNCTION
810  #undef CAPABILITY
811 
812  // DD rate and likelihood calculations. Don't try this one at home kids.
813  #define DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,TYPE,NAME) \
814  LONG_START_CAPABILITY(MODULE, CAT_3(EXPERIMENT,_,NAME)) \
815  LONG_DECLARE_FUNCTION(MODULE, CAT_3(EXPERIMENT,_,NAME), \
816  CAT_3(EXPERIMENT,_Get,NAME), TYPE, 0) \
817  LONG_DEPENDENCY(MODULE, CAT_3(EXPERIMENT,_Get,NAME), \
818  CAT(EXPERIMENT,_Calculate), bool) \
819  LONG_BACKEND_REQ(MODULE, CAT_3(EXPERIMENT,_,NAME), \
820  CAT_3(EXPERIMENT,_Get,NAME), DD_Experiment, (needs_DDCalc), int, (const str&)) \
821  LONG_BACKEND_REQ(MODULE, CAT_3(EXPERIMENT,_,NAME), \
822  CAT_3(EXPERIMENT,_Get,NAME), CAT(DD_,NAME), (needs_DDCalc), TYPE, (const int&))
823 
824  #define DD_DECLARE_BIN_FUNCTION(EXPERIMENT,TYPE,NAME) \
825  LONG_START_CAPABILITY(MODULE, CAT_3(EXPERIMENT,_,NAME)) \
826  LONG_DECLARE_FUNCTION(MODULE, CAT_3(EXPERIMENT,_,NAME), \
827  CAT_3(EXPERIMENT,_Get,NAME), std::vector<double>, 0) \
828  LONG_DEPENDENCY(MODULE, CAT_3(EXPERIMENT,_Get,NAME), \
829  CAT(EXPERIMENT,_Calculate), bool) \
830  LONG_BACKEND_REQ(MODULE, CAT_3(EXPERIMENT,_,NAME), \
831  CAT_3(EXPERIMENT,_Get,NAME), DD_Experiment, (needs_DDCalc), int, (const str&)) \
832  LONG_BACKEND_REQ(MODULE, CAT_3(EXPERIMENT,_,NAME), \
833  CAT_3(EXPERIMENT,_Get,NAME), DD_Bins, (needs_DDCalc), int, (const int&)) \
834  LONG_BACKEND_REQ(MODULE, CAT_3(EXPERIMENT,_,NAME), \
835  CAT_3(EXPERIMENT,_Get,NAME), CAT(DD_,NAME), (needs_DDCalc), TYPE, (const int&, \
836  const int&))
837 
838  #define DD_DECLARE_EXPERIMENT(EXPERIMENT) \
839  LONG_START_CAPABILITY(MODULE, CAT(EXPERIMENT,_Calculate)) \
840  LONG_DECLARE_FUNCTION(MODULE, CAT(EXPERIMENT,_Calculate), \
841  CAT(EXPERIMENT,_Calc), bool, 0) \
842  LONG_BACKEND_REQ(MODULE, CAT(EXPERIMENT,_Calculate), \
843  CAT(EXPERIMENT,_Calc), DD_Experiment, (needs_DDCalc), int, (const str&)) \
844  LONG_BACKEND_REQ(MODULE, CAT(EXPERIMENT,_Calculate), \
845  CAT(EXPERIMENT,_Calc), DD_CalcRates, (needs_DDCalc), void, (const int&)) \
846  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,int,Events) \
847  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,double,Background) \
848  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,double,Signal) \
849  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,double,SignalSI) \
850  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,double,SignalSD) \
851  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,int,Bins) \
852  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,double,LogLikelihood) \
853  DD_DECLARE_BIN_FUNCTION(EXPERIMENT,int,BinEvents) \
854  DD_DECLARE_BIN_FUNCTION(EXPERIMENT,double,BinBackground) \
855  DD_DECLARE_BIN_FUNCTION(EXPERIMENT,double,BinSignal) \
856 
857  #define SET_BACKEND_OPTION(EXPERIMENT, VERSIONS) \
858  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_Calculate), CAT(EXPERIMENT,_Calc), \
859  VERSIONS, (needs_DDCalc)) \
860  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_Events), CAT(EXPERIMENT,_GetEvents), \
861  VERSIONS, (needs_DDCalc)) \
862  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_Background), \
863  CAT(EXPERIMENT,_GetBackground), VERSIONS, (needs_DDCalc)) \
864  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_Signal), CAT(EXPERIMENT,_GetSignal), \
865  VERSIONS, (needs_DDCalc)) \
866  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_SignalSI), \
867  CAT(EXPERIMENT,_GetSignalSI), VERSIONS, (needs_DDCalc)) \
868  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_SignalSD), \
869  CAT(EXPERIMENT,_GetSignalSD), VERSIONS, (needs_DDCalc)) \
870  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_Bins), CAT(EXPERIMENT,_GetBins), \
871  VERSIONS, (needs_DDCalc)) \
872  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_LogLikelihood), \
873  CAT(EXPERIMENT,_GetLogLikelihood), VERSIONS, (needs_DDCalc)) \
874  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_BinEvents), \
875  CAT(EXPERIMENT,_GetBinEvents), VERSIONS, (needs_DDCalc)) \
876  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_BinBackground), \
877  CAT(EXPERIMENT,_GetBinBackground), VERSIONS, (needs_DDCalc)) \
878  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_BinSignal), \
879  CAT(EXPERIMENT,_GetBinSignal), VERSIONS, (needs_DDCalc)) \
880 
881 
882  // Declare different DD experiments that exist in DDCalc.
883  DD_DECLARE_EXPERIMENT(XENON100_2012) // Aprile et al., PRL 109, 181301 (2013) [arxiv:1207.5988]
884  DD_DECLARE_EXPERIMENT(XENON1T_2017) // Aprile et al., PRL 119, 181301 (2017) [arxiv:1705.06655]
885  DD_DECLARE_EXPERIMENT(XENON1T_2018) // Aprile et al., May 28 talk at Gran Sasso.
886  DD_DECLARE_EXPERIMENT(DARWIN) // M. Schumann et al., [arXiv:1506.08309]
887  DD_DECLARE_EXPERIMENT(LUX_2013) // Akerib et al., PRL 112, 091303 (2014) [arxiv:1310.8214]
888  DD_DECLARE_EXPERIMENT(LUX_2015) // D.S. Akerib et al., PRL 116, 161301 (2016) [arXiv:1512.03506]
889  DD_DECLARE_EXPERIMENT(LUX_2016) // D.S. Akerib et al., PRL 118, 021303 (2017) [arxiv:1608.07648]
890  DD_DECLARE_EXPERIMENT(LZ) // LZ TDR, [arXiv:1509.02910]
891  DD_DECLARE_EXPERIMENT(PandaX_2016) // A. Tan et al., PRL 117, 121303 (2016) [arxiv:1607.07400]
892  DD_DECLARE_EXPERIMENT(PandaX_2017) // X. Cui et al., PRL 119, 181302 (2017) [arxiv:1708.06917]
893  DD_DECLARE_EXPERIMENT(DarkSide_50) // P. Agnes et al., [arXiv:1802.07198]
894  DD_DECLARE_EXPERIMENT(DarkSide_50_S2) // P. Agnes et al., [arXiv:1802.06994]
895  DD_DECLARE_EXPERIMENT(CRESST_II) // G. Angloher et al., [arXiv:1509.01515]
896  DD_DECLARE_EXPERIMENT(CRESST_III) // A. H. Abdelhameed et al., [arXiv:1904.00498]
897  DD_DECLARE_EXPERIMENT(SuperCDMS_2014) // Agnese et al., PRL 112, 241302 (2014) [arxiv:1402.7137]
898  DD_DECLARE_EXPERIMENT(CDMSlite) // Agnese et al., PRL 116, 071301 (2015) [arxiv:1509.02448]
899  DD_DECLARE_EXPERIMENT(SIMPLE_2014) // Felizardo et al., PRD 89, 072013 (2014) [arxiv:1404.4309]
900  DD_DECLARE_EXPERIMENT(PICO_2L) // C. Amole et al., PRD 93, 061101 (2016) [arXiv:1601.03729]
901  DD_DECLARE_EXPERIMENT(PICO_60_F) // C. Amole et al., PRD 93, 052014 (2016) [arXiv:1510.07754]
902  DD_DECLARE_EXPERIMENT(PICO_60_I) // C. Amole et al., PRD 93, 052014 (2016) [arXiv:1510.07754]
903  DD_DECLARE_EXPERIMENT(PICO_60) // C. Amole et al., PRD 93, 052014 (2016) [arXiv:1510.07754]
904  DD_DECLARE_EXPERIMENT(PICO_60_2017) // C. Amole et al., arXiv:1702.07666
905  DD_DECLARE_EXPERIMENT(PICO_60_2019) // C. Amole et al., arXiv:1902.04031
906  DD_DECLARE_EXPERIMENT(PICO_500) // S. Fallows, talk at TAUP 2017
907 
908  // Specify which versions of DDCalc support which experiments.
909  // If an experiment does not have any entry here, any version (of any backend) is allowed.
910 
911  // Introduced in DDCalc 1.0.0 but later deleted
912  SET_BACKEND_OPTION(PICO_60_F, (DDCalc, 1.0.0, 1.1.0, 1.2.0))
913  SET_BACKEND_OPTION(PICO_60_I, (DDCalc, 1.0.0, 1.1.0, 1.2.0))
914  // Introduced in DDCalc 1.1.0
915  SET_BACKEND_OPTION(PICO_60_2017, (DDCalc, 1.1.0, 1.2.0, 2.0.0, 2.1.0, 2.2.0))
916  SET_BACKEND_OPTION(XENON1T_2017, (DDCalc, 1.1.0, 1.2.0, 2.0.0, 2.1.0, 2.2.0))
917  // Introduced in DDCalc 1.2.0
918  SET_BACKEND_OPTION(PandaX_2017, (DDCalc, 1.2.0, 2.0.0, 2.1.0, 2.2.0))
919  // Introduced in DDCalc 2.0.0
920  SET_BACKEND_OPTION(XENON1T_2018, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
921  SET_BACKEND_OPTION(DARWIN, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
922  SET_BACKEND_OPTION(LZ, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
923  SET_BACKEND_OPTION(DarkSide_50, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
924  SET_BACKEND_OPTION(CRESST_II, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
925  SET_BACKEND_OPTION(CDMSlite, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
926  SET_BACKEND_OPTION(PICO_60, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
927  SET_BACKEND_OPTION(PICO_500, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
928  // Introduced in DDCalc 2.2.0
929  SET_BACKEND_OPTION(CRESST_III, (DDCalc, 2.2.0))
930  SET_BACKEND_OPTION(DarkSide_50_S2, (DDCalc, 2.2.0))
931  SET_BACKEND_OPTION(PICO_60_2019, (DDCalc, 2.2.0))
932 
933 
934  // INDIRECT DETECTION: NEUTRINOS =====================================
935 
936  // Solar capture ------------------------
937 
939  #define CAPABILITY capture_rate_Sun
941  #define FUNCTION capture_rate_Sun_const_xsec_DS5 // DS 5
942  START_FUNCTION(double)
943  BACKEND_REQ(cap_Sun_v0q0_isoscalar, (ds5), double, (const double&, const double&, const double&))
944  DEPENDENCY(mwimp, double)
945  DEPENDENCY(sigma_SI_p, double)
946  DEPENDENCY(sigma_SD_p, double)
947  DEPENDENCY(DarkSUSY5_PointInit_LocalHalo, bool)
948  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5))
949  #undef FUNCTION
950 
951  #define FUNCTION capture_rate_Sun_const_xsec // DS 6
952  START_FUNCTION(double)
953  BACKEND_REQ(cap_Sun_v0q0_isoscalar, (ds6), double, (const double&, const double&, const double&, const double&))
954  DEPENDENCY(mwimp, double)
955  DEPENDENCY(sigma_SI_p, double)
956  DEPENDENCY(sigma_SD_p, double)
957  DEPENDENCY(RD_fraction, double)
958  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
959  DEPENDENCY(DarkSUSY_PointInit_LocalHalo, bool)
960  BACKEND_OPTION((DarkSUSY_MSSM, 6.1.1, 6.2.2), (ds6))
961  BACKEND_OPTION((DarkSUSY_generic_wimp, 6.1.1, 6.2.2), (ds6))
962  FORCE_SAME_BACKEND(ds6)
963  #undef FUNCTION
964 
966  #define FUNCTION capture_rate_Sun_const_xsec_capgen
967  START_FUNCTION(double)
968  DEPENDENCY(mwimp,double)
969  DEPENDENCY(sigma_SI_p, double)
970  DEPENDENCY(sigma_SD_p, double)
971  BACKEND_REQ(cap_Sun_v0q0_isoscalar,(cg),void,(const double&,const double&,const double&,double&,double&))
972  BACKEND_REQ(cap_sun_saturation,(cg),void,(const double&,double&))
973  BACKEND_OPTION((CaptnGeneral),(cg))
975  #undef FUNCTION
976 
978  #define FUNCTION capture_rate_Sun_vnqn
979  START_FUNCTION(double)
980  DEPENDENCY(mwimp,double)
981  DEPENDENCY(sigma_SD_p, map_intpair_dbl)
982  DEPENDENCY(sigma_SI_p, map_intpair_dbl)
983  BACKEND_REQ(cap_Sun_vnqn_isoscalar,(cg),void,(const double&,const double&,const int&,const int&,const int&,double&))
984  BACKEND_REQ(cap_sun_saturation,(cg),void,(const double&,double&))
985  BACKEND_OPTION((CaptnGeneral),(cg))
987  #undef FUNCTION
988  #undef CAPABILITY
989 
991  #define CAPABILITY equilibration_time_Sun
993  #define FUNCTION equilibration_time_Sun
994  START_FUNCTION(double)
995  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
996  DEPENDENCY(mwimp, double)
997  DEPENDENCY(DarkMatter_ID, std::string)
998  DEPENDENCY(capture_rate_Sun, double)
999  #undef FUNCTION
1000  #undef CAPABILITY
1001 
1003  #define CAPABILITY annihilation_rate_Sun
1005  #define FUNCTION annihilation_rate_Sun
1006  START_FUNCTION(double)
1008  DEPENDENCY(capture_rate_Sun, double)
1009  #undef FUNCTION
1010  #undef CAPABILITY
1011 
1013  #define CAPABILITY nuyield_ptr
1015  #define FUNCTION nuyield_from_DS
1016  START_FUNCTION(nuyield_info)
1017  ALLOW_MODELS(MSSM63atQ, ScalarSingletDM_Z2_running, ScalarSingletDM_Z3_running,
1018  MajoranaSingletDM_Z2, DiracSingletDM_Z2, VectorSingletDM_Z2)
1019  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
1020  DEPENDENCY(mwimp, double)
1021  DEPENDENCY(sigmav, double)
1022  DEPENDENCY(DarkMatter_ID, std::string)
1023  BACKEND_REQ(DS_nuyield_setup, (ds), void, (const double(&)[29],
1024  const double(&)[29][3], const double(&)[15], const double(&)[3], const double&,
1025  const double&))
1026  BACKEND_REQ(nuyield, (ds), double, (const double&, const int&, void*&))
1027  BACKEND_REQ(get_DS_neutral_h_decay_channels, (ds), std::vector< std::vector<str> >, ())
1028  BACKEND_REQ(get_DS_charged_h_decay_channels, (ds), std::vector< std::vector<str> >, ())
1029  FORCE_SAME_BACKEND(ds)
1030  #undef FUNCTION
1031  #undef CAPABILITY
1032 
1033 
1034  // Neutrino telescope likelihoods ------------------------
1035 
1036  #define CAPABILITY IC22_data
1038  #define FUNCTION IC22_full
1039  START_FUNCTION(nudata)
1040  DEPENDENCY(mwimp, double)
1042  DEPENDENCY(nuyield_ptr, nuyield_info)
1043  BACKEND_REQ(nubounds, (), void, (const char&, const double&, const double&,
1044  nuyield_function_pointer, double&, double&, int&,
1045  double&, double&, const int&, const double&,
1046  const int&, const bool&, const double&,
1047  const double&, void*&, const bool&))
1048  #undef FUNCTION
1049  #undef CAPABILITY
1050 
1051  #define CAPABILITY IC22_signal
1053  #define FUNCTION IC22_signal
1054  START_FUNCTION(double)
1055  DEPENDENCY(IC22_data, nudata)
1056  #undef FUNCTION
1057  #undef CAPABILITY
1058 
1059  #define CAPABILITY IC22_bg
1061  #define FUNCTION IC22_bg
1062  START_FUNCTION(double)
1063  DEPENDENCY(IC22_data, nudata)
1064  #undef FUNCTION
1065  #undef CAPABILITY
1066 
1067  #define CAPABILITY IC22_loglike
1069  #define FUNCTION IC22_loglike
1070  START_FUNCTION(double)
1071  DEPENDENCY(IC22_data, nudata)
1072  #undef FUNCTION
1073  #undef CAPABILITY
1074 
1075  #define CAPABILITY IC22_bgloglike
1077  #define FUNCTION IC22_bgloglike
1078  START_FUNCTION(double)
1079  DEPENDENCY(IC22_data, nudata)
1080  #undef FUNCTION
1081  #undef CAPABILITY
1082 
1083  #define CAPABILITY IC22_pvalue
1085  #define FUNCTION IC22_pvalue
1086  START_FUNCTION(double)
1087  DEPENDENCY(IC22_data, nudata)
1088  #undef FUNCTION
1089  #undef CAPABILITY
1090 
1091  #define CAPABILITY IC22_nobs
1093  #define FUNCTION IC22_nobs
1094  START_FUNCTION(int)
1095  DEPENDENCY(IC22_data, nudata)
1096  #undef FUNCTION
1097  #undef CAPABILITY
1098 
1099  #define CAPABILITY IC79WH_data
1101  #define FUNCTION IC79WH_full
1102  START_FUNCTION(nudata)
1103  DEPENDENCY(mwimp, double)
1105  DEPENDENCY(nuyield_ptr, nuyield_info)
1106  BACKEND_REQ(nubounds, (), void, (const char&, const double&, const double&,
1107  nuyield_function_pointer, double&, double&, int&,
1108  double&, double&, const int&, const double&,
1109  const int&, const bool&, const double&,
1110  const double&, void*&, const bool&))
1111  #undef FUNCTION
1112  #undef CAPABILITY
1113 
1114  #define CAPABILITY IC79WH_signal
1116  #define FUNCTION IC79WH_signal
1117  START_FUNCTION(double)
1118  DEPENDENCY(IC79WH_data, nudata)
1119  #undef FUNCTION
1120  #undef CAPABILITY
1121 
1122  #define CAPABILITY IC79WH_bg
1124  #define FUNCTION IC79WH_bg
1125  START_FUNCTION(double)
1126  DEPENDENCY(IC79WH_data, nudata)
1127  #undef FUNCTION
1128  #undef CAPABILITY
1129 
1130  #define CAPABILITY IC79WH_loglike
1132  #define FUNCTION IC79WH_loglike
1133  START_FUNCTION(double)
1134  DEPENDENCY(IC79WH_data, nudata)
1135  #undef FUNCTION
1136  #undef CAPABILITY
1137 
1138  #define CAPABILITY IC79WH_bgloglike
1140  #define FUNCTION IC79WH_bgloglike
1141  START_FUNCTION(double)
1142  DEPENDENCY(IC79WH_data, nudata)
1143  #undef FUNCTION
1144  #undef CAPABILITY
1145 
1146  #define CAPABILITY IC79WH_pvalue
1148  #define FUNCTION IC79WH_pvalue
1149  START_FUNCTION(double)
1150  DEPENDENCY(IC79WH_data, nudata)
1151  #undef FUNCTION
1152  #undef CAPABILITY
1153 
1154  #define CAPABILITY IC79WH_nobs
1156  #define FUNCTION IC79WH_nobs
1157  START_FUNCTION(int)
1158  DEPENDENCY(IC79WH_data, nudata)
1159  #undef FUNCTION
1160  #undef CAPABILITY
1161 
1162  #define CAPABILITY IC79WL_data
1164  #define FUNCTION IC79WL_full
1165  START_FUNCTION(nudata)
1166  DEPENDENCY(mwimp, double)
1168  DEPENDENCY(nuyield_ptr, nuyield_info)
1169  BACKEND_REQ(nubounds, (), void, (const char&, const double&, const double&,
1170  nuyield_function_pointer, double&, double&, int&,
1171  double&, double&, const int&, const double&,
1172  const int&, const bool&, const double&,
1173  const double&, void*&, const bool&))
1174  #undef FUNCTION
1175  #undef CAPABILITY
1176 
1177  #define CAPABILITY IC79WL_signal
1179  #define FUNCTION IC79WL_signal
1180  START_FUNCTION(double)
1181  DEPENDENCY(IC79WL_data, nudata)
1182  #undef FUNCTION
1183  #undef CAPABILITY
1184 
1185  #define CAPABILITY IC79WL_bg
1187  #define FUNCTION IC79WL_bg
1188  START_FUNCTION(double)
1189  DEPENDENCY(IC79WL_data, nudata)
1190  #undef FUNCTION
1191  #undef CAPABILITY
1192 
1193  #define CAPABILITY IC79WL_loglike
1195  #define FUNCTION IC79WL_loglike
1196  START_FUNCTION(double)
1197  DEPENDENCY(IC79WL_data, nudata)
1198  #undef FUNCTION
1199  #undef CAPABILITY
1200 
1201  #define CAPABILITY IC79WL_bgloglike
1203  #define FUNCTION IC79WL_bgloglike
1204  START_FUNCTION(double)
1205  DEPENDENCY(IC79WL_data, nudata)
1206  #undef FUNCTION
1207  #undef CAPABILITY
1208 
1209  #define CAPABILITY IC79WL_pvalue
1211  #define FUNCTION IC79WL_pvalue
1212  START_FUNCTION(double)
1213  DEPENDENCY(IC79WL_data, nudata)
1214  #undef FUNCTION
1215  #undef CAPABILITY
1216 
1217  #define CAPABILITY IC79WL_nobs
1219  #define FUNCTION IC79WL_nobs
1220  START_FUNCTION(int)
1221  DEPENDENCY(IC79WL_data, nudata)
1222  #undef FUNCTION
1223  #undef CAPABILITY
1224 
1225  #define CAPABILITY IC79SL_data
1227  #define FUNCTION IC79SL_full
1228  START_FUNCTION(nudata)
1229  DEPENDENCY(mwimp, double)
1231  DEPENDENCY(nuyield_ptr, nuyield_info)
1232  BACKEND_REQ(nubounds, (), void, (const char&, const double&, const double&,
1233  nuyield_function_pointer, double&, double&, int&,
1234  double&, double&, const int&, const double&,
1235  const int&, const bool&, const double&,
1236  const double&, void*&, const bool&))
1237  #undef FUNCTION
1238  #undef CAPABILITY
1239 
1240  #define CAPABILITY IC79SL_signal
1242  #define FUNCTION IC79SL_signal
1243  START_FUNCTION(double)
1244  DEPENDENCY(IC79SL_data, nudata)
1245  #undef FUNCTION
1246  #undef CAPABILITY
1247 
1248  #define CAPABILITY IC79SL_bg
1250  #define FUNCTION IC79SL_bg
1251  START_FUNCTION(double)
1252  DEPENDENCY(IC79SL_data, nudata)
1253  #undef FUNCTION
1254  #undef CAPABILITY
1255 
1256  #define CAPABILITY IC79SL_loglike
1258  #define FUNCTION IC79SL_loglike
1259  START_FUNCTION(double)
1260  DEPENDENCY(IC79SL_data, nudata)
1261  #undef FUNCTION
1262  #undef CAPABILITY
1263 
1264  #define CAPABILITY IC79SL_bgloglike
1266  #define FUNCTION IC79SL_bgloglike
1267  START_FUNCTION(double)
1268  DEPENDENCY(IC79SL_data, nudata)
1269  #undef FUNCTION
1270  #undef CAPABILITY
1271 
1272  #define CAPABILITY IC79SL_pvalue
1274  #define FUNCTION IC79SL_pvalue
1275  START_FUNCTION(double)
1276  DEPENDENCY(IC79SL_data, nudata)
1277  #undef FUNCTION
1278  #undef CAPABILITY
1279 
1280  #define CAPABILITY IC79SL_nobs
1282  #define FUNCTION IC79SL_nobs
1283  START_FUNCTION(int)
1284  DEPENDENCY(IC79SL_data, nudata)
1285  #undef FUNCTION
1286  #undef CAPABILITY
1287 
1288  #define CAPABILITY IC79_loglike
1290  #define FUNCTION IC79_loglike
1291  START_FUNCTION(double)
1292  DEPENDENCY(IC79WH_loglike, double)
1293  DEPENDENCY(IC79WL_loglike, double)
1294  DEPENDENCY(IC79SL_loglike, double)
1295  DEPENDENCY(IC79WH_bgloglike, double)
1296  DEPENDENCY(IC79WL_bgloglike, double)
1297  DEPENDENCY(IC79SL_bgloglike, double)
1298  #undef FUNCTION
1299  #undef CAPABILITY
1300 
1301  #define CAPABILITY IceCube_likelihood
1303  #define FUNCTION IC_loglike
1304  START_FUNCTION(double)
1305  DEPENDENCY(IC22_loglike, double)
1306  DEPENDENCY(IC79WH_loglike, double)
1307  DEPENDENCY(IC79WL_loglike, double)
1308  DEPENDENCY(IC79SL_loglike, double)
1309  DEPENDENCY(IC22_bgloglike, double)
1310  DEPENDENCY(IC79WH_bgloglike, double)
1311  DEPENDENCY(IC79WL_bgloglike, double)
1312  DEPENDENCY(IC79SL_bgloglike, double)
1313  #undef FUNCTION
1314  #undef CAPABILITY
1315 
1316  #define CAPABILITY UnitTest_DarkBit
1318  #define FUNCTION UnitTest_DarkBit
1319  START_FUNCTION(int)
1320  DEPENDENCY(DD_couplings, DM_nucleon_couplings)
1321  DEPENDENCY(RD_oh2, double)
1322  DEPENDENCY(GA_AnnYield, daFunk::Funk)
1323  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
1324  DEPENDENCY(DarkMatter_ID, std::string)
1325  #undef FUNCTION
1326  #undef CAPABILITY
1327 
1328  #define CAPABILITY SimYieldTable
1330  #define FUNCTION SimYieldTable_DarkSUSY
1331  START_FUNCTION(SimYieldTable)
1332  BACKEND_REQ(dsanyield_sim, (), double, (double&,double&,int&,char*,int&,int&,int&))
1333  #undef FUNCTION
1334  #define FUNCTION SimYieldTable_DS5 // DS5 only
1335  START_FUNCTION(SimYieldTable)
1336  BACKEND_REQ(dshayield, (ds5), double, (double&,double&,int&,int&,int&))
1337  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
1338  #undef FUNCTION
1339  #define FUNCTION SimYieldTable_MicrOmegas
1340  START_FUNCTION(SimYieldTable)
1341  BACKEND_REQ(dNdE, (), double, (double,double,int,int))
1342  #undef FUNCTION
1343  #define FUNCTION SimYieldTable_PPPC
1344  START_FUNCTION(SimYieldTable)
1345  #undef FUNCTION
1346  #undef CAPABILITY
1347 
1348  #define CAPABILITY DarkMatter_ID
1350  #define FUNCTION DarkMatter_ID_ScalarSingletDM
1351  START_FUNCTION(std::string)
1352  ALLOW_MODELS(ScalarSingletDM_Z2, ScalarSingletDM_Z2_running, ScalarSingletDM_Z3, ScalarSingletDM_Z3_running)
1353  #undef FUNCTION
1354  #define FUNCTION DarkMatter_ID_VectorSingletDM
1355  START_FUNCTION(std::string)
1357  #undef FUNCTION
1358  #define FUNCTION DarkMatter_ID_MajoranaSingletDM
1359  START_FUNCTION(std::string)
1360  ALLOW_MODELS(MajoranaSingletDM_Z2)
1361  #undef FUNCTION
1362  #define FUNCTION DarkMatter_ID_DiracSingletDM
1363  START_FUNCTION(std::string)
1364  ALLOW_MODELS(DiracSingletDM_Z2)
1365  #undef FUNCTION
1366  #define FUNCTION DarkMatter_ID_MSSM
1367  START_FUNCTION(std::string)
1369  #undef FUNCTION
1370  #undef CAPABILITY
1371 
1372  // --- Functions related to the local and global properties of the DM halo ---
1373 
1374  #define CAPABILITY GalacticHalo
1376  #define FUNCTION GalacticHalo_gNFW
1377  START_FUNCTION(GalacticHaloProperties)
1378  ALLOW_MODEL(Halo_gNFW)
1379  #undef FUNCTION
1380  #define FUNCTION GalacticHalo_Einasto
1381  START_FUNCTION(GalacticHaloProperties)
1382  ALLOW_MODEL(Halo_Einasto)
1383  #undef FUNCTION
1384  #undef CAPABILITY
1385 
1386  #define CAPABILITY LocalHalo
1388  #define FUNCTION ExtractLocalMaxwellianHalo
1389  START_FUNCTION(LocalMaxwellianHalo)
1390  ALLOW_MODELS(Halo_gNFW, Halo_Einasto)
1391  #undef FUNCTION
1392  #undef CAPABILITY
1393 
1394  // Axion likelihoods and functions -----------------------
1395 
1396  #define CAPABILITY QCDAxion_ZeroTemperatureMass
1398  #define FUNCTION QCDAxion_ZeroTemperatureMass_Nuisance_lnL
1399  START_FUNCTION(double)
1400  ALLOW_MODEL(QCDAxion)
1401  #undef FUNCTION
1402  #undef CAPABILITY
1403 
1404  #define CAPABILITY QCDAxion_TemperatureDependence
1406  #define FUNCTION QCDAxion_TemperatureDependence_Nuisance_lnL
1407  START_FUNCTION(double)
1408  ALLOW_MODEL(QCDAxion)
1409  #undef FUNCTION
1410  #undef CAPABILITY
1411 
1412  #define CAPABILITY QCDAxion_AxionPhotonConstant
1414  #define FUNCTION QCDAxion_AxionPhotonConstant_Nuisance_lnL
1415  START_FUNCTION(double)
1416  ALLOW_MODEL(QCDAxion)
1417  #undef FUNCTION
1418  #undef CAPABILITY
1419 
1420  #define CAPABILITY ALPS1_signal_vac
1422  #define FUNCTION calc_ALPS1_signal_vac
1423  START_FUNCTION(double)
1424  ALLOW_MODEL(GeneralALP)
1425  #undef FUNCTION
1426  #undef CAPABILITY
1427 
1428  #define CAPABILITY ALPS1_signal_gas
1430  #define FUNCTION calc_ALPS1_signal_gas
1431  START_FUNCTION(double)
1432  ALLOW_MODEL(GeneralALP)
1433  #undef FUNCTION
1434  #undef CAPABILITY
1435 
1436  #define CAPABILITY lnL_ALPS1
1438  #define FUNCTION calc_lnL_ALPS1
1439  START_FUNCTION(double)
1440  ALLOW_MODEL(GeneralALP)
1441  DEPENDENCY(ALPS1_signal_vac, double)
1442  DEPENDENCY(ALPS1_signal_gas, double)
1443  #undef FUNCTION
1444  #undef CAPABILITY
1445 
1446  #define CAPABILITY CAST2007_signal_vac
1448  #define FUNCTION calc_CAST2007_signal_vac
1449  START_FUNCTION(std::vector<double>)
1450  ALLOW_MODEL(GeneralALP)
1451  #undef FUNCTION
1452  #undef CAPABILITY
1453 
1454  #define CAPABILITY CAST2017_signal_vac
1456  #define FUNCTION calc_CAST2017_signal_vac
1457  START_FUNCTION(std::vector<std::vector<double>>)
1458  ALLOW_MODEL(GeneralALP)
1459  #undef FUNCTION
1460  #undef CAPABILITY
1461 
1462  #define CAPABILITY lnL_CAST2007
1464  #define FUNCTION calc_lnL_CAST2007
1465  START_FUNCTION(double)
1466  ALLOW_MODEL(GeneralALP)
1467  DEPENDENCY(CAST2007_signal_vac, std::vector<double>)
1468  #undef FUNCTION
1469  #undef CAPABILITY
1470 
1471  #define CAPABILITY lnL_CAST2017
1473  #define FUNCTION calc_lnL_CAST2017
1474  START_FUNCTION(double)
1475  ALLOW_MODEL(GeneralALP)
1476  DEPENDENCY(CAST2017_signal_vac, std::vector<std::vector<double>>)
1477  #undef FUNCTION
1478  #undef CAPABILITY
1479 
1480  #define CAPABILITY Haloscope_signal
1482  #define FUNCTION calc_Haloscope_signal
1483  START_FUNCTION(double)
1484  ALLOW_MODEL(GeneralALP)
1485  DEPENDENCY(RD_fraction, double)
1486  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
1487  #undef FUNCTION
1488  #undef CAPABILITY
1489 
1490  #define CAPABILITY lnL_Haloscope_ADMX1
1492  #define FUNCTION calc_lnL_Haloscope_ADMX1
1493  START_FUNCTION(double)
1494  ALLOW_MODEL(GeneralALP)
1495  DEPENDENCY(Haloscope_signal, double)
1496  #undef FUNCTION
1497  #undef CAPABILITY
1498 
1499  #define CAPABILITY lnL_Haloscope_ADMX2
1501  #define FUNCTION calc_lnL_Haloscope_ADMX2
1502  START_FUNCTION(double)
1503  ALLOW_MODEL(GeneralALP)
1504  DEPENDENCY(Haloscope_signal, double)
1505  #undef FUNCTION
1506  #undef CAPABILITY
1507 
1508  #define CAPABILITY lnL_Haloscope_RBF
1510  #define FUNCTION calc_lnL_Haloscope_RBF
1511  START_FUNCTION(double)
1512  ALLOW_MODEL(GeneralALP)
1513  DEPENDENCY(Haloscope_signal, double)
1514  #undef FUNCTION
1515  #undef CAPABILITY
1516 
1517  #define CAPABILITY lnL_Haloscope_UF
1519  #define FUNCTION calc_lnL_Haloscope_UF
1520  START_FUNCTION(double)
1521  ALLOW_MODEL(GeneralALP)
1522  DEPENDENCY(Haloscope_signal, double)
1523  #undef FUNCTION
1524  #undef CAPABILITY
1525 
1526  #define CAPABILITY RParameter
1528  #define FUNCTION calc_RParameter
1529  START_FUNCTION(double)
1530  ALLOW_MODEL(GeneralALP)
1531  #undef FUNCTION
1532  #undef CAPABILITY
1533 
1534  #define CAPABILITY lnL_RParameter
1536  #define FUNCTION calc_lnL_RParameter
1537  START_FUNCTION(double)
1538  ALLOW_MODEL(GeneralALP)
1539  DEPENDENCY(RParameter, double)
1540  #undef FUNCTION
1541  #undef CAPABILITY
1542 
1543  #define CAPABILITY lnL_WDVar_G117B15A
1545  #define FUNCTION calc_lnL_WDVar_G117B15A
1546  START_FUNCTION(double)
1547  ALLOW_MODEL(GeneralALP)
1548  #undef FUNCTION
1549  #undef CAPABILITY
1550 
1551  #define CAPABILITY lnL_WDVar_R548
1553  #define FUNCTION calc_lnL_WDVar_R548
1554  START_FUNCTION(double)
1555  ALLOW_MODEL(GeneralALP)
1556  #undef FUNCTION
1557  #undef CAPABILITY
1558 
1559  #define CAPABILITY lnL_WDVar_PG1351489
1561  #define FUNCTION calc_lnL_WDVar_PG1351489
1562  START_FUNCTION(double)
1563  ALLOW_MODEL(GeneralALP)
1564  #undef FUNCTION
1565  #undef CAPABILITY
1566 
1567  #define CAPABILITY lnL_WDVar_L192
1569  #define FUNCTION calc_lnL_WDVar_L192
1570  START_FUNCTION(double)
1571  ALLOW_MODEL(GeneralALP)
1572  #undef FUNCTION
1573  #undef CAPABILITY
1574 
1575  #define CAPABILITY lnL_SN1987A
1577  #define FUNCTION calc_lnL_SN1987A
1578  START_FUNCTION(double)
1579  ALLOW_MODEL(GeneralALP)
1580  DEPENDENCY(PhotonFluence_SN1987A_Conversion, double)
1581  #undef FUNCTION
1582  #undef CAPABILITY
1583 
1584  #define CAPABILITY PhotonFluence_SN1987A_Conversion
1586  #define FUNCTION calc_PhotonFluence_SN1987A_Conversion
1587  START_FUNCTION(double)
1588  ALLOW_MODEL(GeneralALP)
1589  #undef FUNCTION
1590  #undef CAPABILITY
1591 
1592  #define CAPABILITY lnL_HESS_GCMF
1594  #define FUNCTION calc_lnL_HESS_GCMF
1595  START_FUNCTION(double)
1596  ALLOW_MODEL(GeneralALP)
1597  #undef FUNCTION
1598  #undef CAPABILITY
1599 
1600  #define CAPABILITY AxionOscillationTemperature
1602  #define FUNCTION calc_AxionOscillationTemperature
1603  START_FUNCTION(double)
1604  ALLOW_MODEL(GeneralALP)
1605  #undef FUNCTION
1606  #undef CAPABILITY
1607 
1608 #undef MODULE
1609 #endif /* defined(__DarkBit_rollcall_hpp__) */
void cascadeMC_FinalStates(std::vector< std::string > &list)
Function for retrieving list of final states for cascade decays.
Definition: Cascades.cpp:41
#define ALLOW_MODEL_DEPENDENCE(...)
double DEPENDENCY(LocalHalo, LocalMaxwellianHalo) BACKEND_REQ(dshmcom
void GA_missingFinalStates(std::vector< std::string > &result)
Identification of final states that are not yet tabulated.
Definition: GamYields.cpp:61
#define SET_BACKEND_OPTION(EXPERIMENT, VERSIONS)
void sigma_SD_n_simple(double &result)
Simple calculator of the spin-dependent WIMP-neutron cross-section.
Spectrum Spectrum Spectrum Spectrum Spectrum MajoranaSingletDM_Z2_spectrum
double double double gimmemicro gimmemicro gimmemicro ALLOW_MODELS(MSSM63atQ, MSSM63atMGUT, ScalarSingletDM_Z2, ScalarSingletDM_Z2_running, ScalarSingletDM_Z3, ScalarSingletDM_Z3_running, DiracSingletDM_Z2, MajoranaSingletDM_Z2, VectorSingletDM_Z2) START_CAPABILITY START_FUNCTION(double) DEPENDENCY(RD_oh2_Xf
Xf = m_WIMP/T_freezeout.
void equilibration_time_Sun(double &result)
Equilibration time for capture and annihilation of dark matter in the Sun (s)
SMInputs Eigen::Matrix3cd DecayTable::Entry SMInputs Eigen::Matrix3cd DecayTable::Entry SMInputs Eigen::Matrix3cd DecayTable::Entry SMInputs Eigen::Matrix3cd DecayTable::Entry ALLOW_JOINT_MODEL(RightHandedNeutrinos, StandardModel_Higgs) START_CAPABILITY START_FUNCTION(double) DEPENDENCY(SMINPUTS
double DS_HMCOM DS_HMFRAMEVELCOM ds6 BACKEND_OPTION((DarkSUSY_generic_wimp, 6.1.1, 6.2.2),(ds6)) FORCE_SAME_BACKEND(ds6) START_CAPABILITY START_FUNCTION(RD_spectrum_type) DEPENDENCY(MSSM_spectrum
#define ALLOW_MODEL_COMBINATION(...)
Indicate that the current FUNCTION may only be used with the specific model combination given...
std::map< str, std::map< str, Gambit::DarkBit::SimpleHist > > simpleHistContainter
Definition: SimpleHist.hpp:99
void IC22_bgloglike(double &result)
void IC79SL_bgloglike(double &result)
#define NEW_CAPABILITY
void sigma_SI_p_simple(double &result)
Simple calculator of the spin-independent WIMP-proton cross-section.
void IC79WL_bgloglike(double &result)
STL namespace.
void cascadeMC_InitialState(std::string &pID)
Function selecting initial state for decay chain.
Definition: Cascades.cpp:140
void IC79WL_loglike(double &result)
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)
void sigma_SI_n_simple(double &result)
Simple calculator of the spin-independent WIMP-neutron cross-section.
std::pair< double, double > ddpair
Shorthand for a pair of doubles.
Definition: util_types.hpp:66
Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum ScalarSingletDM_Z3_spectrum
std::map< str, daFunk::Funk > stringFunkMap
Definition: SimpleHist.hpp:101
void IC22_loglike(double &result)
void cascadeMC_EventCount(std::map< std::string, int > &counts)
Event counter for cascade decays.
Definition: Cascades.cpp:175
#define DD_DECLARE_EXPERIMENT(EXPERIMENT)
DS5_MSPCTM DS_INTDOF const str TH_ProcessCatalog ScalarSingletDM_Z3
double gimmemicro
std::map< std::pair< int, int >, double > map_intpair_dbl
Shorthand for an int-int pair to double map.
Definition: util_types.hpp:78
std::map< str, int > stringIntMap
Definition: SimpleHist.hpp:100
void set_gamLike_GC_halo(bool &result)
Fermi LAT dwarf likelihoods, based on arXiv:1108.2914.
double(* fptr_dd)(double &)
A double in, double out function pointer.
#define START_MODULE
Registers the current MODULE.
Spectrum Spectrum
DS5_MSPCTM DS_INTDOF const str TH_ProcessCatalog ScalarSingletDM_Z3_running
std::string str
Shorthand for a standard string.
Definition: Analysis.hpp:35
DS5_MSPCTM DS_INTDOF const str TH_ProcessCatalog DiracSingletDM_Z2
double ds5
Eigen::Matrix3cd ALLOW_MODEL(RightHandedNeutrinos) START_FUNCTION(triplet< double >) DEPENDENCY(prec_sinW2_eff
DS5_MSPCTM DS_INTDOF const str TH_ProcessCatalog MajoranaSingletDM_Z2
#define QUICK_FUNCTION(MODULE, CAPABILITY, NEW_CAPABILITY_FLAG, FUNCTION,...)
}@
Spectrum ScalarSingletDM_Z2
void IC79WH_bgloglike(double &result)
RD_spectrum_type DS_RDPARS double double double int int int ds6 FORCE_SAME_BACKEND(ds6) START_FUNCTION(double) DEPENDENCY(RD_spectrum_ordered
Spectrum Spectrum Spectrum Spectrum VectorSingletDM_Z2_spectrum
void mwimp_generic(double &result)
Retrieve the DM mass in GeV for generic models (GeV)
Definition: DarkBit.cpp:60
START_FUNCTION(bool) DEPENDENCY(RD_fraction
void sigma_SD_p_simple(double &result)
Simple calculator of the spin-dependent WIMP-proton cross-section.
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
Spectrum Spectrum Spectrum Spectrum VectorSingletDM_Z2
void cascadeMC_DecayTable(DarkBit::DecayChain::DecayTable &table)
Function setting up the decay table used in decay chains.
Definition: Cascades.cpp:58
#define START_CAPABILITY
Registers the current CAPABILITY of the current MODULE.
#define MODEL_GROUP(GROUPNAME, GROUP)
Define a model GROUP of name GROUPNAME for use with ALLOW_MODEL_COMBINATION.
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry decay_rates
shared_ptr< FunkBase > Funk
Definition: daFunk.hpp:113
double ds6
DS5_MSPCTM DS_INTDOF const str TH_ProcessCatalog ScalarSingletDM_Z2_running
#define NEEDS_MANAGER(...)
Indicates that the current FUNCTION of the current MODULE must be managed by another function (in the...
Type definition header for module DarkBit.
double DS5_HMCOM BACKEND_REQ(dshmisodf,(ds5), DS_HMISODF) BACKEND_REQ(dshmframevelcom