LCOV - code coverage report
Current view: top level - bnmin1/src - priors.cc (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 0 52 0.0 %
Date: 2024-10-12 00:35:29 Functions: 0 16 0.0 %

          Line data    Source code
       1             : /**
       2             :    Bojan Nikolic <bojan@bnikolic.co.uk>, <b.nikolic@mrao.cam.ac.uk>
       3             : 
       4             :    \file priors.cxx
       5             :    Renamed to priors.cc 2023
       6             : 
       7             : */
       8             : 
       9             : #include "priors.h"
      10             : 
      11             : #include "paramalgo.h"
      12             : #include <cmath>
      13             : 
      14             : namespace Minim {
      15             : 
      16             :   const double PriorNLikelihood::lkl_h=1e9;
      17           0 :   PriorNLikelihood::PriorNLikelihood(MLikelihood * mod):
      18           0 :     _mod(mod)
      19             :   {
      20           0 :   }
      21             : 
      22           0 :   PriorNLikelihood::~PriorNLikelihood()
      23             :   {
      24           0 :   }
      25             : 
      26           0 :   void  PriorNLikelihood::AddParams (std::vector< Minim::DParamCtr > &pars)
      27             :   {
      28           0 :     _mod->AddParams(pars);
      29           0 :   }
      30             : 
      31           0 :   IndependentPriors::IndependentPriors(MLikelihood * mod):
      32           0 :     PriorNLikelihood(mod)    
      33             :   {
      34           0 :     AddParams(_mpars);
      35           0 :   }
      36             : 
      37           0 :   IndependentPriors::~IndependentPriors(void)
      38             :   {
      39           0 :   }
      40             : 
      41           0 :   void IndependentPriors::AddPrior( const std::string & pname,
      42             :                                     double low,
      43             :                                     double high)
      44             :   {
      45             :     fprior_t pr;
      46             :     
      47           0 :     DParamCtr * par=findName(_mpars,pname);
      48           0 :     if (par == NULL)
      49           0 :       throw ParamError(pname+" not found");
      50           0 :     pr.p=par->p;
      51           0 :     pr.pmin=low;
      52           0 :     pr.pmax=high;
      53           0 :     priorlist.push_back(pr);
      54           0 :   }
      55             : 
      56           0 :   double IndependentFlatPriors::pprob(void) const
      57             :   {
      58           0 :     double lpriorprop = 0 ;
      59           0 :     for (priorlist_t::const_iterator i = pbegin();
      60           0 :          i != pend();
      61           0 :          ++i)
      62             :     {
      63           0 :       const double p = * (i->p);
      64           0 :       if (p < i->pmin or p > i->pmax)
      65           0 :         lpriorprop += lkl_h;
      66             :     }
      67           0 :     return lpriorprop;
      68             :   }
      69             : 
      70           0 :   IndependentFlatPriors::IndependentFlatPriors(MLikelihood * mod):
      71           0 :     IndependentPriors(mod)
      72             :   {
      73           0 :   }
      74             :   
      75           0 :   IndependentFlatPriors::~IndependentFlatPriors(void)
      76             :   {
      77           0 :   }
      78             : 
      79           0 :   LogFlatPriors::LogFlatPriors(MLikelihood * mod):
      80           0 :     IndependentPriors(mod)
      81             :   {
      82           0 :   }
      83             :   
      84           0 :   LogFlatPriors::~LogFlatPriors(void)
      85             :   {
      86           0 :   }
      87             : 
      88           0 :   double LogFlatPriors::pprob(void) const
      89             :   {
      90           0 :     double lpriorprop = 0 ;
      91           0 :     for (priorlist_t::const_iterator i = pbegin();
      92           0 :          i != pend();
      93           0 :          ++i)
      94             :     {
      95           0 :       const double p = * (i->p);
      96           0 :       if (p < i->pmin or p > i->pmax)
      97             :       {
      98           0 :         lpriorprop += lkl_h;
      99             :       }
     100             :       else
     101             :       {
     102           0 :         lpriorprop += std::log(p);
     103             :       }
     104             :     }
     105           0 :     return lpriorprop;
     106             :   }
     107             : 
     108             : 
     109             : }
     110             : 

Generated by: LCOV version 1.16