ATLAS Offline Software
HyFlow.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 // Description:
7 // Class definition for HyFlow, which is used
8 // to modify HYFLOW common.
9 
10 #ifndef HyFlow_h
11 #define HyFlow_h
12 
13 #include <cstdint>
14 
15 extern "C" { uintptr_t hyflow_address_(); }
16 
17 class HyFlow {
18 public:
19  HyFlow();
20  ~HyFlow();
21 
22  double& ytfl (void);
23  double& ylfl (void);
24  double& tf (void);
25  double& fpart (void);
26 
27  void init (void);
28 
29 private:
30 
31  struct HYFLOW;
32  friend struct HYFLOW;
33 
34  struct HYFLOW
35  {
36  double ytfl;
37  double ylfl;
38  double tf;
39  double fpart;
40  };
41 
42  static HYFLOW* s_hyflow;
43 };
44 
45 // set pointer to zero at start
47 
48 inline void
50 { if (!s_hyflow) s_hyflow = reinterpret_cast<HYFLOW*>(hyflow_address_()); }
51 
52 // Constructor
53 inline
55 {}
56 
57 // Destructor
58 inline
60 {}
61 
62 inline double&
64 {
65  init();
66  return s_hyflow->ytfl;
67 }
68 
69 inline double&
71 {
72  init();
73  return s_hyflow->ylfl;
74 }
75 
76 inline double&
77 HyFlow::tf (void)
78 {
79  init();
80  return s_hyflow->tf;
81 }
82 
83 inline double&
85 {
86  init();
87  return s_hyflow->fpart;
88 }
89 
90 #endif
HyFlow::fpart
double & fpart(void)
Definition: HyFlow.h:84
HyFlow
Definition: HyFlow.h:17
HyFlow::init
void init(void)
Definition: HyFlow.h:49
HyFlow::HYFLOW::ytfl
double ytfl
Definition: HyFlow.h:36
HyFlow::s_hyflow
static HYFLOW * s_hyflow
Definition: HyFlow.h:42
HyFlow::HYFLOW
Definition: HyFlow.h:35
hyflow_address_
uintptr_t hyflow_address_()
HyFlow::tf
double & tf(void)
Definition: HyFlow.h:77
HyFlow::HYFLOW::ylfl
double ylfl
Definition: HyFlow.h:37
HyFlow::HYFLOW::fpart
double fpart
Definition: HyFlow.h:39
HyFlow::HyFlow
HyFlow()
Definition: HyFlow.h:54
HyFlow::ytfl
double & ytfl(void)
Definition: HyFlow.h:63
HyFlow::HYFLOW::tf
double tf
Definition: HyFlow.h:38
HyFlow::ylfl
double & ylfl(void)
Definition: HyFlow.h:70
HyFlow::~HyFlow
~HyFlow()
Definition: HyFlow.h:59