From 990a7fa4e2a4a0f1fea3724a51fdc592e5af666d Mon Sep 17 00:00:00 2001 From: Florian Uhlig <f.uhlig@gsi.de> Date: Tue, 19 Jan 2021 15:36:38 +0100 Subject: [PATCH] Use new function th check for ROOT file existence --- sim/transport/generators/CMakeLists.txt | 1 + .../generators/CbmPlutoGenerator.cxx | 69 ++----------------- sim/transport/generators/CbmPlutoGenerator.h | 3 - sim/transport/steer/CMakeLists.txt | 2 +- sim/transport/steer/CbmTransport.cxx | 14 +++- 5 files changed, 18 insertions(+), 71 deletions(-) diff --git a/sim/transport/generators/CMakeLists.txt b/sim/transport/generators/CMakeLists.txt index 556e0de5d1..14b4723700 100644 --- a/sim/transport/generators/CMakeLists.txt +++ b/sim/transport/generators/CMakeLists.txt @@ -30,6 +30,7 @@ pluto/PValues.cxx # ---- Include directories ------------------------------- set(INCLUDE_DIRECTORIES ${CBMDATA_DIR} +${CBMBASE_DIR}/utils ${CBMROOT_SOURCE_DIR}/sim ${CBMROOT_SOURCE_DIR}/sim/transport ${CBMROOT_SOURCE_DIR}/sim/transport/base diff --git a/sim/transport/generators/CbmPlutoGenerator.cxx b/sim/transport/generators/CbmPlutoGenerator.cxx index 1e3559a465..1960220a27 100644 --- a/sim/transport/generators/CbmPlutoGenerator.cxx +++ b/sim/transport/generators/CbmPlutoGenerator.cxx @@ -4,6 +4,8 @@ // ------------------------------------------------------------------------- #include "CbmPlutoGenerator.h" +#include "CbmFileUtils.h" + #include "FairLogger.h" #include "FairPrimaryGenerator.h" // for FairPrimaryGenerator @@ -49,7 +51,7 @@ CbmPlutoGenerator::CbmPlutoGenerator(const Char_t* fileName) , fPDGmanual(0) { fInputChain = new TChain("data"); - if (CheckFileExist(fileName)) { + if (Cbm::File::IsRootFile(fileName)) { fInputChain->Add(fileName); fInputChain->SetBranchAddress("Particles", &fParticles); LOG(info) << "CbmPlutoGenerator: Add file " << fileName @@ -71,8 +73,8 @@ CbmPlutoGenerator::CbmPlutoGenerator(std::vector<std::string> fileNames) , fParticles(new TClonesArray("PParticle", 100)) , fPDGmanual(0) { fInputChain = new TChain("data"); - for (auto& name : fileNames) { - if (CheckFileExist(name)) { + for (const auto& name : fileNames) { + if (Cbm::File::IsRootFile(name)) { fInputChain->Add(name.c_str()); LOG(info) << "CbmPlutoGenerator: Add file " << name << " to input chain"; } else { @@ -189,65 +191,4 @@ void CbmPlutoGenerator::CloseInput() { } // ------------------------------------------------------------------------ -Bool_t CbmPlutoGenerator::CheckFileExist(std::string filename) { - - // In case the filename contains a hash (e.g. multi.zip#file.root) assume that the hash - // separates the name of a zipfile (multi.zip) which contains the real root file - // (file.root). Split the filename at the # in the name of the zipfile and - // the name of the contained root file. - std::string checkFilename {""}; - std::string membername {""}; - std::size_t found = filename.find("#"); - if (found != std::string::npos) { - checkFilename = filename.substr(0, found); - membername = filename.substr(found + 1); - } else { - checkFilename = filename; - } - - Bool_t wasfound = kFALSE; - - // Check if the file exist - // In case of a root file contained in a zip archive check if the zip file - // exist - struct stat buffer; - if (stat(checkFilename.c_str(), &buffer) == 0) { - wasfound = kTRUE; - } else { - wasfound = kFALSE; - LOG(error) << "Input File " << checkFilename << " not found"; - } - - // In case of a zip archive check if the archive contains the root file - if (membername.compare("") != 0) { - TFile* fzip = TFile::Open(checkFilename.c_str()); - if (fzip->IsOpen()) { - TArchiveFile* archive = fzip->GetArchive(); - if (archive) { - TObjArray* members = archive->GetMembers(); - if (members->FindObject(membername.c_str()) == 0) { - LOG(error) << "File " << membername << " not found in zipfile " - << checkFilename; - wasfound = kFALSE; - } else { - LOG(info) << "File " << membername << " found in zipfile " - << checkFilename; - wasfound = kTRUE; - } - } else { - LOG(error) << "Zipfile " << checkFilename - << " does not contain an archive"; - wasfound = kFALSE; - } - fzip->Close(); - delete fzip; - } else { - LOG(error) << "Could not open zipfile " << checkFilename; - wasfound = kFALSE; - } - } - - return wasfound; -} - ClassImp(CbmPlutoGenerator) diff --git a/sim/transport/generators/CbmPlutoGenerator.h b/sim/transport/generators/CbmPlutoGenerator.h index 0589e45f03..d5f6a7cd8e 100644 --- a/sim/transport/generators/CbmPlutoGenerator.h +++ b/sim/transport/generators/CbmPlutoGenerator.h @@ -77,9 +77,6 @@ private: ** input file properly. Called from destructor and from ReadEvent. **/ void CloseInput(); - /** Check if file exists. Break fatal when it doesn't exist **/ - Bool_t CheckFileExist(std::string filename); - ClassDef(CbmPlutoGenerator, 4); }; diff --git a/sim/transport/steer/CMakeLists.txt b/sim/transport/steer/CMakeLists.txt index 253c1a2907..375b40e617 100644 --- a/sim/transport/steer/CMakeLists.txt +++ b/sim/transport/steer/CMakeLists.txt @@ -33,7 +33,7 @@ ${CBMROOT_SOURCE_DIR}/sim/transport/generators ${CBMROOT_SOURCE_DIR}/sim/transport/steer ${CBMROOT_SOURCE_DIR}/sim/transport/geosetup ${CBMDATA_DIR} -${CBMROOT_SOURCE_DIR}/generators/unigen +${CBMBASE_DIR}/utils ) set(SYSTEM_INCLUDE_DIRECTORIES diff --git a/sim/transport/steer/CbmTransport.cxx b/sim/transport/steer/CbmTransport.cxx index e56866d543..9943a72c0b 100644 --- a/sim/transport/steer/CbmTransport.cxx +++ b/sim/transport/steer/CbmTransport.cxx @@ -37,6 +37,7 @@ #include "CbmEventGenerator.h" #include "CbmFieldMap.h" #include "CbmFieldPar.h" +#include "CbmFileUtils.h" #include "CbmPlutoGenerator.h" #include "CbmSetup.h" #include "CbmStack.h" @@ -104,9 +105,16 @@ void CbmTransport::AddInput(const char* fileName, ECbmGenerator genType) { FairGenerator* generator = NULL; - if (gSystem->AccessPathName(fileName)) { - LOG(fatal) << GetName() << ": Input file " << fileName << " not found!"; - return; + if (genType == kUrqmd) { + if (gSystem->AccessPathName(fileName)) { + LOG(fatal) << GetName() << ": Input file " << fileName << " not found!"; + return; + } + } else { + if (!Cbm::File::IsRootFile(fileName)) { + LOG(fatal) << GetName() << ": Input file " << fileName << " not found!"; + return; + } } switch (genType) { -- GitLab