12#ifndef O2_CALIBRATION_FT0_EVENTS_PER_BC_CALIBRATOR_H
13#define O2_CALIBRATION_FT0_EVENTS_PER_BC_CALIBRATOR_H
38 if (ic.options().hasOption(
"slot-len-sec")) {
39 mSlotLenSec = ic.options().get<uint32_t>(
"slot-len-sec");
41 if (ic.options().hasOption(
"one-object-per-run")) {
42 mOneObjectPerRun = ic.options().get<
bool>(
"one-object-per-run");
44 if (ic.options().hasOption(
"min-entries-number")) {
45 mMinNumberOfEntries = ic.options().get<uint32_t>(
"min-entries-number");
47 if (ic.options().hasOption(
"min-ampl-side-a")) {
48 mMinAmplitudeSideA = ic.options().get<int32_t>(
"min-ampl-side-a");
50 if (ic.options().hasOption(
"min-ampl-side-c")) {
51 mMinAmplitudeSideC = ic.options().get<int32_t>(
"min-ampl-side-c");
53 if (ic.options().hasOption(
"min-sum-of-ampl")) {
54 mMinSumOfAmplitude = ic.options().get<int32_t>(
"min-sum-of-ampl");
57 mCalibrator = std::make_unique<o2::ft0::EventsPerBcCalibrator>(mMinNumberOfEntries, mMinAmplitudeSideA, mMinAmplitudeSideC, mMinSumOfAmplitude);
59 if (mOneObjectPerRun) {
60 LOG(info) <<
"Only one object will be created at the end of run";
61 mCalibrator->setUpdateAtTheEndOfRunOnly();
63 if (mOneObjectPerRun ==
false) {
64 LOG(info) <<
"Defined slot interval to " << mSlotLenSec <<
" seconds";
65 mCalibrator->setSlotLengthInSeconds(mSlotLenSec);
77 auto digits = pc.inputs().get<gsl::span<o2::ft0::Digit>>(
"digits");
82 mCalibrator->process(
digits);
83 if (mOneObjectPerRun ==
false) {
90 LOG(info) <<
"Received end-of-stream, checking for slot to finalize...";
91 mCalibrator->checkSlotsToFinalize();
93 mCalibrator->initOutput();
99 const auto& tvxHists = mCalibrator->getTvxPerBc();
100 auto& infos = mCalibrator->getTvxPerBcCcdbInfo();
101 for (
unsigned int idx = 0; idx < tvxHists.size(); idx++) {
102 auto& info = infos[idx];
103 const auto& payload = tvxHists[idx];
106 LOG(info) <<
"Sending object " << info->getPath() <<
"/" << info->getFileName() <<
" of size " <<
image->size()
107 <<
" bytes, valid for " << info->getStartValidityTimestamp() <<
" : " << info->getEndValidityTimestamp();
112 if (tvxHists.size()) {
113 mCalibrator->initOutput();
118 std::shared_ptr<o2::base::GRPGeomRequest> mCCDBRequest;
119 std::unique_ptr<o2::ft0::EventsPerBcCalibrator> mCalibrator;
120 bool mOneObjectPerRun;
121 uint32_t mSlotLenSec;
122 uint32_t mMinNumberOfEntries;
123 int32_t mMinAmplitudeSideA;
124 int32_t mMinAmplitudeSideC;
125 int32_t mMinSumOfAmplitude;
Utils and constants for calibration and related workflows.
Helper for geometry and GRP related CCDB requests.
void checkUpdates(o2::framework::ProcessingContext &pc)
bool finaliseCCDB(o2::framework::ConcreteDataMatcher &matcher, void *obj)
static GRPGeomHelper & instance()
void setRequest(std::shared_ptr< GRPGeomRequest > req)
void sendOutput(o2::framework::DataAllocator &output)
void init(o2::framework::InitContext &ic) final
void finaliseCCDB(o2::framework::ConcreteDataMatcher &matcher, void *obj)
void run(o2::framework::ProcessingContext &pc) final
void endOfStream(o2::framework::EndOfStreamContext &ec) final
This is invoked whenever we have an EndOfStream event.
FT0EventsPerBcProcessor(std::shared_ptr< o2::base::GRPGeomRequest > request)
static std::unique_ptr< std::vector< char > > createObjectImage(const T *obj, CcdbObjectInfo *info=nullptr)
static void fillTFIDInfo(o2::framework::ProcessingContext &pc, o2::dataformats::TFIDInfo &ti)
static constexpr o2::header::DataOrigin gDataOriginCDBWrapper
static constexpr o2::header::DataOrigin gDataOriginCDBPayload
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
std::vector< Digit > digits