ATLAS Offline Software
HijJet4.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 HijJet4_h
7 #define HijJet4_h
8 
9 #include <cstdint>
10 
11 extern "C" { uintptr_t hijjet4_address_(); }
12 
19 class HijJet4 {
20 public:
21  HijJet4();
22  ~HijJet4();
23 
24  int& ndr (void);
25  int& iadr (int i, int j);
26  int& kfdr (int i);
27  float& pdr (int i, int k);
28  float& vdr (int i, int k);
29 
30  void init (void);
31 
32  // return common array lengths
33  inline int lenI() const {return s_lenI;}
34  inline int lenJ() const {return s_lenJ;}
35  inline int lenK() const {return s_lenK;}
36 
37 private:
38 
39  // Lengths of array in HiMain2 common
40  static const int s_lenI = 900;
41  static const int s_lenJ = 2;
42  static const int s_lenK = 5;
43 
44  struct HIJJET4;
45  friend struct HIJJET4;
46 
47  struct HIJJET4
48  {
49  int ndr;
50  int iadr [s_lenJ][s_lenI];
51  int kfdr [s_lenI];
52  float pdr [s_lenK][s_lenI];
53  float vdr [s_lenK][s_lenI];
54  };
55 
56  int m_dummy;
57  float m_realdummy;
58 
59  static HIJJET4* s_hijjet4;
60 };
61 
62 // set pointer to zero at start
64 
65 inline void
67 { if (!s_hijjet4) s_hijjet4 = reinterpret_cast<HIJJET4*>(hijjet4_address_()); }
68 
69 // Constructor
70 inline
72  : m_dummy (-999),
73  m_realdummy (-999.)
74 {}
75 
76 // Destructor
77 inline
79 {}
80 
81 inline int&
83 {
84  init(); // check COMMON is initialized
85  return s_hijjet4->ndr;
86 }
87 
88 inline int&
89 HijJet4::iadr (int i, int j)
90 {
91  init(); // check COMMON is initialized
92  if( i < 1 || i > lenI() ||
93  j < 1 || j > lenJ() ) return m_dummy;
94 
95  return s_hijjet4->iadr[j-1][i-1];
96 }
97 
98 inline int&
100 {
101  init(); // check COMMON is initialized
102  if(i < 1 || i > lenI()) return m_dummy;
103  return s_hijjet4->kfdr[i-1];
104 }
105 
106 inline float&
107 HijJet4::pdr (int i, int k)
108 {
109  init(); // check COMMON is initialized
110  if( i < 1 || i > lenI() ||
111  k < 1 || k > lenK() ) return m_realdummy;
112 
113  return s_hijjet4->pdr[k-1][i-1];
114 }
115 
116 
117 inline float&
118 HijJet4::vdr (int i, int k)
119 {
120  init(); // check COMMON is initialized
121  if( i < 1 || i > lenI() ||
122  k < 1 || k > lenK() ) return m_realdummy;
123 
124  return s_hijjet4->vdr[k-1][i-1];
125 }
126 
127 #endif
HijJet4::kfdr
int & kfdr(int i)
Definition: HijJet4.h:99
HijJet4::pdr
float & pdr(int i, int k)
Definition: HijJet4.h:107
HijJet4::init
void init(void)
Definition: HijJet4.h:66
HijJet4::m_dummy
int m_dummy
Definition: HijJet4.h:56
HijJet4::vdr
float & vdr(int i, int k)
Definition: HijJet4.h:118
hijjet4_address_
uintptr_t hijjet4_address_()
HijJet4::HIJJET4::ndr
int ndr
Definition: HijJet4.h:49
HijJet4::lenI
int lenI() const
Definition: HijJet4.h:33
HijJet4::HijJet4
HijJet4()
Definition: HijJet4.h:71
HijJet4::lenJ
int lenJ() const
Definition: HijJet4.h:34
HijJet4::HIJJET4::vdr
float vdr[s_lenK][s_lenI]
Definition: HijJet4.h:53
lumiFormat.i
int i
Definition: lumiFormat.py:92
HijJet4::s_lenK
static const int s_lenK
Definition: HijJet4.h:42
HijJet4::s_lenI
static const int s_lenI
Definition: HijJet4.h:40
HijJet4::s_hijjet4
static HIJJET4 * s_hijjet4
Definition: HijJet4.h:59
HijJet4::HIJJET4::iadr
int iadr[s_lenJ][s_lenI]
Definition: HijJet4.h:50
HijJet4::HIJJET4::kfdr
int kfdr[s_lenI]
Definition: HijJet4.h:51
HijJet4::m_realdummy
float m_realdummy
Definition: HijJet4.h:57
HijJet4::lenK
int lenK() const
Definition: HijJet4.h:35
HijJet4::ndr
int & ndr(void)
Definition: HijJet4.h:82
HijJet4::HIJJET4::pdr
float pdr[s_lenK][s_lenI]
Definition: HijJet4.h:52
HijJet4::HIJJET4
Definition: HijJet4.h:48
HijJet4::s_lenJ
static const int s_lenJ
Definition: HijJet4.h:41
fitman.k
k
Definition: fitman.py:528
HijJet4
Class definition for HijJet4, which is used to modify the Hijing HIJJET4 common.
Definition: HijJet4.h:19
HijJet4::iadr
int & iadr(int i, int j)
Definition: HijJet4.h:89
HijJet4::~HijJet4
~HijJet4()
Definition: HijJet4.h:78