Computes pi (but it does not make it available) More...
Public Types | |
using | Counter_t = unsigned long long |
type used for integral counters More... | |
using | Seed_t = std::default_random_engine::result_type |
type for seed and random numbers More... | |
Public Member Functions | |
ComputePi (fhicl::ParameterSet const &p) | |
virtual | ~ComputePi ()=default |
virtual void | analyze (const art::Event &) override |
double | best_pi () const |
Returns the current best estimation of pi. More... | |
Counter_t | best_pi_tries () const |
Returns the current best estimation of pi. More... | |
Static Public Attributes | |
static const char * | VersionString = "1.0" |
version of the algorithm More... | |
Private Attributes | |
Counter_t | samples |
number of samples to try on each event More... | |
Seed_t | seed |
number of digits to compute More... | |
bool | bFixed |
whether the random sequence is always the same More... | |
bool | bVerbose |
whether to put stuff on screen More... | |
std::default_random_engine | generator |
random generator More... | |
Counter_t | hits = 0 |
total number of hits More... | |
Counter_t | tries = 0 |
total number of tries (samples) More... | |
Computes pi (but it does not make it available)
This module performs a extensive computation whose duration can be indirectly controlled by a parameter. The time taken is supposed to be independent from the framework. This is meant to help establish an absolute time scale.
The module performs some Monte Carlo integration to compute pi. The same number of cycles is used regardless the result. We use a simple pseudo-random generator (std::linear_congruential_engine
) with a constant extraction time (and poor randomness quality, and a period so small that in about 20 events the sequence might repeat itself). The fluctuations of the result don't reflect a fluctuation in time.
A test performed on uboonegpvm06,fnal.gov on August 19th, 2014 on 1000 events with Ksamples=50000 (i.e., 50M samples per event), default seed and verbosity on took 0.9179 +/- 0.0009 s, with an RMS of ~3%. It was observed that processing time asymptotically decreased.
Parameters
Definition at line 52 of file ComputePi_module.cc.
using lar::ComputePi::Counter_t = unsigned long long |
type used for integral counters
Definition at line 54 of file ComputePi_module.cc.
using lar::ComputePi::Seed_t = std::default_random_engine::result_type |
type for seed and random numbers
Definition at line 56 of file ComputePi_module.cc.
|
explicit |
Definition at line 100 of file ComputePi_module.cc.
|
virtualdefault |
|
overridevirtual |
Definition at line 114 of file ComputePi_module.cc.
|
inline |
Returns the current best estimation of pi.
Definition at line 65 of file ComputePi_module.cc.
|
inline |
Returns the current best estimation of pi.
Definition at line 69 of file ComputePi_module.cc.
|
private |
whether the random sequence is always the same
Definition at line 77 of file ComputePi_module.cc.
|
private |
whether to put stuff on screen
Definition at line 78 of file ComputePi_module.cc.
|
private |
random generator
Definition at line 80 of file ComputePi_module.cc.
|
private |
total number of hits
Definition at line 81 of file ComputePi_module.cc.
|
private |
number of samples to try on each event
Definition at line 75 of file ComputePi_module.cc.
|
private |
number of digits to compute
Definition at line 76 of file ComputePi_module.cc.
|
private |
total number of tries (samples)
Definition at line 82 of file ComputePi_module.cc.
|
static |
version of the algorithm
Definition at line 72 of file ComputePi_module.cc.