From d060c98585e346b60dfac5729915a81b277f1ab8 Mon Sep 17 00:00:00 2001 From: christos <christos@cern.ch> Date: Tue, 30 Mar 2021 21:30:20 +0100 Subject: [PATCH] egammaOQFlagsBuilder second part of cleaning up --- .../egammaTools/src/egammaOQFlagsBuilder.cxx | 318 +++++++++--------- 1 file changed, 158 insertions(+), 160 deletions(-) diff --git a/Reconstruction/egamma/egammaTools/src/egammaOQFlagsBuilder.cxx b/Reconstruction/egamma/egammaTools/src/egammaOQFlagsBuilder.cxx index 450e26ebef79..984b20cbe641 100644 --- a/Reconstruction/egamma/egammaTools/src/egammaOQFlagsBuilder.cxx +++ b/Reconstruction/egamma/egammaTools/src/egammaOQFlagsBuilder.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ // INCLUDE HEADER FILES: @@ -185,10 +185,6 @@ egammaOQFlagsBuilder::execute(const EventContext& ctx, unsigned int iflag = 0; - // Find the central cell in the middle layer - Identifier cellCentrId; - bool foundCentralCell = findCentralCell(cluster, cellCentrId); - // Set timing bit const double absEnergyGeV = fabs(cluster->e() * (1. / Gaudi::Units::GeV)); if (absEnergyGeV != 0 && @@ -200,11 +196,12 @@ egammaOQFlagsBuilder::execute(const EventContext& ctx, double totE = 0; double badE = 0; double energyCellMax = 0; - + // Find the central cell in the middle layer + Identifier cellCentrId; + bool foundCentralCell = findCentralCell(cluster, cellCentrId); if (foundCentralCell) { // Find the list of neighbours cells, to define the 3x3 cluster core std::vector<IdentifierHash> neighbourList = findNeighbours(cellCentrId); - // Get Bad-channel info for this event SG::ReadCondHandle<LArBadChannelCont> larBadChanHdl{ m_bcContKey, ctx }; const LArBadChannelCont* larBadChanCont = *larBadChanHdl; @@ -222,21 +219,34 @@ egammaOQFlagsBuilder::execute(const EventContext& ctx, continue; } // Find cell parameters and properties - float eta = cell->eta(); + const float eta = cell->eta(); // float phi = cell->phi(); // no longer used - float qual = cell->quality(); - CaloSampling::CaloSample layer = cell->caloDDE()->getSampling(); + const float qual = cell->quality(); + const bool isHighQ = qual >= 4000; + const CaloSampling::CaloSample layer = cell->caloDDE()->getSampling(); + + const bool isMissing = ((cell->provenance() & 0x0A00) == 0x0A00); + const bool isMasked = ((cell->provenance() & 0x0A00) == 0x0800); + const bool isPresampler = (layer == CaloSampling::PreSamplerB || + layer == CaloSampling::PreSamplerE); + const bool isL1 = + (layer == CaloSampling::EMB1 || layer == CaloSampling::EME1); + const bool isL2 = + (layer == CaloSampling::EMB2 || layer == CaloSampling::EME2); + const bool isL3 = + (layer == CaloSampling::EMB3 || layer == CaloSampling::EME3); // Calculate badE et totE if ((cell->provenance() & 0x2000) && !(cell->provenance() & 0x0800)) { totE += cell->e(); - if (cell->e() > energyCellMax) + if (cell->e() > energyCellMax) { energyCellMax = cell->e(); - if (cell->quality() > m_QCellCut) + } + if (qual > m_QCellCut) { badE += cell->e(); + } } - bool isACoreCell = false; - isACoreCell = isCore(cell->ID(), neighbourList); + const bool isACoreCell = isCore(cell->ID(), neighbourList); bool isStripCoreCell = false; if ((layer == CaloSampling::EMB1 || layer == CaloSampling::EME1) && @@ -252,90 +262,74 @@ egammaOQFlagsBuilder::execute(const EventContext& ctx, // Set LAr bits const LArBadChannel bc = larBadChanCont->offlineStatus(cell->ID()); - // + const bool isAffected = + (bc.deadCalib() || bc.lowNoiseHG() || bc.lowNoiseMG() || + bc.lowNoiseLG() || bc.distorted() || bc.unstable() || + bc.unstableNoiseHG() || bc.unstableNoiseMG() || bc.unstableNoiseLG() || + bc.peculiarCalibrationLine() || bc.almostDead() || bc.shortProblem()); + if (isACoreCell) { - if ((cell->provenance() & 0x0A00) == 0x0A00) { + if (isMissing) { iflag |= (0x1 << xAOD::EgammaParameters::MissingFEBCellCore); } - if ((cell->provenance() & 0x0A00) == 0x0800) { + if (isMasked) { iflag |= (0x1 << xAOD::EgammaParameters::MaskedCellCore); } if (bc.sporadicBurstNoise() && qual < m_QCellSporCut) { iflag |= (0x1 << xAOD::EgammaParameters::SporadicNoiseLowQCore); } - if (bc.deadCalib() || bc.lowNoiseHG() || bc.lowNoiseMG() || - bc.lowNoiseLG() || bc.distorted() || bc.unstable() || - bc.unstableNoiseHG() || bc.unstableNoiseMG() || - bc.unstableNoiseLG() || bc.peculiarCalibrationLine() || - bc.almostDead() || bc.shortProblem()) { + if (isAffected) { iflag |= (0x1 << xAOD::EgammaParameters::AffectedCellCore); } - if (qual >= 4000) { + if (isHighQ) { iflag |= (0x1 << xAOD::EgammaParameters::HighQCore); } - } else { - if ((cell->provenance() & 0x0A00) == 0x0A00) { - - if (layer == CaloSampling::PreSamplerB || - layer == CaloSampling::PreSamplerE) { + } // end if isACoreCell + else { + if (isMissing) { + if (isPresampler) { iflag |= (0x1 << xAOD::EgammaParameters::MissingFEBCellEdgePS); - } else if (layer == CaloSampling::EMB1 || - layer == CaloSampling::EME1) { + } else if (isL1) { iflag |= (0x1 << xAOD::EgammaParameters::MissingFEBCellEdgeS1); - if (isStripCoreCell) + if (isStripCoreCell){ iflag |= (0x1 << xAOD::EgammaParameters::BadS1Core); - } else if (layer == CaloSampling::EMB2 || - layer == CaloSampling::EME2) { + } + } else if (isL2) { iflag |= (0x1 << xAOD::EgammaParameters::MissingFEBCellEdgeS2); - } else if (layer == CaloSampling::EMB3 || - layer == CaloSampling::EME3) { + } else if (isL3) { iflag |= (0x1 << xAOD::EgammaParameters::MissingFEBCellEdgeS3); } - } - if ((cell->provenance() & 0x0A00) == 0x0800) { - - if (layer == CaloSampling::PreSamplerB || - layer == CaloSampling::PreSamplerE) { + } // isMissing + if (isMasked) { + if (isPresampler) { iflag |= (0x1 << xAOD::EgammaParameters::MaskedCellEdgePS); - } else if (layer == CaloSampling::EMB1 || - layer == CaloSampling::EME1) { + } else if (isL1) { iflag |= (0x1 << xAOD::EgammaParameters::MaskedCellEdgeS1); if (isStripCoreCell) { iflag |= (0x1 << xAOD::EgammaParameters::BadS1Core); } - } else if (layer == CaloSampling::EMB2 || - layer == CaloSampling::EME2) { + } else if (isL2) { iflag |= (0x1 << xAOD::EgammaParameters::MaskedCellEdgeS2); - } else if (layer == CaloSampling::EMB3 || - layer == CaloSampling::EME3) { + } else if (isL3) { iflag |= (0x1 << xAOD::EgammaParameters::MaskedCellEdgeS3); } - } + } // isMasked if (bc.sporadicBurstNoise() && qual < m_QCellSporCut) { iflag |= (0x1 << xAOD::EgammaParameters::SporadicNoiseLowQEdge); } - if (bc.deadCalib() || bc.lowNoiseHG() || bc.lowNoiseMG() || - bc.lowNoiseLG() || bc.distorted() || bc.unstable() || - bc.unstableNoiseHG() || bc.unstableNoiseMG() || - bc.unstableNoiseLG() || bc.peculiarCalibrationLine() || - bc.almostDead() || bc.shortProblem()) { - - if (layer == CaloSampling::PreSamplerB || - layer == CaloSampling::PreSamplerE) { + if (isAffected) { + if (isPresampler) { iflag |= (0x1 << xAOD::EgammaParameters::AffectedCellEdgePS); - } else if (layer == CaloSampling::EMB1 || - layer == CaloSampling::EME1) { + } else if (isL1) { iflag |= (0x1 << xAOD::EgammaParameters::AffectedCellEdgeS1); - } else if (layer == CaloSampling::EMB2 || - layer == CaloSampling::EME2) { + } else if (isL2) { iflag |= (0x1 << xAOD::EgammaParameters::AffectedCellEdgeS2); - } else if (layer == CaloSampling::EMB3 || - layer == CaloSampling::EME3) { + } else if (isL3) { iflag |= (0x1 << xAOD::EgammaParameters::AffectedCellEdgeS3); } - } - if (qual >= 4000) { + } // is affected + if (isHighQ) { iflag |= (0x1 << xAOD::EgammaParameters::HighQEdge); } } @@ -343,15 +337,17 @@ egammaOQFlagsBuilder::execute(const EventContext& ctx, // Set LArQCleaning bit double egammaLArQCleaning = 0; - if (totE != 0) + if (totE != 0) { egammaLArQCleaning = badE / totE; + } if (egammaLArQCleaning > m_LArQCut) { iflag |= (0x1 << xAOD::EgammaParameters::LArQCleaning); } // Set HighRcell bit// double ratioCell = 0; - if (totE != 0) + if (totE != 0) { ratioCell = energyCellMax / totE; + } if (ratioCell > m_RcellCut) { iflag |= (0x1 << xAOD::EgammaParameters::HighRcell); } @@ -411,116 +407,118 @@ egammaOQFlagsBuilder::execute(const EventContext& ctx, //---------------> SAMPLING 2 : CLUSTER CORE deta = 0.5 * 0.025 * 3.; dphi = 0.5 * 0.025 * 3.; - bool isDeadHVS2Core = (m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EMB2, - CaloSampling::EMB2, - 2) || - m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EME2, - CaloSampling::EME2, - 2)); - - if (isDeadHVS2Core) { - iflag |= (0x1 << xAOD::EgammaParameters::DeadHVS1S2S3Core); - } - //----------------> SAMPLINGS 1,2,3 : CLUSTER EDGE - deta = 0.5 * 0.025 * etaSize; - dphi = 0.5 * 0.025 * phiSize; - - bool isNonNominalHVS1S2S3 = (m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EMB1, - CaloSampling::EMB1, - 1) || - m_affectedTool->isAffected(cluster, + const bool isDeadHVS2Core = (m_affectedTool->isAffected(cluster, affCont, deta, dphi, CaloSampling::EMB2, CaloSampling::EMB2, - 1) || - m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EMB3, - CaloSampling::EMB3, - 1) || - m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EME1, - CaloSampling::EME1, - 1) || + 2) || m_affectedTool->isAffected(cluster, affCont, deta, dphi, CaloSampling::EME2, CaloSampling::EME2, - 1) || - m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EME3, - CaloSampling::EME3, - 1)); + 2)); + + if (isDeadHVS2Core) { + iflag |= (0x1 << xAOD::EgammaParameters::DeadHVS1S2S3Core); + } + //----------------> SAMPLINGS 1,2,3 : CLUSTER EDGE + deta = 0.5 * 0.025 * etaSize; + dphi = 0.5 * 0.025 * phiSize; + + const bool isNonNominalHVS1S2S3 = + (m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EMB1, + CaloSampling::EMB1, + 1) || + m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EMB2, + CaloSampling::EMB2, + 1) || + m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EMB3, + CaloSampling::EMB3, + 1) || + m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EME1, + CaloSampling::EME1, + 1) || + m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EME2, + CaloSampling::EME2, + 1) || + m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EME3, + CaloSampling::EME3, + 1)); if (isNonNominalHVS1S2S3) { iflag |= (0x1 << xAOD::EgammaParameters::NonNominalHVS1S2S3); } - bool isDeadHVS1S2S3Edge = (m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EMB1, - CaloSampling::EMB1, - 2) || - m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EMB2, - CaloSampling::EMB2, - 2) || - m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EMB3, - CaloSampling::EMB3, - 2) || - m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EME1, - CaloSampling::EME1, - 2) || - m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EME2, - CaloSampling::EME2, - 2) || - m_affectedTool->isAffected(cluster, - affCont, - deta, - dphi, - CaloSampling::EME3, - CaloSampling::EME3, - 2)); + const bool isDeadHVS1S2S3Edge = + (m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EMB1, + CaloSampling::EMB1, + 2) || + m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EMB2, + CaloSampling::EMB2, + 2) || + m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EMB3, + CaloSampling::EMB3, + 2) || + m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EME1, + CaloSampling::EME1, + 2) || + m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EME2, + CaloSampling::EME2, + 2) || + m_affectedTool->isAffected(cluster, + affCont, + deta, + dphi, + CaloSampling::EME3, + CaloSampling::EME3, + 2)); if (isDeadHVS1S2S3Edge) { iflag |= (0x1 << xAOD::EgammaParameters::DeadHVS1S2S3Edge); -- GitLab