1717#include " DataFormatsTRD/Tracklet64.h"
1818#include " DataFormatsTRD/CalibratedTracklet.h"
1919#include " CommonDataFormat/IRFrame.h"
20+ #include " Framework/CCDBParamSpec.h"
2021
2122using namespace o2 ::framework;
2223using namespace o2 ::globaltracking;
@@ -28,24 +29,17 @@ namespace trd
2829
2930void TRDTrackletTransformerSpec::init (o2::framework::InitContext& ic)
3031{
31- LOG (info) << " Initializing tracklet transformer" ;
32- mTransformer .loadCalibrationParameters (mTimestamp );
32+ mTransformer .init ();
3333}
3434
3535void TRDTrackletTransformerSpec::run (o2::framework::ProcessingContext& pc)
3636{
3737 LOG (info) << " Running tracklet transformer" ;
38- if (!mTransformer .hasCalibration ()) {
39- // ccdb object was not found for specified timestamp
40- return ;
41- }
38+ updateTimeDependentParams (pc);
4239
4340 o2::globaltracking::RecoContainer inputData;
4441 inputData.collectData (pc, *mDataRequest );
4542
46- // auto tracklets = inputData.getTRDTracklets();
47- // auto trigRecs = inputData.getTRDTriggerRecords();
48-
4943 auto tracklets = pc.inputs ().get <gsl::span<Tracklet64>>(" trdtracklets" );
5044 auto trigRecs = pc.inputs ().get <gsl::span<TriggerRecord>>(" trdtriggerrec" );
5145
@@ -116,7 +110,20 @@ void TRDTrackletTransformerSpec::run(o2::framework::ProcessingContext& pc)
116110 pc.outputs ().snapshot (Output{" TRD" , " TRIGRECMASK" , 0 , Lifetime::Timeframe}, trigRecBitfield);
117111}
118112
119- o2::framework::DataProcessorSpec getTRDTrackletTransformerSpec (bool trigRecFilterActive, int timestamp)
113+ void TRDTrackletTransformerSpec::updateTimeDependentParams (ProcessingContext& pc)
114+ {
115+ pc.inputs ().get <o2::trd::CalVdriftExB*>(" calvdexb" ); // just to trigger the finaliseCCDB
116+ }
117+
118+ void TRDTrackletTransformerSpec::finaliseCCDB (ConcreteDataMatcher& matcher, void * obj)
119+ {
120+ if (matcher == ConcreteDataMatcher (" TRD" , " CALVDRIFTEXB" , 0 )) {
121+ LOG (info) << " CalVdriftExB object has been updated" ;
122+ mTransformer .setCalVdriftExB ((const o2::trd::CalVdriftExB*)obj);
123+ }
124+ }
125+
126+ o2::framework::DataProcessorSpec getTRDTrackletTransformerSpec (bool trigRecFilterActive)
120127{
121128 std::shared_ptr<DataRequest> dataRequest = std::make_shared<DataRequest>();
122129 if (trigRecFilterActive) {
@@ -125,6 +132,7 @@ o2::framework::DataProcessorSpec getTRDTrackletTransformerSpec(bool trigRecFilte
125132 auto & inputs = dataRequest->inputs ;
126133 inputs.emplace_back (" trdtracklets" , " TRD" , " TRACKLETS" , 0 , Lifetime::Timeframe);
127134 inputs.emplace_back (" trdtriggerrec" , " TRD" , " TRKTRGRD" , 0 , Lifetime::Timeframe);
135+ inputs.emplace_back (" calvdexb" , " TRD" , " CALVDRIFTEXB" , 0 , Lifetime::Condition, ccdbParamSpec (" TRD/Calib/CalVdriftExB" ));
128136
129137 std::vector<OutputSpec> outputs;
130138 outputs.emplace_back (" TRD" , " CTRACKLETS" , 0 , Lifetime::Timeframe);
@@ -134,7 +142,7 @@ o2::framework::DataProcessorSpec getTRDTrackletTransformerSpec(bool trigRecFilte
134142 " TRDTRACKLETTRANSFORMER" ,
135143 inputs,
136144 outputs,
137- AlgorithmSpec{adaptFromTask<TRDTrackletTransformerSpec>(dataRequest, trigRecFilterActive, timestamp )},
145+ AlgorithmSpec{adaptFromTask<TRDTrackletTransformerSpec>(dataRequest, trigRecFilterActive)},
138146 Options{}};
139147}
140148
0 commit comments