ATLAS Offline Software
Loading...
Searching...
No Matches
Athena_test Namespace Reference

functions & macros to test the difference between floats More...

Classes

class  DummyRCUSvc
class  InitGaudi
 Generic test fixture to setup Gaudi. More...
class  InitGaudiGoogleTest
struct  Leakcheck
struct  LeakCheckDisable
class  normal_distribution
struct  RNG
 Generator compatible with the STL RandomNumberGenerator. More...
class  TestAlloc
 To test handling of non-standard memory allocators. More...
class  TestedValue
class  uniform_real_distribution
struct  URNG
 Generator compatible with the C++11 STL UniformRandomNumberGenerator. More...

Functions

bool initGaudi (ISvcLocator *&pSvcLoc)
 Minimal Gaudi initialization for unit testing without job options.
bool initGaudi (const std::string &jobOptsFile, ISvcLocator *&pSvcLoc)
 Minimal Gaudi initialization for unit testing.
void referenceGaudiSymbols ()
template<typename T>
bool cmp_eq (T a, T b)
template<>
bool cmp_eq< float > (float a, float b)
template<>
bool cmp_eq< double > (double a, double b)
template<class U>
const U & val_form (const U &x)
 Helpers for error message formatting.
template<class U>
const void * val_form (const U *x)
template<class U>
const void * val_form (U *x)
std::string val_form (const StatusCode &x)
bool floatEQ (float lhs, float rhs)
bool floatNEQ (float lhs, float rhs)
bool isEqual (double x1, double x2, double thresh=1e-6)
uint32_t rng_seed (uint32_t &seed)
 Generate a random number between 0 and rngmax.
float randf_seed (uint32_t &seed, float rmax, float rmin=0)
 Generate a floating-point random number between rmin and rmax.
int randi_seed (uint32_t &seed, int rmax, int rmin=0)
 Generate an integer random number between rmin and rmax.
uint32_t rng ATLAS_NOT_REENTRANT ()
int randi ATLAS_NOT_REENTRANT (int rmax, int rmin=0)
float randf ATLAS_NOT_REENTRANT (float rmax, float rmin=0)
bool setupStoreGate (std::string progname, std::string options_file="")
 Helper for setting up StoreGate for regression tests.
void testCreate (StoreGateSvc &rSG)
void testRecord (StoreGateSvc &rSG)
void testSymLink (StoreGateSvc &rSG)
void test_symlink2 (StoreGateSvc &rSG)
void test_symlink3 (StoreGateSvc &rSG)
void testContains (StoreGateSvc &rSG)
void testFolders (StoreGateSvc &rSG)
void testRetrieve (StoreGateSvc &rSG)
void testTryRetrieve (StoreGateSvc &rSG)
void testReadPrivateCopy (StoreGateSvc &rSG)
void testRetrievePrivateCopy (StoreGateSvc &rSG)
void testRemove (StoreGateSvc &rSG)
void testClear (StoreGateSvc &rSG)
void testTransientSwap (StoreGateSvc &rSG)
void testKeys (StoreGateSvc &rSG)
void testRetrieveAux (StoreGateSvc &rSG)
void testBoundReset (StoreGateSvc &rSG)
void testRecordObject (StoreGateSvc &rSG)
void testWriteAux (StoreGateSvc &rSG)
void varHandleTest (SGTest::TestStore &)
void resetableTest (void)
void refCountTest (void)
bool initMcEventCollection (ISvcLocator *&pSvcLoc, std::vector< HepMC::GenParticlePtr > &genPartVector, const bool initGaudi=true)
void populateGenEvent (HepMC::GenEvent &ge, int pdgid1, int pdgid2, std::vector< HepMC::GenParticlePtr > &genPartVector)
void populateFilteredGenEvent (HepMC::GenEvent &ge, std::vector< HepMC::GenParticlePtr > &genPartVector)
int maximumBarcode (std::vector< HepMC::GenParticlePtr > &genPartList)

Variables

std::unordered_set< void * > * allocs = nullptr
static const uint32_t rngmax = static_cast<uint32_t> (-1)
 Maximum number generated.
static uint32_t seed = 1

Detailed Description

functions & macros to test the difference between floats

Function Documentation

◆ ATLAS_NOT_REENTRANT() [1/3]

uint32_t rng Athena_test::ATLAS_NOT_REENTRANT ( )
inline

