17 declareInterface<IjFEXPileupAndNoise>(
this);
29 return StatusCode::SUCCESS;
38 return StatusCode::FAILURE;
41 return StatusCode::SUCCESS;
54 return StatusCode::SUCCESS;
76 ATH_MSG_DEBUG(
"---------------- jFEXPileupAndNoise::setup ----------------");
86 ATH_MSG_DEBUG(
"---------------- jFEXPileupAndNoise::setup ----------------");
103 for(
int ieta=0;ieta<
m_etaMAX;ieta++){
123 int em_granularity = 25;
124 int had_granularity = tmp_eta < 15 ? 500 : 25;
126 int tmp_energy_EM =
getET_EM(tmpTower)/em_granularity;
127 int tmp_energy_HAD =
getET_HAD(tmpTower)/had_granularity;
141 if(tmp_energy_EM > myDBTool->get_PUThrLowEm() and tmp_energy_EM < myDBTool->get_PUThrHighEm()) {
149 if(tmp_energy_HAD > myDBTool->get_PUThrLowHadTrex() and tmp_energy_HAD < myDBTool->get_PUThrHighHadTrex()){
155 else if(tmp_eta < 16 ){
156 if(tmp_energy_HAD > myDBTool->get_PUThrLowHadHecOverlap() and tmp_energy_HAD < myDBTool->get_PUThrHighHadHecOverlap()){
162 else if(tmp_eta < 32 ){
163 if(tmp_energy_HAD > myDBTool->get_PUThrLowHadLar() and tmp_energy_HAD < myDBTool->get_PUThrHighHadLar()){
169 else if(tmp_eta >= 32){
173 if(tmp_energy_HAD > myDBTool->get_PUThrLowFcal() and tmp_energy_HAD < myDBTool->get_PUThrHighFcal()){
180 if(tmp_energy_EM > myDBTool->get_PUThrLowFcal() and tmp_energy_EM < myDBTool->get_PUThrHighFcal()){
216 for(
int ieta=0; ieta<
m_etaMAX; ieta++) {
227 if(TTID == 0)
continue;
241 else if(tmp_eta < 16 ) {
244 else if(tmp_eta < 32 ) {
247 else if(tmp_eta >= 32) {
267 return StatusCode::FAILURE;
273 return StatusCode::SUCCESS;
293 for(
int ieta=0; ieta<
m_etaMAX; ieta++) {
304 if(TTID == 0)
continue;
308 std::vector<int> v_energies;
310 v_energies.resize(2,0);
313 int tmp_TotalEt_jet=
getET_EM(tmpTower);
314 int tmp_TotalEt_met=
getET_EM(tmpTower);
326 v_energies[0]=tmp_TotalEt_jet;
327 v_energies[1]=tmp_TotalEt_met;
345 for(
int ieta=0; ieta<
m_etaMAX; ieta++) {
356 if(TTID == 0)
continue;
360 std::vector<int> v_energies;
362 v_energies.resize(2,0);
378 v_energies[0]=tmp_TotalEt_jet;
379 v_energies[1]=tmp_TotalEt_met;
394 for(
auto [key,
vec] : map_Etvalues){
401 map_Etvalues[key][0]=0.;
404 map_Etvalues[key][1]=0.;
414 std::unordered_map<int,std::vector<int> > map_Etvalues;
421 std::vector<int> Et_energy;
426 Et_energy.resize(2,0);
430 map_Etvalues[key] = Et_energy;
438 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 getTTArea_HAD(const LVL1::jTower *tmpTower) const
std::unordered_map< int, std::vector< int > > m_map_Etvalues_EM
int getTTAreaINV_HAD(const LVL1::jTower *tmpTower) const
virtual void ApplyNoise2Met(bool b) override
virtual void setup(int FPGA[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]) override
int getTTArea_EM(const LVL1::jTower *tmpTower) const
int getTTowerET(const LVL1::jTower *tmpTower) const
SG::ReadHandle< jTowerContainer > m_jTowerContainer
virtual StatusCode initialize() override
standard Athena-Algorithm method
virtual StatusCode reset() override
int m_FPGA_forward[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
int rhoDivLUT(int ntowers) const
int getTTowerEta(const LVL1::jTower *tmpTower) const
virtual ~jFEXPileupAndNoise()
Destructor.
int getET_EM(const LVL1::jTower *tmpTower) const
void ApplyNoiseCuts(std::unordered_map< int, std::vector< int > > &map_Etvalues, int layer)
virtual StatusCode ApplyPileup() override
int getTTAreaINV_EM(const LVL1::jTower *tmpTower) const
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
virtual std::unordered_map< int, std::vector< int > > GetEt_values() const override
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
std::unordered_map< int, std::vector< int > > m_map_Etvalues_HAD
int getET_HAD(const LVL1::jTower *tmpTower) const
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...