ATLAS Offline Software
RanSeed.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
6 #ifndef RanSeed_h
7 #define RanSeed_h
8 
9 #include <cstdint>
10 
11 extern "C" { uintptr_t ranseed_address_(); }
12 
18 class RanSeed
19 {
20 public:
21  RanSeed();
22  ~RanSeed();
23 
24  int& nseed (void);
25 
26 private:
27 
28  struct RANSEED;
29  friend struct RANSEED;
30 
31  struct RANSEED
32  {
33  int nseed;
34  };
35 
36  static RANSEED* s_ranseed;
37 };
38 
39 // set pointer to zero at start
41 
42 inline
44 {}
45 
46 inline
48 {}
49 
50 inline int&
52 {
53  if (!s_ranseed) s_ranseed = reinterpret_cast<RANSEED*>(ranseed_address_());
54  return s_ranseed->nseed;
55 }
56 
57 #endif
RanSeed::s_ranseed
static RANSEED * s_ranseed
Definition: RanSeed.h:36
RanSeed
Class definition for RanSeed, which is used to modify the Hijing RANSEED common.
Definition: RanSeed.h:19
RanSeed::nseed
int & nseed(void)
Definition: RanSeed.h:51
RanSeed::RANSEED
Definition: RanSeed.h:32
RanSeed::RanSeed
RanSeed()
Definition: RanSeed.h:43
RanSeed::RANSEED::nseed
int nseed
Definition: RanSeed.h:33
ranseed_address_
uintptr_t ranseed_address_()
RanSeed::~RanSeed
~RanSeed()
Definition: RanSeed.h:47