Definition at line 90 of file random.h.

90{ return rng_seed(seed); }
static uint32_t seed
Definition random.h:88
uint32_t rng_seed(uint32_t &seed)
Generate a random number between 0 and rngmax.
Definition random.h:44

◆ ATLAS_NOT_REENTRANT() [2/3]

float randf Athena_test::ATLAS_NOT_REENTRANT ( float rmax,
float rmin = 0 )
inline

Definition at line 94 of file random.h.

94{ return randf_seed (seed, rmax, rmin); }
float randf_seed(uint32_t &seed, float rmax, float rmin=0)
Generate a floating-point random number between rmin and rmax.
Definition random.h:53

◆ ATLAS_NOT_REENTRANT() [3/3]

int randi Athena_test::ATLAS_NOT_REENTRANT ( int rmax,
int rmin = 0 )
inline

Definition at line 92 of file random.h.

92{ return randi_seed (seed, rmax, rmin); }
int randi_seed(uint32_t &seed, int rmax, int rmin=0)
Generate an integer random number between rmin and rmax.
Definition random.h:61

◆ cmp_eq()

template<typename T>
bool Athena_test::cmp_eq ( T a,
T b )

Definition at line 22 of file expect.h.

22{ return a == b; }
static Double_t a

◆ cmp_eq< double >()

template<>
bool Athena_test::cmp_eq< double > ( double a,
double b )

Definition at line 26 of file expect.h.

26{ return std::abs(a - b) < 1.e-6; }

◆ cmp_eq< float >()

template<>
bool Athena_test::cmp_eq< float > ( float a,
float b )

Definition at line 24 of file expect.h.

24{ return std::abs(a - b) < 1.e-4; }

◆ floatEQ()

bool Athena_test::floatEQ ( float lhs,
float rhs )
inline

Definition at line 17 of file FLOATassert.h.

17 {
18 return fabs(lhs-rhs)<=FLT_EPSILON;
19 }

◆ floatNEQ()

bool Athena_test::floatNEQ ( float lhs,
float rhs )
inline

Definition at line 21 of file FLOATassert.h.

21 {
22 return fabs(lhs-rhs)>FLT_EPSILON;
23 }

◆ initGaudi() [1/2]

bool Athena_test::initGaudi ( const std::string & jobOptsFile,
ISvcLocator *& pSvcLoc )

Minimal Gaudi initialization for unit testing.

Parameters
jobOptsFilejob options file name
pSvcLocreturns a pointer to the Gaudi ServiceLocator
Returns
true on success, false on failure

Definition at line 30 of file initGaudi.cxx.

30 {
31
32 std::string jobOptsPath;
33 if (!jobOptsFile.empty()) {
34 jobOptsPath = System::PathResolver::find_file(jobOptsFile, "JOBOPTSEARCHPATH");
35 if (jobOptsPath.empty()) {
36 std::println ("\n\nCannot find job opts {}", jobOptsFile);
37 }
38 else {
39 std::println ("\n\nInitializing Gaudi ApplicationMgr using job opts {}", jobOptsPath);
40 }
41 }
42
43 // Create an instance of ApplicationMgr
44 SmartIF<IAppMgrUI> appMgr = Gaudi::createApplicationMgr();
45 if(!appMgr.isValid()) {
46 std::println ("Fatal error while creating the ApplicationMgr ");
47 return false;
48 }
49
50 SmartIF<IProperty> propMgr(appMgr);
51 SmartIF<ISvcLocator> svcLoc(appMgr);
52 if(!svcLoc.isValid() || !propMgr.isValid()) {
53 std::println ("Fatal error while retrieving AppMgr interfaces ");
54 return false;
55 }
56
57 // Return pointer to ISvcLocator
58 pSvcLoc = svcLoc.get();
59
60 propMgr->setProperty( "EvtSel", "NONE" ).
61 orThrow("Cannnot set EvtSel property", "initGaudi");
62 if (jobOptsFile.empty()) {
63 propMgr->setProperty( "JobOptionsType", "NONE" ).
64 orThrow("Cannnot set JobOptionsType property", "initGaudi");
65 } else {
66 propMgr->setProperty( "JobOptionsType", "FILE" ).
67 orThrow("Cannnot set JobOptionsType property", "initGaudi");
68 propMgr->setProperty( "JobOptionsPath", jobOptsPath ).
69 orThrow("Cannnot set JobOptionsPath property", "initGaudi");
70 }
71
72 if (appMgr->configure().isSuccess() && appMgr->initialize().isSuccess()) {
73 std::println ("ApplicationMgr Ready");
74 return true;
75 } else {
76 std::println ("Fatal error while initializing the AppMgr");
77 return false;
78 }
79 }

◆ initGaudi() [2/2]

bool Athena_test::initGaudi ( ISvcLocator *& pSvcLoc)

Minimal Gaudi initialization for unit testing without job options.

Parameters
pSvcLocreturns a pointer to the Gaudi ServiceLocator
Returns
true on success, false on failure

Definition at line 25 of file initGaudi.cxx.

25 {
26 return initGaudi({}, pSvcLoc);
27 }
bool initGaudi(ISvcLocator *&pSvcLoc)
Minimal Gaudi initialization for unit testing without job options.
Definition initGaudi.cxx:25

◆ initMcEventCollection()

bool Athena_test::initMcEventCollection ( ISvcLocator *& pSvcLoc,
std::vector< HepMC::GenParticlePtr > & genPartVector,
const bool initGaudi = true )

Definition at line 24 of file initMcEventCollection.cxx.

25 {
26 if (initGaudi && !Athena_test::initGaudi(pSvcLoc)) {
27 std::cerr << "This test can not be run" << std::endl;
28 return false;
29 }
30 // create dummy input McEventCollection with a name that
31 // HepMcParticleLink knows about
32 SG::WriteHandle<McEventCollection> inputTestDataHandle{"TruthEvent"};
33 inputTestDataHandle = std::make_unique<McEventCollection>();
34
35 // Add a dummy GenEvent
36 const int process_id1(20);
37 const int event_number1(17);
38 inputTestDataHandle->push_back(HepMC::newGenEvent(process_id1, event_number1));
39 HepMC::GenEvent& ge1 = *(inputTestDataHandle->at(0));
40 populateGenEvent(ge1,-11,11,genPartList);
41 populateGenEvent(ge1,-13,13,genPartList);
42 populateGenEvent(ge1,-11,11,genPartList);
43 populateGenEvent(ge1,-13,13,genPartList);
44 populateGenEvent(ge1,-11,11,genPartList);
45 populateGenEvent(ge1,22,22,genPartList);
46 inputTestDataHandle->push_back(new HepMC::GenEvent(ge1));
47 HepMC::GenEvent& ge2 = *(inputTestDataHandle->at(1));
48 const int event_number2(89);
49 ge2.set_event_number(event_number2);
50 populateFilteredGenEvent(ge2,genPartList);
51 return true;
52 }
void populateGenEvent(HepMC::GenEvent &ge, int pdgid1, int pdgid2, std::vector< HepMC::GenParticlePtr > &genPartVector)
void populateFilteredGenEvent(HepMC::GenEvent &ge, std::vector< HepMC::GenParticlePtr > &genPartVector)
GenEvent * newGenEvent(const int signal_process_id, const int event_number)
Definition GenEvent.h:360
HepMC3::GenEvent GenEvent
Definition GenEvent.h:39

◆ isEqual()

bool Athena_test::isEqual ( double x1,
double x2,
double thresh = 1e-6 )
inline

Definition at line 26 of file FLOATassert.h.

27 {
28 double den = std::abs(x1+x2);
29 if (den < thresh) return true;
30 double diff = std::abs (x1-x2) / den;
31 if (diff < thresh)
32 return true;
33 std::println ("Match failure: {} {} ({})", x1, x2, diff);
34 return false;
35 }
void diff(const TrigCaloCluster &a, const TrigCaloCluster &b, std::map< std::string, double > &varChange)

◆ maximumBarcode()

int Athena_test::maximumBarcode ( std::vector< HepMC::GenParticlePtr > & genPartList)

Definition at line 54 of file initMcEventCollection.cxx.

55 {
56 int maxBarcode{0};
57 if (genPartList.empty()) { return maxBarcode; }
58 for (HepMC::GenParticlePtr genPart : genPartList)
59 {
60 maxBarcode = std::max(maxBarcode, HepMC::barcode(genPart));
61 }
62 return maxBarcode;
63 }
int barcode(const T *p)
Definition Barcode.h:15
HepMC3::GenParticlePtr GenParticlePtr
Definition GenParticle.h:19

