Skip to content

Commit 708b62d

Browse files
mfasDadavidrohr
authored andcommitted
[EMCAL-630] Suppress error messages above a maximum amount
Error messages settable via the configurable params. In case error messages are suppressed the amount of suppressed messages is counted and printed as WARNING at when the component is destructed.
1 parent e673a51 commit 708b62d

2 files changed

Lines changed: 41 additions & 5 deletions

File tree

Detectors/EMCAL/workflow/include/EMCALWorkflow/RawToCellConverterSpec.h

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class RawToCellConverterSpec : public framework::Task
4040
RawToCellConverterSpec() : framework::Task(){};
4141

4242
/// \brief Destructor
43-
~RawToCellConverterSpec() override = default;
43+
~RawToCellConverterSpec() override;
4444

4545
/// \brief Initializing the RawToCellConverterSpec
4646
/// \param ctx Init context
@@ -55,11 +55,20 @@ class RawToCellConverterSpec : public framework::Task
5555
/// Output cells trigger record: {"EMC", "CELLSTR", 0, Lifetime::Timeframe}
5656
void run(framework::ProcessingContext& ctx) final;
5757

58+
/// \brief Set max number of error messages printed
59+
/// \param maxMessages Max. amount of messages printed
60+
///
61+
/// Error messages will be suppressed once the maximum is reached
62+
void setMaxErrorMessages(int maxMessages) { mMaxErrorMessages = maxMessages; }
63+
5864
void setNoiseThreshold(int thresold) { mNoiseThreshold = thresold; }
5965
int getNoiseThreshold() { return mNoiseThreshold; }
6066

6167
private:
62-
int mNoiseThreshold = 0;
68+
int mNoiseThreshold = 0; ///< Noise threshold in raw fit
69+
int mNumErrorMessages = 0; ///< Current number of error messages
70+
int mErrorMessagesSuppressed = 0; ///< Counter of suppressed error messages
71+
int mMaxErrorMessages = 100; ///< Max. number of error messages
6372
o2::emcal::Geometry* mGeometry = nullptr; ///!<! Geometry pointer
6473
std::unique_ptr<o2::emcal::MappingHandler> mMapper = nullptr; ///!<! Mapper
6574
std::unique_ptr<o2::emcal::CaloRawFitter> mRawFitter; ///!<! Raw fitter

Detectors/EMCAL/workflow/src/RawToCellConverterSpec.cxx

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@
3333

3434
using namespace o2::emcal::reco_workflow;
3535

36+
RawToCellConverterSpec::~RawToCellConverterSpec()
37+
{
38+
if (mErrorMessagesSuppressed) {
39+
LOG(WARNING) << "Suppressed further " << mErrorMessagesSuppressed << " error messages";
40+
}
41+
}
42+
3643
void RawToCellConverterSpec::init(framework::InitContext& ctx)
3744
{
3845
LOG(DEBUG) << "[EMCALRawToCellConverter - init] Initialize converter ";
@@ -58,6 +65,9 @@ void RawToCellConverterSpec::init(framework::InitContext& ctx)
5865
mRawFitter = std::unique_ptr<CaloRawFitter>(new o2::emcal::CaloRawFitterGamma2);
5966
}
6067

68+
mMaxErrorMessages = ctx.options().get<int>("maxmessage");
69+
LOG(INFO) << "Suppressing error messages after " << mMaxErrorMessages << " messages";
70+
6171
mRawFitter->setAmpCut(mNoiseThreshold);
6272
mRawFitter->setL1Phase(0.);
6373
}
@@ -153,7 +163,15 @@ void RawToCellConverterSpec::run(framework::ProcessingContext& ctx)
153163
default:
154164
break;
155165
}
156-
LOG(ERROR) << " EMCAL raw task: " << errormessage << " in Supermodule " << feeID << std::endl;
166+
if (mNumErrorMessages < mMaxErrorMessages) {
167+
LOG(ERROR) << " EMCAL raw task: " << errormessage << " in Supermodule " << feeID << std::endl;
168+
mNumErrorMessages++;
169+
if (mNumErrorMessages == mMaxErrorMessages) {
170+
LOG(ERROR) << "Max. amount of error messages (" << mMaxErrorMessages << " reached, further messages will be suppressed";
171+
}
172+
} else {
173+
mErrorMessagesSuppressed++;
174+
}
157175
//fill histograms with error types
158176
mOutputDecoderErrors.push_back(errornum);
159177
continue;
@@ -192,7 +210,15 @@ void RawToCellConverterSpec::run(framework::ProcessingContext& ctx)
192210
fitResults.setTime(0.);
193211
}
194212
} catch (CaloRawFitter::RawFitterError_t& fiterror) {
195-
LOG(ERROR) << "Failure in raw fitting: " << CaloRawFitter::createErrorMessage(fiterror);
213+
if (mNumErrorMessages < mMaxErrorMessages) {
214+
LOG(ERROR) << "Failure in raw fitting: " << CaloRawFitter::createErrorMessage(fiterror);
215+
mNumErrorMessages++;
216+
if (mNumErrorMessages == mMaxErrorMessages) {
217+
LOG(ERROR) << "Max. amount of error messages (" << mMaxErrorMessages << " reached, further messages will be suppressed";
218+
}
219+
} else {
220+
mErrorMessagesSuppressed++;
221+
}
196222
mOutputDecoderErrors.emplace_back(feeID, -1, CaloRawFitter::getErrorNumber(fiterror));
197223
}
198224
currentCellContainer->emplace_back(CellID, fitResults.getAmp() * CONVADCGEV, fitResults.getTime(), chantype);
@@ -234,5 +260,6 @@ o2::framework::DataProcessorSpec o2::emcal::reco_workflow::getRawToCellConverter
234260
outputs,
235261
o2::framework::adaptFromTask<o2::emcal::reco_workflow::RawToCellConverterSpec>(),
236262
o2::framework::Options{
237-
{"fitmethod", o2::framework::VariantType::String, "standard", {"Fit method (standard or gamma2)"}}}};
263+
{"fitmethod", o2::framework::VariantType::String, "standard", {"Fit method (standard or gamma2)"}},
264+
{"maxmessage", o2::framework::VariantType::Int, 100, {"Max. amout of error messages to be displayed"}}}};
238265
}

0 commit comments

Comments
 (0)