Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
#ifndef FFFNAMINGSCHEMA_H_
#define FFFNAMINGSCHEMA_H_

#include <iomanip>
#include <sstream>
#include <unistd.h>

namespace fffnaming {

  inline std::string runLumiPrefix(const unsigned int run, const unsigned int ls) {
    std::stringstream ss;
    ss << "run" << std::setfill('0') << std::setw(6) << run << "_ls" << std::setfill('0') << std::setw(4) << ls;
    return ss.str();
  }

  inline void runLumiPrefixFill(std::stringstream& ss, const unsigned int run, const unsigned int ls) {
    ss << "run" << std::setfill('0') << std::setw(6) << run << "_ls" << std::setfill('0') << std::setw(4) << ls;
  }

  inline std::string eolsFileName(const unsigned int run, const unsigned int ls) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_EoLS.jsn";
    return ss.str();
  }

  inline std::string bolsFileName(const unsigned int run, const unsigned int ls) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_BoLS.jsn";
    return ss.str();
  }

  inline std::string eorFileName(const unsigned int run) {
    std::stringstream ss;
    ss << "run" << std::setfill('0') << std::setw(6) << run << "_ls0000"
       << "_EoR.jsn";
    return ss.str();
  }

  inline std::string inputJsonFileName(const unsigned int run, const unsigned int ls, const unsigned int index) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_index" << std::setfill('0') << std::setw(6) << index << ".jsn";
    return ss.str();
  }

  inline std::string inputRawFileName(const unsigned int run, const unsigned int ls, const unsigned int index) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_index" << std::setfill('0') << std::setw(6) << index << ".raw";
    return ss.str();
  }

  inline std::string initFileNameWithPid(const unsigned int run, const unsigned int ls, std::string const& stream) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".ini";
    return ss.str();
  }

  inline std::string initTempFileNameWithPid(const unsigned int run, const unsigned int ls, std::string const& stream) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".initemp";
    return ss.str();
  }

  inline std::string initFileNameWithInstance(const unsigned int run,
                                              const unsigned int ls,
                                              std::string const& stream,
                                              std::string const& instance) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_" << stream << "_" << instance << ".ini";
    return ss.str();
  }

  inline std::string streamerDataFileNameWithPid(const unsigned int run,
                                                 const unsigned int ls,
                                                 std::string const& stream) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".dat";
    return ss.str();
  }

  inline std::string streamerDataFileNameWithInstance(const unsigned int run,
                                                      const unsigned int ls,
                                                      std::string const& stream,
                                                      std::string const& instance) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_" << stream << "_" << instance << ".dat";
    return ss.str();
  }

  inline std::string streamerDataChecksumFileNameWithInstance(const unsigned int run,
                                                              const unsigned int ls,
                                                              std::string const& stream,
                                                              std::string const& instance) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_" << stream << "_" << instance << ".checksum";
    return ss.str();
  }

  inline std::string streamerJsonFileNameWithPid(const unsigned int run,
                                                 const unsigned int ls,
                                                 std::string const& stream) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".jsn";
    return ss.str();
  }

  inline std::string streamerJsonFileNameWithInstance(const unsigned int run,
                                                      const unsigned int ls,
                                                      std::string const& stream,
                                                      std::string const& instance) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_stream" << stream << "_" << instance << ".jsn";
    return ss.str();
  }

  inline std::string protocolBufferHistogramFileNameWithPid(const unsigned int run,
                                                            const unsigned int ls,
                                                            std::string const& stream) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".pb";
    return ss.str();
  }

  inline std::string protocolBufferHistogramFileNameWithInstance(const unsigned int run,
                                                                 const unsigned int ls,
                                                                 std::string const& stream,
                                                                 std::string const& instance) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_" << stream << "_" << instance << ".pb";
    return ss.str();
  }

  inline std::string rootHistogramFileNameWithPid(const unsigned int run,
                                                  const unsigned int ls,
                                                  std::string const& stream) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_" << stream << "_pid" << std::setfill('0') << std::setw(5) << getpid() << ".root";
    return ss.str();
  }

  inline std::string rootHistogramFileNameWithInstance(const unsigned int run,
                                                       const unsigned int ls,
                                                       std::string const& stream,
                                                       std::string const& instance) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_" << stream << "_" << instance << ".root";
    return ss.str();
  }

  inline std::string genericFileName(const unsigned int run,
                                     const unsigned int ls,
                                     std::string const& typePrefix,
                                     std::string const& typeSuffix,
                                     unsigned int typeWidth,
                                     std::string const& instancePrefix,
                                     std::string const& instanceSuffix,
                                     unsigned int instanceWidth,
                                     std::string const& fileExtension) {
    std::stringstream ss;
    runLumiPrefixFill(ss, run, ls);
    ss << "_";
    if (!typePrefix.empty())
      ss << typePrefix;
    if (typeWidth)
      ss << std::setfill('0') << std::setw(typeWidth);
    ss << typeSuffix;
    if (!instanceSuffix.empty()) {
      ss << "_";
      if (!instancePrefix.empty())
        ss << instancePrefix;
      if (instanceWidth)
        ss << std::setfill('0') << std::setw(instanceWidth);
      ss << instanceSuffix;
    }
    if (!fileExtension.empty())
      ss << "." << fileExtension;
    return ss.str();
  }

};  // namespace fffnaming
#endif