Auxiliary interface for pseudo experiment.
More...
#include <JPseudoExperiment.hh>
|
| virtual void | set (const double fS, const double fB=1.0)=0 |
| | Set scaling factors of signal and background strengths.
|
| |
| virtual JAspera & | getAspera ()=0 |
| | Get fit method.
|
| |
| virtual stats_type | run (JAspera &out) const =0 |
| | Generate pseudo experiment and transfer S/N values to fit method.
|
| |
| virtual stats_type | run (JAspera &out, const size_t nb) const =0 |
| | Generate background only pseudo experiment and transfer S/N values to fit method.
|
| |
| result_type | operator() () |
| | Generate pseudo experiment and fit signal strength.
|
| |
| result_type | operator() (const size_t nb) |
| | Generate background only pseudo experiment and fit signal strength.
|
| |
| void | operator() (std::vector< result_type > &storage) |
| | Run pseudo experiments using given storage.
|
| |
| template<class T , class JValue_t > |
| void | operator() (JValue_t result_type::*pm, std::vector< T > &storage) |
| | Run pseudo experiments using given storage.
|
| |
| template<class T , class JValue_t > |
| void | operator() (JValue_t JAspera::fit_type::*pm, std::vector< T > &storage) |
| | Run pseudo experiments using given storage.
|
| |
| double | getSignalStrengthForUpperLimit (const JAspera &aspera, const double Q, const size_t numberOfTests, const double precision=1.0e-4) |
| | Get signal strength given result of experiment and probability of upper limit.
|
| |
|
| static double | getSNR () |
| | Get minimal signa-to-noise ratio.
|
| |
| static void | setSNR (const double value) |
| | Set minimal signa-to-noise ratio.
|
| |
| static bool | check (const double s, const double b) |
| | Check validity of signal and background.
|
| |
| static bool | check (const TAxis *ha, const TAxis *hb) |
| | Check histogram bins.
|
| |
| static bool | check (const TH1 &ha, const TH1 &hb) |
| | Check histogram bins.
|
| |
| static bool | check (const TH2 &ha, const TH2 &hb) |
| | Check histogram bins.
|
| |
| static bool | check (const TH3 &ha, const TH3 &hb) |
| | Check histogram bins.
|
| |
|
| double | getProbabilityForUpperLimit (const double ps, const double ts, const size_t nx) const |
| | Get probability for given pseudo experiment and signal strength to exceed minimal test statistic for upper limit.
|
| |
|
| static double & | get_snr () |
| | Get minimal signa-to-noise ratio.
|
| |
Auxiliary interface for pseudo experiment.
Definition at line 36 of file JPseudoExperiment.hh.
◆ fit_type
◆ set()
| virtual void JASTRONOMY::JPseudoExperiment_t::set |
( |
const double | fS, |
|
|
const double | fB = 1.0 ) |
|
pure virtual |
◆ getAspera()
| virtual JAspera & JASTRONOMY::JPseudoExperiment_t::getAspera |
( |
| ) |
|
|
pure virtual |
◆ run() [1/2]
◆ run() [2/2]
| virtual stats_type JASTRONOMY::JPseudoExperiment_t::run |
( |
JAspera & | out, |
|
|
const size_t | nb ) const |
|
pure virtual |
◆ operator()() [1/5]
| result_type JASTRONOMY::JPseudoExperiment_t::operator() |
( |
| ) |
|
|
inline |
Generate pseudo experiment and fit signal strength.
- Returns
- result
Definition at line 115 of file JPseudoExperiment.hh.
116 {
118
119
120
121 aspera.clear();
122 aspera.setSignal(0.0);
123
124 return {
run(aspera), aspera() };
125 }
virtual JAspera & getAspera()=0
Get fit method.
virtual stats_type run(JAspera &out) const =0
Generate pseudo experiment and transfer S/N values to fit method.
◆ operator()() [2/5]
| result_type JASTRONOMY::JPseudoExperiment_t::operator() |
( |
const size_t | nb | ) |
|
|
inline |
Generate background only pseudo experiment and fit signal strength.
- Parameters
-
| nb | number of background events |
- Returns
- result
Definition at line 134 of file JPseudoExperiment.hh.
135 {
137
138
139
140 aspera.clear();
141 aspera.setSignal(0.0);
142
143 return {
run(aspera, nb), aspera() };
144 }
◆ operator()() [3/5]
Run pseudo experiments using given storage.
- Parameters
-
Definition at line 152 of file JPseudoExperiment.hh.
153 {
154 for (auto& i : storage) {
155 i = (*this)();
156 }
157 }
◆ operator()() [4/5]
template<class T , class JValue_t >
| void JASTRONOMY::JPseudoExperiment_t::operator() |
( |
JValue_t result_type::* | pm, |
|
|
std::vector< T > & | storage ) |
|
inline |
Run pseudo experiments using given storage.
- Parameters
-
| pm | pointer to data member of result |
| storage | storage |
Definition at line 167 of file JPseudoExperiment.hh.
168 {
169 for (auto& i : storage) {
170 i = (*this)().*pm;
171 }
172 }
◆ operator()() [5/5]
template<class T , class JValue_t >
| void JASTRONOMY::JPseudoExperiment_t::operator() |
( |
JValue_t JAspera::fit_type::* | pm, |
|
|
std::vector< T > & | storage ) |
|
inline |
Run pseudo experiments using given storage.
- Parameters
-
| pm | pointer to data member of result |
| storage | storage |
Definition at line 182 of file JPseudoExperiment.hh.
183 {
184 (*this)(static_cast<JValue_t result_type::*>(pm), storage);
185 }
◆ getSignalStrengthForUpperLimit()
| double JASTRONOMY::JPseudoExperiment_t::getSignalStrengthForUpperLimit |
( |
const JAspera & | aspera, |
|
|
const double | Q, |
|
|
const size_t | numberOfTests, |
|
|
const double | precision = 1.0e-4 ) |
|
inline |
Get signal strength given result of experiment and probability of upper limit.
- Parameters
-
| aspera | result of experiment |
| Q | probability |
| numberOfTests | number of tests |
| precision | precision |
- Returns
- signal strength
Definition at line 201 of file JPseudoExperiment.hh.
205 {
207
208 const JAspera::fit_type
result = aspera(
true);
209
211
213
214 for (size_t i = 0; i != numberOfTests; ++i) {
215
216 JAspera aspera;
217
219
220 if (aspera(
true).signal <
result.signal) {
222 }
223 }
224
225 if (n > (1.0 - Q) * numberOfTests) {
226
227 double mumin = 1.0;
228 double mumax = 1.0;
229
230 {
231 for ( ; ; mumax *= 2.0) {
232
233 const double ts = aspera.getTestStatisticForUpperLimit(mumax);
234
236
238
240 break;
241 }
242 }
243 }
244
245 if (mumax == 1.0) {
246
247 mumin = 0.5*mumax;
248
249 for ( ; ; mumin *= 0.5) {
250
251 const double ts = aspera.getTestStatisticForUpperLimit(mumin);
252
254
256
258 break;
259 }
260 }
261
262 mumax = 2.0*mumin;
263
264 } else {
265
266 mumin = 0.5*mumax;
267 }
268
270 return mumin;
272 return mumax;
273 else {
274
275 for ( ; ; ) {
276
277 const double mu = 0.5 * (mumin + mumax);
278
279 const double ts = aspera.getTestStatisticForUpperLimit(mu);
280
282
284
285 if (fabs(ps - (1.0 - Q)) <= precision) {
286 return mu;
287 }
288
289 if (ps >= 1.0 - Q)
290 mumin = mu;
291 else
292 mumax = mu;
293 }
294 }
295 }
296
297 return 0.0;
298 }
static constexpr double MINIMAL_SIGNAL_STRENGTH
double getProbabilityForUpperLimit(const double ps, const double ts, const size_t nx) const
Get probability for given pseudo experiment and signal strength to exceed minimal test statistic for ...
virtual void set(const double fS, const double fB=1.0)=0
Set scaling factors of signal and background strengths.
static constexpr double MAXIMAL_SIGNAL_STRENGTH
◆ getProbabilityForUpperLimit()
| double JASTRONOMY::JPseudoExperiment_t::getProbabilityForUpperLimit |
( |
const double | ps, |
|
|
const double | ts, |
|
|
const size_t | nx ) const |
|
inlineprotected |
Get probability for given pseudo experiment and signal strength to exceed minimal test statistic for upper limit.
- Parameters
-
| ps | signal strength |
| ts | test statistic |
| nx | number of pseudo experiments |
Definition at line 308 of file JPseudoExperiment.hh.
311 {
312 size_t ns = 0;
313
314 for (size_t i = 0; i != nx; ++i) {
315
316 JAspera aspera;
317
319
320 if (ps <= std::numeric_limits<double>::min()) {
321
322 if (aspera().signal <= ps) {
323 ns += 1;
324 }
325
326 } else if (aspera.getTestStatisticForUpperLimit(ps) > ts) {
327 ns += 1;
328 }
329 }
330
331 return (double) ns / (double) nx;
332 }
◆ getSNR()
| static double JASTRONOMY::JExperiment::getSNR |
( |
| ) |
|
|
inlinestaticinherited |
Get minimal signa-to-noise ratio.
- Returns
- signa-to-noise ratio.
Definition at line 32 of file JExperiment.hh.
33 {
35 }
static double & get_snr()
Get minimal signa-to-noise ratio.
◆ setSNR()
| static void JASTRONOMY::JExperiment::setSNR |
( |
const double | value | ) |
|
|
inlinestaticinherited |
Set minimal signa-to-noise ratio.
- Parameters
-
| value | signa-to-noise ratio. |
Definition at line 43 of file JExperiment.hh.
◆ check() [1/5]
| static bool JASTRONOMY::JExperiment::check |
( |
const double | s, |
|
|
const double | b ) |
|
inlinestaticinherited |
Check validity of signal and background.
- Parameters
-
- Returns
- true if signal and backgroud are valid; else false
Definition at line 56 of file JExperiment.hh.
57 {
58 return (s > 0.0 && b > 0.0 && s/b >=
getSNR());
59 }
static double getSNR()
Get minimal signa-to-noise ratio.
◆ check() [2/5]
| static bool JASTRONOMY::JExperiment::check |
( |
const TAxis * | ha, |
|
|
const TAxis * | hb ) |
|
inlinestaticinherited |
Check histogram bins.
- Parameters
-
| ha | histogram axis |
| hb | histogram axis |
- Returns
- true if same binning; else false
Definition at line 69 of file JExperiment.hh.
70 {
71 return (ha->GetNbins() == hb->GetNbins() &&
72 ha->GetXmin() == hb->GetXmin() &&
73 ha->GetXmax() == hb->GetXmax());
74 }
◆ check() [3/5]
| static bool JASTRONOMY::JExperiment::check |
( |
const TH1 & | ha, |
|
|
const TH1 & | hb ) |
|
inlinestaticinherited |
Check histogram bins.
- Parameters
-
- Returns
- true if same binning; else false
Definition at line 83 of file JExperiment.hh.
84 {
85 return check(ha.GetXaxis(), hb.GetXaxis());
86 }
static bool check(const double s, const double b)
Check validity of signal and background.
◆ check() [4/5]
| static bool JASTRONOMY::JExperiment::check |
( |
const TH2 & | ha, |
|
|
const TH2 & | hb ) |
|
inlinestaticinherited |
Check histogram bins.
- Parameters
-
- Returns
- true if same binning; else false
Definition at line 96 of file JExperiment.hh.
97 {
98 return (
check(ha.GetXaxis(), hb.GetXaxis()) &&
99 check(ha.GetYaxis(), hb.GetYaxis()));
100 }
◆ check() [5/5]
| static bool JASTRONOMY::JExperiment::check |
( |
const TH3 & | ha, |
|
|
const TH3 & | hb ) |
|
inlinestaticinherited |
Check histogram bins.
- Parameters
-
- Returns
- true if same binning; else false
Definition at line 110 of file JExperiment.hh.
111 {
112 return (
check(ha.GetXaxis(), hb.GetXaxis()) &&
113 check(ha.GetYaxis(), hb.GetYaxis()) &&
114 check(ha.GetZaxis(), hb.GetZaxis()));
115 }
◆ get_snr()
| static double & JASTRONOMY::JExperiment::get_snr |
( |
| ) |
|
|
inlinestaticprivateinherited |
Get minimal signa-to-noise ratio.
- Returns
- signa-to-noise ratio.
Definition at line 123 of file JExperiment.hh.
124 {
125 static double value = 0.0;
126
127 return value;
128 }
◆ MINIMAL_SIGNAL_STRENGTH
| double JASTRONOMY::JPseudoExperiment_t::MINIMAL_SIGNAL_STRENGTH = 1.0e-10 |
|
staticconstexpr |
◆ MAXIMAL_SIGNAL_STRENGTH
| double JASTRONOMY::JPseudoExperiment_t::MAXIMAL_SIGNAL_STRENGTH = 1.0e+10 |
|
staticconstexpr |
The documentation for this struct was generated from the following file: