ATLAS Offline Software
Loading...
Searching...
No Matches
Rand4Hits_cpu.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4#include <random>
5#include <vector>
6#include <algorithm>
7
8#define cpu_randgen_t std::mt19937
9
10void Rand4Hits::createCPUGen( unsigned long long seed ) {
11 cpu_randgen_t* eng = new cpu_randgen_t( seed );
12 m_gen = (void*)eng;
13}
14
16 if ( m_gen ) { delete (cpu_randgen_t*)m_gen; }
17}
18
19float* Rand4Hits::genCPU( size_t num ) {
20 m_rnd_cpu.resize( num );
21
23
24 auto RNG = [eng]( float low, float high ) {
25 auto randomFunc = [distribution_ = std::uniform_real_distribution<float>( low, high ),
26 &random_engine_ = *eng]() mutable { return distribution_( random_engine_ ); };
27 return randomFunc;
28 };
29
30 std::generate_n( m_rnd_cpu.begin(), num, RNG( 0.f, 1.f ) );
31
32 return m_rnd_cpu.data();
33}
#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)