From 3745f300412717eab292621c6cc6802ef56215bf Mon Sep 17 00:00:00 2001 From: Sunanda Date: Tue, 8 Oct 2024 20:24:32 +0200 Subject: [PATCH] Correct the HcalTopology class for 2 new geometry modes - backport #46308 --- .../Geometry/test/calogeometry2026writer.py | 5 ++- Geometry/CaloTopology/src/HcalTopology.cc | 40 ++++++++----------- 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/CondTools/Geometry/test/calogeometry2026writer.py b/CondTools/Geometry/test/calogeometry2026writer.py index 5ccd23807fa1f..77d0816049103 100644 --- a/CondTools/Geometry/test/calogeometry2026writer.py +++ b/CondTools/Geometry/test/calogeometry2026writer.py @@ -1,8 +1,9 @@ import FWCore.ParameterSet.Config as cms -process = cms.Process("CaloGeometryWriter") +from Configuration.Eras.Era_Phase2C17I13M9_cff import Phase2C17I13M9 +process = cms.Process("CaloGeometryWriter",Phase2C17I13M9) process.load('CondCore.CondDB.CondDB_cfi') -process.load('Configuration.Geometry.GeometryExtended2026D41_cff') +process.load('Configuration.Geometry.GeometryExtended2026D110_cff') process.load('Geometry.CaloEventSetup.CaloGeometry2026DBWriter_cfi') process.load('CondTools.Geometry.HcalParametersWriter_cff') diff --git a/Geometry/CaloTopology/src/HcalTopology.cc b/Geometry/CaloTopology/src/HcalTopology.cc index c550077058b81..ebd6aed2ba8e6 100644 --- a/Geometry/CaloTopology/src/HcalTopology.cc +++ b/Geometry/CaloTopology/src/HcalTopology.cc @@ -64,7 +64,7 @@ HcalTopology::HcalTopology(const HcalDDDRecConstants* hcons, const bool mergePos } else { nEtaHE_ = (lastHERing_ - firstHERing_ + 1); } - if (mode_ == HcalTopologyMode::LHC) { + if ((mode_ == HcalTopologyMode::LHC) || (mode_ == HcalTopologyMode::Run3)) { topoVersion_ = 0; //DL HBSize_ = kHBSizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/barrel * barrel/hcal HESize_ = kHESizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/endcap * endcap/hcal @@ -72,7 +72,7 @@ HcalTopology::HcalTopology(const HcalDDDRecConstants* hcons, const bool mergePos HFSize_ = kHFSizePreLS1; // ieta * iphi * depth * 2 CALIBSize_ = kCALIBSizePreLS1; numberOfShapes_ = 87; - } else if (mode_ == HcalTopologyMode::SLHC) { // need to know more eventually + } else if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::Run4)) { // need to know more eventually topoVersion_ = 10; HBSize_ = nEtaHB_ * IPHI_MAX * maxDepthHB_ * 2; HESize_ = nEtaHE_ * maxPhiHE_ * maxDepthHE_ * 2; @@ -195,18 +195,14 @@ HcalTopology::HcalTopology(HcalTopologyMode::Mode mode, HFSize_(kHFSizePreLS1), HTSize_(kHTSizePreLS1), CALIBSize_(kCALIBSizePreLS1), - numberOfShapes_( - ((mode == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::Run3) || (mode_ == HcalTopologyMode::Run4)) - ? 500 - : 87) { - if (mode_ == HcalTopologyMode::LHC) { + numberOfShapes_(((mode == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::Run4)) ? 500 : 87) { + if ((mode_ == HcalTopologyMode::LHC) || (mode_ == HcalTopologyMode::Run3)) { topoVersion_ = 0; //DL HBSize_ = kHBSizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/barrel * barrel/hcal HESize_ = kHESizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/endcap * endcap/hcal HOSize_ = kHOSizePreLS1; // ieta * iphi * 2 HFSize_ = kHFSizePreLS1; // phi * eta * depth * pm - } else if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::Run3) || - (mode_ == HcalTopologyMode::Run4)) { // need to know more eventually + } else if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::Run4)) { // need to know more eventually HBSize_ = maxDepthHB * 16 * IPHI_MAX * 2; HESize_ = maxDepthHE * (29 - 16 + 1) * maxPhiHE_ * 2; HOSize_ = 15 * IPHI_MAX * 2; // ieta * iphi * 2 @@ -571,8 +567,7 @@ bool HcalTopology::validRaw(const HcalDetId& id) const { if (ok) { if (subdet == HcalBarrel) { - if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::H2HE) || (mode_ == HcalTopologyMode::Run3) || - (mode_ == HcalTopologyMode::Run4)) { + if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::H2HE) || (mode_ == HcalTopologyMode::Run4)) { if ((aieta > lastHBRing()) || (depth > hcons_->getMaxDepth(0, aieta, iphi, zside)) || (depth < hcons_->getMinDepth(0, aieta, iphi, zside))) ok = false; @@ -581,8 +576,7 @@ bool HcalTopology::validRaw(const HcalDetId& id) const { ok = false; } } else if (subdet == HcalEndcap) { - if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::H2HE) || (mode_ == HcalTopologyMode::Run3) || - (mode_ == HcalTopologyMode::Run4)) { + if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::H2HE) || (mode_ == HcalTopologyMode::Run4)) { if ((depth > hcons_->getMaxDepth(1, aieta, iphi, zside)) || (depth < hcons_->getMinDepth(1, aieta, iphi, zside)) || (aieta < firstHERing()) || (aieta > lastHERing())) { ok = false; @@ -823,8 +817,7 @@ int HcalTopology::decAIEta(const HcalDetId& id, HcalDetId neighbors[2]) const { void HcalTopology::depthBinInformation( HcalSubdetector subdet, int etaRing, int iphi, int zside, int& nDepthBins, int& startingBin) const { if (subdet == HcalBarrel) { - if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::H2HE) || (mode_ == HcalTopologyMode::Run3) || - (mode_ == HcalTopologyMode::Run4)) { + if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::H2HE) || (mode_ == HcalTopologyMode::Run4)) { startingBin = hcons_->getMinDepth(0, etaRing, iphi, zside); if (etaRing == lastHBRing()) { nDepthBins = hcons_->getDepthEta16(1, iphi, zside) - startingBin + 1; @@ -841,8 +834,7 @@ void HcalTopology::depthBinInformation( } } } else if (subdet == HcalEndcap) { - if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::H2HE) || (mode_ == HcalTopologyMode::Run3) || - (mode_ == HcalTopologyMode::Run4)) { + if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::H2HE) || (mode_ == HcalTopologyMode::Run4)) { if (etaRing == firstHERing()) { startingBin = hcons_->getDepthEta16(2, iphi, zside); } else { @@ -896,17 +888,16 @@ bool HcalTopology::incrementDepth(HcalDetId& detId) const { } else if (subdet == HcalBarrel && etaRing == lastHBRing()) { // overlap subdet = HcalEndcap; - if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::H2HE) || (mode_ == HcalTopologyMode::Run3) || - (mode_ == HcalTopologyMode::Run4)) + if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::H2HE) || (mode_ == HcalTopologyMode::Run4)) depth = hcons_->getDepthEta16(2, iphi, zside); } else if ((subdet == HcalEndcap) && (etaRing == lastHERing() - 1) && (mode_ != HcalTopologyMode::SLHC) && - (mode_ != HcalTopologyMode::Run3) && (mode_ != HcalTopologyMode::Run4)) { + (mode_ != HcalTopologyMode::Run4)) { // guard ring HF29 is behind HE 28 subdet = HcalForward; (ieta > 0) ? ++ieta : --ieta; depth = 1; } else if ((subdet == HcalEndcap) && (etaRing == lastHERing()) && (mode_ != HcalTopologyMode::SLHC) && - (mode_ != HcalTopologyMode::Run3) && (mode_ != HcalTopologyMode::Run4)) { + (mode_ != HcalTopologyMode::Run4)) { // split cells go to bigger granularity. Ring 29 -> 28 (ieta > 0) ? --ieta : ++ieta; } else { @@ -940,8 +931,7 @@ bool HcalTopology::decrementDepth(HcalDetId& detId) const { } } } else if ((subdet == HcalEndcap) && (etaRing == lastHERing()) && (depth == hcons_->getDepthEta29(iphi, zside, 0)) && - (mode_ != HcalTopologyMode::SLHC) && (mode_ != HcalTopologyMode::Run3) && - (mode_ != HcalTopologyMode::Run4)) { + (mode_ != HcalTopologyMode::SLHC) && (mode_ != HcalTopologyMode::Run4)) { (ieta > 0) ? --ieta : ++ieta; } else if (depth <= 0) { if (subdet == HcalForward && etaRing == firstHFRing()) { @@ -1143,7 +1133,9 @@ std::pair HcalTopology::etaRange(HcalSubdetector subdet, int ket return std::pair(etaTableHF[ii], etaTableHF[ii + 1]); } } else { - int ietal = (mode_ == HcalTopologyMode::LHC && ieta == lastHERing_ - 1) ? (ieta + 1) : ieta; + int ietal = (((mode_ == HcalTopologyMode::LHC) || (mode_ == HcalTopologyMode::Run3)) && ieta == lastHERing_ - 1) + ? (ieta + 1) + : ieta; if ((ietal < (int)(etaTable.size())) && (ieta > 0)) return std::pair(etaTable[ieta - 1], etaTable[ietal]); }