◆ populateFilteredGenEvent()

void Athena_test::populateFilteredGenEvent ( HepMC::GenEvent & ge,
std::vector< HepMC::GenParticlePtr > & genPartVector )

< set decay status

Definition at line 93 of file initMcEventCollection.cxx.

94 {
95 //.......Create new particle (geantino) to link hits from pileup
97 genPart->set_pdg_id(999); //Geantino
98 genPart->set_status(1);
100
102 genVertex->add_particle_out(genPart);
103 genPartVector.push_back(genPart);
104
105 //to set geantino vertex as a truth primary vertex
107 if (hScatVx!=nullptr) {
108 HepMC::FourVector pmvxpos=hScatVx->position();
109 genVertex->set_position(pmvxpos);
110 //to set geantino kinematic phi=eta=0, E=p=E_hard_scat
111 auto itrp =hScatVx->particles_in().cbegin();
112 if (hScatVx->particles_in().size()==2) {
113 HepMC::FourVector mom1=(*itrp)->momentum();
114 HepMC::FourVector mom2=(*(++itrp))->momentum();
115 HepMC::FourVector vxmom;
116 vxmom.setPx(mom1.e()+mom2.e());
117 vxmom.setPy(0.);
118 vxmom.setPz(0.);
119 vxmom.setE(mom1.e()+mom2.e());
120 genPart->set_momentum(vxmom);
121 }
122 }
123
124 if (!ge.vertices().empty()) {
125 std::vector<HepMC::GenVertexPtr> vtxvec;
126 for (const auto& vtx: ge.vertices()) {
127 vtxvec.push_back(vtx);
128 ge.remove_vertex(vtx);
129 }
130 vtxvec.clear();
131 }
132
133 //.....add new vertex with geantino
134 ge.add_vertex(std::move(genVertex));
136 }
ConstGenVertexPtr barcode_to_vertex(const GenEvent *e, int id)
Definition GenEvent.h:403
HepMC3::FourVector FourVector
constexpr int SUPPRESSED_PILEUP_BARCODE(std::numeric_limits< int32_t >::max())
This barcode is used by objects matched to particles from pile-up interactions in standard MC Product...
GenParticlePtr newGenParticlePtr(const HepMC3::FourVector &mom=HepMC3::FourVector::ZERO_VECTOR(), int pid=0, int status=0)
Definition GenParticle.h:21
bool suggest_barcode(T &p, int i)
Definition GenEvent.h:607
GenVertexPtr newGenVertexPtr(const HepMC3::FourVector &pos=HepMC3::FourVector::ZERO_VECTOR(), const int i=0)
Definition GenVertex.h:25
HepMC3::GenVertexPtr GenVertexPtr
Definition GenVertex.h:23

◆ populateGenEvent()

void Athena_test::populateGenEvent ( HepMC::GenEvent & ge,
int pdgid1,
int pdgid2,
std::vector< HepMC::GenParticlePtr > & genPartVector )

Definition at line 65 of file initMcEventCollection.cxx.

66 {
67 int maxBarcode = maximumBarcode(genPartList);
68 HepMC::FourVector myPos( 0.0, 0.0, 0.0, 0.0);
69 HepMC::GenVertexPtr myVertex = HepMC::newGenVertexPtr( myPos, -1 );
70 HepMC::FourVector fourMomentum1( 0.0, 0.0, 1.0, 1.0*CLHEP::TeV);
71 HepMC::GenParticlePtr inParticle1 = HepMC::newGenParticlePtr(fourMomentum1, pdgid1, 2);
72 myVertex->add_particle_in(inParticle1);
73 HepMC::FourVector fourMomentum2( 0.0, 0.0, -1.0, 1.0*CLHEP::TeV);
74 HepMC::GenParticlePtr inParticle2 = HepMC::newGenParticlePtr(fourMomentum2, pdgid2, 2);
75 myVertex->add_particle_in(inParticle2);
76 HepMC::FourVector fourMomentum3( 0.0, 1.0, 0.0, 1.0*CLHEP::TeV);
77 HepMC::GenParticlePtr inParticle3 = HepMC::newGenParticlePtr(fourMomentum3, pdgid1, 1);
78 myVertex->add_particle_out(inParticle3);
79 genPartList.push_back(inParticle3);
80 HepMC::FourVector fourMomentum4( 0.0, -1.0, 0.0, 1.0*CLHEP::TeV);
81 HepMC::GenParticlePtr inParticle4 = HepMC::newGenParticlePtr(fourMomentum4, pdgid2, 1);
82 myVertex->add_particle_out(inParticle4);
83 genPartList.push_back(inParticle4);
84 ge.add_vertex( myVertex );
85 HepMC::suggest_barcode(inParticle1,maxBarcode+1);
86 HepMC::suggest_barcode(inParticle2,maxBarcode+2);
87 HepMC::suggest_barcode(inParticle3,maxBarcode+3);
88 HepMC::suggest_barcode(inParticle4,maxBarcode+4);
90 ge.set_beam_particles(std::move(inParticle1),std::move(inParticle2));
91 }
int maximumBarcode(std::vector< HepMC::GenParticlePtr > &genPartList)
void set_signal_process_vertex(GenEvent *e, T &v)
Definition GenEvent.h:591

