Skip to content

Commit 3d6384e

Browse files
committed
require min num of entries for TOF Diagnostic calibs
1 parent e2e7eb8 commit 3d6384e

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

Detectors/TOF/calibration/include/TOFCalibration/TOFDiagnosticCalibrator.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ class TOFDiagnosticCalibrator final : public o2::calibration::TimeSlotCalibratio
3131
int mRunNumber = -1;
3232

3333
public:
34-
TOFDiagnosticCalibrator() = default;
34+
TOFDiagnosticCalibrator(int minROwin = 100) : mMinROwin(minROwin) {}
3535
~TOFDiagnosticCalibrator() final = default;
36-
bool hasEnoughData(const Slot& slot) const final { return true; }
36+
bool hasEnoughData(const Slot& slot) const final;
3737
void initOutput() final;
3838
void finalizeSlot(Slot& slot) final;
3939
Slot& emplaceNewSlot(bool front, TFType tstart, TFType tend) final;
@@ -43,12 +43,15 @@ class TOFDiagnosticCalibrator final : public o2::calibration::TimeSlotCalibratio
4343
const std::vector<Diagnostic>& getDiagnosticVector() const { return mDiagnosticVector; }
4444
const CcdbObjectInfoVector& getDiagnosticInfoVector() const { return mccdbInfoVector; }
4545
CcdbObjectInfoVector& getDiagnosticInfoVector() { return mccdbInfoVector; }
46+
int getMinROwin() const { return mMinROwin; }
47+
void setMinROwin(int rowin) { mMinROwin = rowin; }
4648

4749
private:
4850
CcdbObjectInfoVector mccdbInfoVector;
4951
std::vector<Diagnostic> mDiagnosticVector;
52+
int mMinROwin; // minimal number of readout windows needed to finalize the object
5053

51-
ClassDefOverride(TOFDiagnosticCalibrator, 1);
54+
ClassDefOverride(TOFDiagnosticCalibrator, 2);
5255
};
5356

5457
} // end namespace tof

Detectors/TOF/calibration/src/TOFDiagnosticCalibrator.cxx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,17 @@ void TOFDiagnosticCalibrator::initOutput()
2828
mccdbInfoVector.clear();
2929
mDiagnosticVector.clear();
3030
}
31+
//----------------------------------------------------------
32+
bool TOFDiagnosticCalibrator::hasEnoughData(const Slot& slot) const
33+
{
34+
const Diagnostic* diag = slot.getContainer();
3135

36+
if (diag->getFrequencyROW() < mMinROwin) {
37+
return false;
38+
}
39+
40+
return true;
41+
}
3242
//----------------------------------------------------------
3343
void TOFDiagnosticCalibrator::finalizeSlot(Slot& slot)
3444
{

Detectors/TOF/calibration/testWorkflow/TOFDiagnosticCalibratorSpec.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ namespace calibration
3737
class TOFDiagnosticCalibDevice : public o2::framework::Task
3838
{
3939
public:
40-
TOFDiagnosticCalibDevice(std::shared_ptr<o2::base::GRPGeomRequest> req, int runnumber = -1) : mCCDBRequest(req), mRunNumber(runnumber) {}
40+
TOFDiagnosticCalibDevice(std::shared_ptr<o2::base::GRPGeomRequest> req, int runnumber = -1, int rowinMin = 100000) : mCCDBRequest(req), mRunNumber(runnumber), mMinROwin(rowinMin) {}
4141
void init(o2::framework::InitContext& ic) final
4242
{
4343
o2::base::GRPGeomHelper::instance().setRequest(mCCDBRequest);
@@ -47,6 +47,7 @@ class TOFDiagnosticCalibDevice : public o2::framework::Task
4747
mCalibrator->setSlotLength(slotL);
4848
mCalibrator->setMaxSlotsDelay(delay);
4949
mCalibrator->setRunNumber(mRunNumber);
50+
mCalibrator->setMinROwin(mMinROwin);
5051
}
5152

5253
void finaliseCCDB(o2::framework::ConcreteDataMatcher& matcher, void* obj) final
@@ -75,6 +76,7 @@ class TOFDiagnosticCalibDevice : public o2::framework::Task
7576
std::unique_ptr<o2::tof::TOFDiagnosticCalibrator> mCalibrator;
7677
std::shared_ptr<o2::base::GRPGeomRequest> mCCDBRequest;
7778
int mRunNumber = -1;
79+
int mMinROwin = 100000;
7880

7981
//________________________________________________________________
8082
void sendOutput(DataAllocator& output)
@@ -104,7 +106,7 @@ class TOFDiagnosticCalibDevice : public o2::framework::Task
104106
namespace framework
105107
{
106108

107-
DataProcessorSpec getTOFDiagnosticCalibDeviceSpec(int runnumber)
109+
DataProcessorSpec getTOFDiagnosticCalibDeviceSpec(int runnumber, int rowinMin)
108110
{
109111
using device = o2::calibration::TOFDiagnosticCalibDevice;
110112
using clbUtils = o2::calibration::Utils;
@@ -125,7 +127,7 @@ DataProcessorSpec getTOFDiagnosticCalibDeviceSpec(int runnumber)
125127
"tof-diagnostic-calibration",
126128
inputs,
127129
outputs,
128-
AlgorithmSpec{adaptFromTask<device>(ccdbRequest, runnumber)},
130+
AlgorithmSpec{adaptFromTask<device>(ccdbRequest, runnumber, rowinMin)},
129131
Options{
130132
{"tf-per-slot", VariantType::UInt32, 5u, {"number of TFs per calibration time slot"}},
131133
{"max-delay", VariantType::UInt32, 3u, {"number of slots in past to consider"}}}};

Detectors/TOF/calibration/testWorkflow/tof-diagnostic-workflow.cxx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
1919
{
2020
// option allowing to set parameters
2121
workflowOptions.push_back(ConfigParamSpec{"tof-dia-run-number", o2::framework::VariantType::Int, -1, {"run number"}});
22+
workflowOptions.push_back(ConfigParamSpec{"tof-dia-min-rowin", o2::framework::VariantType::Int, 100000, {"min number of TOF Radout Windows, def=100k (3 s)"}});
2223
}
2324

2425
// ------------------------------------------------------------------
@@ -29,6 +30,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& configcontext)
2930
{
3031
WorkflowSpec specs;
3132
auto runnumber = configcontext.options().get<int>("tof-dia-run-number");
32-
specs.emplace_back(getTOFDiagnosticCalibDeviceSpec(runnumber));
33+
auto rowinMin = configcontext.options().get<int>("tof-dia-min-rowin");
34+
specs.emplace_back(getTOFDiagnosticCalibDeviceSpec(runnumber, rowinMin));
3335
return specs;
3436
}

0 commit comments

Comments
 (0)