61 mVerbosity = ic.
options().
get<
int>(
"verbosity-level");
64 mCTimeMod = opt.mCTimeMod;
65 LOG(info) <<
"BaselineCalibSpec::init: mVerbosity=" << mVerbosity <<
" mCTimeMod=" << mCTimeMod;
89 const auto* dh = DataRefUtils::getHeader<o2::header::DataHeader*>(pc.
inputs().
getFirstValid(
true));
92 LOG(info) <<
"BaselineCalibSpec::run mInitialized=" << mInitialized <<
" run(ti:dh)=" << tinfo.runNumber <<
":" << dh->
runNumber <<
" mRunStartTime=" << mRunStartTime <<
" mProcessed " << mProcessed;
96 if (mInitialized && (tinfo.globalRunNumberChanged ==
true || mRunNumber != tinfo.runNumber)) {
97 if (mProcessed != 0) {
104 LOGF(info,
"ZDC Baseline calibration: run change. Timing: Cpu: %.3e Real: %.3e s in %d slots", mTimer.CpuTime(), mTimer.RealTime(), mTimer.Counter() - 1);
112 mHistoFileMetaData = std::make_unique<o2::dataformats::FileMetaData>();
117 mRunStartTime = tinfo.creation;
118 mRunNumber = tinfo.runNumber;
126 auto& outd = mWorker.
getData();
127 auto reft = mCTimeEnd == 0 ? outd.mCTimeBeg : mCTimeEnd;
128 if ((reft + mCTimeMod) < outd.mCTimeEnd) {
133 mCTimeEnd = outd.mCTimeEnd;
137 if (mInitialized && pc.
transitionState() == TransitionHandlingState::Requested) {
138 if (mProcessed != 0) {
145 LOGF(info,
"ZDC Baseline calibration: transition. Timing: Cpu: %.3e Real: %.3e s in %d slots", mTimer.CpuTime(), mTimer.RealTime(), mTimer.Counter() - 1);
152 if (mProcessed != 0) {
159 LOGF(info,
"ZDC Baseline calibration: end of stream. Timing: Cpu: %.3e Real: %.3e s in %d slots", mTimer.CpuTime(), mTimer.RealTime(), mTimer.Counter() - 1);
167 mInitialized =
false;
173 std::string fn =
"ZDC_BaselineCalib";
181 opt.updateCcdbObjectInfo(info);
183 auto image = o2::ccdb::CcdbApi::createObjectImage<BaselineParam>(&payload, &info);
184 LOG(info) <<
"Sending object " << info.getPath() <<
"/" << info.getFileName() <<
" of size " <<
image->size()
185 <<
" bytes, valid for " << info.getStartValidityTimestamp() <<
" : " << info.getEndValidityTimestamp();
193 if (opt.rootOutput ==
true) {
194 mOutputDir = opt.outputDir;
195 if (mOutputDir.compare(
"/dev/null")) {
196 mHistoFileName = fmt::format(
"{}{}{}_{}.root", mOutputDir, mOutputDir.back() ==
'/' ?
"" :
"/", fn, mRunNumber);
199 LOG(error) <<
"Cannot create output file " << mHistoFileName;
202 std::string metaFileDir = opt.metaFileDir;
203 if (metaFileDir.compare(
"/dev/null")) {
204 mHistoFileMetaData->fillFileData(mHistoFileName);
205 mHistoFileMetaData->type =
"calib";
206 mHistoFileMetaData->priority =
"high";
207 std::string metaFileNameTmp = metaFileDir + (metaFileDir.back() ==
'/' ?
"" :
"/") + fmt::format(
"{}_{}.tmp", fn, mRunNumber);
208 std::string metaFileName = metaFileDir + (metaFileDir.back() ==
'/' ?
"" :
"/") + fmt::format(
"{}_{}.done", fn, mRunNumber);
210 std::ofstream metaFileOut(metaFileNameTmp);
211 metaFileOut << *mHistoFileMetaData.get();
213 std::filesystem::rename(metaFileNameTmp, metaFileName);
214 }
catch (std::exception
const& e) {
215 LOG(error) <<
"Failed to store ZDC meta data file " << metaFileName <<
", reason: " << e.what();
217 LOG(info) <<
"Stored metadata file " << metaFileName <<
".done";
219 LOG(info) <<
"Did not store metafile as meta-dir=" << metaFileDir;
222 LOG(warn) <<
"Do not create output file since output dir is " << mOutputDir;
232 std::vector<InputSpec> inputs;
233 inputs.emplace_back(
"basecalibdata",
"ZDC",
"BASECALIBDATA", 0, Lifetime::Sporadic);
237 std::vector<OutputSpec> outputs;
242 "zdc-calib-baseline",
Baseline calibration intermediate data.
ZDC calibration common parameters.
Definition of the Names Generator class.
static const CalibParamZDC & Instance()
T get(const char *key) const
void snapshot(const Output &spec, T const &object)
ConfigParamRegistry const & options()
DataAllocator & outputs()
The data allocator is used to allocate memory for the output data.
InputRecord & inputs()
The inputs associated with this processing context.
ServiceRegistryRef services()
The services registry associated with this processing context.
TransitionHandlingState transitionState() const
void updateTimeDependentParams(o2::framework::ProcessingContext &pc)
void run(o2::framework::ProcessingContext &pc) final
void init(o2::framework::InitContext &ic) final
void finaliseCCDB(o2::framework::ConcreteDataMatcher &matcher, void *obj) final
void endOfStream(o2::framework::EndOfStreamContext &ec) final
This is invoked whenever we have an EndOfStream event.
int process(const o2::zdc::BaselineCalibSummaryData *data)
CcdbObjectInfo & getCcdbObjectInfo()
BaselineCalibData & getData()
void setModuleConfig(const ModuleConfig *moduleConfig)
BaselineParam & getParamUpd()
int saveDebugHistos(const std::string fn="ZDCBaselineCalib.root")
void setConfig(const BaselineCalibConfig *param)
Defining PrimaryVertex explicitly as messageable.
std::vector< ConfigParamSpec > ccdbParamSpec(std::string const &path, int runDependent, std::vector< CCDBMetadata > metadata={}, int qrate=0)
std::vector< ConfigParamSpec > Options
struct o2::upgrades_utils::@463 zdc
structure to keep FT0 information
const std::string CCDBPathBaselineCalibConfig
framework::DataProcessorSpec getBaselineCalibSpec()
const std::string CCDBPathConfigModule
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
static constexpr o2::header::DataOrigin gDataOriginCDBWrapper
static constexpr o2::header::DataOrigin gDataOriginCDBPayload
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"