◆ randf_seed()

float Athena_test::randf_seed ( uint32_t & seed,
float rmax,
float rmin = 0 )
inline

Generate a floating-point random number between rmin and rmax.

Definition at line 53 of file random.h.

54{
55 return static_cast<float>(rng_seed(seed)) / static_cast<float>(rngmax) * (rmax-rmin) + rmin;
56}
static const uint32_t rngmax
Maximum number generated.
Definition random.h:39

◆ randi_seed()

int Athena_test::randi_seed ( uint32_t & seed,
int rmax,
int rmin = 0 )
inline

Generate an integer random number between rmin and rmax.

Definition at line 61 of file random.h.

62{
63 return static_cast<int> (randf_seed (seed, rmax, rmin));
64}

◆ refCountTest()

void Athena_test::refCountTest ( void )

◆ referenceGaudiSymbols()

void Athena_test::referenceGaudiSymbols ( )

Definition at line 95 of file initGaudi.cxx.

96 {
97 ModuleLoadedIncident inc2 ("", "");
98 }

◆ resetableTest()

void Athena_test::resetableTest ( void )

◆ rng_seed()

uint32_t Athena_test::rng_seed ( uint32_t & seed)
inline

Generate a random number between 0 and rngmax.

Definition at line 44 of file random.h.

45{
46 seed = (1664525*seed + 1013904223);
47 return seed;
48}

◆ setupStoreGate()

bool Athena_test::setupStoreGate ( std::string progname,
std::string options_file = "" )

Helper for setting up StoreGate for regression tests.

Parameters
prognameProgram name (argv[0]).
options_fileName of the JO text file to read. If defaulted, one will be generated.

Get StoreGateSvc

Definition at line 27 of file setupStoreGate.cxx.

29{
30 // Build job options file if CppUnit_jobOptions.txt is unavailable
31 if (options_file.empty()) {
32 std::string::size_type pos = progname.rfind ("/");
33 if (pos != std::string::npos)
34 progname.erase (0, pos+1);
35 pos = progname.rfind (".");
36 if (pos != std::string::npos)
37 progname.erase (pos, std::string::npos);
38 options_file = "./" + progname + "_generated.txt";
39 (void)remove (options_file.c_str());
40 std::ofstream jobopt(options_file.c_str());
41
42 // Build a default list of options.
43 {
44 std::list<std::string> opts;
45 opts.push_back("#pragma print off");
46 opts.push_back("ApplicationMgr.Dlls += { \"StoreGate\" };");
47 //opts.push_back("ApplicationMgr.Dlls += { \"CLIDSvc\" };");
48 opts.push_back("ApplicationMgr.ExtSvc += { \"ClassIDSvc\" };");
49 opts.push_back("ApplicationMgr.ExtSvc += { \"StoreGateSvc\", \"StoreGateSvc/DetectorStore\", \"StoreGateSvc/ConditionStore\", \"StoreGateSvc/HistoryStore\" };");
50 opts.push_back("ApplicationMgr.ExtSvc += { \"ActiveStoreSvc\" };");
51 opts.push_back("AuditorSvc.Auditors += { \"AlgContextAuditor\"};");
52 opts.push_back("StoreGateSvc.OutputLevel = 2;");
53 opts.push_back("StoreGateSvc.ActivateHistory = false;");
54 //opts.push_back("CLIDSvc.OutputLevel = 2;");
55 opts.push_back("MessageSvc.useColors = false;");
56 opts.push_back("MessageSvc.OutputLevel = 3;");
57 // Build job options file from list.
58 for ( std::list<std::string>::const_iterator iopt=opts.begin();
59 iopt!=opts.end(); ++iopt )
60 {
61 std::println (jobopt, "{}", *iopt);
62 }
63 }
64 jobopt.close();
65 }
66
67 try {
69 ISvcLocator* svcLoc = 0;
70 if (!Athena_test::initGaudi(options_file, svcLoc)) {
71 std::println (std::cerr, "This test can not be run");
72 return false;
73 }
74 assert( 0 != svcLoc);
75
76 SmartIF<StoreGateSvc> storeGate{svcLoc->service( "StoreGateSvc" )};
77 assert( storeGate );
78
79 if ( !storeGate ) {
80 std::string error = "No valid pointer to StoreGateSvc !!";
81 std::println (std::cerr, "{}", error);
82 return false;
83 } else {
84 return true;
85 }
86 } catch ( std::exception& e ) {
87 std::println (std::cerr, "Caught : {}", e.what());
88 return false;
89 }
90}

