@@ -130,9 +130,6 @@ void PHOSEnergyCalibDevice::endOfStream(o2::framework::EndOfStreamContext& ec)
130130{
131131 mCalibrator ->checkSlotsToFinalize (o2::calibration::INFINITE_TF );
132132 mCalibrator ->endOfStream ();
133- if (mPostHistos ) {
134- postHistosCCDB (ec);
135- }
136133 writeOutFile ();
137134}
138135
@@ -156,6 +153,9 @@ void PHOSEnergyCalibDevice::fillOutputTree()
156153 mFileOut = std::make_unique<TFile>(mFileName .c_str (), " recreate" );
157154 mTreeOut = std::make_unique<TTree>(" phosCalibDig" , " O2 PHOS calib tree" );
158155 mFileMetaData = std::make_unique<o2::dataformats::FileMetaData>();
156+ mHistoFileName = mOutputDir + fmt::format (" PHOS_CalibHistos_{}.root" , mRunNumber );
157+ mHistoFileOut = std::make_unique<TFile>(mHistoFileName .c_str (), " recreate" );
158+ mHistoFileMetaData = std::make_unique<o2::dataformats::FileMetaData>();
159159 }
160160 auto * br = mTreeOut ->GetBranch (" PHOSCalib" );
161161 auto * pptr = &mOutputDigits ;
@@ -202,24 +202,31 @@ void PHOSEnergyCalibDevice::writeOutFile()
202202 }
203203 LOG (info) << " Stored metadate file " << mFileName << " .done" ;
204204 mFileMetaData .reset ();
205- }
206- void PHOSEnergyCalibDevice::postHistosCCDB (o2::framework::EndOfStreamContext& ec)
207- {
208- // prepare all info to be sent to CCDB
209- auto flName = o2::ccdb::CcdbApi::generateFileName (" TimeEnHistos" );
210- std::map<std::string, std::string> md;
211- o2::ccdb::CcdbObjectInfo info (" PHS/Calib/TimeEnHistos" , " TimeEnHistos" , flName, md, mRunStartTime , o2::ccdb::CcdbObjectInfo::INFINITE_TIMESTAMP );
212- info.setMetaData (md);
213- auto image = o2::ccdb::CcdbApi::createObjectImage (mCalibrator ->getCollectedHistos (), &info);
214205
215- LOG (info) << " Sending object " << info.getPath () << " /" << info.getFileName ()
216- << " of size " << image->size ()
217- << " bytes, valid for " << info.getStartValidityTimestamp ()
218- << " : " << info.getEndValidityTimestamp ();
206+ LOG (info) << " Writing calibration histograms" ;
207+ mHistoFileOut ->cd ();
208+ mHistoFileOut ->WriteObjectAny (mCalibrator ->getCollectedHistos (), " o2::phos::ETCalibHistos" , " histos" );
209+ mHistoFileOut ->Close ();
210+ mHistoFileOut .reset ();
219211
220- header::DataHeader::SubSpecificationType subSpec{(header::DataHeader::SubSpecificationType)0 };
221- ec.outputs ().snapshot (Output{o2::calibration::Utils::gDataOriginCDBPayload , " PHOS_TEHistos" , subSpec}, *image.get ());
222- ec.outputs ().snapshot (Output{o2::calibration::Utils::gDataOriginCDBWrapper , " PHOS_TEHistos" , subSpec}, info);
212+ // write metaFile data
213+ mHistoFileMetaData ->fillFileData (mHistoFileName );
214+ mHistoFileMetaData ->setDataTakingContext (mDataTakingContext );
215+ mHistoFileMetaData ->type = " calib" ;
216+ mHistoFileMetaData ->priority = " high" ;
217+
218+ metaFileNameTmp = mMetaFileDir + fmt::format (" PHOS_CalibHistos_{}.tmp" , mRunNumber );
219+ metaFileName = mMetaFileDir + fmt::format (" PHOS_CalibHistos_{}.done" , mRunNumber );
220+ try {
221+ std::ofstream metaFileOut (metaFileNameTmp);
222+ metaFileOut << *mHistoFileMetaData .get ();
223+ metaFileOut.close ();
224+ std::filesystem::rename (metaFileNameTmp, metaFileName);
225+ } catch (std::exception const & e) {
226+ LOG (error) << " Failed to store PHOS histos meta data file " << metaFileName << " , reason: " << e.what ();
227+ }
228+ LOG (info) << " Stored histos metadate file " << mHistoFileName << " .done" ;
229+ mHistoFileMetaData .reset ();
223230}
224231o2::framework::DataProcessorSpec o2::phos::getPHOSEnergyCalibDeviceSpec (bool useCCDB)
225232{
@@ -241,8 +248,6 @@ o2::framework::DataProcessorSpec o2::phos::getPHOSEnergyCalibDeviceSpec(bool use
241248 inputs);
242249 using clbUtils = o2::calibration::Utils;
243250 std::vector<OutputSpec> outputs;
244- outputs.emplace_back (ConcreteDataTypeMatcher{clbUtils::gDataOriginCDBPayload , " PHOS_TEHistos" }, o2::framework::Lifetime::Sporadic);
245- outputs.emplace_back (ConcreteDataTypeMatcher{clbUtils::gDataOriginCDBWrapper , " PHOS_TEHistos" }, o2::framework::Lifetime::Sporadic);
246251
247252 return o2::framework::DataProcessorSpec{" PHOSEnergyCalibDevice" ,
248253 inputs,
0 commit comments