35 bool passBeamBackgroundRemoval =
false;
37 if(
sc.isFailure() || !ifPass)
return StatusCode::SUCCESS;
41 constexpr int nTileCells = 5184;
42 std::vector<float> cellEnergyToNoiseRatio;
43 cellEnergyToNoiseRatio.reserve(nTileCells);
45 std::vector<float> cellNoiseDB;
46 std::vector<float> cellNoiseDBeta;
47 std::vector<float> cellNoiseDBphi;
48 cellNoiseDB.reserve(nTileCells);
49 cellNoiseDBeta.reserve(nTileCells);
50 cellNoiseDBphi.reserve(nTileCells);
54 std::vector<IdentifierHash> hashes;
56 const int nCellsOverThr = 500;
57 std::vector<float> overThrEta;
58 std::vector<float> overThrPhi;
59 std::vector<float> overThrTower;
60 std::vector<float> overThrEnergyGeV;
61 overThrEta.reserve(nCellsOverThr);
62 overThrPhi.reserve(nCellsOverThr);
63 overThrTower.reserve(nCellsOverThr);
64 overThrEnergyGeV.reserve(nCellsOverThr);
73 for (
const CaloCell* cell : *cellContainer) {
80 float energy = cell->energy();
81 double eta = cell->eta();
82 double phi = cell->phi();
83 bool isCellGood = !(cell->badcell());
86 float cellNoise = (
m_twoGaussianNoise) ? caloNoise->getEffectiveSigma(
id, cell->gain(), energy)
87 : caloNoise->getNoise(
id, cell->gain());
89 if (std::isfinite(cellNoise) && cellNoise > 0 && energy != 0) {
90 float energyToNoiseRatio = energy / cellNoise;
91 cellEnergyToNoiseRatio.push_back(energyToNoiseRatio);
93 if (std::abs(energyToNoiseRatio) > 4.0) {
94 hashes.push_back(hash);
95 sampleEta[sample].push_back(
eta);
96 samplePhi[sample].push_back(
phi);
98 ATH_MSG_VERBOSE(
"Cell rs=" << energyToNoiseRatio <<
" e=" << energy <<
" eta=" <<
eta <<
" phi="<<
phi );
99 ATH_MSG_VERBOSE(
"hash=" << hash <<
" module= " << module + 1 <<
" sample=" << sample );
102 cellNoiseDB.push_back(cellNoise);
103 cellNoiseDBeta.push_back(
eta);
104 cellNoiseDBphi.push_back(
phi);
109 float energyGeV = energy /
GeV;
111 overThrEta.push_back(
eta);
112 overThrPhi.push_back(
phi);
113 overThrTower.push_back(tower + 1);
114 overThrEnergyGeV.push_back(energyGeV);
119 overThrModule[sample].push_back(module + 1);
120 overThrModuleEnergy[sample].push_back(energyGeV);
129 if (!sampleEta[sample].
empty()) {
137 if (!hashes.empty()) {
139 fill(
"CellsXNoiseXHash", monHash);
142 if (!cellEnergyToNoiseRatio.empty()) {
144 fill(
"CellsNoiseTile", monCellEnergyToNoiseRatio);
147 if (!cellNoiseDB.empty()) {
151 fill(
"CellsNoiseXEta", monEta, monCellNoise);
152 fill(
"CellsNoiseXPhi", monPhi, monCellNoise);
156 if (!overThrEnergyGeV.empty()) {
159 fill(
"CellsXN", monCellsNumber);
162 fill(
"CellsXE", monEnergy);
165 fill(
"CellsXEta", monEta, monEnergy);
168 fill(
"CellsXPhi", monPhi, monEnergy);
171 fill(
"CellsXTower", monTower, monEnergy);
173 fill(
"CellsXEtaVSPhi", monEta, monPhi);
176 if (!overThrModuleEnergy[sample].
empty()) {
184 fill(
"TileCalCellMonExecuteTime", timer);
186 return StatusCode::SUCCESS;