Skip to content

Commit bf6eeae

Browse files
authored
add option to produce per-link raw data files for MID (#4364)
* add option to produce per-link raw data files for MID * account for automatice raw extension in MID testRaw Co-authored-by: shahoian <ruben.shahoyan@cern.ch>
1 parent f13634e commit bf6eeae

File tree

4 files changed

+14
-7
lines changed

4 files changed

+14
-7
lines changed

Detectors/MUON/MID/Raw/include/MIDRaw/Encoder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ namespace mid
3535
class Encoder
3636
{
3737
public:
38-
void init(const char* filename, int verbosity = 0);
38+
void init(const char* filename, bool perLink = false, int verbosity = 0);
3939
void process(gsl::span<const ColumnData> data, const InteractionRecord& ir, EventType eventType = EventType::Standard);
4040
/// Sets the maximum size of the superpage
4141
void setSuperpageSize(int maxSize) { mRawWriter.setSuperPageSize(maxSize); }

Detectors/MUON/MID/Raw/src/Encoder.cxx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,30 @@
1818
#include "DetectorsRaw/HBFUtils.h"
1919
#include "DetectorsRaw/RDHUtils.h"
2020
#include "MIDRaw/CrateMasks.h"
21+
#include <fmt/format.h>
2122

2223
namespace o2
2324
{
2425
namespace mid
2526
{
2627

27-
void Encoder::init(const char* filename, int verbosity)
28+
void Encoder::init(const char* filename, bool perLink, int verbosity)
2829
{
2930
/// Initializes links
3031

3132
CrateMasks masks;
3233
auto gbtIds = mFEEIdConfig.getConfiguredGBTIds();
3334

3435
mRawWriter.setVerbosity(verbosity);
36+
int lcnt = 0;
3537
for (auto& gbtId : gbtIds) {
3638
auto feeId = mFEEIdConfig.getFeeId(gbtId);
37-
mRawWriter.registerLink(feeId, mFEEIdConfig.getCRUId(gbtId), mFEEIdConfig.getLinkId(gbtId), mFEEIdConfig.getEndPointId(gbtId), filename);
39+
mRawWriter.registerLink(feeId, mFEEIdConfig.getCRUId(gbtId), mFEEIdConfig.getLinkId(gbtId), mFEEIdConfig.getEndPointId(gbtId),
40+
perLink ? fmt::format("{:s}_L{:d}.raw", filename, lcnt) : fmt::format("{:s}.raw", filename));
3841
mGBTEncoders[feeId].setFeeId(feeId);
3942
mGBTEncoders[feeId].setMask(masks.getMask(feeId));
4043
mGBTIds[feeId] = gbtId;
44+
lcnt++;
4145
}
4246
}
4347

Detectors/MUON/MID/Raw/test/testRaw.cxx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,10 @@ std::tuple<std::vector<o2::mid::ColumnData>, std::vector<o2::mid::ROFRecord>> en
8585
{
8686
auto severity = fair::Logger::GetConsoleSeverity();
8787
fair::Logger::SetConsoleSeverity(fair::Severity::WARNING);
88-
std::string tmpFilename = "tmp_mid_raw.dat";
88+
std::string tmpFilename0 = "tmp_mid_raw";
89+
std::string tmpFilename = tmpFilename0 + ".raw";
8990
o2::mid::Encoder encoder;
90-
encoder.init(tmpFilename.c_str());
91+
encoder.init(tmpFilename0.c_str());
9192
for (auto& item : inData) {
9293
encoder.process(item.second, item.first, inEventType);
9394
}

Detectors/MUON/MID/Workflow/src/RawWriterSpec.cxx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class RawWriterDeviceDPL
4444
{
4545
auto filename = ic.options().get<std::string>("mid-raw-outfile");
4646
auto dirname = ic.options().get<std::string>("mid-raw-outdir");
47+
auto perLink = ic.options().get<bool>("mid-raw-perlink");
4748
if (gSystem->AccessPathName(dirname.c_str())) {
4849
if (gSystem->mkdir(dirname.c_str(), kTRUE)) {
4950
LOG(FATAL) << "could not create output directory " << dirname;
@@ -53,7 +54,7 @@ class RawWriterDeviceDPL
5354
}
5455

5556
std::string fullFName = o2::utils::concat_string(dirname, "/", filename);
56-
mEncoder.init(fullFName.c_str());
57+
mEncoder.init(fullFName.c_str(), perLink);
5758

5859
std::string inputGRP = o2::base::NameConf::getGRPFileName();
5960
std::unique_ptr<o2::parameters::GRPObject> grp{o2::parameters::GRPObject::loadFrom(inputGRP)};
@@ -97,7 +98,8 @@ framework::DataProcessorSpec getRawWriterSpec()
9798
of::AlgorithmSpec{of::adaptFromTask<o2::mid::RawWriterDeviceDPL>()},
9899
of::Options{
99100
{"mid-raw-outdir", of::VariantType::String, ".", {"Raw file output directory"}},
100-
{"mid-raw-outfile", of::VariantType::String, "mid.raw", {"Raw output file name"}},
101+
{"mid-raw-outfile", of::VariantType::String, "mid", {"Raw output file name"}},
102+
{"mid-raw-perlink", of::VariantType::Bool, false, {"Output file per link"}},
101103
{"mid-raw-header-offset", of::VariantType::Bool, false, {"Header offset in bytes"}}}};
102104
}
103105
} // namespace mid

0 commit comments

Comments
 (0)