gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
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, 6.2.5), (ds6)) // Only DS6
121  BACKEND_OPTION((DarkSUSY_generic_wimp, 6.1.1, 6.2.2, 6.2.5), (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)
149  DEPENDENCY(DarkMatterConj_ID, std::string)
152  DiracSingletDM_Z2, MajoranaSingletDM_Z2, VectorSingletDM_Z2)
153  #undef FUNCTION
154  #undef CAPABILITY
155 
156  #define CAPABILITY RD_spectrum_ordered
158  #define FUNCTION RD_spectrum_ordered_func
159  START_FUNCTION(RD_spectrum_type)
160  DEPENDENCY(RD_spectrum, RD_spectrum_type)
161  #undef FUNCTION
162  #undef CAPABILITY
163 
164  #define CAPABILITY RD_eff_annrate_DS5prep
166  #define FUNCTION RD_annrate_DS5prep_func
167  START_FUNCTION(int)
168  DEPENDENCY(RD_spectrum, RD_spectrum_type)
169  BACKEND_REQ(rdmgev, (ds5), DS5_RDMGEV)
170  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5))
171  #undef FUNCTION
172  #undef CAPABILITY
173 
174  #define CAPABILITY RD_eff_annrate_DSprep_MSSM
176  #define FUNCTION RD_annrate_DSprep_MSSM_func
177  START_FUNCTION(int)
178  DEPENDENCY(RD_spectrum_ordered, RD_spectrum_type)
179  BACKEND_REQ(dsancoann, (ds6), DS_DSANCOANN)
180  BACKEND_REQ(DSparticle_code, (ds6), int, (const str&))
181  BACKEND_OPTION((DarkSUSY_MSSM, 6.1.1, 6.2.2, 6.2.5), (ds6))
182  FORCE_SAME_BACKEND(ds6)
183  #undef FUNCTION
184  #undef CAPABILITY
185 
186  #define CAPABILITY RD_eff_annrate
188  #define FUNCTION RD_eff_annrate_DS5_MSSM
191  DEPENDENCY(RD_eff_annrate_DS5prep, int)
192  BACKEND_REQ(dsanwx, (ds5), double, (double&))
193  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5))
194  #undef FUNCTION
195  #define FUNCTION RD_eff_annrate_DS_MSSM
198  DEPENDENCY(RD_eff_annrate_DSprep_MSSM, int)
199  BACKEND_REQ(dsanwx, (ds6), double, (double&))
200  BACKEND_OPTION((DarkSUSY_MSSM, 6.1.1, 6.2.2, 6.2.5), (ds6))
201  #undef FUNCTION
202  #define FUNCTION RD_eff_annrate_from_ProcessCatalog
204  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
205  DEPENDENCY(DarkMatter_ID, std::string)
206  DEPENDENCY(DarkMatterConj_ID, std::string)
208  DiracSingletDM_Z2, MajoranaSingletDM_Z2, VectorSingletDM_Z2)
209  #undef FUNCTION
210  #undef CAPABILITY
211 
212  #define CAPABILITY RD_oh2
214 
216  #define FUNCTION RD_oh2_DS_general
217  START_FUNCTION(double)
218  DEPENDENCY(RD_spectrum_ordered, RD_spectrum_type)
219  DEPENDENCY(RD_eff_annrate, fptr_dd)
220  #ifdef DARKBIT_RD_DEBUG
222  #endif
223  BACKEND_REQ(rdpars, (ds6), DS_RDPARS)
224  BACKEND_REQ(rdtime, (ds6), DS_RDTIME)
225  BACKEND_REQ(dsrdcom, (ds6), void, ())
226  BACKEND_REQ(dsrdstart,(ds6),void,(int&, double(&)[1000], double(&)[1000], int&, double(&)[1000], double(&)[1000], int&, double(&)[1000]))
227  BACKEND_REQ(dsrdens, (ds6), void, (double(*)(double&), double&, double&, int&, int&, int&))
228  BACKEND_OPTION((DarkSUSY_MSSM),(ds6))
229  BACKEND_OPTION((DarkSUSY_generic_wimp),(ds6))
230  FORCE_SAME_BACKEND(ds6)
231  #undef FUNCTION
232 
233  #define FUNCTION RD_oh2_DS5_general
234  START_FUNCTION(double)
235  DEPENDENCY(RD_spectrum_ordered, RD_spectrum_type)
236  DEPENDENCY(RD_eff_annrate, fptr_dd)
237  #ifdef DARKBIT_RD_DEBUG
239  #endif
240  BACKEND_REQ(dsrdthlim, (ds5), void, ())
241  BACKEND_REQ(dsrdtab, (ds5), void, (double(*)(double&), double&, int&))
242  BACKEND_REQ(dsrdeqn, (ds5), void, (double(*)(double&),double&,double&,double&,double&,int&))
243  BACKEND_REQ(dsrdwintp, (ds5), double, (double&))
244  BACKEND_REQ(DS5particle_code, (ds5), int, (const str&))
245  BACKEND_REQ(widths, (ds5), DS5_WIDTHS)
246  BACKEND_REQ(rdmgev, (ds5), DS5_RDMGEV)
247  BACKEND_REQ(rdpth, (ds5), DS_RDPTH)
248  BACKEND_REQ(rdpars, (ds5), DS_RDPARS)
249  BACKEND_REQ(rdswitch, (ds5), DS_RDSWITCH)
250  BACKEND_REQ(rdlun, (ds5), DS_RDLUN)
251  BACKEND_REQ(rdpadd, (ds5), DS_RDPADD)
252  BACKEND_REQ(rddof, (ds5), DS_RDDOF)
253  BACKEND_REQ(rderrors, (ds5), DS_RDERRORS)
254  BACKEND_REQ(rdtime, (ds5), DS_RDTIME)
255  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
256  #undef FUNCTION
257 
259  // TODO: corresponding function for DS6+ not yet implemented
260  #define FUNCTION RD_oh2_DarkSUSY_DS5
261  START_FUNCTION(double)
263  BACKEND_REQ(dsrdomega, (ds5), double, (int&,int&,double&,int&,int&,int&))
264  BACKEND_REQ(rderrors, (ds5), DS_RDERRORS)
265  BACKEND_REQ(rdtime, (ds5), DS_RDTIME)
266  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
267  #undef FUNCTION
268 
270  #define FUNCTION RD_oh2_MicrOmegas
271  START_FUNCTION(double)
272  DEPENDENCY(RD_oh2_Xf, ddpair)
273  #undef FUNCTION
274 
276  #define FUNCTION RD_oh2_Axions
277  START_FUNCTION(double)
278  ALLOW_MODEL(GeneralALP)
279  DEPENDENCY(AxionOscillationTemperature, double)
280  DEPENDENCY(T_cmb, double)
281  #undef FUNCTION
282  #undef CAPABILITY
283 
284 
286  #define CAPABILITY RD_oh2_Xf
288  #define FUNCTION RD_oh2_Xf_MicrOmegas
290  BACKEND_REQ(oh2, (gimmemicro), double, (double*,int,double))
291  BACKEND_OPTION((MicrOmegas_MSSM), (gimmemicro))
292  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z2), (gimmemicro))
293  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z3), (gimmemicro))
294  BACKEND_OPTION((MicrOmegas_VectorSingletDM_Z2), (gimmemicro))
295  BACKEND_OPTION((MicrOmegas_MajoranaSingletDM_Z2), (gimmemicro))
296  BACKEND_OPTION((MicrOmegas_DiracSingletDM_Z2),(gimmemicro))
300  DiracSingletDM_Z2, MajoranaSingletDM_Z2, VectorSingletDM_Z2)
301  #undef FUNCTION
302  #undef CAPABILITY
303 
304 
306  #define CAPABILITY Xf
308  #define FUNCTION Xf_MicrOmegas
309  START_FUNCTION(double)
310  DEPENDENCY(RD_oh2_Xf, ddpair)
311  #undef FUNCTION
312  #undef CAPABILITY
313 
315  #define CAPABILITY relic_density_contributions
317  #define FUNCTION print_channel_contributions_MicrOmegas
318  START_FUNCTION(double)
319  DEPENDENCY(Xf, double)
320  BACKEND_REQ(momegas_print_channels, () , double, (double, double, double, int, FILE*))
321  #undef FUNCTION
322  #undef CAPABILITY
323 
325  #define CAPABILITY semi_annihilation_fraction
327  #define FUNCTION get_semi_ann_MicrOmegas
328  START_FUNCTION(double)
329  DEPENDENCY(Xf, double)
330  BACKEND_REQ(get_oneChannel, (gimmemicro), double, (double,double,char*,char*,char*,char*))
331  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z3),(gimmemicro))
332  #undef FUNCTION
333  #undef CAPABILITY
334 
335  #define CAPABILITY vSigma_freezeout
337  #define FUNCTION vSigma_freezeout_MicrOmegas
338  START_FUNCTION(double)
339  DEPENDENCY(Xf, double)
340  DEPENDENCY(mwimp, double)
341  BACKEND_REQ(vSigma, (), double, (double, double, int))
342  #undef FUNCTION
343  #undef CAPABILITY
344 
346  #define CAPABILITY RD_fraction
348  #define FUNCTION RD_fraction_one
349  START_FUNCTION(double)
350  #undef FUNCTION
351  #define FUNCTION RD_fraction_leq_one
352  START_FUNCTION(double)
353  DEPENDENCY(RD_oh2, double)
354  #undef FUNCTION
355  #define FUNCTION RD_fraction_rescaled
356  START_FUNCTION(double)
357  DEPENDENCY(RD_oh2, double)
358  #undef FUNCTION
359  #undef CAPABILITY
360 
361 
362  // Cascade decays --------------------------------------------
363 
365  #define CAPABILITY cascadeMC_FinalStates
367  #define FUNCTION cascadeMC_FinalStates
368  START_FUNCTION(std::vector<std::string>)
369  #undef FUNCTION
370  #undef CAPABILITY
371 
373  #define CAPABILITY cascadeMC_DecayTable
375  #define FUNCTION cascadeMC_DecayTable
376  START_FUNCTION(DecayChain::DecayTable)
377  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
378  DEPENDENCY(SimYieldTable, SimYieldTable)
379  #undef FUNCTION
380  #undef CAPABILITY
381 
383  #define CAPABILITY cascadeMC_LoopManagement
385  #define FUNCTION cascadeMC_LoopManager
386  START_FUNCTION(void, CAN_MANAGE_LOOPS)
387  DEPENDENCY(GA_missingFinalStates, std::vector<std::string>)
388  #undef FUNCTION
389  #undef CAPABILITY
390 
392  #define CAPABILITY cascadeMC_InitialState
394  #define FUNCTION cascadeMC_InitialState
395  START_FUNCTION(std::string)
396  DEPENDENCY(GA_missingFinalStates, std::vector<std::string>)
397  NEEDS_MANAGER(cascadeMC_LoopManagement)
398  #undef FUNCTION
399  #undef CAPABILITY
400 
402  #define CAPABILITY cascadeMC_EventCount
404  #define FUNCTION cascadeMC_EventCount
406  DEPENDENCY(cascadeMC_InitialState, std::string)
407  NEEDS_MANAGER(cascadeMC_LoopManagement)
408  #undef FUNCTION
409  #undef CAPABILITY
410 
412  #define CAPABILITY cascadeMC_ChainEvent
414  #define FUNCTION cascadeMC_GenerateChain
415  START_FUNCTION(DecayChain::ChainContainer)
416  DEPENDENCY(cascadeMC_InitialState, std::string)
417  DEPENDENCY(cascadeMC_DecayTable, DecayChain::DecayTable)
418  NEEDS_MANAGER(cascadeMC_LoopManagement)
419  #undef FUNCTION
420  #undef CAPABILITY
421 
423  #define CAPABILITY cascadeMC_Histograms
425  #define FUNCTION cascadeMC_Histograms
427  DEPENDENCY(cascadeMC_InitialState, std::string)
428  DEPENDENCY(cascadeMC_ChainEvent, DecayChain::ChainContainer)
429  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
430  DEPENDENCY(SimYieldTable, SimYieldTable)
431  DEPENDENCY(cascadeMC_FinalStates,std::vector<std::string>)
432  NEEDS_MANAGER(cascadeMC_LoopManagement)
433  #undef FUNCTION
434  #undef CAPABILITY
435 
437  #define CAPABILITY cascadeMC_gammaSpectra
439  #define FUNCTION cascadeMC_gammaSpectra
441  DEPENDENCY(GA_missingFinalStates, std::vector<std::string>)
442  DEPENDENCY(cascadeMC_FinalStates,std::vector<std::string>)
445  #undef FUNCTION
446  #undef CAPABILITY
447 
448  /*
450  #define CAPABILITY cascadeMC_PrintResult
451  START_CAPABILITY
452  #define FUNCTION cascadeMC_PrintResult
453  START_FUNCTION(bool)
454  DEPENDENCY(cascadeMC_Histograms, simpleHistContainter)
455  DEPENDENCY(cascadeMC_EventCount, stringIntMap)
456  #undef FUNCTION
457  #undef CAPABILITY
458  */
459 
460  // Gamma rays --------------------------------------------
461 
462  #define CAPABILITY GA_missingFinalStates
464  #define FUNCTION GA_missingFinalStates
465  START_FUNCTION(std::vector<std::string>)
466  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
467  DEPENDENCY(SimYieldTable, SimYieldTable)
468  DEPENDENCY(DarkMatter_ID, std::string)
469  DEPENDENCY(DarkMatterConj_ID, std::string)
470  DEPENDENCY(DM_process, std::string)
471  #undef FUNCTION
472  #undef CAPABILITY
473 
474  #define CAPABILITY GA_Yield
476 
477  #define FUNCTION GA_AnnYield_General
479  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
480  DEPENDENCY(SimYieldTable, SimYieldTable)
482  DEPENDENCY(DarkMatter_ID, std::string)
483  DEPENDENCY(DarkMatterConj_ID, std::string)
484  #undef FUNCTION
485 
486  #define FUNCTION GA_DecayYield_General
488  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
489  DEPENDENCY(SimYieldTable, SimYieldTable)
491  DEPENDENCY(DarkMatter_ID, std::string)
492  #undef FUNCTION
493  #undef CAPABILITY
494 
495  #define CAPABILITY TH_ProcessCatalog
497 
499  #define FUNCTION TH_ProcessCatalog_DS5_MSSM
500  START_FUNCTION(TH_ProcessCatalog)
502  DEPENDENCY(DarkMatter_ID, std::string)
503  DEPENDENCY(DarkMatterConj_ID, std::string)
504  DEPENDENCY(decay_rates,DecayTable)
505  BACKEND_REQ(dssigmav, (ds5), double, (int&))
506  BACKEND_REQ(dsIBffdxdy, (ds5), double, (int&, double&, double&))
507  BACKEND_REQ(dsIBhhdxdy, (ds5), double, (int&, double&, double&))
508  BACKEND_REQ(dsIBwhdxdy, (ds5), double, (int&, double&, double&))
509  BACKEND_REQ(dsIBwwdxdy, (ds5), double, (int&, double&, double&))
510  BACKEND_REQ(IBintvars, (ds5), DS_IBINTVARS)
511  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
512  #undef FUNCTION
513 
515  #define FUNCTION TH_ProcessCatalog_DS_MSSM
516  START_FUNCTION(TH_ProcessCatalog)
518  DEPENDENCY(DarkMatter_ID, std::string)
519  DEPENDENCY(decay_rates,DecayTable)
520  BACKEND_REQ(dssigmav0, (ds6), double, (int&,int&))
521  BACKEND_REQ(dssigmav0tot, (ds6), double, ())
522  BACKEND_REQ(dsIBffdxdy, (ds6), double, (int&, double&, double&))
523  BACKEND_REQ(dsIBhhdxdy, (ds6), double, (int&, double&, double&))
524  BACKEND_REQ(dsIBwhdxdy, (ds6), double, (int&, double&, double&))
525  BACKEND_REQ(dsIBwwdxdy, (ds6), double, (int&, double&, double&))
526  BACKEND_REQ(IBintvars, (ds6), DS_IBINTVARS)
527  BACKEND_OPTION((DarkSUSY_MSSM, 6.1.1, 6.2.2, 6.2.5), (ds6)) // Only for DarkSUSY6 MSSM
528  FORCE_SAME_BACKEND(ds6)
529  #undef FUNCTION
530 
531  #define FUNCTION TH_ProcessCatalog_ScalarSingletDM_Z2
532  START_FUNCTION(TH_ProcessCatalog)
533  DEPENDENCY(decay_rates, DecayTable)
535  ALLOW_MODELS(ScalarSingletDM_Z2,ScalarSingletDM_Z2_running)
536  #undef FUNCTION
537 
538  #define FUNCTION TH_ProcessCatalog_ScalarSingletDM_Z3
539  START_FUNCTION(TH_ProcessCatalog)
540  DEPENDENCY(decay_rates, DecayTable)
542  BACKEND_REQ(calcSpectrum, (gimmemicro) , double, (int, double*, double*, double*, double*, double*, double*, int*))
543  BACKEND_REQ(vSigmaCh, (gimmemicro), MicrOmegas::aChannel*)
544  FORCE_SAME_BACKEND(gimmemicro)
545  ALLOW_MODELS(ScalarSingletDM_Z3,ScalarSingletDM_Z3_running)
546  #undef FUNCTION
547 
548  #define FUNCTION TH_ProcessCatalog_VectorSingletDM_Z2
549  START_FUNCTION(TH_ProcessCatalog)
551  DEPENDENCY(decay_rates, DecayTable)
553  #undef FUNCTION
554 
555  #define FUNCTION TH_ProcessCatalog_MajoranaSingletDM_Z2
556  START_FUNCTION(TH_ProcessCatalog)
558  DEPENDENCY(decay_rates, DecayTable)
559  ALLOW_MODELS(MajoranaSingletDM_Z2)
560  #undef FUNCTION
561 
562  #define FUNCTION TH_ProcessCatalog_DiracSingletDM_Z2
563  START_FUNCTION(TH_ProcessCatalog)
564  DEPENDENCY(decay_rates, DecayTable)
565  DEPENDENCY(DiracSingletDM_Z2_spectrum, Spectrum)
566  ALLOW_MODELS(DiracSingletDM_Z2)
567  #undef FUNCTION
568  #undef CAPABILITY
569 
570  // Information about the nature of the DM process in question
571  // (i.e. decay or annihilation) to use the correct scaling in
572  // terms of the DM density, phase space, etc.
573  #define CAPABILITY DM_process
575  #define FUNCTION DM_process_from_ProcessCatalog
576  START_FUNCTION(std::string)
577  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
578  DEPENDENCY(DarkMatter_ID, std::string)
579  #undef FUNCTION
580  #undef CAPABILITY
581 
582  #define CAPABILITY set_gamLike_GC_halo
584  #define FUNCTION set_gamLike_GC_halo
585  START_FUNCTION(bool)
586  DEPENDENCY(GalacticHalo, GalacticHaloProperties)
587  BACKEND_REQ(set_halo_profile, (gamLike), void, (int, const std::vector<double> &, const std::vector<double> &, double))
588  #undef FUNCTION
589  #undef CAPABILITY
590 
591  #define CAPABILITY lnL_FermiLATdwarfs
593  #define FUNCTION lnL_FermiLATdwarfs_gamLike
594  START_FUNCTION(double)
595  DEPENDENCY(GA_Yield, daFunk::Funk)
596  DEPENDENCY(RD_fraction, double)
597  DEPENDENCY(DM_process, std::string)
598  BACKEND_REQ(lnL, (gamLike), double, (int, const std::vector<double> &, const std::vector<double> &))
599  #undef FUNCTION
600  #undef CAPABILITY
601 
602  #define CAPABILITY lnL_FermiGC
604  #define FUNCTION lnL_FermiGC_gamLike
605  START_FUNCTION(double)
606  DEPENDENCY(GA_Yield, daFunk::Funk)
607  DEPENDENCY(RD_fraction, double)
609  DEPENDENCY(DM_process, std::string)
610  BACKEND_REQ(lnL, (gamLike), double, (int, const std::vector<double> &, const std::vector<double> &))
611  #undef FUNCTION
612  #undef CAPABILITY
613 
614  #define CAPABILITY lnL_CTAGC
616  #define FUNCTION lnL_CTAGC_gamLike
617  START_FUNCTION(double)
618  DEPENDENCY(GA_Yield, daFunk::Funk)
619  DEPENDENCY(RD_fraction, double)
620  DEPENDENCY(DM_process, std::string)
621  //DEPENDENCY(set_gamLike_GC_halo, bool)
622  BACKEND_REQ(lnL, (gamLike), double, (int, const std::vector<double> &, const std::vector<double> &))
623  #undef FUNCTION
624  #undef CAPABILITY
625 
626  #define CAPABILITY lnL_HESSGC
628  #define FUNCTION lnL_HESSGC_gamLike
629  START_FUNCTION(double)
630  DEPENDENCY(GA_Yield, daFunk::Funk)
631  DEPENDENCY(RD_fraction, double)
633  DEPENDENCY(DM_process, std::string)
634  BACKEND_REQ(lnL, (gamLike), double, (int, const std::vector<double> &, const std::vector<double> &))
635  #undef FUNCTION
636  #undef CAPABILITY
637 
638  #define CAPABILITY dump_GammaSpectrum
640  #define FUNCTION dump_GammaSpectrum
641  START_FUNCTION(double)
642  DEPENDENCY(GA_Yield, daFunk::Funk)
643  #undef FUNCTION
644  #undef CAPABILITY
645 
646  #define CAPABILITY lnL_oh2
648  #define FUNCTION lnL_oh2_Simple
649  START_FUNCTION(double)
650  DEPENDENCY(RD_oh2, double)
651  #undef FUNCTION
652  #define FUNCTION lnL_oh2_upperlimit
653  START_FUNCTION(double)
654  DEPENDENCY(RD_oh2, double)
655  #undef FUNCTION
656  #undef CAPABILITY
657 
658  // Local DM density likelihood
659 
660  #define CAPABILITY lnL_rho0
662  #define FUNCTION lnL_rho0_lognormal
663  START_FUNCTION(double)
664  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
665  #undef FUNCTION
666  #undef CAPABILITY
667 
668  #define CAPABILITY lnL_vrot
670  #define FUNCTION lnL_vrot_gaussian
671  START_FUNCTION(double)
672  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
673  #undef FUNCTION
674  #undef CAPABILITY
675 
676  #define CAPABILITY lnL_v0
678  #define FUNCTION lnL_v0_gaussian
679  START_FUNCTION(double)
680  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
681  #undef FUNCTION
682  #undef CAPABILITY
683 
684  #define CAPABILITY lnL_vesc
686  #define FUNCTION lnL_vesc_gaussian
687  START_FUNCTION(double)
688  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
689  #undef FUNCTION
690  #undef CAPABILITY
691 
692  // Simple WIMP property extractors =======================================
693 
694  // Retrieve the DM mass in GeV for generic models
695  QUICK_FUNCTION(DarkBit, mwimp, NEW_CAPABILITY, mwimp_generic, double, (),
696  (TH_ProcessCatalog, TH_ProcessCatalog), (DarkMatter_ID, std::string))
697 
698  // Retrieve the total thermally-averaged annihilation cross-section for indirect detection (cm^3 / s)
699  #define CAPABILITY sigmav
701 
702  #define FUNCTION sigmav_late_universe
703  START_FUNCTION(double)
704  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
705  DEPENDENCY(DarkMatter_ID, std::string)
706  DEPENDENCY(DarkMatterConj_ID, std::string)
707  #undef FUNCTION
708 
709  #define FUNCTION sigmav_late_universe_MicrOmegas
710  START_FUNCTION(double)
711  BACKEND_REQ(calcSpectrum, (gimmemicro) , double, (int, double*, double*, double*, double*, double*, double*, int*))
712  BACKEND_OPTION((MicrOmegas_MSSM),(gimmemicro))
713  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z2),(gimmemicro))
714  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z3),(gimmemicro))
715  BACKEND_OPTION((MicrOmegas_VectorSingletDM_Z2),(gimmemicro))
716  FORCE_SAME_BACKEND(gimmemicro)
717  #undef FUNCTION
718 
719  #undef CAPABILITY
720 
721  // DIRECT DETECTION ==================================================
722 
723  // Determine the DM-nucleon couplings
724  #define CAPABILITY DD_couplings
726 
727  #define FUNCTION DD_couplings_DarkSUSY_DS5
729  BACKEND_REQ(get_DD_couplings, (ds5), std::vector<double>, ())
730  BACKEND_REQ(mspctm, (ds5), DS5_MSPCTM)
731  BACKEND_REQ(ddcom, (ds5), DS5_DDCOM)
732  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
733  ALLOW_JOINT_MODEL(nuclear_params_fnq,MSSM63atQ)
734  #undef FUNCTION
735 
736  #define FUNCTION DD_couplings_DarkSUSY_MSSM
738  BACKEND_REQ(get_DD_couplings, (ds6), std::vector<double>, ())
739  BACKEND_REQ(ddcomlegacy, (ds6), DS_DDCOMLEGACY)
740  BACKEND_REQ(ddmssmcom, (ds6), DS_DDMSSMCOM)
741  BACKEND_OPTION((DarkSUSY_MSSM, 6.1.1, 6.2.2, 6.2.5), (ds6)) // Only for DarkSUSY6 MSSM
742  FORCE_SAME_BACKEND(ds6)
743  ALLOW_JOINT_MODEL(nuclear_params_fnq,MSSM63atQ)
744  #undef FUNCTION
745 
746  #define FUNCTION DD_couplings_MicrOmegas
748  BACKEND_REQ(nucleonAmplitudes, (gimmemicro), int, (double(*)(double,double,double,double), double*, double*, double*, double*))
749  BACKEND_REQ(FeScLoop, (gimmemicro), double, (double, double, double, double))
750  BACKEND_REQ(MOcommon, (gimmemicro), MicrOmegas::MOcommonSTR)
751  ALLOW_MODEL_DEPENDENCE(nuclear_params_fnq, MSSM63atQ,
752  ScalarSingletDM_Z2, ScalarSingletDM_Z2_running,
753  ScalarSingletDM_Z3, ScalarSingletDM_Z3_running,
755  MODEL_GROUP(group1, (nuclear_params_fnq))
756  MODEL_GROUP(group2, (MSSM63atQ,
757  ScalarSingletDM_Z2, ScalarSingletDM_Z2_running,
758  ScalarSingletDM_Z3, ScalarSingletDM_Z3_running,
760  ALLOW_MODEL_COMBINATION(group1, group2)
761  BACKEND_OPTION((MicrOmegas_MSSM),(gimmemicro))
762  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z2),(gimmemicro))
763  BACKEND_OPTION((MicrOmegas_ScalarSingletDM_Z3),(gimmemicro))
764  BACKEND_OPTION((MicrOmegas_VectorSingletDM_Z2),(gimmemicro))
765  FORCE_SAME_BACKEND(gimmemicro)
766  #undef FUNCTION
767 
768  #define FUNCTION DD_couplings_ScalarSingletDM_Z2
771  ALLOW_MODEL_DEPENDENCE(nuclear_params_fnq, ScalarSingletDM_Z2, ScalarSingletDM_Z2_running)
772  MODEL_GROUP(group1, (nuclear_params_fnq))
773  MODEL_GROUP(group2, (ScalarSingletDM_Z2, ScalarSingletDM_Z2_running))
774  ALLOW_MODEL_COMBINATION(group1, group2)
775  #undef FUNCTION
776 
777  #define FUNCTION DD_couplings_ScalarSingletDM_Z3
780  ALLOW_MODEL_DEPENDENCE(nuclear_params_fnq, ScalarSingletDM_Z3, ScalarSingletDM_Z3_running)
781  MODEL_GROUP(group1, (nuclear_params_fnq))
782  MODEL_GROUP(group2, (ScalarSingletDM_Z3, ScalarSingletDM_Z3_running))
783  ALLOW_MODEL_COMBINATION(group1, group2)
784  #undef FUNCTION
785 
786  #define FUNCTION DD_couplings_VectorSingletDM_Z2
789  ALLOW_JOINT_MODEL(nuclear_params_fnq, VectorSingletDM_Z2)
790  #undef FUNCTION
791 
792  #undef CAPABILITY
793 
794  #define CAPABILITY DD_couplings_fermionic_HP
796 
797  #define FUNCTION DD_couplings_MajoranaSingletDM_Z2
798  START_FUNCTION(DM_nucleon_couplings_fermionic_HP)
800  ALLOW_JOINT_MODEL(nuclear_params_fnq, MajoranaSingletDM_Z2)
801  #undef FUNCTION
802 
803  #define FUNCTION DD_couplings_DiracSingletDM_Z2
804  START_FUNCTION(DM_nucleon_couplings_fermionic_HP)
805  DEPENDENCY(DiracSingletDM_Z2_spectrum, Spectrum)
806  ALLOW_JOINT_MODEL(nuclear_params_fnq, DiracSingletDM_Z2)
807  #undef FUNCTION
808 
809  #undef CAPABILITY
810 
811  // Simple calculators of the spin-(in)dependent WIMP-proton and WIMP-neutron cross-sections
812  QUICK_FUNCTION(DarkBit, sigma_SI_p, NEW_CAPABILITY, sigma_SI_p_simple, double, (), (DD_couplings, DM_nucleon_couplings), (mwimp, double))
813  QUICK_FUNCTION(DarkBit, sigma_SI_n, NEW_CAPABILITY, sigma_SI_n_simple, double, (), (DD_couplings, DM_nucleon_couplings), (mwimp, double))
814  QUICK_FUNCTION(DarkBit, sigma_SD_p, NEW_CAPABILITY, sigma_SD_p_simple, double, (), (DD_couplings, DM_nucleon_couplings), (mwimp, double))
815  QUICK_FUNCTION(DarkBit, sigma_SD_n, NEW_CAPABILITY, sigma_SD_n_simple, double, (), (DD_couplings, DM_nucleon_couplings), (mwimp, double))
816 
817  // Generalized v^2n, q^2n DM-nucleon cross sections
818  #define CAPABILITY sigma_SI_p
819  #define FUNCTION sigma_SI_vnqn
821  DEPENDENCY(mwimp,double)
822  DEPENDENCY(DD_couplings_fermionic_HP,DM_nucleon_couplings_fermionic_HP)
823  ALLOW_MODELS(DiracSingletDM_Z2, MajoranaSingletDM_Z2)
824  #undef FUNCTION
825  #undef CAPABILITY
826 
827  #define CAPABILITY sigma_SD_p
828  //Spin-dependent general v^2n q^2n cross section
829  #define FUNCTION sigma_SD_vnqn
831  DEPENDENCY(mwimp,double)
832  DEPENDENCY(DD_couplings_fermionic_HP,DM_nucleon_couplings_fermionic_HP)
833  ALLOW_MODELS(DiracSingletDM_Z2, MajoranaSingletDM_Z2)
834  #undef FUNCTION
835  #undef CAPABILITY
836 
837  // Likelihoods for nuclear parameters:
838  #define CAPABILITY lnL_SI_nuclear_parameters
840  #define FUNCTION lnL_sigmas_sigmal
841  START_FUNCTION(double)
842  ALLOW_MODEL(nuclear_params_sigmas_sigmal)
843  #undef FUNCTION
844  #undef CAPABILITY
845 
846  #define CAPABILITY lnL_SD_nuclear_parameters
848  #define FUNCTION lnL_deltaq
849  START_FUNCTION(double)
850  ALLOW_MODELS(nuclear_params_fnq)
851  #undef FUNCTION
852  #undef CAPABILITY
853 
854  // DD rate and likelihood calculations. Don't try this one at home kids.
855  #define DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,TYPE,NAME) \
856  LONG_START_CAPABILITY(MODULE, CAT_3(EXPERIMENT,_,NAME)) \
857  LONG_DECLARE_FUNCTION(MODULE, CAT_3(EXPERIMENT,_,NAME), \
858  CAT_3(EXPERIMENT,_Get,NAME), TYPE, 0) \
859  LONG_DEPENDENCY(MODULE, CAT_3(EXPERIMENT,_Get,NAME), \
860  CAT(EXPERIMENT,_Calculate), bool) \
861  LONG_BACKEND_REQ(MODULE, CAT_3(EXPERIMENT,_,NAME), \
862  CAT_3(EXPERIMENT,_Get,NAME), DD_Experiment, (needs_DDCalc), int, (const str&)) \
863  LONG_BACKEND_REQ(MODULE, CAT_3(EXPERIMENT,_,NAME), \
864  CAT_3(EXPERIMENT,_Get,NAME), CAT(DD_,NAME), (needs_DDCalc), TYPE, (const int&))
865 
866  #define DD_DECLARE_BIN_FUNCTION(EXPERIMENT,TYPE,NAME) \
867  LONG_START_CAPABILITY(MODULE, CAT_3(EXPERIMENT,_,NAME)) \
868  LONG_DECLARE_FUNCTION(MODULE, CAT_3(EXPERIMENT,_,NAME), \
869  CAT_3(EXPERIMENT,_Get,NAME), std::vector<double>, 0) \
870  LONG_DEPENDENCY(MODULE, CAT_3(EXPERIMENT,_Get,NAME), \
871  CAT(EXPERIMENT,_Calculate), bool) \
872  LONG_BACKEND_REQ(MODULE, CAT_3(EXPERIMENT,_,NAME), \
873  CAT_3(EXPERIMENT,_Get,NAME), DD_Experiment, (needs_DDCalc), int, (const str&)) \
874  LONG_BACKEND_REQ(MODULE, CAT_3(EXPERIMENT,_,NAME), \
875  CAT_3(EXPERIMENT,_Get,NAME), DD_Bins, (needs_DDCalc), int, (const int&)) \
876  LONG_BACKEND_REQ(MODULE, CAT_3(EXPERIMENT,_,NAME), \
877  CAT_3(EXPERIMENT,_Get,NAME), CAT(DD_,NAME), (needs_DDCalc), TYPE, (const int&, \
878  const int&))
879 
880  #define DD_DECLARE_EXPERIMENT(EXPERIMENT) \
881  LONG_START_CAPABILITY(MODULE, CAT(EXPERIMENT,_Calculate)) \
882  LONG_DECLARE_FUNCTION(MODULE, CAT(EXPERIMENT,_Calculate), \
883  CAT(EXPERIMENT,_Calc), bool, 0) \
884  LONG_BACKEND_REQ(MODULE, CAT(EXPERIMENT,_Calculate), \
885  CAT(EXPERIMENT,_Calc), DD_Experiment, (needs_DDCalc), int, (const str&)) \
886  LONG_BACKEND_REQ(MODULE, CAT(EXPERIMENT,_Calculate), \
887  CAT(EXPERIMENT,_Calc), DD_CalcRates, (needs_DDCalc), void, (const int&)) \
888  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,int,Events) \
889  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,double,Background) \
890  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,double,Signal) \
891  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,double,SignalSI) \
892  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,double,SignalSD) \
893  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,int,Bins) \
894  DD_DECLARE_RESULT_FUNCTION(EXPERIMENT,double,LogLikelihood) \
895  DD_DECLARE_BIN_FUNCTION(EXPERIMENT,int,BinEvents) \
896  DD_DECLARE_BIN_FUNCTION(EXPERIMENT,double,BinBackground) \
897  DD_DECLARE_BIN_FUNCTION(EXPERIMENT,double,BinSignal) \
898 
899  #define SET_BACKEND_OPTION(EXPERIMENT, VERSIONS) \
900  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_Calculate), CAT(EXPERIMENT,_Calc), \
901  VERSIONS, (needs_DDCalc)) \
902  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_Events), CAT(EXPERIMENT,_GetEvents), \
903  VERSIONS, (needs_DDCalc)) \
904  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_Background), \
905  CAT(EXPERIMENT,_GetBackground), VERSIONS, (needs_DDCalc)) \
906  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_Signal), CAT(EXPERIMENT,_GetSignal), \
907  VERSIONS, (needs_DDCalc)) \
908  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_SignalSI), \
909  CAT(EXPERIMENT,_GetSignalSI), VERSIONS, (needs_DDCalc)) \
910  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_SignalSD), \
911  CAT(EXPERIMENT,_GetSignalSD), VERSIONS, (needs_DDCalc)) \
912  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_Bins), CAT(EXPERIMENT,_GetBins), \
913  VERSIONS, (needs_DDCalc)) \
914  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_LogLikelihood), \
915  CAT(EXPERIMENT,_GetLogLikelihood), VERSIONS, (needs_DDCalc)) \
916  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_BinEvents), \
917  CAT(EXPERIMENT,_GetBinEvents), VERSIONS, (needs_DDCalc)) \
918  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_BinBackground), \
919  CAT(EXPERIMENT,_GetBinBackground), VERSIONS, (needs_DDCalc)) \
920  LONG_BACKEND_OPTION(MODULE, CAT(EXPERIMENT,_BinSignal), \
921  CAT(EXPERIMENT,_GetBinSignal), VERSIONS, (needs_DDCalc)) \
922 
923 
924  // Declare different DD experiments that exist in DDCalc.
925  DD_DECLARE_EXPERIMENT(XENON100_2012) // Aprile et al., PRL 109, 181301 (2013) [arxiv:1207.5988]
926  DD_DECLARE_EXPERIMENT(XENON1T_2017) // Aprile et al., PRL 119, 181301 (2017) [arxiv:1705.06655]
927  DD_DECLARE_EXPERIMENT(XENON1T_2018) // Aprile et al., May 28 talk at Gran Sasso.
928  DD_DECLARE_EXPERIMENT(DARWIN) // M. Schumann et al., [arXiv:1506.08309]
929  DD_DECLARE_EXPERIMENT(LUX_2013) // Akerib et al., PRL 112, 091303 (2014) [arxiv:1310.8214]
930  DD_DECLARE_EXPERIMENT(LUX_2015) // D.S. Akerib et al., PRL 116, 161301 (2016) [arXiv:1512.03506]
931  DD_DECLARE_EXPERIMENT(LUX_2016) // D.S. Akerib et al., PRL 118, 021303 (2017) [arxiv:1608.07648]
932  DD_DECLARE_EXPERIMENT(LZ) // LZ TDR, [arXiv:1509.02910]
933  DD_DECLARE_EXPERIMENT(PandaX_2016) // A. Tan et al., PRL 117, 121303 (2016) [arxiv:1607.07400]
934  DD_DECLARE_EXPERIMENT(PandaX_2017) // X. Cui et al., PRL 119, 181302 (2017) [arxiv:1708.06917]
935  DD_DECLARE_EXPERIMENT(DarkSide_50) // P. Agnes et al., [arXiv:1802.07198]
936  DD_DECLARE_EXPERIMENT(DarkSide_50_S2) // P. Agnes et al., [arXiv:1802.06994]
937  DD_DECLARE_EXPERIMENT(CRESST_II) // G. Angloher et al., [arXiv:1509.01515]
938  DD_DECLARE_EXPERIMENT(CRESST_III) // A. H. Abdelhameed et al., [arXiv:1904.00498]
939  DD_DECLARE_EXPERIMENT(SuperCDMS_2014) // Agnese et al., PRL 112, 241302 (2014) [arxiv:1402.7137]
940  DD_DECLARE_EXPERIMENT(CDMSlite) // Agnese et al., PRL 116, 071301 (2015) [arxiv:1509.02448]
941  DD_DECLARE_EXPERIMENT(SIMPLE_2014) // Felizardo et al., PRD 89, 072013 (2014) [arxiv:1404.4309]
942  DD_DECLARE_EXPERIMENT(PICO_2L) // C. Amole et al., PRD 93, 061101 (2016) [arXiv:1601.03729]
943  DD_DECLARE_EXPERIMENT(PICO_60_F) // C. Amole et al., PRD 93, 052014 (2016) [arXiv:1510.07754]
944  DD_DECLARE_EXPERIMENT(PICO_60_I) // C. Amole et al., PRD 93, 052014 (2016) [arXiv:1510.07754]
945  DD_DECLARE_EXPERIMENT(PICO_60) // C. Amole et al., PRD 93, 052014 (2016) [arXiv:1510.07754]
946  DD_DECLARE_EXPERIMENT(PICO_60_2017) // C. Amole et al., arXiv:1702.07666
947  DD_DECLARE_EXPERIMENT(PICO_60_2019) // C. Amole et al., arXiv:1902.04031
948  DD_DECLARE_EXPERIMENT(PICO_500) // S. Fallows, talk at TAUP 2017
949 
950  // Specify which versions of DDCalc support which experiments.
951  // If an experiment does not have any entry here, any version (of any backend) is allowed.
952 
953  // Introduced in DDCalc 1.0.0 but later deleted
954  SET_BACKEND_OPTION(PICO_60_F, (DDCalc, 1.0.0, 1.1.0, 1.2.0))
955  SET_BACKEND_OPTION(PICO_60_I, (DDCalc, 1.0.0, 1.1.0, 1.2.0))
956  // Introduced in DDCalc 1.1.0
957  SET_BACKEND_OPTION(PICO_60_2017, (DDCalc, 1.1.0, 1.2.0, 2.0.0, 2.1.0, 2.2.0))
958  SET_BACKEND_OPTION(XENON1T_2017, (DDCalc, 1.1.0, 1.2.0, 2.0.0, 2.1.0, 2.2.0))
959  // Introduced in DDCalc 1.2.0
960  SET_BACKEND_OPTION(PandaX_2017, (DDCalc, 1.2.0, 2.0.0, 2.1.0, 2.2.0))
961  // Introduced in DDCalc 2.0.0
962  SET_BACKEND_OPTION(XENON1T_2018, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
963  SET_BACKEND_OPTION(DARWIN, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
964  SET_BACKEND_OPTION(LZ, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
965  SET_BACKEND_OPTION(DarkSide_50, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
966  SET_BACKEND_OPTION(CRESST_II, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
967  SET_BACKEND_OPTION(CDMSlite, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
968  SET_BACKEND_OPTION(PICO_60, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
969  SET_BACKEND_OPTION(PICO_500, (DDCalc, 2.0.0, 2.1.0, 2.2.0))
970  // Introduced in DDCalc 2.2.0
971  SET_BACKEND_OPTION(CRESST_III, (DDCalc, 2.2.0))
972  SET_BACKEND_OPTION(DarkSide_50_S2, (DDCalc, 2.2.0))
973  SET_BACKEND_OPTION(PICO_60_2019, (DDCalc, 2.2.0))
974 
975 
976  // INDIRECT DETECTION: NEUTRINOS =====================================
977 
978  // Solar capture ------------------------
979 
981  #define CAPABILITY capture_rate_Sun
983  #define FUNCTION capture_rate_Sun_const_xsec_DS5 // DS 5
984  START_FUNCTION(double)
985  BACKEND_REQ(cap_Sun_v0q0_isoscalar, (ds5), double, (const double&, const double&, const double&))
986  DEPENDENCY(mwimp, double)
987  DEPENDENCY(sigma_SI_p, double)
988  DEPENDENCY(sigma_SD_p, double)
989  DEPENDENCY(DarkSUSY5_PointInit_LocalHalo, bool)
990  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5))
991  #undef FUNCTION
992 
993  #define FUNCTION capture_rate_Sun_const_xsec // DS 6
994  START_FUNCTION(double)
995  BACKEND_REQ(cap_Sun_v0q0_isoscalar, (ds6), double, (const double&, const double&, const double&, const double&))
996  DEPENDENCY(mwimp, double)
997  DEPENDENCY(sigma_SI_p, double)
998  DEPENDENCY(sigma_SD_p, double)
999  DEPENDENCY(RD_fraction, double)
1000  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
1001  DEPENDENCY(DarkSUSY_PointInit_LocalHalo, bool)
1002  BACKEND_OPTION((DarkSUSY_MSSM, 6.1.1, 6.2.2, 6.2.5), (ds6))
1003  BACKEND_OPTION((DarkSUSY_generic_wimp, 6.1.1, 6.2.2, 6.2.5), (ds6))
1004  FORCE_SAME_BACKEND(ds6)
1005  #undef FUNCTION
1006 
1008  #define FUNCTION capture_rate_Sun_const_xsec_capgen
1009  START_FUNCTION(double)
1010  DEPENDENCY(mwimp,double)
1011  DEPENDENCY(sigma_SI_p, double)
1012  DEPENDENCY(sigma_SD_p, double)
1013  BACKEND_REQ(cap_Sun_v0q0_isoscalar,(cg),void,(const double&,const double&,const double&,double&,double&))
1014  BACKEND_REQ(cap_sun_saturation,(cg),void,(const double&,double&))
1015  BACKEND_OPTION((CaptnGeneral),(cg))
1016  FORCE_SAME_BACKEND(cg)
1017  #undef FUNCTION
1018 
1020  #define FUNCTION capture_rate_Sun_vnqn
1021  START_FUNCTION(double)
1022  DEPENDENCY(mwimp,double)
1023  DEPENDENCY(sigma_SD_p, map_intpair_dbl)
1024  DEPENDENCY(sigma_SI_p, map_intpair_dbl)
1025  BACKEND_REQ(cap_Sun_vnqn_isoscalar,(cg),void,(const double&,const double&,const int&,const int&,const int&,double&))
1026  BACKEND_REQ(cap_sun_saturation,(cg),void,(const double&,double&))
1027  BACKEND_OPTION((CaptnGeneral),(cg))
1028  FORCE_SAME_BACKEND(cg)
1029  #undef FUNCTION
1030  #undef CAPABILITY
1031 
1033  #define CAPABILITY equilibration_time_Sun
1035  #define FUNCTION equilibration_time_Sun
1036  START_FUNCTION(double)
1037  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
1038  DEPENDENCY(mwimp, double)
1039  DEPENDENCY(DarkMatter_ID, std::string)
1040  DEPENDENCY(DarkMatterConj_ID, std::string)
1041  DEPENDENCY(capture_rate_Sun, double)
1042  #undef FUNCTION
1043  #undef CAPABILITY
1044 
1046  #define CAPABILITY annihilation_rate_Sun
1048  #define FUNCTION annihilation_rate_Sun
1049  START_FUNCTION(double)
1051  DEPENDENCY(capture_rate_Sun, double)
1052  #undef FUNCTION
1053  #undef CAPABILITY
1054 
1056  #define CAPABILITY nuyield_ptr
1058  #define FUNCTION nuyield_from_DS
1059  START_FUNCTION(nuyield_info)
1060  ALLOW_MODELS(MSSM63atQ, ScalarSingletDM_Z2_running, ScalarSingletDM_Z3_running,
1061  MajoranaSingletDM_Z2, DiracSingletDM_Z2, VectorSingletDM_Z2)
1062  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
1063  DEPENDENCY(mwimp, double)
1064  DEPENDENCY(sigmav, double)
1065  DEPENDENCY(DarkMatter_ID, std::string)
1066  DEPENDENCY(DarkMatterConj_ID, std::string)
1067  BACKEND_REQ(DS_nuyield_setup, (ds), void, (const double(&)[29],
1068  const double(&)[29][3], const double(&)[15], const double(&)[3], const double&,
1069  const double&))
1070  BACKEND_REQ(nuyield, (ds), double, (const double&, const int&, void*&))
1071  BACKEND_REQ(get_DS_neutral_h_decay_channels, (ds), std::vector< std::vector<str> >, ())
1072  BACKEND_REQ(get_DS_charged_h_decay_channels, (ds), std::vector< std::vector<str> >, ())
1073  FORCE_SAME_BACKEND(ds)
1074  #undef FUNCTION
1075  #undef CAPABILITY
1076 
1077 
1078  // Neutrino telescope likelihoods ------------------------
1079 
1080  #define CAPABILITY IC22_data
1082  #define FUNCTION IC22_full
1083  START_FUNCTION(nudata)
1084  DEPENDENCY(mwimp, double)
1086  DEPENDENCY(nuyield_ptr, nuyield_info)
1087  BACKEND_REQ(nubounds, (), void, (const char&, const double&, const double&,
1088  nuyield_function_pointer, double&, double&, int&,
1089  double&, double&, const int&, const double&,
1090  const int&, const bool&, const double&,
1091  const double&, void*&, const bool&))
1092  #undef FUNCTION
1093  #undef CAPABILITY
1094 
1095  #define CAPABILITY IC22_signal
1097  #define FUNCTION IC22_signal
1098  START_FUNCTION(double)
1099  DEPENDENCY(IC22_data, nudata)
1100  #undef FUNCTION
1101  #undef CAPABILITY
1102 
1103  #define CAPABILITY IC22_bg
1105  #define FUNCTION IC22_bg
1106  START_FUNCTION(double)
1107  DEPENDENCY(IC22_data, nudata)
1108  #undef FUNCTION
1109  #undef CAPABILITY
1110 
1111  #define CAPABILITY IC22_loglike
1113  #define FUNCTION IC22_loglike
1114  START_FUNCTION(double)
1115  DEPENDENCY(IC22_data, nudata)
1116  #undef FUNCTION
1117  #undef CAPABILITY
1118 
1119  #define CAPABILITY IC22_bgloglike
1121  #define FUNCTION IC22_bgloglike
1122  START_FUNCTION(double)
1123  DEPENDENCY(IC22_data, nudata)
1124  #undef FUNCTION
1125  #undef CAPABILITY
1126 
1127  #define CAPABILITY IC22_pvalue
1129  #define FUNCTION IC22_pvalue
1130  START_FUNCTION(double)
1131  DEPENDENCY(IC22_data, nudata)
1132  #undef FUNCTION
1133  #undef CAPABILITY
1134 
1135  #define CAPABILITY IC22_nobs
1137  #define FUNCTION IC22_nobs
1138  START_FUNCTION(int)
1139  DEPENDENCY(IC22_data, nudata)
1140  #undef FUNCTION
1141  #undef CAPABILITY
1142 
1143  #define CAPABILITY IC79WH_data
1145  #define FUNCTION IC79WH_full
1146  START_FUNCTION(nudata)
1147  DEPENDENCY(mwimp, double)
1149  DEPENDENCY(nuyield_ptr, nuyield_info)
1150  BACKEND_REQ(nubounds, (), void, (const char&, const double&, const double&,
1151  nuyield_function_pointer, double&, double&, int&,
1152  double&, double&, const int&, const double&,
1153  const int&, const bool&, const double&,
1154  const double&, void*&, const bool&))
1155  #undef FUNCTION
1156  #undef CAPABILITY
1157 
1158  #define CAPABILITY IC79WH_signal
1160  #define FUNCTION IC79WH_signal
1161  START_FUNCTION(double)
1162  DEPENDENCY(IC79WH_data, nudata)
1163  #undef FUNCTION
1164  #undef CAPABILITY
1165 
1166  #define CAPABILITY IC79WH_bg
1168  #define FUNCTION IC79WH_bg
1169  START_FUNCTION(double)
1170  DEPENDENCY(IC79WH_data, nudata)
1171  #undef FUNCTION
1172  #undef CAPABILITY
1173 
1174  #define CAPABILITY IC79WH_loglike
1176  #define FUNCTION IC79WH_loglike
1177  START_FUNCTION(double)
1178  DEPENDENCY(IC79WH_data, nudata)
1179  #undef FUNCTION
1180  #undef CAPABILITY
1181 
1182  #define CAPABILITY IC79WH_bgloglike
1184  #define FUNCTION IC79WH_bgloglike
1185  START_FUNCTION(double)
1186  DEPENDENCY(IC79WH_data, nudata)
1187  #undef FUNCTION
1188  #undef CAPABILITY
1189 
1190  #define CAPABILITY IC79WH_pvalue
1192  #define FUNCTION IC79WH_pvalue
1193  START_FUNCTION(double)
1194  DEPENDENCY(IC79WH_data, nudata)
1195  #undef FUNCTION
1196  #undef CAPABILITY
1197 
1198  #define CAPABILITY IC79WH_nobs
1200  #define FUNCTION IC79WH_nobs
1201  START_FUNCTION(int)
1202  DEPENDENCY(IC79WH_data, nudata)
1203  #undef FUNCTION
1204  #undef CAPABILITY
1205 
1206  #define CAPABILITY IC79WL_data
1208  #define FUNCTION IC79WL_full
1209  START_FUNCTION(nudata)
1210  DEPENDENCY(mwimp, double)
1212  DEPENDENCY(nuyield_ptr, nuyield_info)
1213  BACKEND_REQ(nubounds, (), void, (const char&, const double&, const double&,
1214  nuyield_function_pointer, double&, double&, int&,
1215  double&, double&, const int&, const double&,
1216  const int&, const bool&, const double&,
1217  const double&, void*&, const bool&))
1218  #undef FUNCTION
1219  #undef CAPABILITY
1220 
1221  #define CAPABILITY IC79WL_signal
1223  #define FUNCTION IC79WL_signal
1224  START_FUNCTION(double)
1225  DEPENDENCY(IC79WL_data, nudata)
1226  #undef FUNCTION
1227  #undef CAPABILITY
1228 
1229  #define CAPABILITY IC79WL_bg
1231  #define FUNCTION IC79WL_bg
1232  START_FUNCTION(double)
1233  DEPENDENCY(IC79WL_data, nudata)
1234  #undef FUNCTION
1235  #undef CAPABILITY
1236 
1237  #define CAPABILITY IC79WL_loglike
1239  #define FUNCTION IC79WL_loglike
1240  START_FUNCTION(double)
1241  DEPENDENCY(IC79WL_data, nudata)
1242  #undef FUNCTION
1243  #undef CAPABILITY
1244 
1245  #define CAPABILITY IC79WL_bgloglike
1247  #define FUNCTION IC79WL_bgloglike
1248  START_FUNCTION(double)
1249  DEPENDENCY(IC79WL_data, nudata)
1250  #undef FUNCTION
1251  #undef CAPABILITY
1252 
1253  #define CAPABILITY IC79WL_pvalue
1255  #define FUNCTION IC79WL_pvalue
1256  START_FUNCTION(double)
1257  DEPENDENCY(IC79WL_data, nudata)
1258  #undef FUNCTION
1259  #undef CAPABILITY
1260 
1261  #define CAPABILITY IC79WL_nobs
1263  #define FUNCTION IC79WL_nobs
1264  START_FUNCTION(int)
1265  DEPENDENCY(IC79WL_data, nudata)
1266  #undef FUNCTION
1267  #undef CAPABILITY
1268 
1269  #define CAPABILITY IC79SL_data
1271  #define FUNCTION IC79SL_full
1272  START_FUNCTION(nudata)
1273  DEPENDENCY(mwimp, double)
1275  DEPENDENCY(nuyield_ptr, nuyield_info)
1276  BACKEND_REQ(nubounds, (), void, (const char&, const double&, const double&,
1277  nuyield_function_pointer, double&, double&, int&,
1278  double&, double&, const int&, const double&,
1279  const int&, const bool&, const double&,
1280  const double&, void*&, const bool&))
1281  #undef FUNCTION
1282  #undef CAPABILITY
1283 
1284  #define CAPABILITY IC79SL_signal
1286  #define FUNCTION IC79SL_signal
1287  START_FUNCTION(double)
1288  DEPENDENCY(IC79SL_data, nudata)
1289  #undef FUNCTION
1290  #undef CAPABILITY
1291 
1292  #define CAPABILITY IC79SL_bg
1294  #define FUNCTION IC79SL_bg
1295  START_FUNCTION(double)
1296  DEPENDENCY(IC79SL_data, nudata)
1297  #undef FUNCTION
1298  #undef CAPABILITY
1299 
1300  #define CAPABILITY IC79SL_loglike
1302  #define FUNCTION IC79SL_loglike
1303  START_FUNCTION(double)
1304  DEPENDENCY(IC79SL_data, nudata)
1305  #undef FUNCTION
1306  #undef CAPABILITY
1307 
1308  #define CAPABILITY IC79SL_bgloglike
1310  #define FUNCTION IC79SL_bgloglike
1311  START_FUNCTION(double)
1312  DEPENDENCY(IC79SL_data, nudata)
1313  #undef FUNCTION
1314  #undef CAPABILITY
1315 
1316  #define CAPABILITY IC79SL_pvalue
1318  #define FUNCTION IC79SL_pvalue
1319  START_FUNCTION(double)
1320  DEPENDENCY(IC79SL_data, nudata)
1321  #undef FUNCTION
1322  #undef CAPABILITY
1323 
1324  #define CAPABILITY IC79SL_nobs
1326  #define FUNCTION IC79SL_nobs
1327  START_FUNCTION(int)
1328  DEPENDENCY(IC79SL_data, nudata)
1329  #undef FUNCTION
1330  #undef CAPABILITY
1331 
1332  #define CAPABILITY IC79_loglike
1334  #define FUNCTION IC79_loglike
1335  START_FUNCTION(double)
1336  DEPENDENCY(IC79WH_loglike, double)
1337  DEPENDENCY(IC79WL_loglike, double)
1338  DEPENDENCY(IC79SL_loglike, double)
1339  DEPENDENCY(IC79WH_bgloglike, double)
1340  DEPENDENCY(IC79WL_bgloglike, double)
1341  DEPENDENCY(IC79SL_bgloglike, double)
1342  #undef FUNCTION
1343  #undef CAPABILITY
1344 
1345  #define CAPABILITY IceCube_likelihood
1347  #define FUNCTION IC_loglike
1348  START_FUNCTION(double)
1349  DEPENDENCY(IC22_loglike, double)
1350  DEPENDENCY(IC79WH_loglike, double)
1351  DEPENDENCY(IC79WL_loglike, double)
1352  DEPENDENCY(IC79SL_loglike, double)
1353  DEPENDENCY(IC22_bgloglike, double)
1354  DEPENDENCY(IC79WH_bgloglike, double)
1355  DEPENDENCY(IC79WL_bgloglike, double)
1356  DEPENDENCY(IC79SL_bgloglike, double)
1357  #undef FUNCTION
1358  #undef CAPABILITY
1359 
1360  #define CAPABILITY UnitTest_DarkBit
1362  #define FUNCTION UnitTest_DarkBit
1363  START_FUNCTION(int)
1365  DEPENDENCY(RD_oh2, double)
1366  DEPENDENCY(GA_Yield, daFunk::Funk)
1367  DEPENDENCY(TH_ProcessCatalog, TH_ProcessCatalog)
1368  DEPENDENCY(DarkMatter_ID, std::string)
1369  DEPENDENCY(DarkMatterConj_ID, std::string)
1370  #undef FUNCTION
1371  #undef CAPABILITY
1372 
1373  #define CAPABILITY SimYieldTable
1375  #define FUNCTION SimYieldTable_DarkSUSY
1376  START_FUNCTION(SimYieldTable)
1377  BACKEND_REQ(dsanyield_sim, (), double, (double&,double&,int&,char*,int&,int&,int&))
1378  #undef FUNCTION
1379  #define FUNCTION SimYieldTable_DS5 // DS5 only
1380  START_FUNCTION(SimYieldTable)
1381  BACKEND_REQ(dshayield, (ds5), double, (double&,double&,int&,int&,int&))
1382  BACKEND_OPTION((DarkSUSY, 5.1.3), (ds5)) // Only for DarkSUSY5
1383  #undef FUNCTION
1384  #define FUNCTION SimYieldTable_MicrOmegas
1385  START_FUNCTION(SimYieldTable)
1386  BACKEND_REQ(dNdE, (), double, (double,double,int,int))
1387  #undef FUNCTION
1388  #define FUNCTION SimYieldTable_PPPC
1389  START_FUNCTION(SimYieldTable)
1390  #undef FUNCTION
1391  #undef CAPABILITY
1392 
1393  #define CAPABILITY DarkMatter_ID
1395  #define FUNCTION DarkMatter_ID_ScalarSingletDM
1396  START_FUNCTION(std::string)
1397  ALLOW_MODELS(ScalarSingletDM_Z2, ScalarSingletDM_Z2_running, ScalarSingletDM_Z3, ScalarSingletDM_Z3_running)
1398  #undef FUNCTION
1399  #define FUNCTION DarkMatter_ID_VectorSingletDM
1400  START_FUNCTION(std::string)
1402  #undef FUNCTION
1403  #define FUNCTION DarkMatter_ID_MajoranaSingletDM
1404  START_FUNCTION(std::string)
1405  ALLOW_MODELS(MajoranaSingletDM_Z2)
1406  #undef FUNCTION
1407  #define FUNCTION DarkMatter_ID_DiracSingletDM
1408  START_FUNCTION(std::string)
1409  ALLOW_MODELS(DiracSingletDM_Z2)
1410  #undef FUNCTION
1411  #define FUNCTION DarkMatter_ID_MSSM
1412  START_FUNCTION(std::string)
1414  #undef FUNCTION
1415  #undef CAPABILITY
1416 
1417  #define CAPABILITY DarkMatterConj_ID
1419  #define FUNCTION DarkMatterConj_ID_ScalarSingletDM
1420  START_FUNCTION(std::string)
1421  ALLOW_MODELS(ScalarSingletDM_Z2, ScalarSingletDM_Z2_running, ScalarSingletDM_Z3, ScalarSingletDM_Z3_running)
1422  #undef FUNCTION
1423  #define FUNCTION DarkMatterConj_ID_VectorSingletDM
1424  START_FUNCTION(std::string)
1426  #undef FUNCTION
1427  #define FUNCTION DarkMatterConj_ID_MajoranaSingletDM
1428  START_FUNCTION(std::string)
1429  ALLOW_MODELS(MajoranaSingletDM_Z2)
1430  #undef FUNCTION
1431  #define FUNCTION DarkMatterConj_ID_DiracSingletDM
1432  START_FUNCTION(std::string)
1433  ALLOW_MODELS(DiracSingletDM_Z2)
1434  #undef FUNCTION
1435  #define FUNCTION DarkMatterConj_ID_MSSM
1436  START_FUNCTION(std::string)
1438  #undef FUNCTION
1439  #undef CAPABILITY
1440 
1441  // --- Functions related to the local and global properties of the DM halo ---
1442 
1443  #define CAPABILITY GalacticHalo
1445  #define FUNCTION GalacticHalo_gNFW
1446  START_FUNCTION(GalacticHaloProperties)
1447  ALLOW_MODEL(Halo_gNFW)
1448  #undef FUNCTION
1449  #define FUNCTION GalacticHalo_Einasto
1450  START_FUNCTION(GalacticHaloProperties)
1451  ALLOW_MODEL(Halo_Einasto)
1452  #undef FUNCTION
1453  #undef CAPABILITY
1454 
1455  #define CAPABILITY LocalHalo
1457  #define FUNCTION ExtractLocalMaxwellianHalo
1458  START_FUNCTION(LocalMaxwellianHalo)
1459  ALLOW_MODELS(Halo_gNFW, Halo_Einasto)
1460  #undef FUNCTION
1461  #undef CAPABILITY
1462 
1463  // Axion likelihoods and functions -----------------------
1464 
1465  #define CAPABILITY QCDAxion_ZeroTemperatureMass
1467  #define FUNCTION QCDAxion_ZeroTemperatureMass_Nuisance_lnL
1468  START_FUNCTION(double)
1469  ALLOW_MODEL(QCDAxion)
1470  #undef FUNCTION
1471  #undef CAPABILITY
1472 
1473  #define CAPABILITY QCDAxion_TemperatureDependence
1475  #define FUNCTION QCDAxion_TemperatureDependence_Nuisance_lnL
1476  START_FUNCTION(double)
1477  ALLOW_MODEL(QCDAxion)
1478  #undef FUNCTION
1479  #undef CAPABILITY
1480 
1481  #define CAPABILITY QCDAxion_AxionPhotonConstant
1483  #define FUNCTION QCDAxion_AxionPhotonConstant_Nuisance_lnL
1484  START_FUNCTION(double)
1485  ALLOW_MODEL(QCDAxion)
1486  #undef FUNCTION
1487  #undef CAPABILITY
1488 
1489  #define CAPABILITY ALPS1_signal_vac
1491  #define FUNCTION calc_ALPS1_signal_vac
1492  START_FUNCTION(double)
1493  ALLOW_MODEL(GeneralALP)
1494  #undef FUNCTION
1495  #undef CAPABILITY
1496 
1497  #define CAPABILITY ALPS1_signal_gas
1499  #define FUNCTION calc_ALPS1_signal_gas
1500  START_FUNCTION(double)
1501  ALLOW_MODEL(GeneralALP)
1502  #undef FUNCTION
1503  #undef CAPABILITY
1504 
1505  #define CAPABILITY lnL_ALPS1
1507  #define FUNCTION calc_lnL_ALPS1
1508  START_FUNCTION(double)
1509  ALLOW_MODEL(GeneralALP)
1510  DEPENDENCY(ALPS1_signal_vac, double)
1511  DEPENDENCY(ALPS1_signal_gas, double)
1512  #undef FUNCTION
1513  #undef CAPABILITY
1514 
1515  #define CAPABILITY CAST2007_signal_vac
1517  #define FUNCTION calc_CAST2007_signal_vac
1518  START_FUNCTION(std::vector<double>)
1519  ALLOW_MODEL(GeneralALP)
1520  #undef FUNCTION
1521  #undef CAPABILITY
1522 
1523  #define CAPABILITY CAST2017_signal_vac
1525  #define FUNCTION calc_CAST2017_signal_vac
1526  START_FUNCTION(std::vector<std::vector<double>>)
1527  ALLOW_MODEL(GeneralALP)
1528  #undef FUNCTION
1529  #undef CAPABILITY
1530 
1531  #define CAPABILITY lnL_CAST2007
1533  #define FUNCTION calc_lnL_CAST2007
1534  START_FUNCTION(double)
1535  ALLOW_MODEL(GeneralALP)
1536  DEPENDENCY(CAST2007_signal_vac, std::vector<double>)
1537  #undef FUNCTION
1538  #undef CAPABILITY
1539 
1540  #define CAPABILITY lnL_CAST2017
1542  #define FUNCTION calc_lnL_CAST2017
1543  START_FUNCTION(double)
1544  ALLOW_MODEL(GeneralALP)
1545  DEPENDENCY(CAST2017_signal_vac, std::vector<std::vector<double>>)
1546  #undef FUNCTION
1547  #undef CAPABILITY
1548 
1549  #define CAPABILITY Haloscope_signal
1551  #define FUNCTION calc_Haloscope_signal
1552  START_FUNCTION(double)
1553  ALLOW_MODEL(GeneralALP)
1554  DEPENDENCY(RD_fraction, double)
1555  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
1556  #undef FUNCTION
1557  #undef CAPABILITY
1558 
1559  #define CAPABILITY lnL_Haloscope_ADMX1
1561  #define FUNCTION calc_lnL_Haloscope_ADMX1
1562  START_FUNCTION(double)
1563  ALLOW_MODEL(GeneralALP)
1564  DEPENDENCY(Haloscope_signal, double)
1565  #undef FUNCTION
1566  #undef CAPABILITY
1567 
1568  #define CAPABILITY lnL_Haloscope_ADMX2
1570  #define FUNCTION calc_lnL_Haloscope_ADMX2
1571  START_FUNCTION(double)
1572  ALLOW_MODEL(GeneralALP)
1573  DEPENDENCY(Haloscope_signal, double)
1574  #undef FUNCTION
1575  #undef CAPABILITY
1576 
1577  #define CAPABILITY lnL_Haloscope_RBF
1579  #define FUNCTION calc_lnL_Haloscope_RBF
1580  START_FUNCTION(double)
1581  ALLOW_MODEL(GeneralALP)
1582  DEPENDENCY(Haloscope_signal, double)
1583  #undef FUNCTION
1584  #undef CAPABILITY
1585 
1586  #define CAPABILITY lnL_Haloscope_UF
1588  #define FUNCTION calc_lnL_Haloscope_UF
1589  START_FUNCTION(double)
1590  ALLOW_MODEL(GeneralALP)
1591  DEPENDENCY(Haloscope_signal, double)
1592  #undef FUNCTION
1593  #undef CAPABILITY
1594 
1595  #define CAPABILITY RParameter
1597  #define FUNCTION calc_RParameter
1598  START_FUNCTION(double)
1599  ALLOW_MODEL(GeneralALP)
1600  #undef FUNCTION
1601  #undef CAPABILITY
1602 
1603  #define CAPABILITY lnL_RParameter
1605  #define FUNCTION calc_lnL_RParameter
1606  START_FUNCTION(double)
1607  ALLOW_MODEL(GeneralALP)
1608  DEPENDENCY(RParameter, double)
1609  #undef FUNCTION
1610  #undef CAPABILITY
1611 
1612  #define CAPABILITY lnL_WDVar_G117B15A
1614  #define FUNCTION calc_lnL_WDVar_G117B15A
1615  START_FUNCTION(double)
1616  ALLOW_MODEL(GeneralALP)
1617  #undef FUNCTION
1618  #undef CAPABILITY
1619 
1620  #define CAPABILITY lnL_WDVar_R548
1622  #define FUNCTION calc_lnL_WDVar_R548
1623  START_FUNCTION(double)
1624  ALLOW_MODEL(GeneralALP)
1625  #undef FUNCTION
1626  #undef CAPABILITY
1627 
1628  #define CAPABILITY lnL_WDVar_PG1351489
1630  #define FUNCTION calc_lnL_WDVar_PG1351489
1631  START_FUNCTION(double)
1632  ALLOW_MODEL(GeneralALP)
1633  #undef FUNCTION
1634  #undef CAPABILITY
1635 
1636  #define CAPABILITY lnL_WDVar_L192
1638  #define FUNCTION calc_lnL_WDVar_L192
1639  START_FUNCTION(double)
1640  ALLOW_MODEL(GeneralALP)
1641  #undef FUNCTION
1642  #undef CAPABILITY
1643 
1644  #define CAPABILITY lnL_SN1987A
1646  #define FUNCTION calc_lnL_SN1987A
1647  START_FUNCTION(double)
1648  ALLOW_MODEL(GeneralALP)
1649  DEPENDENCY(PhotonFluence_SN1987A_Conversion, double)
1650  #undef FUNCTION
1651  #undef CAPABILITY
1652 
1653  #define CAPABILITY PhotonFluence_SN1987A_Conversion
1655  #define FUNCTION calc_PhotonFluence_SN1987A_Conversion
1656  START_FUNCTION(double)
1657  ALLOW_MODEL(GeneralALP)
1658  #undef FUNCTION
1659  #undef CAPABILITY
1660 
1661  #define CAPABILITY lnL_HESS_GCMF
1663  #define FUNCTION calc_lnL_HESS_GCMF
1664  START_FUNCTION(double)
1665  ALLOW_MODEL(GeneralALP)
1666  #undef FUNCTION
1667  #undef CAPABILITY
1668 
1669  #define CAPABILITY lnL_XENON1T_Anomaly
1671  #define FUNCTION calc_lnL_XENON1T_Anomaly
1672  START_FUNCTION(double)
1673  ALLOW_JOINT_MODEL(GeneralALP,XENON1T_NuisanceParameters)
1674  #undef FUNCTION
1675  #undef CAPABILITY
1676 
1677  #define CAPABILITY lnL_XENON1T_Anomaly_NuisanceParameters
1679  #define FUNCTION calc_lnL_XENON1T_Anomaly_NuisanceParameters
1680  START_FUNCTION(double)
1681  ALLOW_MODEL(XENON1T_NuisanceParameters)
1682  #undef FUNCTION
1683  #undef CAPABILITY
1684 
1685  #define CAPABILITY lnL_XENON1T_DM_Anomaly
1687  #define FUNCTION calc_lnL_XENON1T_DM_Anomaly
1688  START_FUNCTION(double)
1689  ALLOW_JOINT_MODEL(GeneralALP,XENON1T_NuisanceParameters,XENON1T_DM_NuisanceParameters)
1690  DEPENDENCY(LocalHalo, LocalMaxwellianHalo)
1691  #undef FUNCTION
1692  #undef CAPABILITY
1693 
1694  #define CAPABILITY AxionOscillationTemperature
1696  #define FUNCTION calc_AxionOscillationTemperature
1697  START_FUNCTION(double)
1698  ALLOW_MODEL(GeneralALP)
1699  #undef FUNCTION
1700  #undef CAPABILITY
1701 
1702 #undef MODULE
1703 #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
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
#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)
TH_ProcessCatalog std::string RD_spectrum_type DS_RDPARS double double double int int int ds6 FORCE_SAME_BACKEND(ds6) START_FUNCTION(double) DEPENDENCY(RD_spectrum_ordered
double DS_HMCOM DS_HMFRAMEVELCOM ds6 BACKEND_OPTION((DarkSUSY_generic_wimp, 6.1.1, 6.2.2, 6.2.5),(ds6)) FORCE_SAME_BACKEND(ds6) START_CAPABILITY START_FUNCTION(RD_spectrum_type) DEPENDENCY(MSSM_spectrum
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)
Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum ScalarSingletDM_Z3_running
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
Spectrum Spectrum Spectrum ScalarSingletDM_Z2
void IC22_loglike(double &result)
void cascadeMC_EventCount(std::map< std::string, int > &counts)
Event counter for cascade decays.
Definition: Cascades.cpp:175
DecayTable mass_es_pseudonyms MCLoopInfo MSSM63atMGUT
Definition: SUSY.hpp:62
#define DD_DECLARE_EXPERIMENT(EXPERIMENT)
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:86
double ds6
std::map< str, int > stringIntMap
Definition: SimpleHist.hpp:100
Spectrum Spectrum Spectrum Spectrum Spectrum MajoranaSingletDM_Z2
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.
std::string str
Shorthand for a standard string.
Definition: Analysis.hpp:35
Eigen::Matrix3cd ALLOW_MODEL(RightHandedNeutrinos) START_FUNCTION(triplet< double >) DEPENDENCY(prec_sinW2_eff
DS5_MSPCTM DS_INTDOF const str TH_ProcessCatalog std::string ALLOW_MODELS(ScalarSingletDM_Z2, ScalarSingletDM_Z2_running, ScalarSingletDM_Z3, ScalarSingletDM_Z3_running, DiracSingletDM_Z2, MajoranaSingletDM_Z2, VectorSingletDM_Z2) START_CAPABILITY START_FUNCTION(RD_spectrum_type) DEPENDENCY(RD_spectrum
#define QUICK_FUNCTION(MODULE, CAPABILITY, NEW_CAPABILITY_FLAG, FUNCTION,...)
}@
void IC79WH_bgloglike(double &result)
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.
double ds5
DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry DecayTable::Entry 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
Spectrum Spectrum Spectrum ScalarSingletDM_Z2_running
#define NEEDS_MANAGER(...)
Indicates that the current FUNCTION of the current MODULE must be managed by another function (in the...
StandardModel_Higgs_running ScalarSingletDM_Z3
Type definition header for module DarkBit.
double DS5_HMCOM BACKEND_REQ(dshmisodf,(ds5), DS_HMISODF) BACKEND_REQ(dshmframevelcom