Page MenuHomeHEPForge

test_NeymanPearsonWindow1D.cc
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

test_NeymanPearsonWindow1D.cc

#include <cmath>
#include "UnitTest++.h"
#include "test_utils.hh"
#include "npstat/stat/neymanPearsonWindow1D.hh"
#include "npstat/stat/Distributions1D.hh"
using namespace npstat;
namespace {
TEST(neymanPearsonWindow1D)
{
const double tol = 1.0e-12;
const double mean = 4.0;
const double sigma = 1.0;
const double thresh = 1.5;
Gauss1D s(mean, sigma);
Uniform1D u(0.0, 10.0);
double left, right;
NeymanPearson::Status ls, rs;
const int status = neymanPearsonWindow1D(s, u, mean, sigma, thresh,
&left, &ls, &right, &rs);
CHECK_EQUAL(0, status);
CHECK(ls == NeymanPearson::OK);
CHECK(rs == NeymanPearson::OK);
const double udens = u.density(u.quantile(0.5));
const double deltasq = -2.0*sigma*sigma*log(thresh*udens*sigma*sqrt(2.0*M_PI));
CHECK(deltasq >= 0.0);
if (deltasq >= 0.0)
{
const double delta = sqrt(deltasq);
CHECK_CLOSE(mean-delta, left, tol);
CHECK_CLOSE(mean+delta, right, tol);
}
}
TEST(signalToBgMaximum1D)
{
const unsigned ncycles = 100;
const double tol1 = 1.0e-6;
const double tol2 = 1.0e-12;
const double mean = 4.0;
const double sigma = 1.0;
Gauss1D s(mean, sigma);
Uniform1D u(0.0, 10.0);
const double udens = u.density(u.quantile(0.5));
const double gmax = s.density(s.quantile(0.5));
const double expratio = gmax/udens;
for (unsigned icycle=0; icycle<ncycles; ++icycle)
{
double pos = 0.0, rat = 0.0;
NeymanPearson::Status stat;
const double start = (test_rng()*6 - 3)*sigma + mean;
const int status = signalToBgMaximum1D(s, u, start, 0.1*sigma,
&pos, &rat, &stat);
CHECK_EQUAL(0, status);
CHECK(stat == NeymanPearson::OK);
CHECK_CLOSE(mean, pos, tol1);
CHECK_CLOSE(expratio, rat, tol2);
}
}
}

File Metadata

Mime Type
text/x-c
Expires
Tue, Sep 30, 6:12 AM (17 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
6560756
Default Alt Text
test_NeymanPearsonWindow1D.cc (2 KB)

Event Timeline