ATLAS Offline Software
eFEXCompression.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 /***************************************************************************
5  eFEXCompression.h - description
6  -------------------
7  begin : 07-02-2019
8  email : Alan.Watson@cern.ch antonio.jacques.costa@cern.ch
9  ***************************************************************************/
10 
11 
12  #ifndef eFEXCompression_H
13  #define eFEXCompression_H
14 
15 #include <array>
16 #include <atomic>
17 
18 namespace LVL1 {
19 
35 class eFEXCompression {
36 
37 public:
39  static unsigned int compress(int Et);
41  static int expand(unsigned int code);
43  static unsigned int threshold(unsigned int code, int threshold = -800);
45  static bool noiseCut(unsigned int code, int layer, bool ignoreDisable = false);
47  static int decode(int EtVal, int layer, bool ignoreDisable = false);
48 
49  static std::atomic<bool> s_disableNoiseCuts;
50 
51 private:
53  static const int s_maxET = 144800;
55  static const unsigned int s_nRanges = 4;
57  static const int s_steps[s_nRanges];
59  static const int s_minET[s_nRanges];
61  static const int s_minCode[s_nRanges];
63  static const int s_NoData = 0;
65  static const unsigned int s_LArUnderflow = 1;
67  static const unsigned int s_LArOverflow = 1020;
69  static const unsigned int s_LArReserved = 1021;
71  static const unsigned int s_LArInvalid = 1022;
73  static const unsigned int s_LArSaturated = 1023;
75  static const unsigned int s_LArMaxCode = 1023;
77  static const unsigned int s_eFEXstep = 25;
79  static const unsigned int s_eFEXOverflow = 0xffff;
81  static const int s_error = -999;
83  static const unsigned int m_noisecutPS = 64; // corresponds to 800 MeV
84  static const unsigned int m_noisecutL1 = 48; // 400 MeV
85  static const unsigned int m_noisecutL2 = 48;
86  static const unsigned int m_noisecutL3 = 48;
87  static const unsigned int m_noisecutHad = 48; // should only be applied for HEC
88 };
89 
90 
91 }//end of ns
92 
93 #endif
LVL1::eFEXCompression::m_noisecutHad
static const unsigned int m_noisecutHad
Definition: eFEXCompression.h:97
LVL1::eFEXCompression::s_maxET
static const int s_maxET
Maximum ET value that can be encoded.
Definition: eFEXCompression.h:63
LVL1::eFEXCompression::s_nRanges
static const unsigned int s_nRanges
Number of ranges.
Definition: eFEXCompression.h:65
LVL1::eFEXCompression::compress
static unsigned int compress(int Et)
Compress data.
Definition: eFEXCompression.cxx:25
LVL1::eFEXCompression::s_eFEXstep
static const unsigned int s_eFEXstep
L1Calo ET digit step.
Definition: eFEXCompression.h:87
LVL1::eFEXCompression::expand
static int expand(unsigned int code)
Uncompress data.
Definition: eFEXCompression.cxx:55
LVL1::eFEXCompression::m_noisecutL2
static const unsigned int m_noisecutL2
Definition: eFEXCompression.h:95
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
LVL1::eFEXCompression::noiseCut
static bool noiseCut(unsigned int code, int layer, bool ignoreDisable=false)
Apply supercell noise cut.
Definition: eFEXCompression.cxx:76
LVL1::eFEXCompression::s_minET
static const int s_minET[s_nRanges]
Minimum ET values in each range, MeV.
Definition: eFEXCompression.h:69
LVL1::eFEXCompression::s_disableNoiseCuts
static std::atomic< bool > s_disableNoiseCuts
Definition: eFEXCompression.h:59
LVL1::eFEXCompression::threshold
static unsigned int threshold(unsigned int code, int threshold=-800)
Apply threshold to compressed data.
Definition: eFEXCompression.cxx:107
LVL1::eFEXCompression::m_noisecutL3
static const unsigned int m_noisecutL3
Definition: eFEXCompression.h:96
LVL1::eFEXCompression::s_LArOverflow
static const unsigned int s_LArOverflow
LAr overflow code.
Definition: eFEXCompression.h:77
LVL1::eFEXCompression::s_NoData
static const int s_NoData
Indicates no data present.
Definition: eFEXCompression.h:73
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
LVL1::eFEXCompression::m_noisecutL1
static const unsigned int m_noisecutL1
Definition: eFEXCompression.h:94
LVL1::eFEXCompression::s_LArUnderflow
static const unsigned int s_LArUnderflow
LAr underflow code.
Definition: eFEXCompression.h:75
LVL1::eFEXCompression::s_LArInvalid
static const unsigned int s_LArInvalid
Invalid code value.
Definition: eFEXCompression.h:81
LVL1::eFEXCompression::decode
static int decode(int EtVal, int layer, bool ignoreDisable=false)
Full sequence.
Definition: eFEXCompression.cxx:118
LVL1::eFEXCompression::s_LArSaturated
static const unsigned int s_LArSaturated
LAr saturated code.
Definition: eFEXCompression.h:83
LVL1::eFEXCompression::s_steps
static const int s_steps[s_nRanges]
Step sizes in each range, MeV.
Definition: eFEXCompression.h:67
LVL1::eFEXCompression::s_eFEXOverflow
static const unsigned int s_eFEXOverflow
L1Calo saturated/overflow.
Definition: eFEXCompression.h:89
LVL1::eFEXCompression::s_LArReserved
static const unsigned int s_LArReserved
Reserved code value.
Definition: eFEXCompression.h:79
LVL1::eFEXCompression::s_LArMaxCode
static const unsigned int s_LArMaxCode
Maximum code value.
Definition: eFEXCompression.h:85
LVL1::eFEXCompression::s_error
static const int s_error
Error return value.
Definition: eFEXCompression.h:91
pmontree.code
code
Definition: pmontree.py:443
threshold
Definition: chainparser.cxx:74
LVL1::eFEXCompression::m_noisecutPS
static const unsigned int m_noisecutPS
Noise Cuts per layer.
Definition: eFEXCompression.h:93
LVL1::eFEXCompression::s_minCode
static const int s_minCode[s_nRanges]
Minimum code value in each range.
Definition: eFEXCompression.h:71