28 streamlog_out(ERROR) <<
"ProcessorEventSeeder:registerProcessor( Processor* proc ) called from Processor: "
29 << proc->
name() <<
std::endl <<
"The method registerProcessor( Processor* proc ) must be called in the init() method of the Processor"
32 throw Exception(
"ProcessorEventSeeder: Event Processing has already started. registerProcessor( Processor* proc ) must be called in the init() method");
37 streamlog_out(DEBUG) <<
"ProcessorEventSeeder: srand initialised with global seed " <<
_global_seed <<
std::endl;
40 streamlog_out(DEBUG) <<
"ProcessorEventSeeder: Processor " << proc->
name()
41 <<
" registered for random seed service. Allocated "
51 unsigned int seed = 0 ;
52 unsigned int eventNumber = evt->getEventNumber() ;
53 unsigned int runNumber = evt->getRunNumber() ;
55 unsigned char * c = (
unsigned char *) &eventNumber ;
58 c = (
unsigned char *) &runNumber ;
65 if ( seed == 1 ) seed = 123456789 ;
67 streamlog_out(DEBUG) <<
"ProcessorEventSeeder: Refresh Seeds using " << seed <<
" as seed for srand( seed )" <<
std::endl;
72 pairProcSeed.second = rand();
std::vector< std::pair< Processor *, unsigned int > > _vector_pair_proc_seed
vector to hold pair of pointers to the registered processors and their assigned seeds ...
virtual const std::string & name() const
Return name of this processor.
int _global_seed
Global seed for current Job.
unsigned jenkins_hash(unsigned char *k, unsigned length, unsigned initval)
bool _global_seed_set
Global seed has been set for current Job.
void refreshSeeds(LCEvent *evt)
Create new set of seeds for registered Processors for the given event.
static StringParameters * parameters
unsigned int getSeed(Processor *proc)
Called by Processors to obtain seed assigned to it for the current event.
int getIntVal(const std::string &key)
bool _eventProcessingStarted
bool to ensure no calls of registerProcessor( Processor* proc ) after Event Processesing has started ...
void registerProcessor(Processor *proc)
Called by Processors to register themselves for the seeding service.
ProcessorEventSeeder()
Constructor.
Base class for Marlin processors.