15#include <boost/program_options.hpp>
18#include <TStopwatch.h>
41void digi2raw(
const std::string& inpName,
const std::string& outDir,
int verbosity,
const std::string& fileFor, uint32_t rdhV = 7,
bool enablePadding =
false,
42 const std::string& ccdbHost =
"",
int superPageSizeInB = 1024 * 1024);
44int main(
int argc,
char** argv)
46 bpo::variables_map vm;
47 bpo::options_description opt_general(
"Usage:\n " + std::string(argv[0]) +
48 "Convert ZDC digits to CRU raw data\n");
49 bpo::options_description opt_hidden(
"");
50 bpo::options_description opt_all;
51 bpo::positional_options_description opt_pos;
54 auto add_option = opt_general.add_options();
55 add_option(
"help,h",
"Print this help message");
56 add_option(
"verbosity,v", bpo::value<int>()->default_value(0),
"verbosity level");
58 add_option(
"input-file,i", bpo::value<std::string>()->default_value(
"zdcdigits.root"),
"input ZDC digits file");
59 add_option(
"file-for,f", bpo::value<std::string>()->default_value(
"all"),
"single file per: all,flp,cruendpoint,link");
60 add_option(
"output-dir,o", bpo::value<std::string>()->default_value(
"./"),
"output directory for raw data");
61 uint32_t defRDH = o2::raw::RDHUtils::getVersion<o2::header::RAWDataHeader>();
62 add_option(
"rdh-version,r", bpo::value<uint32_t>()->default_value(defRDH),
"RDH version to use");
63 add_option(
"enable-padding", bpo::value<bool>()->default_value(
false)->implicit_value(
true),
"enable GBT word padding to 128 bits even for RDH V7");
65 add_option(
"configKeyValues", bpo::value<std::string>()->default_value(
""),
"comma-separated configKeyValues");
67 opt_all.add(opt_general).add(opt_hidden);
68 bpo::store(bpo::command_line_parser(argc, argv).options(opt_all).positional(opt_pos).run(), vm);
70 if (vm.count(
"help")) {
71 std::cout << opt_general << std::endl;
76 }
catch (bpo::error& e) {
77 std::cerr <<
"ERROR: " << e.what() << std::endl
79 std::cerr << opt_general << std::endl;
81 }
catch (std::exception& e) {
82 std::cerr << e.what() <<
", application will now exit" << std::endl;
85 std::string confDig = vm[
"hbfutils-config"].as<std::string>();
86 if (!confDig.empty() && confDig !=
"none") {
92 LOG(info) <<
"CCDB url " << ccdbHost;
93 digi2raw(vm[
"input-file"].as<std::string>(),
94 vm[
"output-dir"].as<std::string>(),
95 vm[
"verbosity"].as<int>(),
96 vm[
"file-for"].as<std::string>(),
97 vm[
"rdh-version"].as<uint32_t>(),
98 vm[
"enable-padding"].as<bool>(),
106void digi2raw(
const std::string& inpName,
const std::string& outDir,
int verbosity,
const std::string& fileFor, uint32_t rdhV,
bool enablePadding,
const std::string& ccdbHost,
int superPageSizeInB)
108 if (rdhV < 7 && !enablePadding) {
109 enablePadding =
true;
110 LOG(info) <<
"padding is always ON for RDH version " << rdhV;
114 mgr.setURL(ccdbHost);
122 LOG(fatal) <<
"Cannot module configuratio for timestamp " << mgr.getTimestamp();
125 LOG(info) <<
"Loaded module configuration for timestamp " << mgr.getTimestamp();
129 LOG(fatal) <<
"Cannot get simulation configuration for timestamp " << mgr.getTimestamp();
132 LOG(info) <<
"Loaded simulation configuration for timestamp " << mgr.getTimestamp();
133 simCondition->
print();
135 LOG(info) <<
"RDHVersion " << rdhV <<
" padding: " << enablePadding;
138 const auto& bcfill = ctx->getBunchFilling();
139 auto bf = ctx->getBunchFilling();
143 auto bp = bf.getPattern();
156 wr.setSuperPageSize(superPageSizeInB);
157 wr.useRDHVersion(rdhV);
158 wr.useRDHDataFormat(enablePadding ? 0 : 2);
159 if (!enablePadding) {
160 wr.setAlignmentSize(16);
161 wr.setAlignmentPaddingFiller(0xff);
165 std::string outDirName(outDir);
166 if (outDirName.back() !=
'/') {
Class to describe fired triggered and/or stored channels for the BC and to refer to channel data.
Header of the General Run Parameters object.
Definition of the Names Generator class.
converts digits to raw format
void digi2raw(const std::string &inpName, const std::string &outDir, int verbosity, const std::string &fileFor, uint32_t rdhV=7, bool enablePadding=false, const std::string &ccdbHost="", int superPageSizeInB=1024 *1024)
MC->raw conversion for ZDC.
static std::string getGRPFileName(const std::string_view prefix=STANDARDSIMPREFIX)
static constexpr std::string_view DIGITIZATIONCONFIGFILE
static std::string getCCDBServer()
static BasicCCDBManager & instance()
static const HBFUtils & Instance()
static void updateFromFile(std::string const &, std::string const ¶msList="", bool unchangedOnly=false)
static void updateFromString(std::string const &)
static GRPObject * loadFrom(const std::string &grpFileName="")
static DigitizationContext * loadFromFile(std::string_view filename="")
void setModuleConfig(const ModuleConfig *moduleConfig)
void processDigits(const std::string &outDir, const std::string &fileDigitsName)
Prepare list of clean empty bunches for baseline evaluation.
o2::raw::RawFileWriter & getWriter()
void setEnablePadding(bool v)
void setFileFor(const std::string v)
void setSimCondition(const SimCondition *SimCondition)
void emptyBunches(std::bitset< 3564 > &bunchPattern)
void assertOutputDirectory(std::string_view outDirName)
const std::string CCDBPathConfigSim
const std::string CCDBPathConfigModule
static std::string concat_string(Ts const &... ts)
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"