ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigTools
TrigInDetPattRecoTools
TrigInDetPattRecoTools
TrigSeedML_LUT.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
#ifndef TRIGINDETPATTRECOTOOLS_TRIG_SEED_ML_LUT_H
6
#define TRIGINDETPATTRECOTOOLS_TRIG_SEED_ML_LUT_H
7
8
#include <vector>
9
10
typedef
struct
TrigSeedML_LUT
{
11
public
:
12
TrigSeedML_LUT
() :
m_id
(-1),
m_w
(0),
m_h
(0),
m_c
(),
m_data
(0),
m_invBinWidthX
(0),
m_invBinWidthY
(0) {};
13
14
TrigSeedML_LUT
(
int
id
,
int
w,
int
h
,
float
c[4]) :
m_id
(id),
m_w
(w),
m_h
(
h
) {
15
for
(
int
i=0;i<4;i++)
m_c
[i] = c[i];
16
initialize
();
17
}
18
19
TrigSeedML_LUT
(
const
TrigSeedML_LUT
& tsl) :
m_id
(tsl.
m_id
),
m_w
(tsl.
m_w
),
m_h
(tsl.
m_h
),
m_data
(tsl.
m_data
) {
20
for
(
int
i=0;i<4;i++)
m_c
[i] = tsl.
m_c
[i];
21
m_invBinWidthX
=
m_w
/(
m_c
[1]-
m_c
[0]);
22
m_invBinWidthY
=
m_h
/(
m_c
[3]-
m_c
[2]);
23
}
24
25
~TrigSeedML_LUT
() {
m_data
.clear();}
26
27
bool
check
(
float
fX,
float
fY)
const
{
28
29
int
i = (fY -
m_c
[2])*
m_invBinWidthY
;
30
int
j = (fX -
m_c
[0])*
m_invBinWidthX
;
31
32
if
(i<0 || i>=
m_h
|| j<0 || j>=
m_w
)
return
false
;
33
34
return
(
m_data
[j+i*
m_w
] != 0);
35
}
36
37
bool
getValidRange
(
float
fX,
float
&
min
,
float
&
max
)
const
{
38
min
=
m_c
[2];
39
max
=
m_c
[3];
40
int
j = (fX -
m_c
[0])*
m_invBinWidthX
;
41
if
(j<0 || j>=
m_w
)
return
false
;
42
43
int
idx=j;
44
int
i1=0;
45
int
i2=0;
46
int
i=0;
47
for
(;i<
m_h
;i++, idx+=
m_w
) {
48
if
(
m_data
[idx] == 0)
continue
;
49
else
{
50
i1 = i;
51
i2 = i1;
52
break
;
53
}
54
}
55
for
(;i<
m_h
;i++, idx+=
m_w
) {
56
if
(
m_data
[idx] != 0) i2++;
57
else
break
;
58
}
59
60
min
=
m_c
[2] + i1/
m_invBinWidthY
;
61
max
=
m_c
[2] + i2/
m_invBinWidthY
;
62
return
true
;
63
}
64
void
initialize
() {
65
m_invBinWidthX
=
m_w
/(
m_c
[1]-
m_c
[0]);
66
m_invBinWidthY
=
m_h
/(
m_c
[3]-
m_c
[2]);
67
m_data
.resize(
m_h
*
m_w
, 0);
68
}
69
70
void
setBin
(
int
r
,
int
c) {
71
m_data
[c +
r
*
m_w
] = 1;
72
}
73
74
void
generate
(
float
offset,
float
slope,
float
hwm,
float
hwp) {
75
76
m_data
.resize(
m_h
*
m_w
, 0);
77
78
for
(
int
j=0;j<
m_w
;j++) {
79
float
x
=
m_c
[0] + j/
m_invBinWidthX
;
80
81
float
y
= offset +
x
*slope;
82
float
yp=
y
+hwp;
83
float
ym=
y
+hwm;
84
85
if
(yp <
m_c
[2]) yp =
m_c
[2];
86
if
(yp >
m_c
[3]) yp =
m_c
[3];
87
88
if
(ym <
m_c
[2]) ym =
m_c
[2];
89
if
(ym >
m_c
[3]) ym =
m_c
[3];
90
91
int
i1 = int((ym-
m_c
[2])*
m_invBinWidthY
);
92
int
i2 = int((yp-
m_c
[2])*
m_invBinWidthY
);
93
94
for
(
int
i=i1;i<i2;i++) {
95
m_data
[j+
m_w
*i] = 1;
96
}
97
98
}
99
}
100
101
int
m_id
;
102
int
m_w
,
m_h
;
103
float
m_c
[4];
104
std::vector<unsigned char>
m_data
;
105
float
m_invBinWidthX
,
m_invBinWidthY
;
106
}
TRIG_SEED_ML_LUT
;
107
108
#endif
TRIG_SEED_ML_LUT
struct TrigSeedML_LUT TRIG_SEED_ML_LUT
y
#define y
x
#define x
min
#define min(a, b)
Definition
cfImp.cxx:40
max
#define max(a, b)
Definition
cfImp.cxx:41
h
Header file for AthHistogramAlgorithm.
r
int r
Definition
globals.cxx:22
TrigSeedML_LUT::m_c
float m_c[4]
Definition
TrigSeedML_LUT.h:103
TrigSeedML_LUT::TrigSeedML_LUT
TrigSeedML_LUT()
Definition
TrigSeedML_LUT.h:12
TrigSeedML_LUT::m_data
std::vector< unsigned char > m_data
Definition
TrigSeedML_LUT.h:104
TrigSeedML_LUT::m_invBinWidthX
float m_invBinWidthX
Definition
TrigSeedML_LUT.h:105
TrigSeedML_LUT::TrigSeedML_LUT
TrigSeedML_LUT(const TrigSeedML_LUT &tsl)
Definition
TrigSeedML_LUT.h:19
TrigSeedML_LUT::check
bool check(float fX, float fY) const
Definition
TrigSeedML_LUT.h:27
TrigSeedML_LUT::TrigSeedML_LUT
TrigSeedML_LUT(int id, int w, int h, float c[4])
Definition
TrigSeedML_LUT.h:14
TrigSeedML_LUT::~TrigSeedML_LUT
~TrigSeedML_LUT()
Definition
TrigSeedML_LUT.h:25
TrigSeedML_LUT::m_h
int m_h
Definition
TrigSeedML_LUT.h:102
TrigSeedML_LUT::m_invBinWidthY
float m_invBinWidthY
Definition
TrigSeedML_LUT.h:105
TrigSeedML_LUT::getValidRange
bool getValidRange(float fX, float &min, float &max) const
Definition
TrigSeedML_LUT.h:37
TrigSeedML_LUT::generate
void generate(float offset, float slope, float hwm, float hwp)
Definition
TrigSeedML_LUT.h:74
TrigSeedML_LUT::setBin
void setBin(int r, int c)
Definition
TrigSeedML_LUT.h:70
TrigSeedML_LUT::m_id
int m_id
Definition
TrigSeedML_LUT.h:101
TrigSeedML_LUT::initialize
void initialize()
Definition
TrigSeedML_LUT.h:64
TrigSeedML_LUT::m_w
int m_w
Definition
TrigSeedML_LUT.h:102
Generated on
for ATLAS Offline Software by
1.17.0