6 #include "TProfile2D.h"
34 return StatusCode::SUCCESS;
49 std::map<uint32_t, const xAOD::gFexTower*> emulatedTowers;
52 if(!gFexEmulatedTowerContainer.isValid()){
54 return StatusCode::FAILURE;
58 if(emulatedTowers.find(tower->gFEXtowerID())!=emulatedTowers.end()) {
61 emulatedTowers[tower->gFEXtowerID()] = tower;
69 unsigned int nTowers = 0;
72 Toweret=gfexTowerRoI->towerEt();
73 Towersaturationflag=gfexTowerRoI->isSaturated();
74 float eta = gfexTowerRoI->eta();
75 float phi = gfexTowerRoI->phi();
77 if(!emulatedTowers.empty()) {
78 Towereta =
eta; Towerphi =
phi;
79 TowerId=gfexTowerRoI->gFEXtowerID();
81 auto eTowerItr = emulatedTowers.find(gfexTowerRoI->gFEXtowerID());
82 if(eTowerItr == emulatedTowers.end()) {
85 fill(
"errors",
Decision,lbn,evtNumber,TowerId,Towereta,Towerphi,Toweret,refTowerET,refTowerSat,Towersaturationflag);
89 const auto eTower = eTowerItr->second;
90 refTowerET = eTower->towerEt();
91 refTowerSat = eTower->isSaturated();
93 if(refTowerET != Toweret) {
95 fill(
"errors",
Decision,lbn,evtNumber,TowerId,Towereta,Towerphi,Toweret,refTowerET,refTowerSat,Towersaturationflag);
97 if(refTowerSat != Towersaturationflag) {
99 fill(
"errors",
Decision,lbn,evtNumber,TowerId,Towereta,Towerphi,Toweret,refTowerET,refTowerSat,Towersaturationflag);
106 fill(
"gTowers",Toweret);
108 if (eta < -3.17 && eta > -3.25){
eta = -3.225;}
109 if (eta < 3.3 && eta > 3.17){
eta = 3.275;}
113 if(gfexTowerRoI->towerEt() >= 1662 ){
118 if (
int(Towersaturationflag) == 1){
119 if (std::abs(
eta) >= 3.2 ){
121 fill(
"SatgTowers",Towereta,Towerphi,Toweret);
122 Towerphi =
phi + 0.1;
123 fill(
"SatgTowers",Towereta,Towerphi,Toweret);
126 fill(
"SatgTowers",Towereta,Towerphi,Toweret);
132 if (gfexTowerRoI->towerEt() >= 1342){
133 if (std::abs(
eta) >= 3.2 ){
136 fill(
"highEtgTowers",Towereta,Towerphi,Toweret);
137 fill(
"highEtgTowers",lbn,binNumber);
138 Towerphi =
phi + 0.1;
140 fill(
"highEtgTowers",Towereta,Towerphi,Toweret);
141 fill(
"highEtgTowers",lbn,binNumber);
145 fill(
"highEtgTowers",Towereta,Towerphi,Toweret);
146 fill(
"highEtgTowers",lbn,binNumber);
151 else if (gfexTowerRoI->towerEt() <= 1182){
152 if (std::abs(
eta) >= 3.2){
155 fill(
"lowEtgTowers",Towereta,Towerphi,Toweret);
156 fill(
"lowEtgTowers",lbn,binNumber);
157 Towerphi =
phi + 0.1;
159 fill(
"lowEtgTowers",Towereta,Towerphi,Toweret);
160 fill(
"lowEtgTowers",lbn,binNumber);
164 fill(
"lowEtgTowers",Towereta,Towerphi,Toweret);
165 fill(
"lowEtgTowers",lbn,binNumber);
170 nGfexTowers = nTowers;
171 fill (
"highEtgTowers",lbn,nGfexTowers);
174 return StatusCode::SUCCESS;
178 const std::vector<float>
eta = {-4.9, -4.1,-3.5,-3.25,-3.2,-3.1,-2.9,-2.7,-2.5,-2.2,-2.0,-1.8,-1.6,-1.4,-1.2,-1.0,-0.8,-0.6,-0.4,-0.2,0.0,0.2,0.4,0.6,0.8,1.0,1.2,1.4,1.6,1.8,2.0,2.2,2.5,2.7,2.9,3.1,3.25,3.3,3.5,4.1,4.9};
180 for (
int i = 0;
i <= 40;
i++){
181 if (inputEta >=
eta[
i] && inputEta <
eta[
i+1]){
188 if (inputPhi >=
phi && inputPhi <
phi+0.2){
194 int binN = 32*(xbin-1)+ybin;