diff --git a/Tools/FilePeeker/src/FileMetaData.cxx b/Tools/FilePeeker/src/FileMetaData.cxx
index 109b471e3f124b889c958e4adca3a0dd22eef029..6a06bf693d4c1766d5d8996e81f881704cc6e5dc 100644
--- a/Tools/FilePeeker/src/FileMetaData.cxx
+++ b/Tools/FilePeeker/src/FileMetaData.cxx
@@ -1,6 +1,6 @@
-//Dear emacs, this is -*-c++-*- 
+//Dear emacs, this is -*-c++-*-
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "FileMetaData.h"
@@ -14,8 +14,8 @@ void FileMetaData::dump(std::ostream& out) const {
     out << "File Meta Data is invalid" << std::endl;
     return;
   }
-  
-  
+
+
   out << "SG Keys: ";
   for (const std::string& k : m_sgKeys) {out << k << " ";}
   out << std::endl;
@@ -27,28 +27,31 @@ void FileMetaData::dump(std::ostream& out) const {
   out << "Lumiblock number(s): ";
   for (const auto lb :  m_lbNumbers) {out << lb << " ";}
   out  << std::endl;
-  
+
   out << "Project: " << m_project << std::endl;
   out << "Stream:" << m_stream << std::endl;
-  
+
   out << "GUID: " << m_guid << std::endl;
-  
+
   out << "Conditions Tag: " <<  m_condTag << std::endl;
   out << "Geometry Tag: " <<  m_geoTag << std::endl;
 
   out << "Beam Energy: " << m_beamEnergy << std::endl;
   out << "Beam Type: " << m_beamType << std::endl;
-  
+
   out << "Number of events: " << m_nEvents << std::endl;
 
   out << "is MC:" << (m_isMC ? "True" : "False") << std::endl;
 
+  if (m_trtRangeCut>0.0) {
+    out << "TRT Range Cut: " << m_trtRangeCut << std::endl;
+  }
   return;
 }
 
 
 void  FileMetaData::keyValueDump(std::ostream& out) const {
-  
+
   if (!m_valid) return;
 
   out << "File:" << m_fileName << std::endl;
@@ -59,18 +62,18 @@ void  FileMetaData::keyValueDump(std::ostream& out) const {
   out << "LBNumber: ";
   for (const auto lb :  m_lbNumbers) {out << " " << lb;}
   out  << std::endl;
-  
+
   out << "Project: " << m_project << std::endl;
   out << "Stream:" << m_stream << std::endl;
-  
+
   out << "GUID: " << m_guid << std::endl;
-  
+
   out << "ConditionsTag: " <<  m_condTag << std::endl;
   out << "GeometryTag: " <<  m_geoTag << std::endl;
 
   out << "BeamEnergy: " << m_beamEnergy << std::endl;
   out << "BeamType: " << m_beamType << std::endl;
-  
+
   out << "NEvents: " << m_nEvents << std::endl;
 
   out << "isMC:" << (m_isMC ? "1" : "0") << std::endl;
@@ -79,5 +82,8 @@ void  FileMetaData::keyValueDump(std::ostream& out) const {
   for (const std::string& k : m_sgKeys) {out << k << " ";}
   out << std::endl;
 
+  if (m_trtRangeCut>0.0) {
+    out << "TRTRangeCut: " << m_trtRangeCut << std::endl;
+  }
   return;
 }
diff --git a/Tools/FilePeeker/src/FileMetaData.h b/Tools/FilePeeker/src/FileMetaData.h
index 710bbd1e10b9ecbcd9905656f68858fb0d898ad2..a1da37969771820981fc17d9f6e3d61d56578563 100644
--- a/Tools/FilePeeker/src/FileMetaData.h
+++ b/Tools/FilePeeker/src/FileMetaData.h
@@ -1,18 +1,18 @@
-//Dear emacs, this is -*-c++-*- 
+//Dear emacs, this is -*-c++-*-
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef FILEPEEKER_FILEMETADATA
 #define FILEPEEKER_FILEMETADATA
 
-#include <set> 
+#include <set>
 #include <string>
 #include <iostream>
 #include <vector>
 
 class FileMetaData {
- 
+
  public:
   std::string m_fileName;
   std::set<unsigned> m_runNumbers;
@@ -20,21 +20,23 @@ class FileMetaData {
 
   std::string m_project;
   std::string m_stream;
-  
+
   std::string m_condTag;
   std::string m_geoTag;
 
 
   std::string m_guid;
 
-  unsigned m_nEvents=0;
+  unsigned m_nEvents{0};
 
-  unsigned m_beamEnergy=0.0;
+  unsigned m_beamEnergy{0};
   std::string m_beamType;
 
-  bool m_isMC=true;
+  double m_trtRangeCut{-1.0}; // From /Simulation/Parameters
+
+  bool m_isMC{true};
 
-  bool m_valid=false;
+  bool m_valid{false};
 
   std::vector<std::string> m_sgKeys;
 
diff --git a/Tools/FilePeeker/src/PoolFilePeeker.cxx b/Tools/FilePeeker/src/PoolFilePeeker.cxx
index 283b79a4b5fcf78df032d3384616b6f22655bd62..fdae4d820197b70409bf090c15784019337b86d5 100644
--- a/Tools/FilePeeker/src/PoolFilePeeker.cxx
+++ b/Tools/FilePeeker/src/PoolFilePeeker.cxx
@@ -1,6 +1,6 @@
-//Dear emacs, this is -*-c++-*- 
+//Dear emacs, this is -*-c++-*-
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TFile.h"
@@ -8,10 +8,10 @@
 
 #include <iostream>
 #include <vector>
-#include <string> 
+#include <string>
 #include <chrono>
 #include <set>
-#include <algorithm> 
+#include <algorithm>
 #include <unistd.h>
 
 #include "EventTPCnv/EventStreamInfo_p3.h"
@@ -26,7 +26,7 @@
 
 
 class PoolFilePeeker {
-  
+
 public:
   PoolFilePeeker(const char* tf, const bool vbs=false);
 
@@ -35,7 +35,7 @@ public:
 private:
   template<typename T>
   bool findBranch(TBranch* br, const std::string& nametag, const std::string& type,
-		  std::pair<bool,T*>& destination) const;
+                  std::pair<bool,T*>& destination) const;
 
   FileMetaData m_fmd;
 };
@@ -45,7 +45,7 @@ private:
 
 template<typename T>
 bool PoolFilePeeker::findBranch(TBranch* br, const std::string& nametag, const std::string& type,
-				std::pair<bool,T*>& destination) const {
+                                std::pair<bool,T*>& destination) const {
   const std::string brName(br->GetName());
   const std::string brType(br->GetClassName());
   if (brName.find(nametag)!=std::string::npos && brType==type) {
@@ -62,14 +62,14 @@ bool PoolFilePeeker::findBranch(TBranch* br, const std::string& nametag, const s
     return false;
 }
 
-  
+
 PoolFilePeeker::PoolFilePeeker(const char* filename, const bool vbs) {
 
 
   m_fmd.m_fileName=filename;
 
   auto start = std::chrono::system_clock::now();
-  std::unique_ptr<TFile> tf(TFile::Open(filename));  
+  std::unique_ptr<TFile> tf(TFile::Open(filename));
   if (!tf || tf->IsZombie()) {
     std::cerr << "Failed to open file " << filename << std::endl;
     return;
@@ -78,7 +78,7 @@ PoolFilePeeker::PoolFilePeeker(const char* filename, const bool vbs) {
 
   if (vbs) std::cout << "Time to open input file: " << std::chrono::duration_cast<std::chrono::milliseconds>(stop-start).count() << " msec" << std::endl;
 
-  
+
   TTree* md=(TTree*)tf->Get("MetaData");
 
   if (!md) return;
@@ -86,6 +86,9 @@ PoolFilePeeker::PoolFilePeeker(const char* filename, const bool vbs) {
   std::pair<bool,EventStreamInfo_p3*> esi{false,nullptr};
   std::pair<bool,EventStreamInfo_p2*> esi2{false,nullptr};
   std::pair<bool,IOVMetaDataContainer_p1*> taginfo{false,nullptr};
+  std::pair<bool,IOVMetaDataContainer_p1*> genparam{false,nullptr};
+  std::pair<bool,IOVMetaDataContainer_p1*> simparam{false,nullptr};
+  std::pair<bool,IOVMetaDataContainer_p1*> digiparam{false,nullptr};
 #ifndef SIMULATIONBASE
   std::pair<bool,ByteStreamMetadataContainer_p1*> bmdc{false,nullptr};
 #endif // not SIMULATIONBASE
@@ -98,55 +101,122 @@ PoolFilePeeker::PoolFilePeeker(const char* filename, const bool vbs) {
     if (findBranch(br,"ByteStreamMetadata","ByteStreamMetadataContainer_p1",bmdc)) continue;
 #endif // not SIMULATIONBASE
     if (findBranch(br,"_TagInfo","IOVMetaDataContainer_p1",taginfo)) continue;
+    if (findBranch(br,"_Generation_Parameters","IOVMetaDataContainer_p1",genparam)) continue;
+    if (findBranch(br,"_Simulation_Parameters","IOVMetaDataContainer_p1",simparam)) continue;
+    if (findBranch(br,"_Digitization_Parameters","IOVMetaDataContainer_p1",digiparam)) continue;
     if (findBranch(br,"Stream","EventStreamInfo_p3",esi)) continue;
     if (findBranch(br,"Stream","EventStreamInfo_p2",esi2)) continue;
   }//end loop over branches
 
 
-  //Get the event! 
+  //Get the event!
   md->GetEntry(0);
-  
+
   m_fmd.m_valid=true;
 
+  if (genparam.first) {
+    if (vbs) std::cout << " Got IOVMetaDataContainer for /Generation/Parameters " << std::endl;
+    for (const auto& idx : genparam.second->m_payload.m_attrIndexes) {
+      const unsigned short nameIdx=idx.nameIndex();
+      if (idx.typeIndex()==IOVPayloadContainer_p1::ATTR_STRING) {
+        const unsigned short iObj=idx.objIndex();
+        const std::string objKey=genparam.second->m_payload.m_attrName[nameIdx];
+        const std::string objValue=genparam.second->m_payload.m_string[iObj];
+        if (vbs) std::cout << "Genparam: " << objKey << " : " <<  objValue << std::endl;
+
+      }
+    }//end loop over genparam
+    delete genparam.second;
+    genparam.second=nullptr;
+  }//end if have genparam
+
+  if (simparam.first) {
+    if (vbs) std::cout << " Got IOVMetaDataContainer for /Simulation/Parameters " << std::endl;
+    for (const auto& idx : simparam.second->m_payload.m_attrIndexes) {
+      const unsigned short nameIdx=idx.nameIndex();
+      if (idx.typeIndex()==IOVPayloadContainer_p1::ATTR_STRING) {
+        const unsigned short iObj=idx.objIndex();
+        const std::string objKey=simparam.second->m_payload.m_attrName[nameIdx];
+        const std::string objValue=simparam.second->m_payload.m_string[iObj];
+        if (vbs) std::cout << "Simparam: " << objKey << " : " <<  objValue << std::endl;
+        if (objKey=="TRTRangeCut") {
+          std::string::size_type sz;     // alias of size_t
+          m_fmd.m_trtRangeCut=std::stod(objValue,&sz);
+        }
+        if (objKey=="beamType") {
+          m_fmd.m_beamType=objValue;
+        }
+
+      }
+    }//end loop over simparam
+    delete simparam.second;
+    simparam.second=nullptr;
+  }//end if have simparam
+
+  if (digiparam.first) {
+    if (vbs) std::cout << " Got IOVMetaDataContainer for /Digitization/Parameters " << std::endl;
+    for (const auto& idx : digiparam.second->m_payload.m_attrIndexes) {
+      const unsigned short nameIdx=idx.nameIndex();
+      if (idx.typeIndex()==IOVPayloadContainer_p1::ATTR_STRING) {
+        const unsigned short iObj=idx.objIndex();
+        const std::string objKey=digiparam.second->m_payload.m_attrName[nameIdx];
+        const std::string objValue=digiparam.second->m_payload.m_string[iObj];
+        if (vbs) std::cout << "Digiparam: " << objKey << " : " <<  objValue << std::endl;
+        if (objKey=="IOVDbGlobalTag") {
+          m_fmd.m_condTag=objValue;
+        }
+        if (objKey=="DetDescrVersion") {
+          m_fmd.m_geoTag=objValue;
+        }
+        if (objKey=="beamType") {
+          m_fmd.m_beamType=objValue;
+        }
+
+      }
+    }//end loop over digiparam
+    delete digiparam.second;
+    digiparam.second=nullptr;
+  }//end if have digiparam
+
   if (taginfo.first) {
     if (vbs) std::cout << " Got IOVMetaDataContainer for TagInfo " << std::endl;
     for (const auto& idx : taginfo.second->m_payload.m_attrIndexes) {
       //const unsigned short typeIdx=idx.typeIndex();
       const unsigned short nameIdx=idx.nameIndex();
       if (idx.typeIndex()==IOVPayloadContainer_p1::ATTR_STRING) {
-	const unsigned short iObj=idx.objIndex();
-	const std::string objKey=taginfo.second->m_payload.m_attrName[nameIdx];
-	const std::string objValue=taginfo.second->m_payload.m_string[iObj];
-	if (vbs) std::cout << "Taginfo: " << objKey << " : " <<  objValue << std::endl;
-	if (objKey=="IOVDbGlobalTag") {
-	  m_fmd.m_condTag=objValue;
-	}
-	if (objKey=="GeoAtlas") {
-	  m_fmd.m_geoTag=objValue;
-	}
-	if (objKey=="beam_energy") {
-	  m_fmd.m_beamEnergy=atoi(objValue.c_str());
-	}
-	if (objKey=="beam_type") {
-	  m_fmd.m_beamType=objValue;
-	}
+        const unsigned short iObj=idx.objIndex();
+        const std::string objKey=taginfo.second->m_payload.m_attrName[nameIdx];
+        const std::string objValue=taginfo.second->m_payload.m_string[iObj];
+        if (vbs) std::cout << "Taginfo: " << objKey << " : " <<  objValue << std::endl;
+        if (objKey=="IOVDbGlobalTag") {
+          m_fmd.m_condTag=objValue;
+        }
+        if (objKey=="GeoAtlas") {
+          m_fmd.m_geoTag=objValue;
+        }
+        if (objKey=="beam_energy") {
+          m_fmd.m_beamEnergy=atoi(objValue.c_str());
+        }
+        if (objKey=="beam_type") {
+          m_fmd.m_beamType=objValue;
+        }
 
       }
     }//end loop over taginfo
     delete taginfo.second;
     taginfo.second=nullptr;
   }//end if have taginfo
-  
+
   if (esi.first) {
-    if (vbs) std::cout << " Got EventStreamInfo_p3" << std::endl; 
+    if (vbs) std::cout << " Got EventStreamInfo_p3" << std::endl;
     m_fmd.m_runNumbers.insert(esi.second->m_runNumbers.begin(),
-			    esi.second->m_runNumbers.end());
+                            esi.second->m_runNumbers.end());
     m_fmd.m_lbNumbers.insert(esi.second->m_lumiBlockNumbers.begin(),
-			   esi.second->m_lumiBlockNumbers.end());
+                           esi.second->m_lumiBlockNumbers.end());
 
 
 
-    const std::vector<std::pair<unsigned int, std::string> >& itemList=esi.second->m_itemList; 
+    const std::vector<std::pair<unsigned int, std::string> >& itemList=esi.second->m_itemList;
     for (const auto& kw : itemList) {
       m_fmd.m_sgKeys.push_back(kw.second);
     }
@@ -157,11 +227,11 @@ PoolFilePeeker::PoolFilePeeker(const char* filename, const bool vbs) {
   }
   else if (esi2.first) { //Have legacy version of EventStreamInfo
     m_fmd.m_valid=true;
-    if (vbs) std::cout << " Got legacy EventStreamInfo_p2" << std::endl; 
+    if (vbs) std::cout << " Got legacy EventStreamInfo_p2" << std::endl;
     m_fmd.m_runNumbers.insert(esi2.second->m_runNumbers.begin(),
-			    esi2.second->m_runNumbers.end());
+                            esi2.second->m_runNumbers.end());
     m_fmd.m_lbNumbers.insert(esi.second->m_lumiBlockNumbers.begin(),
-			   esi2.second->m_lumiBlockNumbers.end());
+                           esi2.second->m_lumiBlockNumbers.end());
     delete esi2.second;
     esi2.second=nullptr;
   }
@@ -175,28 +245,28 @@ PoolFilePeeker::PoolFilePeeker(const char* filename, const bool vbs) {
     for (const auto& bmd : *bmdc.second) {
       bmc_runNumbers.insert(bmd.m_runNumber);
       if (m_fmd.m_stream.size()==0) {
-	m_fmd.m_stream=bmd.m_stream;
+        m_fmd.m_stream=bmd.m_stream;
       }
       else if (m_fmd.m_stream!=bmd.m_stream) {
-	std::cerr << "Conflicting stream names in file! Got " << 
-	  m_fmd.m_stream << " and " << bmd.m_stream << std::endl;
-	m_fmd.m_valid=false;
+        std::cerr << "Conflicting stream names in file! Got " <<
+          m_fmd.m_stream << " and " << bmd.m_stream << std::endl;
+        m_fmd.m_valid=false;
       }
       if (m_fmd.m_project.size()==0) {
-	m_fmd.m_project=bmd.m_project;
+        m_fmd.m_project=bmd.m_project;
       }
       else if (m_fmd.m_project!=bmd.m_project) {
-	std::cerr << "Conflicting project names in file! Got " << 
-	  m_fmd.m_project << " and " << bmd.m_project << std::endl;
-	m_fmd.m_valid=false;
+        std::cerr << "Conflicting project names in file! Got " <<
+          m_fmd.m_project << " and " << bmd.m_project << std::endl;
+        m_fmd.m_valid=false;
       }
- 
+
       const std::vector<std::string>& freeMDs=bmd.m_freeMetaDataStrings;
       for (const std::string& freeMD : freeMDs) {
-	if (freeMD.compare(0,11,"Event type:")==0 && freeMD.find("is sim")!=std::string::npos) {
-	  m_fmd.m_isMC=true; //This is made of a simulated bytestream file
-	  break;
-	}
+        if (freeMD.compare(0,11,"Event type:")==0 && freeMD.find("is sim")!=std::string::npos) {
+          m_fmd.m_isMC=true; //This is made of a simulated bytestream file
+          break;
+        }
       }
     }
     delete bmdc.second;
@@ -211,7 +281,7 @@ PoolFilePeeker::PoolFilePeeker(const char* filename, const bool vbs) {
     m_fmd.m_runNumbers=std::move(bmc_runNumbers);
   }
   else if (m_fmd.m_runNumbers.size() && bmc_runNumbers.size()) {
-    //Both filled - cross-check! 
+    //Both filled - cross-check!
     if (m_fmd.m_runNumbers != bmc_runNumbers) {
       std::cerr << "Mismatching run numbers in file metadata!" << std::endl;
       std::cerr << "EventStreamInfo: ";
@@ -227,7 +297,7 @@ PoolFilePeeker::PoolFilePeeker(const char* filename, const bool vbs) {
   //Get the GUID:
   TTree* params=(TTree*)tf->Get("##Params");
   const unsigned nParamsEntries=params->GetEntries();
-  
+
   char dbStr[1024];
   params->SetBranchAddress("db_string",&dbStr);
 
@@ -236,7 +306,7 @@ PoolFilePeeker::PoolFilePeeker(const char* filename, const bool vbs) {
     params->GetEntry(i);
     //Model: [NAME=FID][VALUE=41DB894B-C39C-BF47-81E9-C52658B117BF]
     const std::string field(dbStr);
-    
+
     if (field.compare(starter)) {
       m_fmd.m_guid=field.substr(starter.size(),field.size()-starter.size()-1);
       break;
@@ -257,7 +327,7 @@ PoolFilePeeker::PoolFilePeeker(const char* filename, const bool vbs) {
 }
 
 int main(int argc, char** argv) {
-  
+
   bool verbose=false;
   bool kvDump=false;
   char c;
@@ -275,20 +345,20 @@ int main(int argc, char** argv) {
     return -1;
     }
   }
-  
+
   const int nfiles=argc-optind;
   if (nfiles<=0) {
     std::cerr << "Expected at least one file name as parameter" << std::endl;
     return -1;
   }
 
-  
+
   std::vector<FileMetaData> output;
 
   for (int iFile=optind;iFile<argc;++iFile) {
     const char* filename=argv[iFile];
     if (verbose) std::cout << "Checking file " << filename << std::endl;
-    
+
     PoolFilePeeker pfp(filename,verbose);
 
     output.push_back(pfp.get());
@@ -302,6 +372,6 @@ int main(int argc, char** argv) {
  else {
    for (const auto& o : output) o.dump();
  }
- 
+
  return 0;
 }