Skip to content

Commit a8d18d8

Browse files
authored
TOF: add flag to compressor to skip large payloads (#12040)
1 parent e1f6469 commit a8d18d8

5 files changed

Lines changed: 35 additions & 12 deletions

File tree

Detectors/TOF/compression/include/TOFCompression/CompressorTask.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,15 @@ template <typename RDH, bool verbose, bool paranoid>
3333
class CompressorTask : public Task
3434
{
3535
public:
36-
CompressorTask() = default;
36+
CompressorTask(long payloadLim = -1) : mPayloadLimit(payloadLim) {}
3737
~CompressorTask() override = default;
3838
void init(InitContext& ic) final;
3939
void run(ProcessingContext& pc) final;
4040

4141
private:
4242
Compressor<RDH, verbose, paranoid> mCompressor;
4343
int mOutputBufferSize;
44+
long mPayloadLimit = -1;
4445
};
4546

4647
} // namespace tof

Detectors/TOF/compression/include/TOFCompression/CompressorTaskOld.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,15 @@ template <typename RDH, bool verbose, bool paranoid>
3333
class CompressorTaskOld : public Task
3434
{
3535
public:
36-
CompressorTaskOld() = default;
36+
CompressorTaskOld(long payloadLim = -1) : mPayloadLimit(payloadLim) {}
3737
~CompressorTaskOld() override = default;
3838
void init(InitContext& ic) final;
3939
void run(ProcessingContext& pc) final;
4040

4141
private:
4242
Compressor<RDH, verbose, paranoid> mCompressor;
4343
int mOutputBufferSize;
44+
long mPayloadLimit = -1;
4445
};
4546

4647
} // namespace tof

