From da34149cb0af4e873e275d3b6b9cb0523ffe8889 Mon Sep 17 00:00:00 2001
From: Andre Sailer <andre.philippe.sailer@cern.ch>
Date: Tue, 26 Mar 2024 17:52:37 +0100
Subject: [PATCH] DDSim: add checking that files exists to input argument
 parsing

---
 DDG4/python/DDSim/DD4hepSimulation.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/DDG4/python/DDSim/DD4hepSimulation.py b/DDG4/python/DDSim/DD4hepSimulation.py
index f63b49f41..24e3ee0f2 100644
--- a/DDG4/python/DDSim/DD4hepSimulation.py
+++ b/DDG4/python/DDSim/DD4hepSimulation.py
@@ -223,8 +223,10 @@ class DD4hepSimulation(object):
     self._dumpSteeringFile = parsed.dumpSteeringFile
 
     self.compactFile = ConfigHelper.makeList(parsed.compactFile)
+    self.__checkFilesExist(self.compactFile, fileType='compact')
     self.inputFiles = parsed.inputFiles
     self.inputFiles = self.__checkFileFormat(self.inputFiles, POSSIBLEINPUTFILES)
+    self.__checkFilesExist(self.inputFiles, fileType='input')
     self.outputFile = parsed.outputFile
     self.__checkFileFormat(self.outputFile, ('.root', '.slcio'))
     self.runType = parsed.runType
@@ -539,6 +541,19 @@ class DD4hepSimulation(object):
     field.delta_one_step = self.field.delta_one_step
     field.largest_step = self.field.largest_step
 
+  def __checkFilesExist(self, fileNames, fileType=''):
+    """Make sure all files in the given list exist, add to errorMessage otherwise.
+
+
+    :param list fileNames: list of files to check for existence
+    :param str fileType: type if file, for nicer error message
+    """
+    if isinstance(fileNames, str):
+      fileNames = [fileNames]
+    for fileName in fileNames:
+      if not os.path.exists(fileName):
+        self._errorMessages.append(f"ERROR: The {fileType}file '{fileName}' does not exist")
+
   def __checkFileFormat(self, fileNames, extensions):
     """check if the fileName is allowed, note that the filenames are case
     sensitive, and in case of hepevt we depend on this to identify short and long versions of the content
-- 
GitLab