Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ class TOFDiagnosticCalibrator final : public o2::calibration::TimeSlotCalibratio
int mRunNumber = -1;

public:
TOFDiagnosticCalibrator() = default;
TOFDiagnosticCalibrator(int minROwin = 100) : mMinROwin(minROwin) {}
~TOFDiagnosticCalibrator() final = default;
bool hasEnoughData(const Slot& slot) const final { return true; }
bool hasEnoughData(const Slot& slot) const final;
void initOutput() final;
void finalizeSlot(Slot& slot) final;
Slot& emplaceNewSlot(bool front, TFType tstart, TFType tend) final;
Expand All @@ -43,12 +43,15 @@ class TOFDiagnosticCalibrator final : public o2::calibration::TimeSlotCalibratio
const std::vector<Diagnostic>& getDiagnosticVector() const { return mDiagnosticVector; }
const CcdbObjectInfoVector& getDiagnosticInfoVector() const { return mccdbInfoVector; }
CcdbObjectInfoVector& getDiagnosticInfoVector() { return mccdbInfoVector; }
int getMinROwin() const { return mMinROwin; }
void setMinROwin(int rowin) { mMinROwin = rowin; }

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

ClassDefOverride(TOFDiagnosticCalibrator, 1);
ClassDefOverride(TOFDiagnosticCalibrator, 2);
};

} // end namespace tof
Expand Down
10 changes: 10 additions & 0 deletions Detectors/TOF/calibration/src/TOFDiagnosticCalibrator.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,17 @@ void TOFDiagnosticCalibrator::initOutput()
mccdbInfoVector.clear();
mDiagnosticVector.clear();
}
//----------------------------------------------------------
bool TOFDiagnosticCalibrator::hasEnoughData(const Slot& slot) const
{
const Diagnostic* diag = slot.getContainer();

if (diag->getFrequencyROW() < mMinROwin) {
return false;
}

return true;
}
//----------------------------------------------------------
void TOFDiagnosticCalibrator::finalizeSlot(Slot& slot)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ namespace calibration
class TOFDiagnosticCalibDevice : public o2::framework::Task
{
public:
TOFDiagnosticCalibDevice(std::shared_ptr<o2::base::GRPGeomRequest> req, int runnumber = -1) : mCCDBRequest(req), mRunNumber(runnumber) {}
TOFDiagnosticCalibDevice(std::shared_ptr<o2::base::GRPGeomRequest> req, int runnumber = -1, int rowinMin = 100000) : mCCDBRequest(req), mRunNumber(runnumber), mMinROwin(rowinMin) {}
void init(o2::framework::InitContext& ic) final
{
o2::base::GRPGeomHelper::instance().setRequest(mCCDBRequest);
Expand All @@ -47,6 +47,7 @@ class TOFDiagnosticCalibDevice : public o2::framework::Task
mCalibrator->setSlotLength(slotL);
mCalibrator->setMaxSlotsDelay(delay);
mCalibrator->setRunNumber(mRunNumber);
mCalibrator->setMinROwin(mMinROwin);
}

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

//________________________________________________________________
void sendOutput(DataAllocator& output)
Expand Down Expand Up @@ -104,7 +106,7 @@ class TOFDiagnosticCalibDevice : public o2::framework::Task
namespace framework
{

DataProcessorSpec getTOFDiagnosticCalibDeviceSpec(int runnumber)
DataProcessorSpec getTOFDiagnosticCalibDeviceSpec(int runnumber, int rowinMin)
{
using device = o2::calibration::TOFDiagnosticCalibDevice;
using clbUtils = o2::calibration::Utils;
Expand All @@ -125,7 +127,7 @@ DataProcessorSpec getTOFDiagnosticCalibDeviceSpec(int runnumber)
"tof-diagnostic-calibration",
inputs,
outputs,
AlgorithmSpec{adaptFromTask<device>(ccdbRequest, runnumber)},
AlgorithmSpec{adaptFromTask<device>(ccdbRequest, runnumber, rowinMin)},
Options{
{"tf-per-slot", VariantType::UInt32, 5u, {"number of TFs per calibration time slot"}},
{"max-delay", VariantType::UInt32, 3u, {"number of slots in past to consider"}}}};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
{
// option allowing to set parameters
workflowOptions.push_back(ConfigParamSpec{"tof-dia-run-number", o2::framework::VariantType::Int, -1, {"run number"}});
workflowOptions.push_back(ConfigParamSpec{"tof-dia-min-rowin", o2::framework::VariantType::Int, 100000, {"min number of TOF Readout Windows, def=100k (3 s)"}});
}

// ------------------------------------------------------------------
Expand All @@ -29,6 +30,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& configcontext)
{
WorkflowSpec specs;
auto runnumber = configcontext.options().get<int>("tof-dia-run-number");
specs.emplace_back(getTOFDiagnosticCalibDeviceSpec(runnumber));
auto rowinMin = configcontext.options().get<int>("tof-dia-min-rowin");
specs.emplace_back(getTOFDiagnosticCalibDeviceSpec(runnumber, rowinMin));
return specs;
}