Jpp 20.0.0-rc.6
the software that should make you happy
Loading...
Searching...
No Matches
JASTRONOMY::JDiscovery< T, factor > Struct Template Reference

Auxiliary data structure for discovery calculations. More...

#include <JAstronomyToolkit.hh>

Inheritance diagram for JASTRONOMY::JDiscovery< T, factor >:
JASTRONOMY::JGarage< T, factor > std::vector< std::vector< T > >

Public Types

typedef std::vector< std::vector< T > > map_type
 
typedef map_type::value_type value_type
 
typedef map_type::const_iterator const_iterator
 
typedef map_type::const_reverse_iterator const_reverse_iterator
 

Public Member Functions

 JDiscovery (JPseudoExperiment_t &px)
 Constructor.
 
double operator() (const double Q, const double P, const size_t numberOfTests, const double precision=1.0e-3)
 Get signal strength for which given likelihood is exceeded with given probability.
 
size_t getN () const
 Get total number of values.
 
getMin () const
 Get minimal value.
 
getMax () const
 Get maximal value.
 
void put (const T value)
 Add value to container.
 
void put (const size_t N, const JFunction_t &object)
 Add values to container.
 
void operator() (const JFunction_t &object) const
 For-each method.
 
getValue (const double P) const
 Get minimal value corresponding given maximal probability.
 
double getProbability (const T value) const
 Get maximal probability corresponding given minimal value.
 

Static Public Member Functions

static size_t getKey (const T value)
 Get hash key corresponding to given value.
 

Protected Member Functions

double getProbability (const double fS, const double Q, const size_t numberOfTests)
 Run pseudo experiments to get probability corresponding to given minimal likelihood.
 

Protected Attributes

JPseudoExperiment_tpx
 

Detailed Description

template<class T, const size_t factor>
struct JASTRONOMY::JDiscovery< T, factor >

Auxiliary data structure for discovery calculations.

Definition at line 22 of file JAstronomyToolkit.hh.

Member Typedef Documentation

◆ map_type

std::vector< std::vector<T> > JASTRONOMY::JGarage< T, factor >::map_type
inherited

Definition at line 31 of file JGarage.hh.

◆ value_type

map_type::value_type JASTRONOMY::JGarage< T, factor >::value_type
inherited

Definition at line 32 of file JGarage.hh.

◆ const_iterator

map_type::const_iterator JASTRONOMY::JGarage< T, factor >::const_iterator
inherited

Definition at line 33 of file JGarage.hh.

◆ const_reverse_iterator

map_type::const_reverse_iterator JASTRONOMY::JGarage< T, factor >::const_reverse_iterator
inherited

Definition at line 34 of file JGarage.hh.

Constructor & Destructor Documentation

◆ JDiscovery()

template<class T , const size_t factor>
JASTRONOMY::JDiscovery< T, factor >::JDiscovery ( JPseudoExperiment_t & px)
inline

Constructor.

Parameters
pxpseudo experiment

Definition at line 32 of file JAstronomyToolkit.hh.

32 :
33 px(px)
34 {}
JPseudoExperiment_t & px

Member Function Documentation

◆ operator()() [1/2]

template<class T , const size_t factor>
double JASTRONOMY::JDiscovery< T, factor >::operator() ( const double Q,
const double P,
const size_t numberOfTests,
const double precision = 1.0e-3 )
inline

Get signal strength for which given likelihood is exceeded with given probability.

