16 const std::string &
name,
17 const IInterface *parent)
19 declareInterface<eFEXtauAlgoBase>(
this);
30 return StatusCode::FAILURE;
33 return StatusCode::SUCCESS;
41 for (
unsigned int ieta = 0; ieta < 3; ieta++) {
42 for (
unsigned int iphi = 0; iphi < 3; iphi++) {
43 if (((efex_id % 3 == 0) && (fpga_id == 0) && (central_eta == 0) &&
45 ((efex_id % 3 == 2) && (fpga_id == 3) && (central_eta == 5) &&
51 for (
unsigned int i = 0; i < 4; i++) {
62 for (
unsigned int i = 0; i < 4; i++) {
75 std::vector<unsigned int> &RcoreSums,
76 std::vector<unsigned int> &RemSums) {
89 rHadVec.push_back(core);
90 rHadVec.push_back(env);
98 unsigned int num = core;
99 unsigned int denom = core + env;
101 float out = denom ?
static_cast<float>(num) /
static_cast<float>(denom) : 0;
110 unsigned int num = core;
111 unsigned int denom = core + env;
113 float out = denom ?
static_cast<float>(num) /
static_cast<float>(denom) : 0;
119 std::vector<unsigned int> &rCoreVec)
const {
123 rCoreVec.push_back(core);
124 rCoreVec.push_back(env);
132 "Layers not built, cannot accurately determine if a seed tower.");
141 for (
unsigned int beta = 0; beta < 3; beta++) {
142 for (
unsigned int bphi = 0; bphi < 3; bphi++) {
144 if ((beta == 1) && (bphi == 1)) {
149 if (beta == 2 || (beta == 1 && bphi == 2)) {
156 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
const LVL1::eTowerContainer * m_eTowers
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 StatusCode safetyTest(const EventContext &ctx)
virtual float getRealRHad() const
unsigned int m_em3cells[3][3]
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.