@@ -390,12 +390,13 @@ void AODProducerWorkflowDPL::addToTracksQATable(TracksQACursorType& tracksQACurs
390390}
391391
392392template <typename TRDsExtraCursorType>
393- void AODProducerWorkflowDPL::addToTRDsExtra (const o2::globaltracking::RecoContainer& recoData, TRDsExtraCursorType& trdExtraCursor, const GIndex& trkIdx, TrackExtraInfo& extraInfo, int trkTableIdx)
393+ void AODProducerWorkflowDPL::addToTRDsExtra (const o2::globaltracking::RecoContainer& recoData, TRDsExtraCursorType& trdExtraCursor, int colIdx, const GIndex& trkIdx, TrackExtraInfo& extraInfo, int trkTableIdx)
394394{
395395 const int NLAYERS = o2::trd::TrackTRD::EGPUTRDTrack::kNLayers ;
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+ float gain[NLAYERS] = {-999 }, length[NLAYERS] = {-999 };
399400 std::vector<o2::trd::Tracklet64> trkletsa (NLAYERS);
400401 std::vector<o2::trd::CalibratedTracklet> ctrkletsa (NLAYERS);
401402 std::vector<o2::trd::CalibratedTracklet> cloctrkletsa (NLAYERS);
@@ -411,15 +412,13 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
411412
412413 float dEdx{0 .};
413414 uint8_t pattern = 0 ;
415+ uint8_t noisy = 0 ;
414416 for (int iLay{0 }; iLay < NLAYERS; ++iLay) {
415417 auto trkltId = trk.getTrackletIndex (iLay);
416418 if (trkltId < 0 ) {
417419 continue ;
418420 }
419421 const auto & tracklet = trklets[trkltId];
420- if (mTRDNoiseMap ->isTrackletFromNoisyMCM (tracklet)) {
421- continue ;
422- }
423422 trkletsa[iLay] = tracklet;
424423 ctrkletsa[iLay] = ctrklets[trkltId];
425424 cloctrkletsa[iLay] = mTRDTransformer ->transformTracklet (tracklet, false );
@@ -436,18 +435,23 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
436435 }
437436
438437 auto tphi = trkC.getSnp () / std::sqrt ((1 .f - trkC.getSnp ()) * (1 .f + trkC.getSnp ()));
439- auto trackletLength = std::sqrt (1 .f + tphi * tphi + trkC.getTgl () * trkC.getTgl ());
440- float cor = mTRDLocalGain ->getValue (tracklet.getHCID () / 2 , tracklet.getPadCol (), tracklet.getPadRow ()) * trackletLength;
438+ length[iLay] = std::sqrt (1 .f + tphi * tphi + trkC.getTgl () * trkC.getTgl ());
439+ gain[iLay] = mTRDLocalGain ->getValue (tracklet.getHCID () / 2 , tracklet.getPadCol (), tracklet.getPadRow ());
440+ float cor = 1 .f / (gain[iLay] * length[iLay]);
441441 q0s[iLay] = tracklet.getQ0 ();
442442 q1s[iLay] = tracklet.getQ1 ();
443443 q2s[iLay] = tracklet.getQ2 ();
444- q0sCor[iLay] = (float )tracklet.getQ0 () / cor;
445- q1sCor[iLay] = (float )tracklet.getQ1 () / cor;
446- q2sCor[iLay] = (float )tracklet.getQ2 () / cor;
444+ q0sCor[iLay] = (float )tracklet.getQ0 () * cor;
445+ q1sCor[iLay] = (float )tracklet.getQ1 () * cor;
446+ q2sCor[iLay] = (float )tracklet.getQ2 () * cor;
447447 ttgls[iLay] = trkC.getTgl ();
448448 tphis[iLay] = tphi;
449449
450- dEdx += (float )tracklet.getQTot () / cor;
450+ if (!mTRDNoiseMap ->isTrackletFromNoisyMCM (tracklet)) {
451+ dEdx += (float )tracklet.getQTot () * cor;
452+ } else {
453+ noisy |= 0x1 << iLay;
454+ }
451455 pattern |= 0x1 << iLay;
452456 }
453457 if (trk.getHasNeighbor ()) {
@@ -468,6 +472,7 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
468472 }
469473
470474 if (mStreamerFlags [AODProducerStreamerFlags::TRDExtra]) {
475+ const auto & pv = recoData.getPrimaryVertex (colIdx);
471476 const auto & tpctrk = recoData.getTrack <o2::tpc::TrackTPC>(contributorsGID[GIndex::Source::TPC]);
472477 o2::dataformats::MatchInfoTOF tofMtc;
473478 o2::track::TrackParCov toftrk;
@@ -485,7 +490,10 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
485490 << " q0sCor[6]=" << q0sCor
486491 << " q1sCor[6]=" << q1sCor
487492 << " q2sCor[6]=" << q2sCor
493+ << " gain[6]=" << gain
494+ << " length[6]=" << length
488495 << " pattern=" << pattern
496+ << " noisy=" << noisy
489497 << " tracklets=" << trkletsa
490498 << " ctracklets=" << ctrkletsa
491499 << " cloctracklets=" << cloctrkletsa
@@ -494,6 +502,9 @@ void AODProducerWorkflowDPL::addToTRDsExtra(const o2::globaltracking::RecoContai
494502 << " toftrk=" << toftrk
495503 << " tofMtc=" << tofMtc
496504 << " globaltrk=" << recoData.getTrack <o2::track::TrackParCov>(trkIdx)
505+ << " pv=" << pv
506+ << " tfID=" << mCurTFNumber
507+ << " runNumber=" << mRunNumber
497508 << " \n " ;
498509 }
499510}
@@ -650,7 +661,7 @@ void AODProducerWorkflowDPL::fillTrackTablesPerCollision(int collisionID,
650661 }
651662
652663 if (trackIndex.includesDet (GIndex::Source::TRD)) {
653- addToTRDsExtra (data, trdsExtraCursor, trackIndex, extraInfoHolder, mTableTrID );
664+ addToTRDsExtra (data, trdsExtraCursor, collisionID, trackIndex, extraInfoHolder, mTableTrID );
654665 }
655666
656667 addToTracksExtraTable (tracksExtraCursor, extraInfoHolder);
@@ -2021,13 +2032,12 @@ void AODProducerWorkflowDPL::run(ProcessingContext& pc)
20212032 // initialize the bunch crossing container for further use below
20222033 mBCLookup .init (bcsMap);
20232034
2024- uint64_t tfNumber;
20252035 const int runNumber = (mRunNumber == -1 ) ? int (tinfo.runNumber ) : mRunNumber ;
20262036 if (mTFNumber == -1L ) {
20272037 // TODO has to use absolute time of TF
2028- tfNumber = uint64_t (tinfo.firstTForbit ) + (uint64_t (tinfo.runNumber ) << 32 ); // getTFNumber(mStartIR, runNumber);
2038+ mCurTFNumber = uint64_t (tinfo.firstTForbit ) + (uint64_t (tinfo.runNumber ) << 32 ); // getTFNumber(mStartIR, runNumber);
20292039 } else {
2030- tfNumber = mTFNumber ;
2040+ mCurTFNumber = mTFNumber ;
20312041 }
20322042
20332043 std::vector<float > aAmplitudes, aTimes;
@@ -2502,7 +2512,7 @@ void AODProducerWorkflowDPL::run(ProcessingContext& pc)
25022512 mGIDUsedBySVtx .clear ();
25032513 mGIDUsedByStr .clear ();
25042514
2505- originCursor (tfNumber );
2515+ originCursor (mCurTFNumber );
25062516
25072517 // sending metadata to writer
25082518 TString dataType = mUseMC ? " MC" : " RAW" ;
@@ -2513,7 +2523,7 @@ void AODProducerWorkflowDPL::run(ProcessingContext& pc)
25132523 pc.outputs ().snapshot (Output{" AMD" , " AODMetadataKeys" , 0 }, mMetaDataKeys );
25142524 pc.outputs ().snapshot (Output{" AMD" , " AODMetadataVals" , 0 }, mMetaDataVals );
25152525
2516- pc.outputs ().snapshot (Output{" TFN" , " TFNumber" , 0 }, tfNumber );
2526+ pc.outputs ().snapshot (Output{" TFN" , " TFNumber" , 0 }, mCurTFNumber );
25172527 pc.outputs ().snapshot (Output{" TFF" , " TFFilename" , 0 }, " " );
25182528
25192529 mTimer .Stop ();
0 commit comments