gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
SimpleLikelihoods.cpp
Go to the documentation of this file.
1 // GAMBIT: Global and Modular BSM Inference Tool
2 // *********************************************
20 
24 
25 namespace Gambit {
26  namespace DarkBit {
27 
28 // //////////////////////////////////////////////////////////////////////////
29 // //
30 // // Simple likelihood functions
31 // //
32 // //////////////////////////////////////////////////////////////////////////
33 //
34 // /*! \brief Fermi LAT dwarf likelihoods, based on arXiv:1108.2914.
35 // */
36 // void lnL_FermiLATdwarfsSimple(double &result)
37 // {
38 // using namespace Pipes::lnL_FermiLATdwarfsSimple;
39 // // Koushiappas' limits [arXiv:1108.2914]
40 // //
41 // // This is the tabulated Phi-Likelihood function from Koushiappas et al.
42 // // Above L = 36, we use linear extrapolation up to L = 360000
43 // //
44 // // phi (defined as phi = sigmav/mDM**2*Ntot/8/pi * 1e26)
45 // double xgridArray [101] = { 0. , 6.74308086122e-05 , 0.000123192463137 ,
46 // 0.000171713798503 , 0.000215245918518 , 0.000255093268618 , 0.00029207805123 ,
47 // 0.000326751732695 , 0.000359503469472 , 0.000390620122006 , 0.000420321264006,
48 // 0.00044878042576 , 0.000476138421008 , 0.000502511975672 , 0.000527999496499,
49 // 0.000552685056887 , 0.000576641243501 , 0.000599931255273 ,
50 // 0.000622610497068 , 0.000644727821172 , 0.000666326515638 , 0.000687445105269,
51 // 0.000708118010141 , 0.000728376093388 , 0.000748247120993 , 0.00076775615078,
52 // 0.000786925863514 , 0.000805776846231 , 0.000824327835809 , 0.00084259592922,
53 // 0.000860596765645 , 0.000878344684789 , 0.000895852864914 ,
54 // 0.000913133443547 , 0.000930197623331 , 0.0009470557651 , 0.000963717469925 ,
55 // 0.00098019165163 , 0.000996486601006 , 0.00101261004288 , 0.00102856918685 ,
56 // 0.00104437077256 , 0.00106002111016 , 0.00107552611658 , 0.00109089134805 ,
57 // 0.00110612202935 , 0.00112122308019 , 0.00113619913897 , 0.00115105458439 ,
58 // 0.00116579355487 , 0.00118041996631 , 0.00119493752815 , 0.00120934975806 ,
59 // 0.00122365999528 , 0.00123787141289 , 0.00125198702892 , 0.00126600971667 ,
60 // 0.00127994221404 , 0.00129378713223 , 0.00130754696367 , 0.00132122408935 ,
61 // 0.00133482078559 , 0.00134833923028 , 0.00136178150869 , 0.0013751496188 ,
62 // 0.00138844547626 , 0.00140167091906 , 0.00141482771173 , 0.00142791754942 ,
63 // 0.00144094206154 , 0.0014539028153 , 0.00146680131887 , 0.00147963902447 ,
64 // 0.00149241733116 , 0.00150513758749 , 0.00151780109399 , 0.00153040910553 ,
65 // 0.00154296283341 , 0.00155546344754 , 0.00156791207827 , 0.00158030981824 ,
66 // 0.00159265772411 , 0.00160495681814 , 0.00161720808976 , 0.00162941249692 ,
67 // 0.00164157096757 , 0.00165368440081 , 0.00166575366823 , 0.00167777961494 ,
68 // 0.00168976306076 , 0.00170170480119 , 0.00171360560841 , 0.00172546623219 ,
69 // 0.00173728740083 , 0.00174906982191 , 0.00176081418314 , 0.00177252115315 ,
70 // 0.00178419138212 , 0.00179582550256 , 0.00180742412988 , 18.0 };
71 // //
72 // // Normalization w.r.t. p-value of phi=0
73 // //
74 // // chi^2
75 // double ygridArray [101] = { 0.0,
76 // 0.0513551, 0.177438, 0.35228, 0.561353, 0.795726, 1.04953, 1.3187, 1.60032,
77 // 1.89222, 2.19274, 2.50059, 2.81476, 3.13441, 3.45887, 3.78757, 4.12006,
78 // 4.45594, 4.79486, 5.13653, 5.48072, 5.82719, 6.17576, 6.52625, 6.87853,
79 // 7.23244, 7.58789, 7.94475, 8.30294, 8.66236, 9.02294, 9.38462, 9.74731,
80 // 10.111, 10.4755, 10.841, 11.2072, 11.5742, 11.9419, 12.3104, 12.6795, 13.0492,
81 // 13.4195, 13.7904, 14.1619, 14.5339, 14.9063, 15.2793, 15.6527, 16.0266,
82 // 16.4008, 16.7755, 17.1506, 17.5261, 17.9019, 18.2781, 18.6546, 19.0315,
83 // 19.4087, 19.7861, 20.1639, 20.542, 20.9203, 21.2989, 21.6778, 22.0569,
84 // 22.4362, 22.8158, 23.1957, 23.5757, 23.956, 24.3365, 24.7171, 25.098, 25.4791,
85 // 25.8604, 26.2418, 26.6235, 27.0053, 27.3872, 27.7694, 28.1517, 28.5342,
86 // 28.9168, 29.2996, 29.6825, 30.0655, 30.4487, 30.8321, 31.2155, 31.5992,
87 // 31.9829, 32.3667, 32.7507, 33.1348, 33.519, 33.9034, 34.2878, 34.6724,
88 // 35.0571, 350000.0 };
89 // // Convert arrays to vectors.
90 // std::vector<double> xgrid(xgridArray,
91 // xgridArray + sizeof xgridArray / sizeof xgridArray[0]);
92 // std::vector<double> ygrid(ygridArray,
93 // ygridArray + sizeof ygridArray / sizeof ygridArray[0]);
94 // // Construct interpolated function, using GAMBIT base functions.
95 // auto dwarf_likelihood = daFunk::interp("phi", xgrid, ygrid);
96 //
97 // double fraction = *Dep::RD_fraction;
98 //
99 // // Integate spectrum
100 // // (the zero velocity limit of the differential annihilation
101 // // cross-section as function of individual final state photons)
102 // double AnnYieldint = (*Dep::GA_Yield)->
103 // set("v", 0.)->gsl_integration("E", 1, 100)->set_epsabs(0)->set_epsrel(1e-3)->bind()->eval();
104 // logger() << "AnnYieldInt (1-100 GeV): " << AnnYieldint << EOM;
105 //
106 // // Calculate phi-value
107 // double phi = AnnYieldint / 8. / M_PI * 1e26 * fraction * fraction;
108 //
109 // // And return final likelihood
110 // result = 0.5*dwarf_likelihood->bind("phi")->eval(phi);
111 // logger() << "dwarf_likelihood: " << result << EOM;
112 // logger() << "phi: " << phi << EOM;
113 // }
114 
115 
116  // module function which sets the Milky Way halo profile for the gamlike backend
117  void set_gamLike_GC_halo(bool &result)
118  {
119  using namespace Pipes::set_gamLike_GC_halo;
120 
121  daFunk::Funk profile = (Dep::GalacticHalo)->DensityProfile;
122  auto r = daFunk::logspace(-3, 2, 100);
123  auto rho = daFunk::logspace(-3, 2, 100);
124  double dist = (Dep::GalacticHalo)->r_sun;
125  for ( size_t i = 0; i<r.size(); i++ )
126  {
127  rho[i] = profile->bind("r")->eval(r[i]);
128  }
129  BEreq::set_halo_profile(0, r, rho, byVal(dist));
130  result = true;
131  }
132 
133 
136  void lnL_FermiLATdwarfs_gamLike(double &result)
137  {
138  using namespace Pipes::lnL_FermiLATdwarfs_gamLike;
139 
140  double fraction = *Dep::RD_fraction;
141  int mode = 0;
142  result = 0;
143 
145  std::string version = runOptions->getValueOrDef<std::string>("pass8", "version");
146  if ( version == "pass8" ) mode = 1;
147  else if ( version == "pass7" ) mode = 0;
148  else DarkBit_error().raise(LOCAL_INFO, "Fermi LAT dwarf likelihood version unknown.");
149 
150  // from 0.5 to 500 GeV
151  std::vector<double> x = daFunk::logspace(-0.301, 2.699, 100);
152  x = daFunk::augmentSingl(x, (*Dep::GA_Yield)->set("v",0));
153 
154  std::vector<double> y;
155 
156  // Get the correct scaling in terms of rho for annihilation or decay processes.
157  std::string proc = *Dep::DM_process;
158  if (proc == "annihilation")
159  {
160  y = ((*Dep::GA_Yield)/8./M_PI*fraction*fraction)->set("v", 0)->bind("E")->vect(x);
161  }
162  else if (proc == "decay")
163  {
164  DarkBit_error().raise(LOCAL_INFO, "Sorry, decaying DM is not supported yet in gamlike.");
165  y = ((*Dep::GA_Yield)/4./M_PI*fraction)->bind("E")->vect(x);
166  }
167  else
168  {
169  DarkBit_error().raise(LOCAL_INFO, "Process type " + proc + " unknown.");
170  }
171 
172  result = BEreq::lnL(byVal(mode), x, y);
173 
174  logger() << LogTags::debug << "GamLike dSph likelihood is lnL = " << result << EOM;
175  }
176 
177  void lnL_HESSGC_gamLike(double &result)
178  {
179  using namespace Pipes::lnL_HESSGC_gamLike;
180 
181  double fraction = *Dep::RD_fraction;
182  int mode = 0;
183  result = 0;
184 
186  std::string version = runOptions->getValueOrDef<std::string>("spectral_externalJ", "version");
187  if ( version == "integral_fixedJ" ) mode = 6;
188  else if ( version == "spectral_fixedJ" ) mode = 7;
189  else if ( version == "integral_externalJ" ) mode = 9;
190  else if ( version == "spectral_externalJ" ) mode = 10;
191  else DarkBit_error().raise(LOCAL_INFO, "HESS GC likelihood version unknown.");
192 
193  // from 230(265) GeV to 30 TeV
194  std::vector<double> x = daFunk::logspace(2.36, 4.48, 100);
195  x = daFunk::augmentSingl(x, (*Dep::GA_Yield)->set("v",0));
196 
197  std::vector<double> y;
198 
199  // Get the correct scaling in terms of rho for annihilation or decay processes.
200  std::string proc = *Dep::DM_process;
201  if (proc == "annihilation")
202  {
203  y = ((*Dep::GA_Yield)/8./M_PI*fraction*fraction)->set("v", 0)->bind("E")->vect(x);
204  }
205  else if (proc == "decay")
206  {
207  DarkBit_error().raise(LOCAL_INFO, "Sorry, decaying DM is not supported yet in gamlike.");
208  y = ((*Dep::GA_Yield)/4./M_PI*fraction)->bind("E")->vect(x);
209  }
210  else
211  {
212  DarkBit_error().raise(LOCAL_INFO, "Process type " + proc + " unknown.");
213  }
214 
215  result = BEreq::lnL(byVal(mode), x, y);
216 
217  logger() << LogTags::debug << "GamLike HESS GC likelihood is lnL = " << result << EOM;
218  }
219 
220  void lnL_CTAGC_gamLike(double &result)
221  {
222  using namespace Pipes::lnL_CTAGC_gamLike;
223 
224  double fraction = *Dep::RD_fraction;
225  result = 0;
226 
227  // from 25 GeV to 10 TeV
228  std::vector<double> x = daFunk::logspace(1.39, 4.00, 100);
229  x = daFunk::augmentSingl(x, (*Dep::GA_Yield)->set("v",0));
230 
231  std::vector<double> y;
232 
233  // Get the correct scaling in terms of rho for annihilation or decay processes.
234  std::string proc = *Dep::DM_process;
235  if (proc == "annihilation")
236  {
237  y = ((*Dep::GA_Yield)/8./M_PI*fraction*fraction)->set("v", 0)->bind("E")->vect(x);
238  }
239  else if (proc == "decay")
240  {
241  DarkBit_error().raise(LOCAL_INFO, "Sorry, decaying DM is not supported yet in gamlike.");
242  y = ((*Dep::GA_Yield)/4./M_PI*fraction)->bind("E")->vect(x);
243  }
244  else
245  {
246  DarkBit_error().raise(LOCAL_INFO, "Process type " + proc + " unknown.");
247  }
248 
249  result = BEreq::lnL(5, x, y);
250 
251  logger() << LogTags::debug << "GamLike CTA GC likelihood is lnL = " << result << EOM;
252  }
253 
256  void lnL_FermiGC_gamLike(double &result)
257  {
258  using namespace Pipes::lnL_FermiGC_gamLike;
259 
260  double fraction = *Dep::RD_fraction;
261  int mode = 0;
262  result = 0;
263 
265  std::string version = runOptions->getValueOrDef<std::string>("externalJ", "version");
266  if ( version == "fixedJ" ) mode = 2;
267  else if ( version == "margJ" ) mode = 3;
268  else if ( version == "margJ_HEP" ) mode = 4;
269  else if ( version == "externalJ" ) mode = 8;
270  else DarkBit_error().raise(LOCAL_INFO, "Fermi LAT GC likelihood version unknown.");
271 
272  // from 0.3 to 500 GeV
273  std::vector<double> x = daFunk::logspace(-0.523, 2.699, 100);
274  x = daFunk::augmentSingl(x, (*Dep::GA_Yield)->set("v",0));
275 
276  std::vector<double> y;
277 
278  // Get the correct scaling in terms of rho for annihilation or decay processes.
279  std::string proc = *Dep::DM_process;
280  if (proc == "annihilation")
281  {
282  y = ((*Dep::GA_Yield)/8./M_PI*fraction*fraction)->set("v", 0)->bind("E")->vect(x);
283  }
284  else if (proc == "decay")
285  {
286  DarkBit_error().raise(LOCAL_INFO, "Sorry, decaying DM is not supported yet in gamlike.");
287  y = ((*Dep::GA_Yield)/4./M_PI*fraction)->bind("E")->vect(x);
288  }
289  else
290  {
291  DarkBit_error().raise(LOCAL_INFO, "Process type " + proc + " unknown.");
292  }
293 
294  result = BEreq::lnL(byVal(mode), x, y);
295 
296  logger() << LogTags::debug << "GamLike Fermi GC likelihood is lnL = " << result << EOM;
297  }
298 
303  void lnL_oh2_Simple(double &result)
304  {
305  using namespace Pipes::lnL_oh2_Simple;
306  double oh2_theory = *Dep::RD_oh2;
309  double oh2_theoryerr = oh2_theory*runOptions->getValueOrDef<double>(0.05, "oh2_fractional_theory_err");
311  double oh2_obs = runOptions->getValueOrDef<double>(0.1188, "oh2_obs");
313  double oh2_obserr = runOptions->getValueOrDef<double>(0.001, "oh2_obserr");
315  bool profile = runOptions->getValueOrDef<bool>(false, "profile_systematics");
316  result = Stats::gaussian_loglikelihood(oh2_theory, oh2_obs, oh2_theoryerr, oh2_obserr, profile);
317  logger() << LogTags::debug << "lnL_oh2_Simple yields " << result << EOM;
318  }
319 
324  void lnL_oh2_upperlimit(double &result)
325  {
326  using namespace Pipes::lnL_oh2_upperlimit;
327  double oh2_theory = *Dep::RD_oh2;
330  double oh2_theoryerr = oh2_theory*runOptions->getValueOrDef<double>(0.05, "oh2_fractional_theory_err");
332  double oh2_obs = runOptions->getValueOrDef<double>(0.1188, "oh2_obs");
334  double oh2_obserr = runOptions->getValueOrDef<double>(0.001, "oh2_obserr");
336  bool profile = runOptions->getValueOrDef<bool>(false, "profile_systematics");
337  result = Stats::gaussian_upper_limit(oh2_theory, oh2_obs, oh2_theoryerr, oh2_obserr, profile);
338  logger() << LogTags::debug << "lnL_oh2_upperlimit yields " << result << EOM;
339  }
340 
341 
347 
348  void lnL_sigmas_sigmal(double &result)
349  {
350  using namespace Pipes::lnL_sigmas_sigmal;
351  double sigmas = *Param["sigmas"];
352  double sigmal = *Param["sigmal"];
354  double sigmas_obs = runOptions->getValueOrDef<double>(43., "sigmas_obs");
356  double sigmas_obserr = runOptions->getValueOrDef<double>(8., "sigmas_obserr");
358  double sigmal_obs = runOptions->getValueOrDef<double>(58., "sigmal_obs");
360  double sigmal_obserr = runOptions->getValueOrDef<double>(9., "sigmal_obserr");
362  bool profile = runOptions->getValueOrDef<bool>(false, "profile_systematics");
363 
364  result = Stats::gaussian_loglikelihood(sigmas, sigmas_obs, 0, sigmas_obserr, profile)
365  + Stats::gaussian_loglikelihood(sigmal, sigmal_obs, 0, sigmal_obserr, profile);
366  logger() << LogTags::debug << "lnL for SI nuclear parameters is " << result << EOM;
367  }
368 
378  void lnL_deltaq(double &result)
379  {
380  using namespace Pipes::lnL_deltaq;
381  double deltad = *Param["deltad"];
382  double deltau = *Param["deltau"];
383  double deltas = *Param["deltas"];
384  double a3 = deltau - deltad;
385  double a8 = deltau + deltad - 2*deltas;
386 
388  double a3_obs = runOptions->getValueOrDef<double>(1.2723, "a3_obs");
390  double a3_obserr = runOptions->getValueOrDef<double>(0.0023, "a3_obserr");
392  double a8_obs = runOptions->getValueOrDef<double>(0.585, "a8_obs");
394  double a8_obserr = runOptions->getValueOrDef<double>(0.025, "a8_obserr");
396  double deltas_obs = runOptions->getValueOrDef<double>(-0.09, "deltas_obs");
398  double deltas_obserr = runOptions->getValueOrDef<double>(0.03, "deltas_obserr");
400  bool profile = runOptions->getValueOrDef<bool>(false, "profile_systematics");
401 
402  result = Stats::gaussian_loglikelihood(a3, a3_obs, 0, a3_obserr, profile) +
403  Stats::gaussian_loglikelihood(a8, a8_obs, 0, a8_obserr, profile) +
404  Stats::gaussian_loglikelihood(deltas, deltas_obs, 0, deltas_obserr, profile);
405  }
406 
411 
412  void lnL_rho0_lognormal(double &result)
413  {
414  using namespace Pipes::lnL_rho0_lognormal;
415  LocalMaxwellianHalo LocalHaloParameters = *Dep::LocalHalo;
416  double rho0 = LocalHaloParameters.rho0;
418  double rho0_obs = runOptions->getValueOrDef<double>(.4, "rho0_obs");
420  double rho0_obserr = runOptions->getValueOrDef<double>(.15, "rho0_obserr");
422  bool profile = runOptions->getValueOrDef<bool>(false, "profile_systematics");
423 
424  result = Stats::lognormal_loglikelihood(rho0, rho0_obs, 0.,
425  rho0_obserr, profile);
426  logger() << LogTags::debug << "lnL_rho0 yields " << result << EOM;
427  }
428 
429  void lnL_vrot_gaussian(double &result)
430  {
431  using namespace Pipes::lnL_vrot_gaussian;
432  LocalMaxwellianHalo LocalHaloParameters = *Dep::LocalHalo;
433  double vrot = LocalHaloParameters.vrot;
435  double vrot_obs = runOptions->getValueOrDef<double>(235, "vrot_obs");
437  double vrot_obserr = runOptions->getValueOrDef<double>(20, "vrot_obserr");
439  bool profile = runOptions->getValueOrDef<bool>(false, "profile_systematics");
440  result = Stats::gaussian_loglikelihood(vrot, vrot_obs, 0., vrot_obserr, profile);
441  logger() << LogTags::debug << "lnL_vrot yields " << result << EOM;
442  }
443 
444  void lnL_v0_gaussian(double &result)
445  {
446  using namespace Pipes::lnL_v0_gaussian;
447  LocalMaxwellianHalo LocalHaloParameters = *Dep::LocalHalo;
448  double v0 = LocalHaloParameters.v0;
450  double v0_obs = runOptions->getValueOrDef<double>(235, "v0_obs");
452  double v0_obserr = runOptions->getValueOrDef<double>(20, "v0_obserr");
454  bool profile = runOptions->getValueOrDef<bool>(false, "profile_systematics");
455  result = Stats::gaussian_loglikelihood(v0, v0_obs, 0., v0_obserr, profile);
456  logger() << LogTags::debug << "lnL_v0 yields " << result << EOM;
457  }
458 
459  void lnL_vesc_gaussian(double &result)
460  {
461  using namespace Pipes::lnL_vesc_gaussian;
462  LocalMaxwellianHalo LocalHaloParameters = *Dep::LocalHalo;
463  double vesc = LocalHaloParameters.vesc;
465  double vesc_obs = runOptions->getValueOrDef<double>(550, "vesc_obs");
467  double vesc_obserr = runOptions->getValueOrDef<double>(35, "vesc_obserr");
469  bool profile = runOptions->getValueOrDef<bool>(false, "profile_systematics");
470  result = Stats::gaussian_loglikelihood(vesc, vesc_obs, 0., vesc_obserr, profile);
471  logger() << LogTags::debug << "lnL_vesc yields " << result << EOM;
472  }
473 
475  void dump_GammaSpectrum(double &result)
476  {
477  using namespace Pipes::dump_GammaSpectrum;
478  daFunk::Funk spectrum = (*Dep::GA_Yield)->set("v", 0.);
479  // Option filename<string>: Filename for gamma-ray spectrum dump
480  // (default: dNdE.dat)
481  std::string filename = runOptions->getValueOrDef<std::string>(
482  "dNdE.dat", "filename");
483  logger() << "FILENAME for gamma dump: " << filename << EOM;
484  std::ofstream myfile (filename);
485  if (myfile.is_open())
486  {
487  for (int i = 0; i<=1200; i++)
488  {
489  double energy = pow(10., i/200. - 4.);
490 
491  myfile << energy << " " << spectrum->bind("E")->eval(energy) << "\n";
492  }
493  myfile.close();
494  }
495  result = 0.;
496  }
497  }
498 }
void lnL_FermiGC_gamLike(double &result)
Fermi LAT galactic center likelihoods, using gamLike backend.
error & DarkBit_error()
void lnL_sigmas_sigmal(double &result)
Likelihoods for spin independent nuclear parameters.
void lnL_oh2_upperlimit(double &result)
Likelihood for cosmological relic density constraints, implemented as an upper limit only Default dat...
START_MODEL r_sun
#define LOCAL_INFO
Definition: local_info.hpp:34
double gaussian_loglikelihood(double theory, double obs, double theoryerr, double obserr, bool profile_systematics)
Use a detection to compute a simple chi-square-like log likelihood, for the case when obs is Gaussian...
Definition: statistics.cpp:133
void dump_GammaSpectrum(double &result)
Helper function to dump gamma-ray spectra.
START_MODEL v0
void lnL_deltaq(double &result)
Likelihoods for spin dependent nuclear parameters.
void lnL_v0_gaussian(double &result)
START_MODEL vesc
void lnL_oh2_Simple(double &result)
Likelihood for cosmological relic density constraints.
Declarations of statistical utilities.
double gaussian_upper_limit(double theory, double obs, double theoryerr, double obserr, bool profile_systematics)
Use a detection to compute a gaussian log-likelihood for an upper limit.
Definition: statistics.cpp:184
void lnL_FermiLATdwarfs_gamLike(double &result)
Fermi LAT dwarf likelihoods, using gamLike backend.
std::vector< double > logspace(double x0, double x1, unsigned int n)
Definition: daFunk.hpp:186
void lnL_rho0_lognormal(double &result)
Likelihoods for halo parameters.
const Logging::endofmessage EOM
Explicit const instance of the end of message struct in Gambit namespace.
Definition: logger.hpp:100
void set_gamLike_GC_halo(bool &result)
Fermi LAT dwarf likelihoods, based on arXiv:1108.2914.
Header file that includes all GAMBIT headers required for a module source file.
EXPORT_SYMBOLS Logging::LogMaster & logger()
Function to retrieve a reference to the Gambit global log object.
Definition: logger.cpp:95
START_MODEL deltau
START_MODEL dNur_CMB r
void lnL_vesc_gaussian(double &result)
START_MODEL vrot
void lnL_vrot_gaussian(double &result)
Rollcall header for module DarkBit.
void lnL_HESSGC_gamLike(double &result)
double pow(const double &a)
Outputs a^i.
double lognormal_loglikelihood(double theory, double obs, double theoryerr, double obserr, bool profile_systematics)
Use a detection to compute a simple chi-square-like log likelihood, for the case when obs is log-norm...
Definition: statistics.cpp:154
std::vector< double > augmentSingl(const std::vector< double > &xgrid, Funk f, int N=100, double sigma=3)
Definition: daFunk.hpp:1714
T byVal(T t)
Redirection function to turn an lvalue into an rvalue, so that it is correctly passed by value when d...
def profile(file_name, frac_error=0.1, min_=0., max_=1., log_normal=True)
shared_ptr< FunkBase > Funk
Definition: daFunk.hpp:113
void lnL_CTAGC_gamLike(double &result)
TODO: see if we can use this one:
Definition: Analysis.hpp:33