ATLAS Offline Software
Loading...
Searching...
No Matches
LuDatr.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 LuDatr which is used
8// to modify LUDATR common.
9
10#ifndef LuDatr_h
11#define LuDatr_h
12
13#include <cstdint>
14
15extern "C" { uintptr_t ludatr_address_(); }
16
17class LuDatr {
18public:
19 LuDatr();
20 ~LuDatr();
21
22 int& mrlu (int n);
23 float& rrlu (int n);
24
25 void init (void);
26
27 // return common array lengths
28 inline int lenMrlu() const {return s_lenMrlu;}
29 inline int lenRrlu() const {return s_lenRrlu;}
30
31private:
32
33 // Lengths of the COMMONS
34 static const int s_lenMrlu = 6;
35 static const int s_lenRrlu = 100;
36
37 struct LUDATR;
38 friend struct LUDATR;
39
40 struct LUDATR
41 {
44 };
45
49};
50
51// set pointer to zero at start
53
54inline void
56{ if (!s_ludatr) s_ludatr = reinterpret_cast<LUDATR*>(ludatr_address_()); }
57
58inline
60 : m_dummy (-999),
61 m_realdummy (-999.)
62{}
63
64inline
67
68inline int&
70{
71 init(); // check COMMON is initialized
72 if(n < 1 || n > lenMrlu()) return m_dummy;
73 return s_ludatr->mrlu[n-1];
74}
75
76inline float&
78{
79 init(); // check COMMON is initialized
80 if(n < 1 || n > lenRrlu()) return m_realdummy;
81 return s_ludatr->rrlu[n-1];
82}
83
84#endif
uintptr_t ludatr_address_()
static const int s_lenMrlu
Definition LuDatr.h:34
void init(void)
Definition LuDatr.h:55
static LUDATR * s_ludatr
Definition LuDatr.h:48
int m_dummy
Definition LuDatr.h:46
int lenRrlu() const
Definition LuDatr.h:29
~LuDatr()
Definition LuDatr.h:65
LuDatr()
Definition LuDatr.h:59
int & mrlu(int n)
Definition LuDatr.h:69
int lenMrlu() const
Definition LuDatr.h:28
float & rrlu(int n)
Definition LuDatr.h:77
static const int s_lenRrlu
Definition LuDatr.h:35
float m_realdummy
Definition LuDatr.h:47
int mrlu[s_lenMrlu]
Definition LuDatr.h:42
float rrlu[s_lenRrlu]
Definition LuDatr.h:43