Skip to content

Commit 30b8678

Browse files
committed
AOD: trd streamer add pv,tfID and runnumber
Signed-off-by: Felix Schlepper <felix.schlepper@cern.ch>
1 parent 868a38a commit 30b8678

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ class AODProducerWorkflowDPL : public Task
269269

270270
GID::mask_t mInputSources;
271271
int64_t mTFNumber{-1};
272+
uint64_t mCurTFNumber{0};
272273
int mRunNumber{-1};
273274
int mTruncate{1};
274275
int mRecoOnly{0};
@@ -527,7 +528,7 @@ class AODProducerWorkflowDPL : public Task
527528
void addToTracksQATable(TracksQACursorType& tracksQACursor, TrackQA& trackQAInfoHolder);
528529

529530
template <typename TRDsExtraCursorType>
530-
void addToTRDsExtra(const o2::globaltracking::RecoContainer& recoData, TRDsExtraCursorType& trdExtraCursor, const GIndex& trkIdx, TrackExtraInfo& extraInfo, int trkTableIdx);
531+
void addToTRDsExtra(const o2::globaltracking::RecoContainer& recoData, TRDsExtraCursorType& trdExtraCursor, int colIdx, const GIndex& trkIdx, TrackExtraInfo& extraInfo, int trkTableIdx);
531532

532533
template <typename mftTracksCursorType, typename AmbigMFTTracksCursorType>
533534
void addToMFTTracksTable(mftTracksCursorType& mftTracksCursor, AmbigMFTTracksCursorType& ambigMFTTracksCursor,

Detectors/AOD/src/AODProducerWorkflowSpec.cxx

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -390,12 +390,13 @@ void AODProducerWorkflowDPL::addToTracksQATable(TracksQACursorType& tracksQACurs
390390
}
391391

392392
template <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

Comments
 (0)