diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSEnergyBinParametrization.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSEnergyBinParametrization.cxx
index d4ec177a7fff37585b0c65984a6ad8bf84ecd3d4..f5e67c6e78c9b62276e62704b8aaeb924a887ff6 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSEnergyBinParametrization.cxx
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCSEnergyBinParametrization.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "CLHEP/Random/RandFlat.h"
@@ -28,9 +28,9 @@ bool TFCSEnergyBinParametrization::is_match_Ekin_bin(int Ekin_bin) const
 
 void TFCSEnergyBinParametrization::resize()
 {
-  for (std::set<int>::iterator itid=pdgid().begin(); itid!=pdgid().end(); ++itid) {
-	  ATH_MSG_VERBOSE("PDGid="<<*itid<<" resize to "<<n_bins()+1);
-    m_pdgid_Ebin_probability[*itid].resize(n_bins()+1);
+  for (int id : pdgid()) {
+	  ATH_MSG_VERBOSE("PDGid=" << id << " resize to " << n_bins() + 1);
+    m_pdgid_Ebin_probability[id].resize(n_bins() + 1);
   }
   for (auto it=m_pdgid_Ebin_probability.begin(); it!=m_pdgid_Ebin_probability.end(); ++it) {
     if(!is_match_pdgid(it->first)) {
@@ -84,50 +84,44 @@ void TFCSEnergyBinParametrization::set_pdgid_Ekin_bin_probability(int id,std::ve
 bool TFCSEnergyBinParametrization::load_pdgid_Ekin_bin_probability_from_file(int id, TFile* file, std::string prob_object_name)
 {
   add_pdgid(id);
-  
-  float* prob = nullptr;
-  
+
   file->cd();
-  TVectorF* pcabinprobvector=(TVectorF*)gDirectory->Get(prob_object_name.c_str());
-  
-  if(!pcabinprobvector)
-  {
-   ATH_MSG_INFO("TFCSEnergyBinParametrization::load_pdgid_Ekin_bin_probability_from_file(): "<<prob_object_name<<" is null. Using equal PCA probabilities.");
-   
-   prob=new float[m_pdgid_Ebin_probability[id].size()];
-   
-   prob[0]=0.0;
-   
-   for(unsigned int i=1;i<m_pdgid_Ebin_probability[id].size();i++)
-   {
-    prob[i]=1.0;
-   }
-   
-  }
-  
-  if(pcabinprobvector)
+  auto probFromFile = dynamic_cast<TVectorF *>(gDirectory->Get(prob_object_name.c_str()));
+
+  std::vector<float> prob;
+  prob.reserve(m_pdgid_Ebin_probability[id].size());
+  if (probFromFile == nullptr)
   {
-   if((unsigned int)pcabinprobvector->GetNoElements()!=m_pdgid_Ebin_probability[id].size())
-   {
-     ATH_MSG_ERROR("TFCSEnergyBinParametrization::load_pdgid_Ekin_bin_probability_from_file(): size of prob array does not match! in.size()=" << pcabinprobvector->GetNoElements() << " instance=" << m_pdgid_Ebin_probability[id].size());
-     return false;
-   }
-   
-   prob=pcabinprobvector->GetMatrixArray();
-   
+    ATH_MSG_INFO("TFCSEnergyBinParametrization::load_pdgid_Ekin_bin_probability_from_file(): "
+                 << prob_object_name << " is null. Using equal PCA probabilities.");
+    prob.push_back(0.0);
+    for (size_t i = 1; i < m_pdgid_Ebin_probability[id].size(); i++) {
+      prob.push_back(1.0);
+    }
+  } else {
+    auto size = static_cast<size_t>(probFromFile->GetNoElements());
+    if (size != m_pdgid_Ebin_probability[id].size())
+    {
+      ATH_MSG_ERROR("TFCSEnergyBinParametrization::load_pdgid_Ekin_bin_probability_from_file(): size of prob array does not match! in.size()="
+                    << size << " instance=" << m_pdgid_Ebin_probability[id].size());
+      return false;
+    }
+
+    const float *probArray = probFromFile->GetMatrixArray();
+    for (size_t i = 0; i < size; i++) {
+      prob.push_back(probArray[i]);
+    }
   }
-  
-  float ptot=0;
-  for(int iEbin=0;iEbin<=n_bins();++iEbin) ptot+=prob[iEbin];
-  float p=0;
-  for(int iEbin=0;iEbin<=n_bins();++iEbin)
+
+  float ptot{};
+  for (int iEbin = 0; iEbin <= n_bins(); ++iEbin) ptot += prob[iEbin];
+  float p{};
+  for (int iEbin = 0; iEbin <= n_bins(); ++iEbin)
   {
-    p+=prob[iEbin]/ptot;
-    m_pdgid_Ebin_probability[id][iEbin]=p;
+    p += prob[iEbin] / ptot;
+    m_pdgid_Ebin_probability[id][iEbin] = p;
   }
 
-  if(prob) delete prob; 
-  
   return true;
 }