ATLAS Offline Software
Loading...
Searching...
No Matches
Rand4Hits_cpu.cxx
Go to the documentation of this file.
1#include <random>
2#include <vector>
3#include <algorithm>
4
5#define cpu_randgen_t std::mt19937
6
7void Rand4Hits::createCPUGen( unsigned long long seed ) {
8 cpu_randgen_t* eng = new cpu_randgen_t( seed );
9 m_gen = (void*)eng;
10}
11
13 if ( m_gen ) { delete (cpu_randgen_t*)m_gen; }
14}
15
16float* Rand4Hits::genCPU( size_t num ) {
17 m_rnd_cpu.resize( num );
18
20
21 auto RNG = [eng]( float low, float high ) {
22 auto randomFunc = [distribution_ = std::uniform_real_distribution<float>( low, high ),
23 random_engine_ = *eng]() mutable { return distribution_( random_engine_ ); };
24 return randomFunc;
25 };
26
27 std::generate_n( m_rnd_cpu.begin(), num, RNG( 0.f, 1.f ) );
28
29 return m_rnd_cpu.data();
30}
#define cpu_randgen_t
void destroyCPUGen()
void createCPUGen(unsigned long long seed)
void * m_gen
Definition Rand4Hits.h:67
std::vector< float > m_rnd_cpu
Definition Rand4Hits.h:80
float * genCPU(size_t num)