diff --git a/JugDigi/src/components/CrystalEndcapsDigi.cpp b/JugDigi/src/components/CrystalEndcapsDigi.cpp
index 0d60bc8c73053f8071ae20cf7b38f185fcd43fe9..5b3816d052bd3ed5cc5589cba9a931a926584e1a 100644
--- a/JugDigi/src/components/CrystalEndcapsDigi.cpp
+++ b/JugDigi/src/components/CrystalEndcapsDigi.cpp
@@ -32,9 +32,10 @@ namespace Jug {
     //  ill-formed: using GaudiAlgorithm::GaudiAlgorithm;
     CrystalEndcapsDigi(const std::string& name, ISvcLocator* svcLoc)
         : GaudiAlgorithm(name, svcLoc) {
-          declareProperty("inputHitCollection", m_inputHitCollection,"");
-          declareProperty("outputHitCollection", m_outputHitCollection, "");
-        }
+      declareProperty("inputHitCollection", m_inputHitCollection,"");
+      declareProperty("outputHitCollection", m_outputHitCollection, "");
+    }
+
     StatusCode initialize() override {
       if (GaudiAlgorithm::initialize().isFailure())
         return StatusCode::FAILURE;
@@ -45,6 +46,7 @@ namespace Jug {
       }
       return StatusCode::SUCCESS;
     }
+
     StatusCode execute() override {
       // input collections
       const dd4pod::CalorimeterHitCollection* simhits = m_inputHitCollection.get();
@@ -52,9 +54,10 @@ namespace Jug {
       auto rawhits = m_outputHitCollection.createAndPut();
       eic::RawCalorimeterHitCollection* rawHitCollection = new eic::RawCalorimeterHitCollection();
       for (const auto& ahit : *simhits) {
+        double res = m_gaussDist()/sqrt(ahit.energyDeposit()/Gaudi::Units::GeV);
         eic::RawCalorimeterHit rawhit(
           (long long) ahit.cellID(),
-          (long long) (ahit.energyDeposit() + m_gaussDist*sqrt(ahit.energyDeposit()))/Gaudi::Units::MeV * 100.0,
+          (long long) ahit.energyDeposit() * (1. + res)/Gaudi::Units::MeV * 100.0,
           (double) ahit.truth().time/Gaudi::Units::ns);
           rawhits->push_back(rawhit);
       }
diff --git a/JugReco/src/components/ClusterRecoCoG.cpp b/JugReco/src/components/ClusterRecoCoG.cpp
index f704bd98bc4be1c13ccc903dd9bb61e574940822..d253c964113663ecd4c42562048a2653c5e75278 100644
--- a/JugReco/src/components/ClusterRecoCoG.cpp
+++ b/JugReco/src/components/ClusterRecoCoG.cpp
@@ -32,12 +32,12 @@ class ClusterRecoCoG : public GaudiAlgorithm
 {
 public:
     Gaudi::Property<double> m_logWeightBase{this, "logWeightBase", 3.6};
-    Gaudi::Property<std::string> m_moduleDimZName{this, "moduleDimZName", "CrystalBox_z_length"};
+    Gaudi::Property<double> m_depthCorrection{this, "depthCorrection", 0.0};
+    Gaudi::Property<std::string> m_moduleDimZName{this, "moduleDimZName", ""};
     DataHandle<eic::ClusterCollection>
         m_clusterCollection{"clusterCollection", Gaudi::DataHandle::Reader, this};
     // Pointer to the geometry service
     SmartIF<IGeoSvc> m_geoSvc;
-    double m_depthCorr;
 
     // ill-formed: using GaudiAlgorithm::GaudiAlgorithm;
     ClusterRecoCoG(const std::string& name, ISvcLocator* svcLoc)
@@ -57,8 +57,10 @@ public:
                     << "Make sure you have GeoSvc and SimSvc in the right order in the configuration." << endmsg;
             return StatusCode::FAILURE;
         }
-	// depth: z length of the crystal block
-        m_depthCorr = m_geoSvc->detector()->constantAsDouble(m_moduleDimZName);
+        // update depth correction if a name is provided
+        if (!m_moduleDimZName.value().empty()) {
+            m_depthCorrection = m_geoSvc->detector()->constantAsDouble(m_moduleDimZName);
+        }
         //info() << "z_length " << depth << endmsg;
         return StatusCode::SUCCESS;
     }
@@ -112,7 +114,7 @@ private:
         // convert local position to global position, use the cell with max edep as a reference
         auto volman = m_geoSvc->detector()->volumeManager();
         auto alignment = volman.lookupDetector(centerID).nominal();
-        auto gpos = alignment.localToWorld(dd4hep::Position(x/tw, y/tw, z/tw + m_depthCorr));
+        auto gpos = alignment.localToWorld(dd4hep::Position(x/tw, y/tw, z/tw + m_depthCorrection));
 
         cl.position({gpos.x(), gpos.y(), gpos.z()});
     }