@@ -150,12 +150,14 @@ class TRDDCSDataProcessor : public o2::framework::Task
150150 LOG (info) << " Invalid voltage variation trigger of DPs to update Anode/DriftUMon to " << utrigger << " , using default value of 1 V" ;
151151 }
152152
153+ mUploadAtEoS = ic.options ().get <bool >(" enable-uploadAtEoS" );
154+ LOG (info) << " Setting upload of CCDB objects at end of stream to " << mUploadAtEoS ;
155+
153156 mProcessor ->init (vect);
154157 mTimerGas = std::chrono::high_resolution_clock::now ();
155158 mTimerVoltages = mTimerGas ;
156159 mTimerCurrents = mTimerGas ;
157160 mTimerEnv = mTimerGas ;
158- // LB: new DPs for Fed
159161 mTimerFedChamberStatus = mTimerGas ;
160162 mTimerFedCFGtag = mTimerGas ;
161163
@@ -201,7 +203,6 @@ class TRDDCSDataProcessor : public o2::framework::Task
201203 mTimerEnv = timeNow;
202204 }
203205
204- // LB: processing logic for FedChamberStatus and FedCFGtag
205206 if (mProcessor ->shouldUpdateFedChamberStatus ()) {
206207 sendDPsoutputFedChamberStatus (pc.outputs ());
207208 }
@@ -210,35 +211,35 @@ class TRDDCSDataProcessor : public o2::framework::Task
210211 sendDPsoutputFedCFGtag (pc.outputs ());
211212 }
212213
213- if (mProcessor ->shouldUpdateRun ()) {
214- sendDPsoutputRun (pc.outputs ());
215- }
216214 sw.Stop ();
215+
217216 if (mReportTiming ) {
218217 LOGP (info, " Timing CPU:{:.3e} Real:{:.3e} at slice {}" , sw.CpuTime (), sw.RealTime (), pc.services ().get <o2::framework::TimingInfo>().timeslice );
219218 }
220219 }
221220
222221 void endOfStream (o2::framework::EndOfStreamContext& ec) final
223222 {
224- sendDPsoutputGas (ec.outputs ());
225- sendDPsoutputVoltages (ec.outputs ());
226- sendDPsoutputCurrents (ec.outputs ());
227- sendDPsoutputEnv (ec.outputs ());
228- sendDPsoutputRun (ec.outputs ());
229- // LB: new DPs for Fed
230- sendDPsoutputFedChamberStatus (ec.outputs ());
231- sendDPsoutputFedCFGtag (ec.outputs ());
223+ // LB: no objects should be uploaded at end of stream, unless stated otherwise
224+ if (mUploadAtEoS ) {
225+ LOG (info) << " End of stream upload of CCDB objects" ;
226+ sendDPsoutputGas (ec.outputs ());
227+ sendDPsoutputVoltages (ec.outputs ());
228+ sendDPsoutputCurrents (ec.outputs ());
229+ sendDPsoutputEnv (ec.outputs ());
230+ } else {
231+ LOG (info) << " No CCDB object upload done at the end of stream" ;
232+ }
232233 }
233234
234235 private:
236+ bool mUploadAtEoS = false ;
235237 bool mReportTiming = false ;
236238 std::unique_ptr<DCSProcessor> mProcessor ;
237239 std::chrono::high_resolution_clock::time_point mTimerGas ;
238240 std::chrono::high_resolution_clock::time_point mTimerVoltages ;
239241 std::chrono::high_resolution_clock::time_point mTimerCurrents ;
240242 std::chrono::high_resolution_clock::time_point mTimerEnv ;
241- // LB: new DPs for Fed
242243 std::chrono::high_resolution_clock::time_point mTimerFedChamberStatus ;
243244 std::chrono::high_resolution_clock::time_point mTimerFedCFGtag ;
244245
@@ -247,7 +248,6 @@ class TRDDCSDataProcessor : public o2::framework::Task
247248 int64_t mCurrentsDPsUpdateInterval ;
248249 int64_t mMinUpdateIntervalU ;
249250 int64_t mEnvDPsUpdateInterval ;
250- // LB: new DPs for Fed
251251 int64_t mFedChamberStatusDPsUpdateInterval ;
252252 int64_t mFedCFGtagDPsUpdateInterval ;
253253
@@ -325,27 +325,6 @@ class TRDDCSDataProcessor : public o2::framework::Task
325325 }
326326 }
327327
328- // ________________________________________________________________
329- void sendDPsoutputRun (DataAllocator& output)
330- {
331- // extract CCDB infos and calibration object for DPs
332- if (mProcessor ->updateRunDPsCCDB ()) {
333- const auto & payload = mProcessor ->getTRDRunDPsInfo ();
334- auto & info = mProcessor ->getccdbRunDPsInfo ();
335- auto image = o2::ccdb::CcdbApi::createObjectImage (&payload, &info);
336- LOG (info) << " Sending object " << info.getPath () << " /" << info.getFileName () << " of size " << image->size ()
337- << " bytes, valid for " << info.getStartValidityTimestamp () << " : " << info.getEndValidityTimestamp ();
338- output.snapshot (Output{o2::calibration::Utils::gDataOriginCDBPayload , " TRD_DCSRunDPs" , 0 }, *image.get ());
339- output.snapshot (Output{o2::calibration::Utils::gDataOriginCDBWrapper , " TRD_DCSRunDPs" , 0 }, info);
340- mProcessor ->clearRunDPsInfo ();
341- } else {
342- auto & info = mProcessor ->getccdbRunDPsInfo ();
343- // LOG(info) << "Not sending object " << info.getPath() << "/" << info.getFileName() << " since no DPs were processed for it";
344- LOG (info) << " Not sending object " << info.getPath () << " /" << info.getFileName () << " as upload of Run DPs was deactivated" ;
345- }
346- }
347-
348- // LB: new DP for FedChamberStatus
349328 // ________________________________________________________________
350329 void sendDPsoutputFedChamberStatus (DataAllocator& output)
351330 {
@@ -365,7 +344,6 @@ class TRDDCSDataProcessor : public o2::framework::Task
365344 }
366345 }
367346
368- // LB: new DP for FedCFGtag
369347 // ________________________________________________________________
370348 void sendDPsoutputFedCFGtag (DataAllocator& output)
371349 {
@@ -395,18 +373,14 @@ DataProcessorSpec getTRDDCSDataProcessorSpec()
395373{
396374
397375 std::vector<OutputSpec> outputs;
398-
399376 outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload , " TRD_DCSGasDPs" }, Lifetime::Sporadic);
400377 outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper , " TRD_DCSGasDPs" }, Lifetime::Sporadic);
401378 outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload , " TRD_DCSUDPs" }, Lifetime::Sporadic);
402379 outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper , " TRD_DCSUDPs" }, Lifetime::Sporadic);
403380 outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload , " TRD_DCSIDPs" }, Lifetime::Sporadic);
404381 outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper , " TRD_DCSIDPs" }, Lifetime::Sporadic);
405- outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload , " TRD_DCSRunDPs" }, Lifetime::Sporadic);
406- outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper , " TRD_DCSRunDPs" }, Lifetime::Sporadic);
407382 outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload , " TRD_DCSEnvDPs" }, Lifetime::Sporadic);
408383 outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper , " TRD_DCSEnvDPs" }, Lifetime::Sporadic);
409- // LB: new DPs for Fed
410384 // Must use reduced names due to initializer string cannot exceed descriptor size in Data Format
411385 outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload , " TRD_ChamberStat" }, Lifetime::Sporadic);
412386 outputs.emplace_back (ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper , " TRD_ChamberStat" }, Lifetime::Sporadic);
@@ -429,7 +403,8 @@ DataProcessorSpec getTRDDCSDataProcessorSpec()
429403 {" DPs-voltage-variation-trigger" , VariantType::Int64, 1ll , {" Voltage variation trigger for upload of CCDB object" }},
430404 {" DPs-update-interval-gas" , VariantType::Int64, 900ll , {" Interval (in s) after which to update the DPs CCDB entry for gas parameters" }},
431405 {" DPs-max-counter-alarm-fed" , VariantType::Int, 1 , {" Maximum number of alarms after FedChamberStatus and FedCFGtag changes, following changes are logged as warnings" }},
432- {" DPs-min-counter-update-fed" , VariantType::Int, 522 , {" Minimum number of DPs to update FedChamberStatus and FedCFGtag objects" }}}};
406+ {" DPs-min-counter-update-fed" , VariantType::Int, 522 , {" Minimum number of DPs to update FedChamberStatus and FedCFGtag objects" }},
407+ {" enable-uploadAtEoS" , VariantType::Bool, false , {" Upload CCDB objects at end of stream" }}}};
433408}
434409
435410} // namespace framework
0 commit comments