Implementation of the "perEvent" policy. More...
#include <PerEventPolicy.h>
Public Types | |
enum | SeedAlgo_t { saEventTimestamp_v1, NAlgos, saUndefined, saDefault = saEventTimestamp_v1 } |
using | base_t = RandomSeedPolicyBase< SEED > |
using | this_t = PerEventPolicy< SEED > |
using | seed_t = typename base_t::seed_t |
using | EventData_t = NuRandomServiceHelper::EventSeedInputData |
type for contextual event information More... | |
Public Types inherited from rndm::details::RandomSeedPolicyBase< SEED > | |
using | seed_t = SEED |
type of the random seed More... | |
using | EventData_t = NuRandomServiceHelper::EventSeedInputData |
type of data used for event seeds More... | |
using | seed_t = SEED |
type of the random seed More... | |
using | EventData_t = NuRandomServiceHelper::EventSeedInputData |
type of data used for event seeds More... | |
Public Member Functions | |
PerEventPolicy (fhicl::ParameterSet const &pset) | |
virtual bool | yieldsUniqueSeeds () const override |
Returns whether the returned seed should be unique: for us it "no". More... | |
virtual void | configure (fhicl::ParameterSet const &pset) override |
Configure this policy. More... | |
virtual void | print (std::ostream &out) const override |
Prints the details of the configuration of the random generator. More... | |
Public Member Functions inherited from rndm::details::RandomSeedPolicyBase< SEED > | |
RandomSeedPolicyBase (std::string policy_name) | |
Constructor; requires the policy name. More... | |
virtual | ~RandomSeedPolicyBase () |
virtual seed_t | getSeed (SeedMasterHelper::EngineId const &id) |
Returns the next random number. More... | |
virtual seed_t | getEventSeed (SeedMasterHelper::EngineId const &id, EventData_t const &eventInfo) |
Returns a random number specific to an event. More... | |
std::string | getName () const |
Returns the given name of the policy. More... | |
RandomSeedPolicyBase (std::string policy_name) | |
Constructor; requires the policy name. More... | |
virtual | ~RandomSeedPolicyBase () |
virtual seed_t | getSeed (SeedMasterHelper::EngineId const &id) |
Returns the next random number. More... | |
virtual seed_t | getEventSeed (SeedMasterHelper::EngineId const &id, EventData_t const &eventInfo) |
Returns a random number specific to an event. More... | |
std::string | getName () const |
Returns the given name of the policy. More... | |
Static Public Member Functions | |
template<typename Hashable > | |
static seed_t | SeedFromHash (Hashable const &info) |
Converts some information into a valid seed by means of hash values. More... | |
static std::string | UniqueEventIDString (EventData_t const &info) |
Converts run, subrun and event numbers into a string. More... | |
static std::string | UniqueEventString (EventData_t const &info) |
Converts event ID and timestamp information into a string. More... | |
Static Public Attributes | |
static constexpr const char * | DefaultVersion = "v1" |
Default algorithm version. More... | |
Static Public Attributes inherited from rndm::details::RandomSeedPolicyBase< SEED > | |
static constexpr seed_t | InvalidSeed = 0 |
An invalid seed. More... | |
Private Types | |
using | SeedOffset_t = typename std::make_signed< seed_t >::type |
type for seed offset More... | |
Private Member Functions | |
virtual seed_t | createSeed (SeedMasterHelper::EngineId const &) override |
Per-job seed: invalid seeds are returned. More... | |
virtual seed_t | createEventSeed (SeedMasterHelper::EngineId const &id, EventData_t const &info) override |
Returns a seed proper for the specified event information. More... | |
Static Private Member Functions | |
template<typename T > | |
static seed_t | makeValid (T value) |
Renders a seed valid. More... | |
static seed_t | EventTimestamp_v1 (SeedMasterHelper::EngineId const &id, EventData_t const &info) |
Implementation of the EventTimestamp_v1 algorithm. More... | |
Private Attributes | |
SeedAlgo_t | algo |
the algorithm to extract the seed More... | |
SeedOffset_t | offset |
offset added to all the seeds More... | |
static const std::vector< std::string > | algoNames = PerEventPolicy<SEED>::InitAlgoNames() |
Algorithm name (manual) handling. More... | |
static std::vector< std::string > | InitAlgoNames () |
Additional Inherited Members | |
Protected Attributes inherited from rndm::details::RandomSeedPolicyBase< SEED > | |
std::string | name |
name of the policy More... | |
Implementation of the "perEvent" policy.
This policy extracts seeds depending on contextual information from the event. The information that enters the seed is the event ID (run, subrun, event), the process name, and the engine ID.
Definition at line 45 of file PerEventPolicy.h.
using rndm::details::PerEventPolicy< SEED >::base_t = RandomSeedPolicyBase<SEED> |
Definition at line 47 of file PerEventPolicy.h.
using rndm::details::PerEventPolicy< SEED >::EventData_t = NuRandomServiceHelper::EventSeedInputData |
type for contextual event information
Definition at line 52 of file PerEventPolicy.h.
using rndm::details::PerEventPolicy< SEED >::seed_t = typename base_t::seed_t |
Definition at line 49 of file PerEventPolicy.h.
|
private |
type for seed offset
Definition at line 109 of file PerEventPolicy.h.
using rndm::details::PerEventPolicy< SEED >::this_t = PerEventPolicy<SEED> |
Definition at line 48 of file PerEventPolicy.h.
enum rndm::details::PerEventPolicy::SeedAlgo_t |
Enumerator | |
---|---|
saEventTimestamp_v1 |
event timestamp algorithm (v1) |
NAlgos |
total number of seed algorithms |
saUndefined |
algorithm not defined |
saDefault |
default algorithm |
Definition at line 54 of file PerEventPolicy.h.
|
inline |
Configures from a parameter set
Definition at line 63 of file PerEventPolicy.h.
|
overridevirtual |
Configure this policy.
pset | the parameter set for the configuration |
Parameters:
Reimplemented from rndm::details::RandomSeedPolicyBase< SEED >.
Definition at line 218 of file PerEventPolicy.h.
|
overrideprivatevirtual |
Returns a seed proper for the specified event information.
id | random number engine ID (moule label and instance name) |
info | event information |
The algorithm used to combine the provided information into a seed is defined by the configuration. The following algorithms are supported:
Reimplemented from rndm::details::RandomSeedPolicyBase< SEED >.
Definition at line 260 of file PerEventPolicy.h.
|
inlineoverrideprivatevirtual |
Per-job seed: invalid seeds are returned.
Implements rndm::details::RandomSeedPolicyBase< SEED >.
Definition at line 116 of file PerEventPolicy.h.
|
staticprivate |
Implementation of the EventTimestamp_v1 algorithm.
Definition at line 197 of file PerEventPolicy.h.
|
staticprivate |
Definition at line 158 of file PerEventPolicy.h.
|
inlinestaticprivate |
|
overridevirtual |
Prints the details of the configuration of the random generator.
Reimplemented from rndm::details::RandomSeedPolicyBase< SEED >.
Definition at line 248 of file PerEventPolicy.h.
|
inlinestatic |
Converts some information into a valid seed by means of hash values.
Definition at line 97 of file PerEventPolicy.h.
|
static |
Converts run, subrun and event numbers into a string.
Definition at line 176 of file PerEventPolicy.h.
|
static |
Converts event ID and timestamp information into a string.
Definition at line 187 of file PerEventPolicy.h.
|
inlineoverridevirtual |
Returns whether the returned seed should be unique: for us it "no".
Reimplemented from rndm::details::RandomSeedPolicyBase< SEED >.
Definition at line 67 of file PerEventPolicy.h.
|
private |
the algorithm to extract the seed
Definition at line 111 of file PerEventPolicy.h.
|
staticprivate |
Algorithm name (manual) handling.
Definition at line 146 of file PerEventPolicy.h.
|
static |
Default algorithm version.
Definition at line 92 of file PerEventPolicy.h.
|
private |
offset added to all the seeds
Definition at line 113 of file PerEventPolicy.h.