22 declareInterface<IjFEXPileupAndNoise>(
this);
35 return StatusCode::SUCCESS;
44 return StatusCode::FAILURE;
47 return StatusCode::SUCCESS;
60 return StatusCode::SUCCESS;
83 ATH_MSG_DEBUG(
"---------------- jFEXPileupAndNoise::setup ----------------");
93 ATH_MSG_DEBUG(
"---------------- jFEXPileupAndNoise::setup ----------------");
110 for(
int ieta=0;ieta<
m_etaMAX;ieta++){
130 int em_granularity = 25;
131 int had_granularity = tmp_eta < 15 ? 500 : 25;
133 int tmp_energy_EM =
getET_EM(tmpTower)/em_granularity;
134 int tmp_energy_HAD =
getET_HAD(tmpTower)/had_granularity;
148 if(tmp_energy_EM > myDBTool->get_PUThrLowEm() and tmp_energy_EM < myDBTool->get_PUThrHighEm()) {
156 if(tmp_energy_HAD > myDBTool->get_PUThrLowHadTrex() and tmp_energy_HAD < myDBTool->get_PUThrHighHadTrex()){
162 else if(tmp_eta < 16 ){
163 if(tmp_energy_HAD > myDBTool->get_PUThrLowHadHecOverlap() and tmp_energy_HAD < myDBTool->get_PUThrHighHadHecOverlap()){
169 else if(tmp_eta < 32 ){
170 if(tmp_energy_HAD > myDBTool->get_PUThrLowHadLar() and tmp_energy_HAD < myDBTool->get_PUThrHighHadLar()){
176 else if(tmp_eta >= 32){
180 if(tmp_energy_HAD > myDBTool->get_PUThrLowFcal() and tmp_energy_HAD < myDBTool->get_PUThrHighFcal()){
187 if(tmp_energy_EM > myDBTool->get_PUThrLowFcal() and tmp_energy_EM < myDBTool->get_PUThrHighFcal()){
223 for(
int ieta=0; ieta<
m_etaMAX; ieta++) {
234 if(TTID == 0)
continue;
248 else if(tmp_eta < 16 ) {
251 else if(tmp_eta < 32 ) {
254 else if(tmp_eta >= 32) {
274 return StatusCode::FAILURE;
280 return StatusCode::SUCCESS;
300 for(
int ieta=0; ieta<
m_etaMAX; ieta++) {
311 if(TTID == 0)
continue;
315 std::vector<int> v_energies;
317 v_energies.resize(2,0);
320 int tmp_TotalEt_jet=
getET_EM(tmpTower);
321 int tmp_TotalEt_met=
getET_EM(tmpTower);
333 v_energies[0]=tmp_TotalEt_jet;
334 v_energies[1]=tmp_TotalEt_met;
352 for(
int ieta=0; ieta<
m_etaMAX; ieta++) {
363 if(TTID == 0)
continue;
367 std::vector<int> v_energies;
369 v_energies.resize(2,0);
385 v_energies[0]=tmp_TotalEt_jet;
386 v_energies[1]=tmp_TotalEt_met;
401 for(
auto [key,
vec] : map_Etvalues){
408 map_Etvalues[key][0]=0.;
411 map_Etvalues[key][1]=0.;
421 std::unordered_map<int,std::vector<int> > map_Etvalues;
422 map_Etvalues.clear();
430 std::vector<int> Et_energy;
435 Et_energy.resize(2,0);
439 map_Etvalues[key] = Et_energy;
447 return tmpTower->
iEta() < 0 ? std::abs(tmpTower->
iEta()+1) : tmpTower->
iEta() ;
#define ATH_CHECK
Evaluate an expression and check for errors.
std::vector< size_t > vec
static constexpr int jFEX_wide_algoSpace_width
static constexpr unsigned int pu_AreaINV
static constexpr unsigned int pu_Area
static constexpr unsigned int pu_rhoLUT
static constexpr int jFEX_FCAL2_start
static constexpr int jFEX_thin_algoSpace_width
static constexpr int jFEX_algoSpace_height
std::unordered_map< int, int > m_FPGA_ET_EM
int m_FPGA_central[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]
virtual std::unordered_map< int, std::vector< int > > Get_HAD_Et_values() override
std::unordered_map< int, int > m_FPGA_ET_HAD
virtual StatusCode safetyTest() override
SG::ReadCondHandleKey< jFEXDBCondData > m_BDToolKey
jFEXPileupAndNoise(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
int getET_HAD(const LVL1::jTower *tmpTower)
int getTTowerEta(const LVL1::jTower *tmpTower)
std::unordered_map< int, std::vector< int > > m_map_Etvalues_EM
int getTTArea_HAD(const LVL1::jTower *tmpTower)
virtual void ApplyNoise2Met(bool b) override
virtual void setup(int FPGA[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]) override
int getTTAreaINV_EM(const LVL1::jTower *tmpTower)
int getET_EM(const LVL1::jTower *tmpTower)
SG::ReadHandle< jTowerContainer > m_jTowerContainer
virtual StatusCode initialize() override
standard Athena-Algorithm method
virtual StatusCode reset() override
int rhoDivLUT(int ntowers)
int getTTAreaINV_HAD(const LVL1::jTower *tmpTower)
int m_FPGA_forward[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
virtual std::unordered_map< int, std::vector< int > > GetEt_values() override
virtual ~jFEXPileupAndNoise()
Destructor.
void ApplyNoiseCuts(std::unordered_map< int, std::vector< int > > &map_Etvalues, int layer)
virtual StatusCode ApplyPileup() override
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
int getTTowerET(const LVL1::jTower *tmpTower)
virtual std::vector< int > CalculatePileup() override
virtual std::unordered_map< int, std::vector< int > > Get_EM_Et_values() override
virtual void ApplyNoise2Jets(bool b) override
int getTTArea_EM(const LVL1::jTower *tmpTower)
std::unordered_map< int, std::vector< int > > m_map_Etvalues_HAD
The jTower class is an interface object for jFEX trigger algorithms The purposes are twofold:
int getTotalET() const
Get ET sum of all cells in the jTower in MeV.
int getET_EM() const
Get EM ET value in MeV.
int iEta() const
Get coordinates of tower.
int getNoiseForJet(int layer) const
int getTTowerArea(int layer) const
int getTTowerAreaInv(int layer) const
int getNoiseForMet(int layer) const
int getET_HAD() const
Get HAD ET value in MeV.
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...