Detectors/TOF/compression/src/CompressorTask.cxx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ namespace o2::tof
3030
template <typename RDH, bool verbose, bool paranoid>
3131
void CompressorTask<RDH, verbose, paranoid>::init(InitContext& ic)
3232
{
33-
LOG(info) << "Compressor init";
33+
if (mPayloadLimit < 0) {
34+
LOG(info) << "Compressor init";
35+
} else {
36+
LOG(info) << "Compressor init with Payload limit at " << mPayloadLimit;
37+
}
3438

3539
auto decoderCONET = ic.options().get<bool>("tof-compressor-conet-mode");
3640
auto decoderVerbose = ic.options().get<bool>("tof-compressor-decoder-verbose");
@@ -137,6 +141,11 @@ void CompressorTask<RDH, verbose, paranoid>::run(ProcessingContext& pc)
137141
auto payloadIn = ref.payload;
138142
auto payloadInSize = DataRefUtils::getPayloadSize(ref);
139143

144+
if (mPayloadLimit > -1 && payloadInSize > mPayloadLimit) {
145+
LOG(error) << "Payload larger than limit (" << mPayloadLimit << "), payload = " << payloadInSize;
146+
continue;
147+
}
148+
140149
/** prepare compressor **/
141150
mCompressor.setDecoderBuffer(payloadIn);
142151
mCompressor.setDecoderBufferSize(payloadInSize);

Detectors/TOF/compression/src/CompressorTaskOld.cxx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,11 @@ namespace tof
3636
template <typename RDH, bool verbose, bool paranoid>
3737
void CompressorTaskOld<RDH, verbose, paranoid>::init(InitContext& ic)
3838
{
39-
LOG(info) << "Compressor init";
39+
if (mPayloadLimit < 0) {
40+
LOG(info) << "Compressor init";
41+
} else {
42+
LOG(info) << "Compressor init with Payload limit at " << mPayloadLimit;
43+
}
4044

4145
auto decoderCONET = ic.options().get<bool>("tof-compressor-conet-mode");
4246
auto decoderVerbose = ic.options().get<bool>("tof-compressor-decoder-verbose");
@@ -166,6 +170,11 @@ void CompressorTaskOld<RDH, verbose, paranoid>::run(ProcessingContext& pc)
166170
auto payloadIn = ref.payload;
167171
auto payloadInSize = DataRefUtils::getPayloadSize(ref);
168172

173+
if (mPayloadLimit > -1 && payloadInSize > mPayloadLimit) {
174+
LOG(error) << "Payload larger than limit (" << mPayloadLimit << "), payload = " << payloadInSize;
175+
continue;
176+
}
177+
169178
/** prepare compressor **/
170179
mCompressor.setDecoderBuffer(payloadIn);
171180
mCompressor.setDecoderBufferSize(payloadInSize);

Detectors/TOF/compression/src/tof-compressor.cxx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@ void customize(std::vector<ConfigParamSpec>& workflowOptions)
3636
auto verbose = ConfigParamSpec{"tof-compressor-verbose", VariantType::Bool, false, {"Enable verbose compressor"}};
3737
auto paranoid = ConfigParamSpec{"tof-compressor-paranoid", VariantType::Bool, false, {"Enable paranoid compressor"}};
3838
auto ignoreStf = ConfigParamSpec{"ignore-dist-stf", VariantType::Bool, false, {"do not subscribe to FLP/DISTSUBTIMEFRAME/0 message (no lost TF recovery)"}};
39+
auto payloadlim = ConfigParamSpec{"payload-limit", VariantType::Int64, -1ll, {"Payload limit in Byte (-1 -> no limits)"}};
3940

4041
workflowOptions.push_back(config);
4142
workflowOptions.push_back(outputDesc);
4243
workflowOptions.push_back(rdhVersion);
4344
workflowOptions.push_back(verbose);
4445
workflowOptions.push_back(paranoid);
4546
workflowOptions.push_back(ignoreStf);
47+
workflowOptions.push_back(payloadlim);
4648
workflowOptions.emplace_back(ConfigParamSpec{"old", VariantType::Bool, false, {"use the non-DPL version of the compressor"}});
4749
workflowOptions.push_back(ConfigParamSpec{"configKeyValues", VariantType::String, "", {"Semicolon separated key=value strings"}});
4850
}
@@ -60,6 +62,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
6062
auto paranoid = cfgc.options().get<bool>("tof-compressor-paranoid");
6163
auto ignoreStf = cfgc.options().get<bool>("ignore-dist-stf");
6264
auto old = cfgc.options().get<bool>("old");
65+
auto payloadLim = cfgc.options().get<long>("payload-limit");
6366

6467
std::vector<OutputSpec> outputs;
6568
outputs.emplace_back(OutputSpec(ConcreteDataTypeMatcher{"TOF", "CRAWDATA"}));
@@ -68,30 +71,30 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
6871
if (rdhVersion == o2::raw::RDHUtils::getVersion<o2::header::RAWDataHeader>()) {
6972
if (!verbose && !paranoid) {
7073
if (old) {
71-
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTaskOld<o2::header::RAWDataHeader, false, false>>()};
74+
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTaskOld<o2::header::RAWDataHeader, false, false>>(payloadLim)};
7275
} else {
73-
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTask<o2::header::RAWDataHeader, false, false>>()};
76+
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTask<o2::header::RAWDataHeader, false, false>>(payloadLim)};
7477
}
7578
}
7679
if (!verbose && paranoid) {
7780
if (old) {
78-
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTaskOld<o2::header::RAWDataHeader, false, true>>()};
81+
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTaskOld<o2::header::RAWDataHeader, false, true>>(payloadLim)};
7982
} else {
80-
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTask<o2::header::RAWDataHeader, false, true>>()};
83+
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTask<o2::header::RAWDataHeader, false, true>>(payloadLim)};
8184
}
8285
}
8386
if (verbose && !paranoid) {
8487
if (old) {
85-
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTaskOld<o2::header::RAWDataHeader, true, false>>()};
88+
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTaskOld<o2::header::RAWDataHeader, true, false>>(payloadLim)};
8689
} else {
87-
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTask<o2::header::RAWDataHeader, true, false>>()};
90+
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTask<o2::header::RAWDataHeader, true, false>>(payloadLim)};
8891
}
8992
}
9093
if (verbose && paranoid) {
9194
if (old) {
92-
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTaskOld<o2::header::RAWDataHeader, true, true>>()};
95+
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTaskOld<o2::header::RAWDataHeader, true, true>>(payloadLim)};
9396
} else {
94-
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTask<o2::header::RAWDataHeader, true, true>>()};
97+
algoSpec = AlgorithmSpec{adaptFromTask<o2::tof::CompressorTask<o2::header::RAWDataHeader, true, true>>(payloadLim)};
9598
}
9699
}
97100
}

0 commit comments

Comments
 (0)