ATLAS Offline Software
eFEXegAlgo.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 // eFEXegAlgo.h -
7 // -------------------
8 // begin : 24 02 2020
9 // email : antonio.jacques.costa@cern.ch ulla.blumenschein@cern.ch tong.qiu@cern.ch
10 // ***************************************************************************/
11 
12 
13 #ifndef eFEXegAlgo_H
14 #define eFEXegAlgo_H
15 
18 #include "AthenaKernel/CLASS_DEF.h"
19 #include "L1CaloFEXSim/eFEXegTOB.h"
21 
23 
24 namespace LVL1 {
25 
26  //Doxygen class description below:
30  class eFEXegAlgo : public AthAlgTool, virtual public IeFEXegAlgo {
31 
32  public:
34  eFEXegAlgo(const std::string& type, const std::string& name, const IInterface* parent);
35 
37  virtual StatusCode initialize() override;
38 
40  virtual ~eFEXegAlgo();
41 
42  virtual StatusCode safetyTest() const override;
43  virtual void setup(int inputTable[3][3], int efex_id, int fpga_id, int central_eta) override;
44 
45  virtual void getReta(std::vector<unsigned int> & ) override;
46  virtual void getRhad(std::vector<unsigned int> & ) override;
47  virtual void getWstot(std::vector<unsigned int> & ) override;
48  virtual void getRealPhi(float & phi) override;
49  virtual void getRealEta(float & eta) override;
50  virtual std::unique_ptr<eFEXegTOB> geteFEXegTOB() override;
51  virtual void getClusterCells(std::vector<unsigned int> &cellETs) override;
52  virtual unsigned int getET() override;
53  virtual unsigned int dmCorrection(unsigned int ET, unsigned int layer) override;
54  virtual void getWindowET(int layer, int jPhi, int SCID, unsigned int &) override;
55  virtual bool hasSeed() const override {return m_hasSeed;};
56  virtual unsigned int getSeed() const override {return m_seedID;};
57  virtual unsigned int getUnD() const override {return m_seed_UnD;};
58  virtual void getCoreEMTowerET(unsigned int & et) override;
59  virtual void getCoreHADTowerET(unsigned int & et) override;
60  virtual void getSums(unsigned int seed, bool UnD,
61  std::vector<unsigned int> & RetaSums,
62  std::vector<unsigned int> & RhadSums,
63  std::vector<unsigned int> & WstotSums) override;
64  private:
65  void setSeed();
66  bool m_seed_UnD = false;
67  unsigned int m_seedID = 999;
68  int m_eFEXegAlgoTowerID[3][3]{};
69  int m_efexid{};
70  int m_fpgaid{};
72  bool m_hasSeed{};
73 
74  // Enable dead material corrections
75  Gaudi::Property<bool> m_dmCorr {this, "dmCorr", false, "Enable dead material correctionst"};
76 
77  // Key for input towers
78  SG::ReadHandleKey<LVL1::eTowerContainer> m_eTowerContainerKey {this, "MyETowers", "eTowerContainer", "Input container for eTowers"};
79 
80  // Key for reading dm corrections
82  "Key to dead material corrections (AttrListCollection)"};
83  static thread_local bool s_dmCorrectionsLoaded;
84  std::mutex m_dmCorrectionsMutex; // used while loading dm corrections into static map
85 
86  };
87 
88 } // end of namespace
89 
90 //CLASS_DEF( LVL1::eFEXegAlgo, 32202260 , 1 )
91 
92 #endif
LVL1::eFEXegAlgo::m_hasSeed
bool m_hasSeed
Definition: eFEXegAlgo.h:72
LVL1::eFEXegAlgo::dmCorrection
virtual unsigned int dmCorrection(unsigned int ET, unsigned int layer) override
Definition: eFEXegAlgo.cxx:303
et
Extra patterns decribing particle interation process.
LVL1::eFEXegAlgo::m_efexid
int m_efexid
Definition: eFEXegAlgo.h:69
IeFEXegAlgo.h
eTowerContainer.h
LVL1::eFEXegAlgo::m_seed_UnD
bool m_seed_UnD
Definition: eFEXegAlgo.h:66
LVL1::eFEXegAlgo::getRhad
virtual void getRhad(std::vector< unsigned int > &) override
Definition: eFEXegAlgo.cxx:153
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
LVL1::eFEXegAlgo::getRealEta
virtual void getRealEta(float &eta) override
Definition: eFEXegAlgo.cxx:96
LVL1::eFEXegAlgo::setup
virtual void setup(int inputTable[3][3], int efex_id, int fpga_id, int central_eta) override
Definition: eFEXegAlgo.cxx:61
LVL1::eFEXegAlgo::m_eTowerContainerKey
SG::ReadHandleKey< LVL1::eTowerContainer > m_eTowerContainerKey
Definition: eFEXegAlgo.h:78
LVL1::IeFEXegAlgo
Definition: IeFEXegAlgo.h:26
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
LVL1::eFEXegAlgo::getRealPhi
virtual void getRealPhi(float &phi) override
Definition: eFEXegAlgo.cxx:89
LVL1::eFEXegAlgo::m_dmCorrectionsMutex
std::mutex m_dmCorrectionsMutex
Definition: eFEXegAlgo.h:84
LVL1::eFEXegAlgo::m_central_eta
int m_central_eta
Definition: eFEXegAlgo.h:71
LVL1::eFEXegAlgo::getSeed
virtual unsigned int getSeed() const override
Definition: eFEXegAlgo.h:56
SG::ReadHandleKey< LVL1::eTowerContainer >
LVL1::eFEXegAlgo::m_seedID
unsigned int m_seedID
Definition: eFEXegAlgo.h:67
LVL1::eFEXegAlgo::getReta
virtual void getReta(std::vector< unsigned int > &) override
Definition: eFEXegAlgo.cxx:104
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
LVL1::eFEXegAlgo::geteFEXegTOB
virtual std::unique_ptr< eFEXegTOB > geteFEXegTOB() override
Definition: eFEXegAlgo.cxx:371
LVL1::eFEXegAlgo::getET
virtual unsigned int getET() override
Definition: eFEXegAlgo.cxx:270
LVL1::eFEXegAlgo::getCoreEMTowerET
virtual void getCoreEMTowerET(unsigned int &et) override
Definition: eFEXegAlgo.cxx:73
LVL1::eFEXegAlgo::eFEXegAlgo
eFEXegAlgo(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
Definition: eFEXegAlgo.cxx:30
LVL1::eFEXegAlgo::setSeed
void setSeed()
Definition: eFEXegAlgo.cxx:458
LVL1::eFEXegAlgo::getClusterCells
virtual void getClusterCells(std::vector< unsigned int > &cellETs) override
Return cell ET values used in cluster.
Definition: eFEXegAlgo.cxx:235
LVL1::eFEXegAlgo::m_dmCorr
Gaudi::Property< bool > m_dmCorr
Definition: eFEXegAlgo.h:75
LVL1::eFEXegAlgo::getWindowET
virtual void getWindowET(int layer, int jPhi, int SCID, unsigned int &) override
Definition: eFEXegAlgo.cxx:394
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
AthAlgTool.h
LVL1::eFEXegAlgo::getSums
virtual void getSums(unsigned int seed, bool UnD, std::vector< unsigned int > &RetaSums, std::vector< unsigned int > &RhadSums, std::vector< unsigned int > &WstotSums) override
Definition: eFEXegAlgo.cxx:439
LVL1::eFEXegAlgo::getUnD
virtual unsigned int getUnD() const override
Definition: eFEXegAlgo.h:57
test_pyathena.parent
parent
Definition: test_pyathena.py:15
LVL1::eFEXegAlgo::m_eFEXegAlgoTowerID
int m_eFEXegAlgoTowerID[3][3]
Definition: eFEXegAlgo.h:68
LVL1::eFEXegAlgo::getCoreHADTowerET
virtual void getCoreHADTowerET(unsigned int &et) override
Definition: eFEXegAlgo.cxx:81
LVL1::eFEXegAlgo::getWstot
virtual void getWstot(std::vector< unsigned int > &) override
Definition: eFEXegAlgo.cxx:200
eFEXegTOB.h
TrigConf::name
Definition: HLTChainList.h:35
LVL1::eFEXegAlgo::m_dmCorrectionsKey
SG::ReadCondHandleKey< CondAttrListCollection > m_dmCorrectionsKey
Definition: eFEXegAlgo.h:81
LVL1::eFEXegAlgo::safetyTest
virtual StatusCode safetyTest() const override
Definition: eFEXegAlgo.cxx:50
LVL1::eFEXegAlgo
The eFEXegAlgo class calculates the egamma TOB variables: Reta, Rhad and Wstot.
Definition: eFEXegAlgo.h:30
LVL1::eFEXegAlgo::~eFEXegAlgo
virtual ~eFEXegAlgo()
Destructor.
Definition: eFEXegAlgo.cxx:37
LVL1::eFEXegAlgo::s_dmCorrectionsLoaded
static thread_local bool s_dmCorrectionsLoaded
Definition: eFEXegAlgo.h:83
SG::ReadCondHandleKey< CondAttrListCollection >
LVL1::eFEXegAlgo::hasSeed
virtual bool hasSeed() const override
Definition: eFEXegAlgo.h:55
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LVL1::eFEXegAlgo::initialize
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition: eFEXegAlgo.cxx:41
AthAlgTool
Definition: AthAlgTool.h:26
LVL1::eFEXegAlgo::m_fpgaid
int m_fpgaid
Definition: eFEXegAlgo.h:70
CLASS_DEF.h
macros to associate a CLID to a type