File indexing completed on 2023-03-17 11:01:48
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> const& pfns, std::string const& lfn) : pfns_(pfns), lfn_(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> const& 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> const& logicalFileNames() const { return logicalFileNames_; }
0046 std::vector<std::string> fileNames(unsigned iCatalog) const;
0047 bool empty() const { return fileCatalogItems_.empty(); }
0048 static bool isPhysical(std::string const& name) { return (name.empty() || name.find(':') != std::string::npos); }
0049
0050 private:
0051 void init(std::string const& override, bool useLFNasPFNifLFNnotFound, edm::CatalogType catType);
0052 void findFile(std::string const& lfn,
0053 std::vector<std::string>& pfns,
0054 bool useLFNasPFNifLFNnotFound,
0055 edm::CatalogType catType);
0056 std::vector<std::string> logicalFileNames_;
0057 std::vector<std::string> fileNames_;
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