26 {
27
29 + std::to_string(table_num)
30 + ".csv";
32#ifdef OFFLINE_DECODER
34 auto file = std::ifstream(mappingfilename, std::ifstream::in);
35 if (!mappingfilename.empty() &&
file.good()) {
36 m_tables.at(table_num-1) = std::make_shared<CSVWrapper> (
file);
39 } else {
40 throw std::runtime_error(std::string("Cannot find file ") + suffixName);
41 }
42#else
43 const char* l1caloRootEnv = std::getenv("L1CALO_ROOT");
44 if (!l1caloRootEnv) {
45 throw l1calo::EnvUndefined(ERS_HERE,"L1CALO_ROOT");
46 }
47
48
49 std::string l1caloRoot(l1caloRootEnv);
50 auto baseDir = l1caloRoot.substr(0,l1caloRoot.find_last_of(
"/"));
51 std::vector<std::string> mapDirs = {
52 baseDir +
"/channelMappings/data/",
53 baseDir +
"/installed/share/data/channelMappings/",
54 };
55 for (auto& basePath: mapDirs) {
56 auto mappingfilename = basePath + suffixName;
57 auto file = std::ifstream(mappingfilename, std::ifstream::in);
59 m_tables.at(table_num-1) = std::make_shared<CSVWrapper> (
file);
62 }
63 }
64 std::string suffixPath = suffixName +
" (under " +
baseDir +
")";
65 throw l1calo::FileError(ERS_HERE,"open",suffixPath);
66#endif
67 }
69}
std::array< std::shared_ptr< CSVWrapper >, 6 > m_tables
std::array< bool, 6 > m_table_opens
static std::string find_file(const std::string &logical_file_name, const std::string &search_path)