ATLAS Offline Software
Loading...
Searching...
No Matches
HiMain2.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 HiMain2_h
7#define HiMain2_h
8
9#include <cstdint>
10
11extern "C" { uintptr_t himain2_address_(); }
17class HiMain2 {
18public:
19 HiMain2();
20 ~HiMain2();
21
22 int& katt (int i, int j);
23 float& patt (int i, int j);
24 float& vatt (int i, int j);
25
26 void init (void);
27
28 // return common array lengths
29 inline int leniKatt() const {return s_leniKatt;}
30 inline int lenjKatt() const {return s_lenjKatt;}
31 inline int leniPatt() const {return s_leniPatt;}
32 inline int lenjPatt() const {return s_lenjPatt;}
33 inline int leniVatt() const {return s_leniVatt;}
34 inline int lenjVatt() const {return s_lenjVatt;}
35
36private:
37
38 // Lengths of array in HiMain2 common
39 static const int s_leniKatt = 130000;
40 static const int s_lenjKatt = 4;
41 static const int s_leniPatt = 130000;
42 static const int s_lenjPatt = 4;
43 static const int s_leniVatt = 130000;
44 static const int s_lenjVatt = 4;
45
46 struct HIMAIN2;
47 friend struct HIMAIN2;
48
55
58
60};
61
62// set pointer to zero at start
64
65inline void
67{ if (!s_himain2) s_himain2 = reinterpret_cast<HIMAIN2*>(himain2_address_()); }
68
69// Constructor
70inline
72 : m_dummy (-999),
73 m_realdummy (-999.)
74{}
75
76// Destructor
77inline
80
81inline int&
82HiMain2::katt (int i, int j)
83{
84 init(); // check COMMON is initialized
85 if( i < 1 || i > leniKatt() ||
86 j < 1 || j > lenjKatt() ) return m_dummy;
87
88 return s_himain2->katt[j-1][i-1];
89}
90
91inline float&
92HiMain2::patt (int i, int j)
93{
94 init(); // check COMMON is initialized
95 if( i < 1 || i > leniPatt() ||
96 j < 1 || j > lenjPatt() ) return m_realdummy;
97
98 return s_himain2->patt[j-1][i-1];
99}
100
101inline float&
102HiMain2::vatt (int i, int j)
103{
104 init(); // check COMMON is initialized
105 if( i < 1 || i > leniVatt() ||
106 j < 1 || j > lenjVatt() ) return m_realdummy;
107
108 return s_himain2->vatt[j-1][i-1];
109}
110
111#endif
uintptr_t himain2_address_()
float & patt(int i, int j)
Definition HiMain2.h:92
int leniPatt() const
Definition HiMain2.h:31
int leniVatt() const
Definition HiMain2.h:33
int leniKatt() const
Definition HiMain2.h:29
int lenjVatt() const
Definition HiMain2.h:34
float & vatt(int i, int j)
Definition HiMain2.h:102
static HIMAIN2 * s_himain2
Definition HiMain2.h:59
static const int s_leniPatt
Definition HiMain2.h:41
int lenjPatt() const
Definition HiMain2.h:32
HiMain2()
Definition HiMain2.h:71
static const int s_leniVatt
Definition HiMain2.h:43
static const int s_lenjKatt
Definition HiMain2.h:40
int lenjKatt() const
Definition HiMain2.h:30
int m_dummy
Definition HiMain2.h:56
~HiMain2()
Definition HiMain2.h:78
static const int s_leniKatt
Definition HiMain2.h:39
static const int s_lenjPatt
Definition HiMain2.h:42
static const int s_lenjVatt
Definition HiMain2.h:44
float m_realdummy
Definition HiMain2.h:57
void init(void)
Definition HiMain2.h:66
int & katt(int i, int j)
Definition HiMain2.h:82
int katt[s_lenjKatt][s_leniKatt]
Definition HiMain2.h:51
float patt[s_lenjPatt][s_leniPatt]
Definition HiMain2.h:52
float vatt[s_lenjVatt][s_leniVatt]
Definition HiMain2.h:53