@@ -396,7 +396,9 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
396396 int q0s[NLAYERS] = {-1 }, q1s[NLAYERS] = {-1 }, q2s[NLAYERS] = {-1 };
397397 float q0sCor[NLAYERS] = {-1 }, q1sCor[NLAYERS] = {-1 }, q2sCor[NLAYERS] = {-1 };
398398 float ttgls[NLAYERS] = {-999 }, tphis[NLAYERS] = {-999 };
399- o2::trd::Tracklet64 trkletsa[NLAYERS];
399+ std::vector<o2::trd::Tracklet64> trkletsa (NLAYERS);
400+ std::vector<o2::trd::CalibratedTracklet> ctrkletsa (NLAYERS);
401+ std::vector<o2::trd::CalibratedTracklet> cloctrkletsa (NLAYERS);
400402
401403 auto contributorsGID = recoData.getSingleDetectorRefs (trkIdx);
402404 if (!contributorsGID[GIndex::Source::TRD].isIndexSet ()) { // should be redunant
@@ -418,6 +420,8 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
418420 continue ;
419421 }
420422 trkletsa[iLay] = tracklet;
423+ ctrkletsa[iLay] = ctrklets[trkltId];
424+ cloctrkletsa[iLay] = mTRDTransformer ->transformTracklet (tracklet, false );
421425 // we need to propagate into TRD local system
422426 int trkltDet = tracklet.getDetector ();
423427 int trkltSec = trkltDet / 30 ;
@@ -433,16 +437,14 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
433437 auto tphi = trkC.getSnp () / std::sqrt ((1 .f - trkC.getSnp ()) * (1 .f + trkC.getSnp ()));
434438 auto trackletLength = std::sqrt (1 .f + tphi * tphi + trkC.getTgl () * trkC.getTgl ());
435439 float cor = mTRDLocalGain ->getValue (tracklet.getHCID () / 2 , tracklet.getPadCol (), tracklet.getPadRow ()) * trackletLength;
436- if (mEnableTRDextra ) {
437- q0s[iLay] = tracklet.getQ0 ();
438- q1s[iLay] = tracklet.getQ1 ();
439- q2s[iLay] = tracklet.getQ2 ();
440- q0sCor[iLay] = (float )tracklet.getQ0 () / cor;
441- q1sCor[iLay] = (float )tracklet.getQ1 () / cor;
442- q2sCor[iLay] = (float )tracklet.getQ2 () / cor;
443- ttgls[iLay] = trkC.getTgl ();
444- tphis[iLay] = tphi;
445- }
440+ q0s[iLay] = tracklet.getQ0 ();
441+ q1s[iLay] = tracklet.getQ1 ();
442+ q2s[iLay] = tracklet.getQ2 ();
443+ q0sCor[iLay] = (float )tracklet.getQ0 () / cor;
444+ q1sCor[iLay] = (float )tracklet.getQ1 () / cor;
445+ q2sCor[iLay] = (float )tracklet.getQ2 () / cor;
446+ ttgls[iLay] = trkC.getTgl ();
447+ tphis[iLay] = tphi;
446448
447449 dEdx += (float )tracklet.getQTot () / cor;
448450 }
@@ -462,49 +464,16 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
462464 (*mStreamer ) << " trdExtra"
463465 << " dEdx=" << dEdx
464466 << " eProb=" << trk.getSignal ()
465- << " q00=" << q0s[0 ]
466- << " q01=" << q0s[1 ]
467- << " q02=" << q0s[2 ]
468- << " q03=" << q0s[3 ]
469- << " q04=" << q0s[4 ]
470- << " q05=" << q0s[5 ]
471- << " q10=" << q1s[0 ]
472- << " q11=" << q1s[1 ]
473- << " q12=" << q1s[2 ]
474- << " q13=" << q1s[3 ]
475- << " q14=" << q1s[4 ]
476- << " q15=" << q1s[5 ]
477- << " q20=" << q2s[0 ]
478- << " q21=" << q2s[1 ]
479- << " q22=" << q2s[2 ]
480- << " q23=" << q2s[3 ]
481- << " q24=" << q2s[4 ]
482- << " q25=" << q2s[5 ]
483- << " q00Cor=" << q0sCor[0 ]
484- << " q01Cor=" << q0sCor[1 ]
485- << " q02Cor=" << q0sCor[2 ]
486- << " q03Cor=" << q0sCor[3 ]
487- << " q04Cor=" << q0sCor[4 ]
488- << " q05Cor=" << q0sCor[5 ]
489- << " q10Cor=" << q1sCor[0 ]
490- << " q11Cor=" << q1sCor[1 ]
491- << " q12Cor=" << q1sCor[2 ]
492- << " q13Cor=" << q1sCor[3 ]
493- << " q14Cor=" << q1sCor[4 ]
494- << " q15Cor=" << q1sCor[5 ]
495- << " q20Cor=" << q2sCor[0 ]
496- << " q21Cor=" << q2sCor[1 ]
497- << " q22Cor=" << q2sCor[2 ]
498- << " q23Cor=" << q2sCor[3 ]
499- << " q24Cor=" << q2sCor[4 ]
500- << " q25Cor=" << q2sCor[5 ]
467+ << " q0s[6]=" << q0s
468+ << " q1s[6]=" << q1s
469+ << " q2s[6]=" << q2s
470+ << " q0sCor[6]=" << q0sCor
471+ << " q1sCor[6]=" << q1sCor
472+ << " q2sCor[6]=" << q2sCor
501473 << " pattern=" << getTRDPattern (trk)
502- << " tracklet0=" << trkletsa[0 ]
503- << " tracklet1=" << trkletsa[1 ]
504- << " tracklet2=" << trkletsa[2 ]
505- << " tracklet3=" << trkletsa[3 ]
506- << " tracklet4=" << trkletsa[4 ]
507- << " tracklet5=" << trkletsa[5 ]
474+ << " tracklets=" << trkletsa
475+ << " ctracklets=" << ctrkletsa
476+ << " cloctracklets=" << cloctrkletsa
508477 << " tpctrk=" << tpctrk
509478 << " trdtrk=" << trk
510479 << " globaltrk=" << recoData.getTrack <o2::track::TrackParCov>(trkIdx)
@@ -3036,6 +3005,9 @@ void AODProducerWorkflowDPL::updateTimeDependentParams(ProcessingContext& pc)
30363005 if (mEnableTRDextra ) {
30373006 mTRDLocalGain = pc.inputs ().get <o2::trd::LocalGainFactor*>(" trdlocalgainfactors" ).get ();
30383007 mTRDNoiseMap = pc.inputs ().get <o2::trd::NoiseStatusMCM*>(" trdnoisemap" ).get ();
3008+ mTRDTransformer = std::make_unique<o2::trd::TrackletTransformer>();
3009+ mTRDTransformer ->init ();
3010+ pc.inputs ().get <o2::trd::CalVdriftExB*>(" calvdexb" );
30393011 }
30403012 }
30413013 if (mPropTracks ) {
@@ -3070,6 +3042,11 @@ void AODProducerWorkflowDPL::finaliseCCDB(ConcreteDataMatcher& matcher, void* ob
30703042 mVtx = *(const o2::dataformats::MeanVertexObject*)obj;
30713043 return ;
30723044 }
3045+ if (matcher == ConcreteDataMatcher (" TRD" , " CALVDRIFTEXB" , 0 )) {
3046+ LOG (info) << " TRD CalVdriftExB object has been updated" ;
3047+ mTRDTransformer ->setCalVdriftExB ((const o2::trd::CalVdriftExB*)obj);
3048+ return ;
3049+ }
30733050 if (matcher == ConcreteDataMatcher (" CTP" , " CTPCONFIG" , 0 )) {
30743051 // construct mask with EMCAL trigger classes for rejection of incomplete triggers
30753052 auto ctpconfig = *(const o2::ctp::CTPConfiguration*)obj;
@@ -3348,6 +3325,7 @@ DataProcessorSpec getAODProducerWorkflowSpec(GID::mask_t src, bool enableSV, boo
33483325 outputs.push_back (OutputForTable<TRDsExtra>::spec ());
33493326 dataRequest->inputs .emplace_back (" trdlocalgainfactors" , " TRD" , " LOCALGAINFACTORS" , 0 , Lifetime::Condition, ccdbParamSpec (" TRD/Calib/LocalGainFactor" ));
33503327 dataRequest->inputs .emplace_back (" trdnoisemap" , " TRD" , " NOISEMAP" , 0 , Lifetime::Condition, ccdbParamSpec (" TRD/Calib/NoiseMapMCM" ));
3328+ dataRequest->inputs .emplace_back (" calvdexb" , " TRD" , " CALVDRIFTEXB" , 0 , Lifetime::Condition, ccdbParamSpec (" TRD/Calib/CalVdriftExB" ));
33513329 }
33523330 if (useMC) {
33533331 outputs.insert (outputs.end (),
0 commit comments