File indexing completed on 2023-03-17 11:00:27
0001 #ifndef FFFNAMINGSCHEMA_H_
0002 #define FFFNAMINGSCHEMA_H_
0003
0004 #include <iomanip>
0005 #include <sstream>
0006 #include <unistd.h>
0007
0008 namespace fffnaming {
0009
0010 inline std::string runLumiPrefix(const unsigned int run, const unsigned int ls) {
0011 std::stringstream ss;
0012 ss << "run" << std::setfill('0') << std::setw(6) << run << "_ls" << std::setfill('0') << std::setw(4) << ls;
0013 return ss.str();
0014 }
0015
0016 inline void runLumiPrefixFill(std::stringstream& ss, const unsigned int run, const unsigned int ls) {
0017 ss << "run" << std::setfill('0') << std::setw(6) << run << "_ls" << std::setfill('0') << std::setw(4) << ls;
0018 }
0019
0020 inline std::string eolsFileName(const unsigned int run, const unsigned int ls) {
0021 std::stringstream ss;
0022 runLumiPrefixFill(ss, run, ls);
0023 ss << "_EoLS.jsn";
0024 return ss.str();
0025 }
0026
0027 inline std::string bolsFileName(const unsigned int run, const unsigned int ls) {
0028 std::stringstream ss;
0029 runLumiPrefixFill(ss, run, ls);
0030 ss << "_BoLS.jsn";
0031 return ss.str();
0032 }
0033
0034 inline std::string eorFileName(const unsigned int run) {
0035 std::stringstream ss;
0036 ss << "run" << std::setfill('0') << std::setw(6) << run << "_ls0000"
0037 << "_EoR.jsn";
0038 return ss.str();
0039 }
0040
0041 inline std::string inputJsonFileName(const unsigned int run, const unsigned int ls, const unsigned int index) {
0042 std::stringstream ss;
0043 runLumiPrefixFill(ss, run, ls);
0044 ss << "_index" << std::setfill('0') << std::setw(6) << index << ".jsn";
0045 return ss.str();
0046 }
0047
0048 inline std::string inputRawFileName(const unsigned int run, const unsigned int ls, const unsigned int index) {
0049 std::stringstream ss;
0050 runLumiPrefixFill(ss, run, ls);
0051 ss << "_index" << std::setfill('0') << std::setw(6) << index << ".raw";
0052 return ss.str();
0053 }
0054
0055 inline std::string initFileNameWithPid(const unsigned int run, const unsigned int ls, std::string const& stream) {
0056 std::stringstream ss;
0057 runLumiPrefixFill(ss, run, ls);
0058 ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".ini";
0059 return ss.str();
0060 }
0061
0062 inline std::string initTempFileNameWithPid(const unsigned int run, const unsigned int ls, std::string const& stream) {
0063 std::stringstream ss;
0064 runLumiPrefixFill(ss, run, ls);
0065 ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".initemp";
0066 return ss.str();
0067 }
0068
0069 inline std::string initFileNameWithInstance(const unsigned int run,
0070 const unsigned int ls,
0071 std::string const& stream,
0072 std::string const& instance) {
0073 std::stringstream ss;
0074 runLumiPrefixFill(ss, run, ls);
0075 ss << "_" << stream << "_" << instance << ".ini";
0076 return ss.str();
0077 }
0078
0079 inline std::string streamerDataFileNameWithPid(const unsigned int run,
0080 const unsigned int ls,
0081 std::string const& stream) {
0082 std::stringstream ss;
0083 runLumiPrefixFill(ss, run, ls);
0084 ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".dat";
0085 return ss.str();
0086 }
0087
0088 inline std::string streamerDataFileNameWithInstance(const unsigned int run,
0089 const unsigned int ls,
0090 std::string const& stream,
0091 std::string const& instance) {
0092 std::stringstream ss;
0093 runLumiPrefixFill(ss, run, ls);
0094 ss << "_" << stream << "_" << instance << ".dat";
0095 return ss.str();
0096 }
0097
0098 inline std::string streamerDataChecksumFileNameWithInstance(const unsigned int run,
0099 const unsigned int ls,
0100 std::string const& stream,
0101 std::string const& instance) {
0102 std::stringstream ss;
0103 runLumiPrefixFill(ss, run, ls);
0104 ss << "_" << stream << "_" << instance << ".checksum";
0105 return ss.str();
0106 }
0107
0108 inline std::string streamerJsonFileNameWithPid(const unsigned int run,
0109 const unsigned int ls,
0110 std::string const& stream) {
0111 std::stringstream ss;
0112 runLumiPrefixFill(ss, run, ls);
0113 ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".jsn";
0114 return ss.str();
0115 }
0116
0117 inline std::string streamerJsonFileNameWithInstance(const unsigned int run,
0118 const unsigned int ls,
0119 std::string const& stream,
0120 std::string const& instance) {
0121 std::stringstream ss;
0122 runLumiPrefixFill(ss, run, ls);
0123 ss << "_stream" << stream << "_" << instance << ".jsn";
0124 return ss.str();
0125 }
0126
0127 inline std::string protocolBufferHistogramFileNameWithPid(const unsigned int run,
0128 const unsigned int ls,
0129 std::string const& stream) {
0130 std::stringstream ss;
0131 runLumiPrefixFill(ss, run, ls);
0132 ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".pb";
0133 return ss.str();
0134 }
0135
0136 inline std::string protocolBufferHistogramFileNameWithInstance(const unsigned int run,
0137 const unsigned int ls,
0138 std::string const& stream,
0139 std::string const& instance) {
0140 std::stringstream ss;
0141 runLumiPrefixFill(ss, run, ls);
0142 ss << "_" << stream << "_" << instance << ".pb";
0143 return ss.str();
0144 }
0145
0146 inline std::string rootHistogramFileNameWithPid(const unsigned int run,
0147 const unsigned int ls,
0148 std::string const& stream) {
0149 std::stringstream ss;
0150 runLumiPrefixFill(ss, run, ls);
0151 ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".root";
0152 return ss.str();
0153 }
0154
0155 inline std::string rootHistogramFileNameWithInstance(const unsigned int run,
0156 const unsigned int ls,
0157 std::string const& stream,
0158 std::string const& instance) {
0159 std::stringstream ss;
0160 runLumiPrefixFill(ss, run, ls);
0161 ss << "_" << stream << "_" << instance << ".root";
0162 return ss.str();
0163 }
0164
0165 inline std::string genericFileName(const unsigned int run,
0166 const unsigned int ls,
0167 std::string const& typePrefix,
0168 std::string const& typeSuffix,
0169 unsigned int typeWidth,
0170 std::string const& instancePrefix,
0171 std::string const& instanceSuffix,
0172 unsigned int instanceWidth,
0173 std::string const& fileExtension) {
0174 std::stringstream ss;
0175 runLumiPrefixFill(ss, run, ls);
0176 ss << "_";
0177 if (!typePrefix.empty())
0178 ss << typePrefix;
0179 if (typeWidth)
0180 ss << std::setfill('0') << std::setw(typeWidth);
0181 ss << typeSuffix;
0182 if (!instanceSuffix.empty()) {
0183 ss << "_";
0184 if (!instancePrefix.empty())
0185 ss << instancePrefix;
0186 if (instanceWidth)
0187 ss << std::setfill('0') << std::setw(instanceWidth);
0188 ss << instanceSuffix;
0189 }
0190 if (!fileExtension.empty())
0191 ss << "." << fileExtension;
0192 return ss.str();
0193 }
0194
0195 };
0196 #endif