ATLAS Offline Software
LArCalorimeter
LArCalibTools
src
LArMLencoding.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
LArCalibTools/LArMLencoding.h
"
6
#include <cmath>
7
8
//input Et should be MeV/12.5 unit.
9
//function to get ML code for eFEX
10
int
LArMLencoding::get_MultiLinearCode_eFEX
(
int
Et,
bool
saturated
,
bool
invalid,
bool
empty){
11
// for special codes
12
if
(
empty
)
return
0;
13
else
if
(invalid)
return
1022;
14
else
if
(
saturated
)
return
1023;
15
16
// for specific energies
17
else
if
(Et < -60)
return
1;
18
else
if
(Et < 448)
return
(Et+60)/2 + 2;
19
else
if
(Et < 1472)
return
(Et/4) + 144;
20
else
if
(Et < 3520)
return
(Et/8) + 328;
21
else
if
(Et < 11584)
return
(Et/32) + 658;
22
else
return
1020;
23
}
24
25
//function to get ML code for jFEX
26
int
LArMLencoding::get_MultiLinearCode_jFEX
(
int
Et,
bool
invalid,
bool
empty){
27
// for special code
28
if
(
empty
)
return
0;
29
else
if
(invalid)
return
4095;
30
31
// for specific energies
32
else
if
(Et < -252)
return
1;
33
else
if
(Et < 512)
return
(Et+512)/2 + 2;
34
else
if
(Et < 64000)
35
{
36
const
int
pow
=
log
(Et/512)/
log
(4);
37
return
Et/(
std::pow
(2,
pow
+2))+256*
std::pow
(2,
pow
);
38
}
39
else
return
4048;
40
}
41
42
//function to get ML code for gFEX
43
int
LArMLencoding::get_MultiLinearCode_gFEX
(
int
Et,
bool
invalid,
bool
empty){
44
//for special codes
45
if
(
empty
)
return
0;
46
else
if
(invalid)
return
4095;
47
48
//for specific codes
49
if
(Et < -8096)
return
1;
50
else
if
(Et < -4000)
return
(Et+8096)/1024 + 2;
51
else
if
(Et < -1024)
return
(Et+4000)/4 + 6;
52
else
if
(Et < 1024)
return
(Et+1024)/2 + 750;
53
else
if
(Et < 4096)
return
(Et-1024)/4 + 1774;
54
else
if
(Et < 16000)
return
(Et-4096)/8 + 2542;
55
else
if
(Et < 81536)
return
(Et-16000)/2048 + 4030;
56
else
return
4062;
57
}
conifer::pow
constexpr int pow(int x)
Definition:
conifer.h:20
empty
bool empty(TH1 *h)
Definition:
computils.cxx:294
LArMLencoding.h
xAOD::saturated
setScaleOne setStatusOne saturated
Definition:
gFexGlobalRoI_v1.cxx:51
LArMLencoding::get_MultiLinearCode_eFEX
static int get_MultiLinearCode_eFEX(int Et, bool saturated=false, bool invalid=false, bool empty=false)
Definition:
LArMLencoding.cxx:10
LArMLencoding::get_MultiLinearCode_gFEX
static int get_MultiLinearCode_gFEX(int Et, bool invalid=false, bool empty=false)
Definition:
LArMLencoding.cxx:43
LArMLencoding::get_MultiLinearCode_jFEX
static int get_MultiLinearCode_jFEX(int Et, bool invalid=false, bool empty=false)
Definition:
LArMLencoding.cxx:26
python.CaloCondTools.log
log
Definition:
CaloCondTools.py:20
Generated on Thu Jul 4 2024 21:20:26 for ATLAS Offline Software by
1.8.18