ATLAS Offline Software
Loading...
Searching...
No Matches
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
15extern "C" { uintptr_t hyflow_address_(); }
16
17class HyFlow {
18public:
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
29private:
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
43};
44
45// set pointer to zero at start
47
48inline void
50{ if (!s_hyflow) s_hyflow = reinterpret_cast<HYFLOW*>(hyflow_address_()); }
51
52// Constructor
53inline
56
57// Destructor
58inline
61
62inline double&
64{
65 init();
66 return s_hyflow->ytfl;
67}
68
69inline double&
71{
72 init();
73 return s_hyflow->ylfl;
74}
75
76inline double&
78{
79 init();
80 return s_hyflow->tf;
81}
82
83inline double&
85{
86 init();
87 return s_hyflow->fpart;
88}
89
90#endif
uintptr_t hyflow_address_()
static HYFLOW * s_hyflow
Definition HyFlow.h:42
double & ytfl(void)
Definition HyFlow.h:63
double & tf(void)
Definition HyFlow.h:77
HyFlow()
Definition HyFlow.h:54
double & ylfl(void)
Definition HyFlow.h:70
void init(void)
Definition HyFlow.h:49
double & fpart(void)
Definition HyFlow.h:84
~HyFlow()
Definition HyFlow.h:59
double fpart
Definition HyFlow.h:39
double ytfl
Definition HyFlow.h:36
double ylfl
Definition HyFlow.h:37
double tf
Definition HyFlow.h:38