ATLAS Offline Software
Loading...
Searching...
No Matches
LuJets.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 LuJets, which is used
8// to modify LUJETS common.
9
10#ifndef LuJets_h
11#define LuJets_h
12
13#include <cstdint>
14
15extern "C" { uintptr_t lujets_address_(); }
16
17class LuJets {
18public:
19 LuJets();
20 ~LuJets();
21
22 int& n (void);
23 int& k (int i, int j);
24 float& p (int i, int j);
25 float& v (int i, int j);
26
27 void init (void);
28
29 // return common array lengths
30 inline int leniK() const {return s_leniK;}
31 inline int lenjK() const {return s_lenjK;}
32 inline int leniP() const {return s_leniP;}
33 inline int lenjP() const {return s_lenjP;}
34 inline int leniV() const {return s_leniV;}
35 inline int lenjV() const {return s_lenjV;}
36
37private:
38
39 // Lengths of array in LuJets common
40 static const int s_leniK = 150000;
41 static const int s_lenjK = 5;
42 static const int s_leniP = 150000;
43 static const int s_lenjP = 5;
44 static const int s_leniV = 150000;
45 static const int s_lenjV = 5;
46
47 struct LUJETS;
48 friend struct LUJETS;
49
50 struct LUJETS
51 {
52 int n;
54 float p[s_lenjP][s_leniP];
55 float v[s_lenjV][s_leniV];
56 };
57
60
62};
63
64// set pointer to zero at start
66
67inline void
69{ if (!s_lujets) s_lujets = reinterpret_cast<LUJETS*>(lujets_address_()); }
70
71// Constructor
72inline
74 : m_dummy (-999),
75 m_realdummy (-999.)
76{}
77
78// Destructor
79inline
82
83inline int&
85{
86 init();
87 return s_lujets->n;
88}
89
90inline int&
91LuJets::k (int i, int j)
92{
93 init(); // check COMMON is initialized
94 if( i < 1 || i > leniK() ||
95 j < 1 || j > lenjK() ) return m_dummy;
96
97 return s_lujets->k[j-1][i-1];
98}
99
100inline float&
101LuJets::p (int i, int j)
102{
103 init(); // check COMMON is initialized
104 if( i < 1 || i > leniP() ||
105 j < 1 || j > lenjP() ) return m_realdummy;
106
107 return s_lujets->p[j-1][i-1];
108}
109
110inline float&
111LuJets::v (int i, int j)
112{
113 init(); // check COMMON is initialized
114 if( i < 1 || i > leniV() ||
115 j < 1 || j > lenjV() ) return m_realdummy;
116
117 return s_lujets->v[j-1][i-1];
118}
119
120#endif
uintptr_t lujets_address_()
int leniK() const
Definition LuJets.h:30
int & n(void)
Definition LuJets.h:84
int & k(int i, int j)
Definition LuJets.h:91
static const int s_lenjP
Definition LuJets.h:43
void init(void)
Definition LuJets.h:68
static const int s_leniP
Definition LuJets.h:42
static const int s_lenjV
Definition LuJets.h:45
int lenjP() const
Definition LuJets.h:33
float & p(int i, int j)
Definition LuJets.h:101
static const int s_lenjK
Definition LuJets.h:41
LuJets()
Definition LuJets.h:73
float & v(int i, int j)
Definition LuJets.h:111
static const int s_leniK
Definition LuJets.h:40
static LUJETS * s_lujets
Definition LuJets.h:61
int leniP() const
Definition LuJets.h:32
float m_realdummy
Definition LuJets.h:59
int leniV() const
Definition LuJets.h:34
int lenjK() const
Definition LuJets.h:31
int m_dummy
Definition LuJets.h:58
~LuJets()
Definition LuJets.h:80
int lenjV() const
Definition LuJets.h:35
static const int s_leniV
Definition LuJets.h:44
float p[s_lenjP][s_leniP]
Definition LuJets.h:54
int k[s_lenjK][s_leniK]
Definition LuJets.h:53
float v[s_lenjV][s_leniV]
Definition LuJets.h:55