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 Types inherited from art::EDAnalyzer | |
using | WorkerType = WorkerT< EDAnalyzer > |
using | ModuleType = EDAnalyzer |
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... | |
Public Member Functions inherited from art::EDAnalyzer | |
EDAnalyzer (fhicl::ParameterSet const &pset) | |
template<typename Config > | |
EDAnalyzer (Table< Config > const &config) | |
std::string | workerType () const |
Public Member Functions inherited from art::detail::Analyzer | |
virtual | ~Analyzer () noexcept |
Analyzer (fhicl::ParameterSet const &pset) | |
template<typename Config > | |
Analyzer (Table< Config > const &config) | |
void | doBeginJob (SharedResources const &resources) |
void | doEndJob () |
void | doRespondToOpenInputFile (FileBlock const &fb) |
void | doRespondToCloseInputFile (FileBlock const &fb) |
void | doRespondToOpenOutputFiles (FileBlock const &fb) |
void | doRespondToCloseOutputFiles (FileBlock const &fb) |
bool | doBeginRun (RunPrincipal &rp, ModuleContext const &mc) |
bool | doEndRun (RunPrincipal &rp, ModuleContext const &mc) |
bool | doBeginSubRun (SubRunPrincipal &srp, ModuleContext const &mc) |
bool | doEndSubRun (SubRunPrincipal &srp, ModuleContext const &mc) |
bool | doEvent (EventPrincipal &ep, ModuleContext const &mc, std::atomic< std::size_t > &counts_run, std::atomic< std::size_t > &counts_passed, std::atomic< std::size_t > &counts_failed) |
Public Member Functions inherited from art::Observer | |
~Observer () noexcept | |
Observer (Observer const &)=delete | |
Observer (Observer &&)=delete | |
Observer & | operator= (Observer const &)=delete |
Observer & | operator= (Observer &&)=delete |
void | registerProducts (ProductDescriptions &, ModuleDescription const &) |
void | fillDescriptions (ModuleDescription const &) |
fhicl::ParameterSetID | selectorConfig () const |
Public Member Functions inherited from art::ModuleBase | |
virtual | ~ModuleBase () noexcept |
ModuleBase () | |
ModuleDescription const & | moduleDescription () const |
void | setModuleDescription (ModuleDescription const &) |
std::array< std::vector< ProductInfo >, NumBranchTypes > const & | getConsumables () const |
void | sortConsumables (std::string const ¤t_process_name) |
template<typename T , BranchType BT> | |
ViewToken< T > | consumesView (InputTag const &tag) |
template<typename T , BranchType BT> | |
ViewToken< T > | mayConsumeView (InputTag const &tag) |
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... | |
Additional Inherited Members | |
Protected Member Functions inherited from art::Observer | |
std::string const & | processName () const |
bool | wantAllEvents () const noexcept |
bool | wantEvent (ScheduleID id, Event const &e) const |
Handle< TriggerResults > | getTriggerResults (Event const &e) const |
Observer (fhicl::ParameterSet const &config) | |
Observer (std::vector< std::string > const &select_paths, std::vector< std::string > const &reject_paths, fhicl::ParameterSet const &config) | |
Protected Member Functions inherited from art::ModuleBase | |
ConsumesCollector & | consumesCollector () |
template<typename T , BranchType = InEvent> | |
ProductToken< T > | consumes (InputTag const &) |
template<typename Element , BranchType = InEvent> | |
ViewToken< Element > | consumesView (InputTag const &) |
template<typename T , BranchType = InEvent> | |
void | consumesMany () |
template<typename T , BranchType = InEvent> | |
ProductToken< T > | mayConsume (InputTag const &) |
template<typename Element , BranchType = InEvent> | |
ViewToken< Element > | mayConsumeView (InputTag const &) |
template<typename T , BranchType = InEvent> | |
void | mayConsumeMany () |
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.