From a682e047760e2fe0246ea55d1f56588d7d1902bf Mon Sep 17 00:00:00 2001 From: akshaya <99753263+AkshayaVijay@users.noreply.github.com> Date: Fri, 24 Oct 2025 14:43:18 -0500 Subject: [PATCH 01/10] new Layermode"xyz" for topo clustering for ScFi layermode xyz groups hits based on the local x,y and z positions. --- .../calorimetry/ImagingTopoCluster.cc | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/algorithms/calorimetry/ImagingTopoCluster.cc b/src/algorithms/calorimetry/ImagingTopoCluster.cc index 8031c7c6a6..3125590768 100644 --- a/src/algorithms/calorimetry/ImagingTopoCluster.cc +++ b/src/algorithms/calorimetry/ImagingTopoCluster.cc @@ -63,6 +63,12 @@ void ImagingTopoCluster::init() { sameLayerDistXY[1] = std::visit(_toDouble, m_cfg.sameLayerDistXY[1]) / dd4hep::mm; diffLayerDistXY[0] = std::visit(_toDouble, m_cfg.diffLayerDistXY[0]) / dd4hep::mm; diffLayerDistXY[1] = std::visit(_toDouble, m_cfg.diffLayerDistXY[1]) / dd4hep::mm; + sameLayerDistXYZ[0] = m_cfg.sameLayerDistXYZ[0] / dd4hep::mm; + sameLayerDistXYZ[1] = m_cfg.sameLayerDistXYZ[1] / dd4hep::mm; + sameLayerDistXYZ[2] = m_cfg.sameLayerDistXYZ[2] / dd4hep::mm; + diffLayerDistXYZ[0] = m_cfg.diffLayerDistXYZ[0] / dd4hep::mm; + diffLayerDistXYZ[1] = m_cfg.diffLayerDistXYZ[1] / dd4hep::mm; + diffLayerDistXYZ[2] = m_cfg.diffLayerDistXYZ[2] / dd4hep::mm; sameLayerDistEtaPhi[0] = m_cfg.sameLayerDistEtaPhi[0]; sameLayerDistEtaPhi[1] = m_cfg.sameLayerDistEtaPhi[1] / dd4hep::rad; diffLayerDistEtaPhi[0] = m_cfg.diffLayerDistEtaPhi[0]; @@ -89,6 +95,16 @@ void ImagingTopoCluster::init() { "Local [x, y] distance between hits <= [{:.4f} mm, {:.4f} mm].", sameLayerDistXY[0], sameLayerDistXY[1]); break; + case ImagingTopoClusterConfig::ELayerMode::xyz: + if (m_cfg.sameLayerDistXYZ.size() != 3) { + const std::string msg = "Expected 3 values (x_dist, y_dist, z_dist) for sameLayerDistXYZ"; + error(msg); + throw std::runtime_error(msg); + } + info("Same-layer clustering (same sector and same layer): " + "Local [x, y, z] distance between hits <= [{:.4f} mm, {:.4f} mm, {:.4f} mm].", + sameLayerDistXYZ[0], sameLayerDistXYZ[1], sameLayerDistXYZ[2]); + break; case ImagingTopoClusterConfig::ELayerMode::etaphi: if (m_cfg.sameLayerDistEtaPhi.size() != 2) { const std::string msg = "Expected 2 values (eta_dist, phi_dist) for sameLayerDistEtaPhi"; @@ -135,6 +151,16 @@ void ImagingTopoCluster::init() { "Global [x, y] distance between hits <= [{:.4f} mm, {:.4f} mm].", m_cfg.neighbourLayersRange, diffLayerDistXY[0], diffLayerDistXY[1]); break; + case ImagingTopoClusterConfig::ELayerMode::xyz: + if (m_cfg.diffLayerDistXYZ.size() != 3) { + const std::string msg = "Expected 3 values (x_dist, y_dist, y_dist) for diffLayerDistXYZ"; + error(msg); + throw std::runtime_error(msg); + } + info("Neighbour layers clustering (same sector and layer id within +- {:d}): " + "Global [x, y, z] distance between hits <= [{:.4f} mm, {:.4f} mm, {:.4f} mm].", + m_cfg.neighbourLayersRange, diffLayerDistXYZ[0], diffLayerDistXYZ[1], diffLayerDistXYZ[2]); + break; case ImagingTopoClusterConfig::ELayerMode::tz: if (m_cfg.diffLayerDistTZ.size() != 2) { const std::string msg = "Expected 2 values (t_dist, z_dist) for diffLayerDistTZ"; @@ -260,6 +286,11 @@ bool ImagingTopoCluster::is_neighbour(const edm4eic::CalorimeterHit& h1, return (std::abs(h1.getLocal().x - h2.getLocal().x) <= sameLayerDistXY[0]) && (std::abs(h1.getLocal().y - h2.getLocal().y) <= sameLayerDistXY[1]); + case ImagingTopoClusterConfig::ELayerMode::xyz: + return (std::abs(h1.getLocal().x - h2.getLocal().x) <= sameLayerDistXYZ[0]) && + (std::abs(h1.getLocal().y - h2.getLocal().y) <= sameLayerDistXYZ[1]) && + (std::abs(h1.getLocal().z - h2.getLocal().z) <= sameLayerDistXYZ[2]); + case ImagingTopoClusterConfig::ELayerMode::etaphi: return (std::abs(edm4hep::utils::eta(h1.getPosition()) - edm4hep::utils::eta(h2.getPosition())) <= sameLayerDistEtaPhi[0]) && @@ -296,6 +327,11 @@ bool ImagingTopoCluster::is_neighbour(const edm4eic::CalorimeterHit& h1, return (std::abs(h1.getPosition().x - h2.getPosition().x) <= diffLayerDistXY[0]) && (std::abs(h1.getPosition().y - h2.getPosition().y) <= diffLayerDistXY[1]); + case ImagingTopoClusterConfig::ELayerMode::xyz: + return (std::abs(h1.getPosition().x - h2.getPosition().x) <= diffLayerDistXYZ[0]) && + (std::abs(h1.getPosition().y - h2.getPosition().y) <= diffLayerDistXYZ[1]) && + (std::abs(h1.getPosition().z - h2.getPosition().z) <= diffLayerDistXYZ[2]); + case eicrecon::ImagingTopoClusterConfig::ELayerMode::tz: { auto phi = 0.5 * (edm4hep::utils::angleAzimuthal(h1.getPosition()) + edm4hep::utils::angleAzimuthal(h2.getPosition())); From d97a1b5881bbc2a11b3e879181373138d2c7837d Mon Sep 17 00:00:00 2001 From: akshaya <99753263+AkshayaVijay@users.noreply.github.com> Date: Fri, 24 Oct 2025 14:45:41 -0500 Subject: [PATCH 02/10] Update ImagingTopoCluster.h Added 3D distance arrays for same and different layers. --- src/algorithms/calorimetry/ImagingTopoCluster.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/algorithms/calorimetry/ImagingTopoCluster.h b/src/algorithms/calorimetry/ImagingTopoCluster.h index 1d7d30aae9..1d7654b09b 100644 --- a/src/algorithms/calorimetry/ImagingTopoCluster.h +++ b/src/algorithms/calorimetry/ImagingTopoCluster.h @@ -55,6 +55,8 @@ class ImagingTopoCluster : public ImagingTopoClusterAlgorithm, // unitless counterparts of the input parameters std::array sameLayerDistXY{0, 0}; std::array diffLayerDistXY{0, 0}; + std::array sameLayerDistXYZ{0, 0, 0}; + std::array diffLayerDistXYZ{0, 0, 0}; std::array sameLayerDistEtaPhi{0, 0}; std::array diffLayerDistEtaPhi{0, 0}; std::array sameLayerDistTZ{0, 0}; From d79bc67c5eb55256d14e24fadbfb040f366cb2b2 Mon Sep 17 00:00:00 2001 From: akshaya <99753263+AkshayaVijay@users.noreply.github.com> Date: Fri, 24 Oct 2025 14:50:59 -0500 Subject: [PATCH 03/10] Update ImagingTopoClusterConfig.h --- .../calorimetry/ImagingTopoClusterConfig.h | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/algorithms/calorimetry/ImagingTopoClusterConfig.h b/src/algorithms/calorimetry/ImagingTopoClusterConfig.h index 01bc1f1845..b90edf3635 100644 --- a/src/algorithms/calorimetry/ImagingTopoClusterConfig.h +++ b/src/algorithms/calorimetry/ImagingTopoClusterConfig.h @@ -15,22 +15,26 @@ struct ImagingTopoClusterConfig { // maximum difference in layer numbers that can be considered as neighbours int neighbourLayersRange = 1; - // maximum distance of global (x, y) to be considered as neighbors at same layers (if layerMode==xy) + // maximum distance of global (x, y) to be considered as neighbors at same layers (if samelayerMode==xy) std::vector> sameLayerDistXY = {1.0 * dd4hep::mm, 1.0 * dd4hep::mm}; - // maximum distance of global (eta, phi) to be considered as neighbors at same layers (if layerMode==etaphi) + // maximum distance of local (x, y,z) to be considered as neighbors at same layers (if samelayerMode==xyz) + std::vector sameLayerDistXYZ = {1.0 * dd4hep::mm,1.0 * dd4hep::mm,20.0 * dd4hep::mm}; + // maximum distance of global (eta, phi) to be considered as neighbors at same layers (if samelayerMode==etaphi) std::vector sameLayerDistEtaPhi = {0.01, 0.01}; - // maximum distance of global (t, z) to be considered as neighbors at same layers (if layerMode==tz) + // maximum distance of global (t, z) to be considered as neighbors at same layers (if samelayerMode==tz) std::vector sameLayerDistTZ = {1.0 * dd4hep::mm, 1.0 * dd4hep::mm}; - // maximum distance of global (x, y) to be considered as neighbors at different layers (if layerMode==xy) + // maximum distance of global (x, y) to be considered as neighbors at different layers (if samelayerMode==xy) std::vector> diffLayerDistXY = {1.0 * dd4hep::mm, 1.0 * dd4hep::mm}; - // maximum distance of global (eta, phi) to be considered as neighbors at different layers (if layerMode==etaphi) + // maximum distance of global (x, y,z) to be considered as neighbors at different layers (if difflayerMode==xyz) + std::vector diffLayerDistXYZ = {1.0 * dd4hep::mm,1.0 * dd4hep::mm,20.0 * dd4hep::mm}; + // maximum distance of global (eta, phi) to be considered as neighbors at different layers (if samelayerMode==etaphi) std::vector diffLayerDistEtaPhi = {0.01, 0.01}; - // maximum distance of global (t, z) to be considered as neighbors at different layers (if layerMode==tz) + // maximum distance of global (t, z) to be considered as neighbors at different layers (if samelayerMode==tz) std::vector diffLayerDistTZ = {1.0 * dd4hep::mm, 1.0 * dd4hep::mm}; // Layermodes - enum class ELayerMode { etaphi = 0, xy = 1, tz = 2 }; + enum class ELayerMode { etaphi = 0, xy = 1, xyz = 2, tz = 3 }; // determines how neighbors are determined for hits in same layers (using either eta and phi, or x and y) ELayerMode sameLayerMode = ELayerMode::xy; // for ldiff =0 // determines how neighbors are determined for hits in different layers (using either eta and phi, or x and y) @@ -57,7 +61,9 @@ std::istream& operator>>(std::istream& in, ImagingTopoClusterConfig::ELayerMode& layerMode = ImagingTopoClusterConfig::ELayerMode::etaphi; } else if (s == "xy" or s == "1") { layerMode = ImagingTopoClusterConfig::ELayerMode::xy; - } else if (s == "tz" or s == "2") { + } else if (s == "xyz" or s == "2") { + layerMode = ImagingTopoClusterConfig::ELayerMode::xyz; + } else if (s == "tz" or s == "3") { layerMode = ImagingTopoClusterConfig::ELayerMode::tz; } else { in.setstate(std::ios::failbit); // Set the fail bit if the input is not valid @@ -73,6 +79,9 @@ std::ostream& operator<<(std::ostream& out, const ImagingTopoClusterConfig::ELay case ImagingTopoClusterConfig::ELayerMode::xy: out << "xy"; break; + case ImagingTopoClusterConfig::ELayerMode::xyz: + out << "xyz"; + break; case ImagingTopoClusterConfig::ELayerMode::tz: out << "tz"; break; From cc50328b8897ea6fedbd6b1a6d47ade073be7986 Mon Sep 17 00:00:00 2001 From: akshaya <99753263+AkshayaVijay@users.noreply.github.com> Date: Fri, 24 Oct 2025 14:57:11 -0500 Subject: [PATCH 04/10] Update BEMC.cc --- src/detectors/BEMC/BEMC.cc | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/detectors/BEMC/BEMC.cc b/src/detectors/BEMC/BEMC.cc index 6e26e58adf..4d95f9a729 100644 --- a/src/detectors/BEMC/BEMC.cc +++ b/src/detectors/BEMC/BEMC.cc @@ -248,6 +248,41 @@ void InitPlugin(JApplication* app) { {"EcalBarrelScFiClusters", "EcalBarrelScFiClusterAssociations"}, {.longitudinalShowerInfoAvailable = true, .energyWeight = "log", .logWeightBase = 6.2}, app)); + // Imaging TopoClustering on ScFi + app->Add(new JOmniFactoryGeneratorT( + "EcalBarrelScFiProtoClusters_Topo", {"EcalBarrelScFiRecHits"}, + {"EcalBarrelScFiProtoClusters_Topo"}, + { + .neighbourLayersRange = 2, // # id diff for adjacent layer + .sameLayerDistXYZ = {80.0 * dd4hep::mm, 80.0 * dd4hep::mm, 80.0 * dd4hep::mm}, // # same layer + .diffLayerDistXYZ = {80.0 * dd4hep::mm, 80.0 * dd4hep::mm, 80.0 * dd4hep::mm}, + .sameLayerMode = eicrecon::ImagingTopoClusterConfig::ELayerMode::xyz, + .diffLayerMode = eicrecon::ImagingTopoClusterConfig::ELayerMode::xyz, + .sectorDist = 5.0 * dd4hep::cm, + .minClusterHitEdep = 0, + .minClusterCenterEdep = 0, + .minClusterEdep = 50 * dd4hep::MeV, + .minClusterNhits = 10, + + }, + app // TODO: Remove me once fixed + )); + + app->Add(new JOmniFactoryGeneratorT( + "EcalBarrelScFiTopoClustersWithoutShapes", + {"EcalBarrelScFiProtoClusters_Topo", // edm4eic::ProtoClusterCollection + "EcalBarrelScFiRawHitAssociations"}, // edm4eic::MCRecoCalorimeterHitAssociation + {"EcalBarrelScFiTopoClustersWithoutShapes", // edm4eic::Cluster + "EcalBarrelScFiTopoClusterAssociationsWithoutShapes"}, // edm4eic::MCRecoClusterParticleAssociation + {.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 6.2, .enableEtaBounds = false}, + app // TODO: Remove me once fixed + )); + app->Add(new JOmniFactoryGeneratorT( + "EcalBarrelScFiTopoClusters", + {"EcalBarrelScFiTopoClustersWithoutShapes", "EcalBarrelScFiTopoClusterAssociationsWithoutShapes"}, + {"EcalBarrelScFiTopoClusters", "EcalBarrelScFiTopoClusterAssociations"}, + {.longitudinalShowerInfoAvailable = true, .energyWeight = "log", .logWeightBase = 6.2}, app)); + // Make sure digi and reco use the same value decltype(CalorimeterHitDigiConfig::capADC) EcalBarrelImaging_capADC = 8192; //8192, 13bit ADC decltype(CalorimeterHitDigiConfig::dyRangeADC) EcalBarrelImaging_dyRangeADC = 3 * dd4hep::MeV; From f75b938b9f1aff09cd2b10ad2fd6e55a14281908 Mon Sep 17 00:00:00 2001 From: akshaya <99753263+AkshayaVijay@users.noreply.github.com> Date: Fri, 24 Oct 2025 14:58:43 -0500 Subject: [PATCH 05/10] Update ImagingTopoCluster_factory.h --- src/factories/calorimetry/ImagingTopoCluster_factory.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/factories/calorimetry/ImagingTopoCluster_factory.h b/src/factories/calorimetry/ImagingTopoCluster_factory.h index c7deb78279..6145083f74 100644 --- a/src/factories/calorimetry/ImagingTopoCluster_factory.h +++ b/src/factories/calorimetry/ImagingTopoCluster_factory.h @@ -31,6 +31,8 @@ class ImagingTopoCluster_factory config().diffLayerDistEtaPhi}; ParameterRef> m_ldtz_same{this, "sameLayerDistTZ", config().sameLayerDistTZ}; ParameterRef> m_ldtz_diff{this, "diffLayerDistTZ", config().diffLayerDistTZ}; + ParameterRef> m_ldxyz_same{this, "sameLayerDistXYZ", config().sameLayerDistXYZ}; + ParameterRef> m_ldxyz_diff{this, "diffLayerDistXYZ", config().diffLayerDistXYZ}; ParameterRef m_sameLayerMode{ this, "sameLayerMode", config().sameLayerMode}; ParameterRef m_diffLayerMode{ From fda1dbac14d25ca55c09951c221cdb73d369bd63 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 24 Oct 2025 20:09:14 +0000 Subject: [PATCH 06/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../calorimetry/ImagingTopoClusterConfig.h | 4 ++-- src/detectors/BEMC/BEMC.cc | 22 ++++++++++--------- .../calorimetry/ImagingTopoCluster_factory.h | 6 +++-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/algorithms/calorimetry/ImagingTopoClusterConfig.h b/src/algorithms/calorimetry/ImagingTopoClusterConfig.h index b90edf3635..639a5d0dc0 100644 --- a/src/algorithms/calorimetry/ImagingTopoClusterConfig.h +++ b/src/algorithms/calorimetry/ImagingTopoClusterConfig.h @@ -19,7 +19,7 @@ struct ImagingTopoClusterConfig { std::vector> sameLayerDistXY = {1.0 * dd4hep::mm, 1.0 * dd4hep::mm}; // maximum distance of local (x, y,z) to be considered as neighbors at same layers (if samelayerMode==xyz) - std::vector sameLayerDistXYZ = {1.0 * dd4hep::mm,1.0 * dd4hep::mm,20.0 * dd4hep::mm}; + std::vector sameLayerDistXYZ = {1.0 * dd4hep::mm, 1.0 * dd4hep::mm, 20.0 * dd4hep::mm}; // maximum distance of global (eta, phi) to be considered as neighbors at same layers (if samelayerMode==etaphi) std::vector sameLayerDistEtaPhi = {0.01, 0.01}; // maximum distance of global (t, z) to be considered as neighbors at same layers (if samelayerMode==tz) @@ -28,7 +28,7 @@ struct ImagingTopoClusterConfig { std::vector> diffLayerDistXY = {1.0 * dd4hep::mm, 1.0 * dd4hep::mm}; // maximum distance of global (x, y,z) to be considered as neighbors at different layers (if difflayerMode==xyz) - std::vector diffLayerDistXYZ = {1.0 * dd4hep::mm,1.0 * dd4hep::mm,20.0 * dd4hep::mm}; + std::vector diffLayerDistXYZ = {1.0 * dd4hep::mm, 1.0 * dd4hep::mm, 20.0 * dd4hep::mm}; // maximum distance of global (eta, phi) to be considered as neighbors at different layers (if samelayerMode==etaphi) std::vector diffLayerDistEtaPhi = {0.01, 0.01}; // maximum distance of global (t, z) to be considered as neighbors at different layers (if samelayerMode==tz) diff --git a/src/detectors/BEMC/BEMC.cc b/src/detectors/BEMC/BEMC.cc index 4d95f9a729..5324cc5dd1 100644 --- a/src/detectors/BEMC/BEMC.cc +++ b/src/detectors/BEMC/BEMC.cc @@ -248,30 +248,31 @@ void InitPlugin(JApplication* app) { {"EcalBarrelScFiClusters", "EcalBarrelScFiClusterAssociations"}, {.longitudinalShowerInfoAvailable = true, .energyWeight = "log", .logWeightBase = 6.2}, app)); - // Imaging TopoClustering on ScFi + // Imaging TopoClustering on ScFi app->Add(new JOmniFactoryGeneratorT( "EcalBarrelScFiProtoClusters_Topo", {"EcalBarrelScFiRecHits"}, {"EcalBarrelScFiProtoClusters_Topo"}, { .neighbourLayersRange = 2, // # id diff for adjacent layer - .sameLayerDistXYZ = {80.0 * dd4hep::mm, 80.0 * dd4hep::mm, 80.0 * dd4hep::mm}, // # same layer - .diffLayerDistXYZ = {80.0 * dd4hep::mm, 80.0 * dd4hep::mm, 80.0 * dd4hep::mm}, + .sameLayerDistXYZ = {80.0 * dd4hep::mm, 80.0 * dd4hep::mm, + 80.0 * dd4hep::mm}, // # same layer + .diffLayerDistXYZ = {80.0 * dd4hep::mm, 80.0 * dd4hep::mm, 80.0 * dd4hep::mm}, .sameLayerMode = eicrecon::ImagingTopoClusterConfig::ELayerMode::xyz, .diffLayerMode = eicrecon::ImagingTopoClusterConfig::ELayerMode::xyz, - .sectorDist = 5.0 * dd4hep::cm, + .sectorDist = 5.0 * dd4hep::cm, .minClusterHitEdep = 0, .minClusterCenterEdep = 0, .minClusterEdep = 50 * dd4hep::MeV, .minClusterNhits = 10, - + }, app // TODO: Remove me once fixed - )); + )); app->Add(new JOmniFactoryGeneratorT( "EcalBarrelScFiTopoClustersWithoutShapes", - {"EcalBarrelScFiProtoClusters_Topo", // edm4eic::ProtoClusterCollection - "EcalBarrelScFiRawHitAssociations"}, // edm4eic::MCRecoCalorimeterHitAssociation + {"EcalBarrelScFiProtoClusters_Topo", // edm4eic::ProtoClusterCollection + "EcalBarrelScFiRawHitAssociations"}, // edm4eic::MCRecoCalorimeterHitAssociation {"EcalBarrelScFiTopoClustersWithoutShapes", // edm4eic::Cluster "EcalBarrelScFiTopoClusterAssociationsWithoutShapes"}, // edm4eic::MCRecoClusterParticleAssociation {.energyWeight = "log", .sampFrac = 1.0, .logWeightBase = 6.2, .enableEtaBounds = false}, @@ -279,10 +280,11 @@ void InitPlugin(JApplication* app) { )); app->Add(new JOmniFactoryGeneratorT( "EcalBarrelScFiTopoClusters", - {"EcalBarrelScFiTopoClustersWithoutShapes", "EcalBarrelScFiTopoClusterAssociationsWithoutShapes"}, + {"EcalBarrelScFiTopoClustersWithoutShapes", + "EcalBarrelScFiTopoClusterAssociationsWithoutShapes"}, {"EcalBarrelScFiTopoClusters", "EcalBarrelScFiTopoClusterAssociations"}, {.longitudinalShowerInfoAvailable = true, .energyWeight = "log", .logWeightBase = 6.2}, app)); - + // Make sure digi and reco use the same value decltype(CalorimeterHitDigiConfig::capADC) EcalBarrelImaging_capADC = 8192; //8192, 13bit ADC decltype(CalorimeterHitDigiConfig::dyRangeADC) EcalBarrelImaging_dyRangeADC = 3 * dd4hep::MeV; diff --git a/src/factories/calorimetry/ImagingTopoCluster_factory.h b/src/factories/calorimetry/ImagingTopoCluster_factory.h index 6145083f74..a6e9bb3a4a 100644 --- a/src/factories/calorimetry/ImagingTopoCluster_factory.h +++ b/src/factories/calorimetry/ImagingTopoCluster_factory.h @@ -31,8 +31,10 @@ class ImagingTopoCluster_factory config().diffLayerDistEtaPhi}; ParameterRef> m_ldtz_same{this, "sameLayerDistTZ", config().sameLayerDistTZ}; ParameterRef> m_ldtz_diff{this, "diffLayerDistTZ", config().diffLayerDistTZ}; - ParameterRef> m_ldxyz_same{this, "sameLayerDistXYZ", config().sameLayerDistXYZ}; - ParameterRef> m_ldxyz_diff{this, "diffLayerDistXYZ", config().diffLayerDistXYZ}; + ParameterRef> m_ldxyz_same{this, "sameLayerDistXYZ", + config().sameLayerDistXYZ}; + ParameterRef> m_ldxyz_diff{this, "diffLayerDistXYZ", + config().diffLayerDistXYZ}; ParameterRef m_sameLayerMode{ this, "sameLayerMode", config().sameLayerMode}; ParameterRef m_diffLayerMode{ From 37a3266b17c321490acee18513fbbf796e8c293e Mon Sep 17 00:00:00 2001 From: akshaya <99753263+AkshayaVijay@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:20:37 -0500 Subject: [PATCH 07/10] Update JEventProcessorPODIO.cc --- src/services/io/podio/JEventProcessorPODIO.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/services/io/podio/JEventProcessorPODIO.cc b/src/services/io/podio/JEventProcessorPODIO.cc index 0f75caff0d..153cc041ac 100644 --- a/src/services/io/podio/JEventProcessorPODIO.cc +++ b/src/services/io/podio/JEventProcessorPODIO.cc @@ -307,6 +307,8 @@ JEventProcessorPODIO::JEventProcessorPODIO() { "EcalBarrelScFiRecHits", "EcalBarrelScFiClusters", "EcalBarrelScFiClusterAssociations", + "EcalBarrelScFiTopoClusters", // ScFi clusters based in Topological Clustering + "EcalBarrelScFiTopoClusterAssociations", "EcalLumiSpecRawHits", "EcalLumiSpecRecHits", "EcalLumiSpecTruthClusters", From 4519da4613bcfde2aa587c200592f5d83fd0a519 Mon Sep 17 00:00:00 2001 From: akshaya <99753263+AkshayaVijay@users.noreply.github.com> Date: Wed, 29 Oct 2025 14:16:48 -0500 Subject: [PATCH 08/10] Update BEMC.cc --- src/detectors/BEMC/BEMC.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/detectors/BEMC/BEMC.cc b/src/detectors/BEMC/BEMC.cc index 5324cc5dd1..eeee9256a3 100644 --- a/src/detectors/BEMC/BEMC.cc +++ b/src/detectors/BEMC/BEMC.cc @@ -255,14 +255,14 @@ void InitPlugin(JApplication* app) { { .neighbourLayersRange = 2, // # id diff for adjacent layer .sameLayerDistXYZ = {80.0 * dd4hep::mm, 80.0 * dd4hep::mm, - 80.0 * dd4hep::mm}, // # same layer - .diffLayerDistXYZ = {80.0 * dd4hep::mm, 80.0 * dd4hep::mm, 80.0 * dd4hep::mm}, + 40.0 * dd4hep::mm}, // # same layer + .diffLayerDistXYZ = {80.0 * dd4hep::mm, 80.0 * dd4hep::mm, 40.0 * dd4hep::mm}, .sameLayerMode = eicrecon::ImagingTopoClusterConfig::ELayerMode::xyz, .diffLayerMode = eicrecon::ImagingTopoClusterConfig::ELayerMode::xyz, .sectorDist = 5.0 * dd4hep::cm, .minClusterHitEdep = 0, .minClusterCenterEdep = 0, - .minClusterEdep = 50 * dd4hep::MeV, + .minClusterEdep = 100 * dd4hep::MeV, .minClusterNhits = 10, }, From 016a4cf271fc0e0afea2a553c7568def593175ef Mon Sep 17 00:00:00 2001 From: akshaya <99753263+AkshayaVijay@users.noreply.github.com> Date: Wed, 29 Oct 2025 14:18:16 -0500 Subject: [PATCH 09/10] Update BEMC.cc --- src/detectors/BEMC/BEMC.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/detectors/BEMC/BEMC.cc b/src/detectors/BEMC/BEMC.cc index eeee9256a3..5d88153ea4 100644 --- a/src/detectors/BEMC/BEMC.cc +++ b/src/detectors/BEMC/BEMC.cc @@ -203,7 +203,7 @@ void InitPlugin(JApplication* app) { .readout = "EcalBarrelScFiHits", .layerField = "layer", .sectorField = "sector", - .localDetFields = {"system"}, + .localDetFields = {"system","sector"}, // here we want to use grid center position (XY) but keeps the z information from fiber-segment // TODO: a more realistic way to get z is to reconstruct it from timing .maskPos = "xy", From b7388423bb2c13ca906fb9f07ba417f6cf7ba696 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 19:18:54 +0000 Subject: [PATCH 10/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/detectors/BEMC/BEMC.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/detectors/BEMC/BEMC.cc b/src/detectors/BEMC/BEMC.cc index 5d88153ea4..ed006fbbfa 100644 --- a/src/detectors/BEMC/BEMC.cc +++ b/src/detectors/BEMC/BEMC.cc @@ -203,7 +203,7 @@ void InitPlugin(JApplication* app) { .readout = "EcalBarrelScFiHits", .layerField = "layer", .sectorField = "sector", - .localDetFields = {"system","sector"}, + .localDetFields = {"system", "sector"}, // here we want to use grid center position (XY) but keeps the z information from fiber-segment // TODO: a more realistic way to get z is to reconstruct it from timing .maskPos = "xy",