File indexing completed on 2025-01-09 23:33:31
0001 #ifndef FWCore_Catalog_InputFileCatalog_h
0002 #define FWCore_Catalog_InputFileCatalog_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include <memory>
0014 #include <string>
0015 #include <vector>
0016 #include "FWCore/Catalog/interface/FileLocator.h"
0017 #include "FWCore/Utilities/interface/propagate_const.h"
0018
0019 namespace edm {
0020 class FileCatalogItem {
0021 public:
0022 FileCatalogItem(std::vector<std::string> pfns, std::string lfn) : pfns_(std::move(pfns)), lfn_(std::move(lfn)) {}
0023
0024 std::string const& fileName(unsigned iCatalog) const { return pfns_[iCatalog]; }
0025 std::string const& logicalFileName() const { return lfn_; }
0026
0027 std::vector<std::string> const& fileNames() const { return pfns_; }
0028
0029 private:
0030 std::vector<std::string> pfns_;
0031 std::string lfn_;
0032 };
0033
0034 class InputFileCatalog {
0035 public:
0036 InputFileCatalog(std::vector<std::string> fileNames,
0037 std::string const& override,
0038 bool useLFNasPFNifLFNnotFound = false,
0039
0040
0041 edm::CatalogType catType = edm::CatalogType::RucioCatalog);
0042
0043 ~InputFileCatalog();
0044 std::vector<FileCatalogItem> const& fileCatalogItems() const { return fileCatalogItems_; }
0045 std::vector<std::string> fileNames(unsigned iCatalog) const;
0046 bool empty() const { return fileCatalogItems_.empty(); }
0047 static bool isPhysical(std::string const& name) { return (name.empty() || name.find(':') != std::string::npos); }
0048
0049 private:
0050 void init(std::vector<std::string> logicalFileNames,
0051 std::string const& override,
0052 bool useLFNasPFNifLFNnotFound,
0053 edm::CatalogType catType);
0054 void findFile(std::string const& lfn,
0055 std::vector<std::string>& pfns,
0056 bool useLFNasPFNifLFNnotFound,
0057 edm::CatalogType catType);
0058 std::vector<FileCatalogItem> fileCatalogItems_;
0059 edm::propagate_const<std::unique_ptr<FileLocator>> overrideFileLocator_;
0060
0061 std::vector<edm::propagate_const<std::unique_ptr<FileLocator>>> fileLocators_trivalCatalog_;
0062 std::vector<edm::propagate_const<std::unique_ptr<FileLocator>>> fileLocators_;
0063 };
0064 }
0065
0066 #endif