Skip to content

Commit f4258c4

Browse files
committed
ITSMFT: simplify setting of input filter of the decoder
1 parent c7199f1 commit f4258c4

2 files changed

Lines changed: 11 additions & 17 deletions

File tree

Detectors/ITSMFT/common/reconstruction/src/RawPixelDecoder.cxx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -235,12 +235,6 @@ void RawPixelDecoder<Mapping>::setupLinks(InputRecord& inputs)
235235
auto nLinks = mGBTLinks.size();
236236
auto origin = (mUserDataOrigin == o2::header::gDataOriginInvalid) ? mMAP.getOrigin() : mUserDataOrigin;
237237
auto datadesc = (mUserDataDescription == o2::header::gDataDescriptionInvalid) ? o2::header::gDataDescriptionRawData : mUserDataDescription;
238-
if (mUserDataDescription != o2::header::gDataDescriptionInvalid) { // overwrite data filter origin&descriptions with user defined ones if possible
239-
for (auto& filt : mInputFilter) {
240-
filt.matcher = o2::framework::DataSpecUtils::dataDescriptorMatcherFrom(ConcreteDataTypeMatcher(origin, datadesc));
241-
}
242-
}
243-
244238
// if we see requested data type input with 0xDEADBEEF subspec and 0 payload this means that the "delayed message"
245239
// mechanism created it in absence of real data from upstream. Processor should send empty output to not block the workflow
246240
{

Detectors/ITSMFT/common/workflow/src/STFDecoderSpec.cxx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,22 @@ void STFDecoder<Mapping>::init(InitContext& ic)
7272
header::DataDescription dataDesc;
7373
dataOrig.runtimeInit(v1[0].c_str());
7474
dataDesc.runtimeInit(v2[0].c_str());
75+
Mapping map;
7576
for (int iLayer{0}; iLayer < mLayers; ++iLayer) {
7677
auto& dec = mDecoder.emplace_back(std::make_unique<RawPixelDecoder<Mapping>>());
7778
dec->setUserDataOrigin(dataOrig);
7879
dec->setUserDataDescription(dataDesc);
7980
dec->init(); // is this no-op?
81+
82+
if (mDoStaggering) {
83+
std::vector<o2::framework::InputSpec> filter;
84+
for (const auto feeID : map.getLayer2FEEIDs(iLayer)) {
85+
filter.emplace_back("filter", ConcreteDataMatcher{dataOrig, dataDesc, (o2::header::DataHeader::SubSpecificationType)feeID});
86+
}
87+
dec->setInputFilter(filter);
88+
} else {
89+
dec->setInputFilter({InputSpec{"filter", ConcreteDataTypeMatcher(dataOrig, dataDesc)}});
90+
}
8091
}
8192
} catch (const std::exception& e) {
8293
LOG(error) << "exception was thrown in decoder creation: " << e.what();
@@ -131,17 +142,6 @@ void STFDecoder<Mapping>::init(InitContext& ic)
131142
mClusterer = std::make_unique<Clusterer>();
132143
mClusterer->setNChips(Mapping::getNChips());
133144
}
134-
135-
if (mDoStaggering) {
136-
Mapping map;
137-
for (uint32_t iLayer{0}; iLayer < mLayers; ++iLayer) {
138-
std::vector<o2::framework::InputSpec> filter;
139-
for (const auto feeID : map.getLayer2FEEIDs(iLayer)) {
140-
filter.emplace_back("filter", ConcreteDataMatcher{Mapping::getOrigin(), o2::header::gDataDescriptionRawData, (o2::header::DataHeader::SubSpecificationType)feeID});
141-
}
142-
mDecoder[iLayer]->setInputFilter(filter);
143-
}
144-
}
145145
}
146146

147147
///_______________________________________

0 commit comments

Comments
 (0)