16 const std::string &
name,
17 const IInterface *parent)
19 declareInterface<eFEXtauAlgoBase>(
this);
31 return StatusCode::FAILURE;
33 return StatusCode::SUCCESS;
43 for (
unsigned int ieta = 0; ieta < 3; ieta++) {
44 for (
unsigned int iphi = 0; iphi < 3; iphi++) {
45 if (((efex_id % 3 == 0) && (fpga_id == 0) && (central_eta == 0) &&
47 ((efex_id % 3 == 2) && (fpga_id == 3) && (central_eta == 5) &&
53 for (
unsigned int i = 0; i < 4; i++) {
64 for (
unsigned int i = 0; i < 4; i++) {
77 std::vector<unsigned int> &RcoreSums,
78 std::vector<unsigned int> &RemSums) {
91 rHadVec.push_back(core);
92 rHadVec.push_back(env);
100 unsigned int num = core;
101 unsigned int denom = core + env;
103 float out = denom ?
static_cast<float>(num) /
static_cast<float>(denom) : 0;
112 unsigned int num = core;
113 unsigned int denom = core + env;
115 float out = denom ?
static_cast<float>(num) /
static_cast<float>(denom) : 0;
121 std::vector<unsigned int> &rCoreVec)
const {
125 rCoreVec.push_back(core);
126 rCoreVec.push_back(env);
134 "Layers not built, cannot accurately determine if a seed tower.");
143 for (
unsigned int beta = 0; beta < 3; beta++) {
144 for (
unsigned int bphi = 0; bphi < 3; bphi++) {
146 if ((beta == 1) && (bphi == 1)) {
151 if (beta == 2 || (beta == 1 && bphi == 2)) {
158 else if (beta == 0 || (beta == 1 && bphi == 0)) {
int m_eFexalgoTowerID[3][3]
virtual unsigned int rCoreEnv() const
unsigned int m_em1cells[12][3]
virtual unsigned int rHadEnv() const =0
virtual StatusCode safetyTest()
virtual bool isCentralTowerSeed() const
SG::ReadHandleKey< LVL1::eTowerContainer > m_eTowerContainerKey
unsigned int m_twrcells[3][3]
unsigned int m_hadcells[3][3]
eFEXtauAlgoBase(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
virtual unsigned int rHadCore() const =0
virtual ~eFEXtauAlgoBase()
Destructor.
virtual void getRHad(std::vector< unsigned int > &rHadVec) const
unsigned int m_em0cells[3][3]
unsigned int m_em2cells[12][3]
virtual unsigned int rCoreCore() const
virtual void getSums(unsigned int seed, bool UnD, std::vector< unsigned int > &RcoreSums, std::vector< unsigned int > &Remums)
virtual float getRealRCore() const
virtual void getRCore(std::vector< unsigned int > &rCoreVec) const
void buildLayers(int efex_id, int fpga_id, int central_eta)
virtual float getRealRHad() const
unsigned int m_em3cells[3][3]
const LVL1::eTower * findTower(int towerID) const
fast find method given identifier.
The eTower class is an interface object for eFEX trigger algorithms The purposes are twofold:
int getLayerTotalET(unsigned int layer) const
Get total ET sum of all cells in a given layer in MeV.
int getET(unsigned int layer, int cell=0) const
Get ET of a specified cell in MeV.
int getTotalET() const
Get ET sum of all cells in the eTower in MeV.