Parameters
Qlikelihood
Pprobability [0,1>
numberOfTestsnumber of tests
precisionprecision of signal strength
Returns
signal strength

Definition at line 46 of file JAstronomyToolkit.hh.

50 {
51 double xmin = 1.0;
52 double xmax = 2.0;
53
54 while (getProbability(xmin, Q, numberOfTests) > P) { // set lower limit
55 xmax = xmin;
56 xmin *= 0.5;
57 }
58
59 while (getProbability(xmax, Q, numberOfTests) < P) { // set upper limit
60 xmin = xmax;
61 xmax *= 2.0;
62 }
63
64 while (xmax - xmin > precision) { // bisection
65
66 const double x = 0.5 * (xmin + xmax);
67
68 if (getProbability(x, Q, numberOfTests) < P)
69 xmin = x;
70 else
71 xmax = x;
72 }
73
74 return 0.5 * (xmin + xmax);
75 }
double getProbability(const double fS, const double Q, const size_t numberOfTests)
Run pseudo experiments to get probability corresponding to given minimal likelihood.

◆ getProbability() [1/2]

template<class T , const size_t factor>
double JASTRONOMY::JDiscovery< T, factor >::getProbability ( const double fS,
const double Q,
const size_t numberOfTests )
inlineprotected

Run pseudo experiments to get probability corresponding to given minimal likelihood.

Parameters
fSsignal strength
Qlikelihood
numberOfTestsnumber of tests
Returns
probability

Definition at line 86 of file JAstronomyToolkit.hh.

89 {
90 px.set(fS);
91
92 this->clear();
93
94 for (size_t i = 0; i != numberOfTests; ++i) {
95 this->put(px().likelihood);
96 }
97
98 return this->getProbability(Q);
99 }
void put(const T value)
Definition JGarage.hh:105
virtual void set(const double fS, const double fB=1.0)=0
Set scaling factors of signal and background strengths.

◆ getN()

size_t JASTRONOMY::JGarage< T, factor >::getN ( ) const
inlineinherited

Get total number of values.

Returns
number of values

Definition at line 42 of file JGarage.hh.

43 {
44 using namespace std;
45
46 return accumulate(this->begin(), this->end(), 0, [](const size_t n, const value_type& buffer) { return n + buffer.size(); });
47 }
void accumulate(T &value, JBool< false > option)
Accumulation of value.
const int n
Definition JPolint.hh:791

◆ getMin()

T JASTRONOMY::JGarage< T, factor >::getMin ( ) const
inlineinherited

Get minimal value.

Returns
value

Definition at line 55 of file JGarage.hh.

56 {
57 using namespace std;
58
59 for (const_iterator i = this->begin(); i != this->end(); ++i) {
60 if (!i->empty()) {
61 return *min_element(i->begin(), i->end());
62 }
63 }
64
65 throw length_error("No data.");
66 }
map_type::const_iterator const_iterator
Definition JGarage.hh:33

◆ getMax()

T JASTRONOMY::JGarage< T, factor >::getMax ( ) const
inlineinherited

Get maximal value.

Returns
value

Definition at line 74 of file JGarage.hh.

75 {
76 using namespace std;
77
78 for (const_reverse_iterator i = this->rbegin(); i != this->rend(); ++i) {
79 if (!i->empty()) {
80 return *max_element(i->begin(), i->end());
81 }
82 }
83
84 throw length_error("No data.");
85 }
map_type::const_reverse_iterator const_reverse_iterator
Definition JGarage.hh:34

◆ getKey()

static size_t JASTRONOMY::JGarage< T, factor >::getKey ( const T value)
inlinestaticinherited

Get hash key corresponding to given value.

Parameters
valuevalue
Returns
key

Definition at line 94 of file JGarage.hh.

95 {
96 return value * factor;
97 }

◆ put() [1/2]

void JASTRONOMY::JGarage< T, factor >::put ( const T value)
inlineinherited

Add value to container.

Parameters
valuevalue

Definition at line 105 of file JGarage.hh.

106 {
107 const size_t index = getKey(value);
108
109 if (index >= this->size()) {
110 this->resize(index + 1);
111 }
112
113 (*this)[index].push_back(value);
114 }
static size_t getKey(const T value)
Definition JGarage.hh:94

◆ put() [2/2]

void JASTRONOMY::JGarage< T, factor >::put ( const size_t N,
const JFunction_t & object )
inlineinherited

Add values to container.

Parameters
Nnumber of values
objectfunction object returning value

Definition at line 124 of file JGarage.hh.

125 {
126 for (size_t i = 0; i != N; ++i) {
127 this->put(object());
128 }
129 }

◆ operator()() [2/2]

void JASTRONOMY::JGarage< T, factor >::operator() ( const JFunction_t & object) const
inlineinherited

For-each method.

Parameters
objectfunction object

Definition at line 138 of file JGarage.hh.

139 {
140 for (const_iterator i = this->begin(); i != this->end(); ++i) {
141 for (const T x : *i) {
142 object(x);
143 }
144 }
145 }

◆ getValue()

T JASTRONOMY::JGarage< T, factor >::getValue ( const double P) const
inlineinherited

Get minimal value corresponding given maximal probability.

Parameters
Pprobability [0,1>
Returns
value

Definition at line 154 of file JGarage.hh.

155 {
156 using namespace std;
157
158 if (P < 0.0 || P > 1.0) {
159 throw out_of_range("Invalid probability.");
160 }
161
162 const size_t N = this->getN();
163 const size_t M = N - (P * N);
164
165 if (N == 0) {
166 throw length_error("No data.");
167 }
168
169 if (M == 0) { return getMin(); }
170 if (M == N) { return getMax(); }
171
172 size_t n = N;
173
174 const_reverse_iterator q = this->rbegin();
175
176 while ((n -= q->size()) > M) {
177 ++q;
178 }
179
180 value_type buffer(q->begin(), q->end());
181
182 typename value_type::iterator p = next(buffer.begin(), M - n);
183
184 nth_element(buffer.begin(), p, buffer.end());
185
186 return *p;
187 }

◆ getProbability() [2/2]

double JASTRONOMY::JGarage< T, factor >::getProbability ( const T value) const
inlineinherited

Get maximal probability corresponding given minimal value.

Parameters
valuevalue
Returns
probability

Definition at line 196 of file JGarage.hh.

197 {
198 using namespace std;
199
200 const size_t N = this->getN();
201 const int M = getKey(value);
202
203 if (N == 0) {
204 throw length_error("No data.");
205 }
206
207 size_t n = 0;
208 int i = this->size() - 1;
209
210 for ( ; i != -1 && i > M; --i) {
211 n += (*this)[i].size();
212 }
213
214 if (i != -1) {
215 for (const T x : (*this)[i]) {
216 if (x >= value) {
217 n += 1;
218 }
219 }
220 }
221
222 return (double) n / (double) N;
223 }

Member Data Documentation

◆ px

template<class T , const size_t factor>
JPseudoExperiment_t& JASTRONOMY::JDiscovery< T, factor >::px
protected

Definition at line 101 of file JAstronomyToolkit.hh.


The documentation for this struct was generated from the following file: