diff --git a/InnerDetector/InDetDigitization/PixelDigitization/src/EnergyDepositionTool.cxx b/InnerDetector/InDetDigitization/PixelDigitization/src/EnergyDepositionTool.cxx
index 27054311cebfd3ec4372e50795f1baab9e6cc26f..5a2831ae61e918e223a4a95ede04ac8ddaf1686f 100644
--- a/InnerDetector/InDetDigitization/PixelDigitization/src/EnergyDepositionTool.cxx
+++ b/InnerDetector/InDetDigitization/PixelDigitization/src/EnergyDepositionTool.cxx
@@ -207,7 +207,7 @@ StatusCode EnergyDepositionTool::depositEnergy(const TimedHitPtr<SiHit>& phit, c
 
   // -1 ParticleType means we are unable to run Bichel simulation for this case
   int ParticleType = -1;
-  if (m_doBichsel && !(Module.isDBM())) {
+  if (m_doBichsel and !(Module.isDBM()) and genPart) {
     ParticleType = delta_hit ? (m_doDeltaRay ? 4 : -1) : trfPDG(genPart->pdg_id());
 
 
@@ -586,14 +586,18 @@ double EnergyDepositionTool::GetColE(std::pair<int, int> indices_BetaGammaLog10,
   if (indices_IntXLog10_x2.second < 0) {
     return -1;
   }
-
-  double y21 = iData.Array_BetaGammaLog10_IntXLog10[indices_BetaGammaLog10.second][indices_IntXLog10_x2.first];
-  double y22 = iData.Array_BetaGammaLog10_IntXLog10[indices_BetaGammaLog10.second][indices_IntXLog10_x2.second];
+  
+  double y21 = iData.Array_BetaGammaLog10_IntXLog10.at(indices_BetaGammaLog10.second).at(indices_IntXLog10_x2.first);
+  double y22 = iData.Array_BetaGammaLog10_IntXLog10.at(indices_BetaGammaLog10.second).at(indices_IntXLog10_x2.second);
+  const auto diff = y22 - y21;
+  if (diff<1e-300){
+    return -1;
+  }  
   double Est_x2 =
     ((y22 - IntXLog10) *
      iData.Array_BetaGammaLog10_ColELog10[indices_BetaGammaLog10.second][indices_IntXLog10_x2.first] +
      (IntXLog10 - y21) *
-     iData.Array_BetaGammaLog10_ColELog10[indices_BetaGammaLog10.second][indices_IntXLog10_x2.second]) / (y22 - y21);
+     iData.Array_BetaGammaLog10_ColELog10[indices_BetaGammaLog10.second][indices_IntXLog10_x2.second]) / diff;
   double Est = std::clamp(Est_x2,-300.,300.);
   return std::pow(10., Est);
 }
@@ -617,18 +621,23 @@ double EnergyDepositionTool::GetUpperBound(std::pair<int, int> indices_BetaGamma
   if (indices_BetaGammaLog10.second < 0) {
     return -1;
   }
-  double BetaGammaLog10_1 = iData.Array_BetaGammaLog10[indices_BetaGammaLog10.first];
-  double BetaGammaLog10_2 = iData.Array_BetaGammaLog10[indices_BetaGammaLog10.second];
+  double BetaGammaLog10_1 = iData.Array_BetaGammaLog10.at(indices_BetaGammaLog10.first);
+  double BetaGammaLog10_2 = iData.Array_BetaGammaLog10.at(indices_BetaGammaLog10.second);
 
   // obtain estimation
-  double Est_1 = iData.Array_BetaGammaLog10_UpperBoundIntXLog10[indices_BetaGammaLog10.first];
-  double Est_2 = iData.Array_BetaGammaLog10_UpperBoundIntXLog10[indices_BetaGammaLog10.second];
+  double Est_1 = iData.Array_BetaGammaLog10_UpperBoundIntXLog10.at(indices_BetaGammaLog10.first);
+  double Est_2 = iData.Array_BetaGammaLog10_UpperBoundIntXLog10.at(indices_BetaGammaLog10.second);
 
   // final estimation
-  double Est = ((BetaGammaLog10_2 - BetaGammaLog10) * Est_1 + (BetaGammaLog10 - BetaGammaLog10_1) * Est_2) /
-               (BetaGammaLog10_2 - BetaGammaLog10_1);
+  const auto diff=BetaGammaLog10_2 - BetaGammaLog10_1;
+  if (diff<1e-300){
+    return -1;
+  } 
+  double Est = ((BetaGammaLog10_2 - BetaGammaLog10) * Est_1 + (BetaGammaLog10 - BetaGammaLog10_1) * Est_2) /diff;
   Est = std::clamp(Est,-300.,300.);
   return std::pow(10., Est);
+  
+  
 }
 
 //==========================================
diff --git a/InnerDetector/InDetDigitization/PixelDigitization/src/PixelDigitizationTool.cxx b/InnerDetector/InDetDigitization/PixelDigitization/src/PixelDigitizationTool.cxx
index 773ad6c5a6c586c80b2ac4a36a73dff0ac232217..a2705e349131284685c0b320391d8509c88f6e4d 100644
--- a/InnerDetector/InDetDigitization/PixelDigitization/src/PixelDigitizationTool.cxx
+++ b/InnerDetector/InDetDigitization/PixelDigitization/src/PixelDigitizationTool.cxx
@@ -87,7 +87,7 @@ StatusCode PixelDigitizationTool::processAllSubEvents(const EventContext& ctx) {
     ATH_CHECK(m_mergeSvc->retrieveSubEvtsData(m_inputObjectName, hitCollList, numberOfSiHits));
     m_timedHits->reserve(numberOfSiHits);
     // Now merge all collections into one
-    for (TimedHitCollList::iterator iColl = hitCollList.begin(); iColl != hitCollList.end(); iColl++) {
+    for (TimedHitCollList::iterator iColl = hitCollList.begin(); iColl != hitCollList.end(); ++iColl) {
       // Decide if this event will be processed depending on HardScatterSplittingMode
       if (m_HardScatterSplittingMode == 2 && !m_HardScatterSplittingSkipper) {
         m_HardScatterSplittingSkipper = true;
@@ -169,7 +169,7 @@ StatusCode PixelDigitizationTool::digitizeEvent(const EventContext& ctx) {
     ///////////////////////////////////////////////////////////
     // **** Loop over the hits and created charged diodes ****
     ///////////////////////////////////////////////////////////
-    for (TimedHitCollection<SiHit>::const_iterator phit = firstHit; phit != lastHit; phit++) {
+    for (TimedHitCollection<SiHit>::const_iterator phit = firstHit; phit != lastHit; ++phit) {
       //skip hits which are more than 10us away
       if (fabs((*phit)->meanTime()) < 10000.0 * CLHEP::ns) {
         ATH_MSG_DEBUG("HASH = " <<
@@ -359,7 +359,7 @@ StatusCode PixelDigitizationTool::mergeEvent(const EventContext& ctx) {
   // Digitize hits
   ATH_CHECK(digitizeEvent(ctx));
 
-  for (std::vector<SiHitCollection*>::iterator it = m_hitCollPtrs.begin(); it != m_hitCollPtrs.end(); it++) {
+  for (std::vector<SiHitCollection*>::iterator it = m_hitCollPtrs.begin(); it != m_hitCollPtrs.end(); ++it) {
     (*it)->Clear();
     delete(*it);
   }
@@ -401,7 +401,7 @@ StatusCode PixelDigitizationTool::processBunchXing(int bunchXing, SubEventIterat
   TimedHitCollList::iterator iColl(hitCollList.begin());
   TimedHitCollList::iterator endColl(hitCollList.end());
 
-  for (; iColl != endColl; iColl++) {
+  for (; iColl != endColl; ++iColl) {
     SiHitCollection* hitCollPtr = new SiHitCollection(*iColl->second);
     PileUpTimeEventIndex timeIndex(iColl->first);
     ATH_MSG_DEBUG("SiHitCollection found with " << hitCollPtr->size() << " hits");