◆ test_symlink2()

void Athena_test::test_symlink2 ( StoreGateSvc & rSG)

◆ test_symlink3()

void Athena_test::test_symlink3 ( StoreGateSvc & rSG)

◆ testBoundReset()

void Athena_test::testBoundReset ( StoreGateSvc & rSG)

◆ testClear()

void Athena_test::testClear ( StoreGateSvc & rSG)

◆ testContains()

void Athena_test::testContains ( StoreGateSvc & rSG)

◆ testCreate()

void Athena_test::testCreate ( StoreGateSvc & rSG)

◆ testFolders()

void Athena_test::testFolders ( StoreGateSvc & rSG)

◆ testKeys()

void Athena_test::testKeys ( StoreGateSvc & rSG)

◆ testReadPrivateCopy()

void Athena_test::testReadPrivateCopy ( StoreGateSvc & rSG)

◆ testRecord()

void Athena_test::testRecord ( StoreGateSvc & rSG)

◆ testRecordObject()

void Athena_test::testRecordObject ( StoreGateSvc & rSG)

◆ testRemove()

void Athena_test::testRemove ( StoreGateSvc & rSG)

◆ testRetrieve()

void Athena_test::testRetrieve ( StoreGateSvc & rSG)

◆ testRetrieveAux()

void Athena_test::testRetrieveAux ( StoreGateSvc & rSG)

◆ testRetrievePrivateCopy()

void Athena_test::testRetrievePrivateCopy ( StoreGateSvc & rSG)

◆ testSymLink()

void Athena_test::testSymLink ( StoreGateSvc & rSG)

◆ testTransientSwap()

void Athena_test::testTransientSwap ( StoreGateSvc & rSG)

◆ testTryRetrieve()

void Athena_test::testTryRetrieve ( StoreGateSvc & rSG)

◆ testWriteAux()

void Athena_test::testWriteAux ( StoreGateSvc & rSG)

◆ val_form() [1/4]

std::string Athena_test::val_form ( const StatusCode & x)

Definition at line 37 of file expect.h.

37{ return x.message(); }
#define x

◆ val_form() [2/4]

template<class U>
const U & Athena_test::val_form ( const U & x)

Helpers for error message formatting.

std::format doesn't accept arbitrary pointers, so decay them to void*.

Definition at line 31 of file expect.h.

31{ return x; }

◆ val_form() [3/4]

template<class U>
const void * Athena_test::val_form ( const U * x)

Definition at line 33 of file expect.h.

33{ return x; }

◆ val_form() [4/4]

template<class U>
const void * Athena_test::val_form ( U * x)

Definition at line 35 of file expect.h.

35{ return x; }

◆ varHandleTest()

void Athena_test::varHandleTest ( SGTest::TestStore & )

Variable Documentation

◆ allocs

std::unordered_set<void*>* Athena_test::allocs = nullptr

Definition at line 51 of file leakcheck.h.

◆ rngmax

const uint32_t Athena_test::rngmax = static_cast<uint32_t> (-1)
static

Maximum number generated.

Definition at line 39 of file random.h.

◆ seed

uint32_t Athena_test::seed = 1
static

Definition at line 88 of file random.h.