Skip to content

Commit 07cc2db

Browse files
committed
GPU QA: Improve track dump to root files
1 parent 0b1223a commit 07cc2db

File tree

2 files changed

+37
-16
lines changed

2 files changed

+37
-16
lines changed

GPU/GPUTracking/GPUTrackingLinkDef_Standalone.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,11 @@
2222
#pragma link off all functions;
2323

2424
#pragma link C++ class o2::tpc::ClusterNative + ;
25+
#pragma link C++ class o2::tpc::TrackTPC + ;
26+
#pragma link C++ class o2::track::TrackParametrization < float> + ;
27+
#pragma link C++ class o2::track::TrackParametrizationWithError < float> + ;
28+
#pragma link C++ class o2::dataformats::RangeReference < unsigned int, unsigned short> + ;
29+
#pragma link C++ class o2::tpc::dEdxInfo + ;
30+
#pragma link C++ class o2::track::PID + ;
2531

2632
#endif

GPU/GPUTracking/qa/GPUQA.cxx

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1742,46 +1742,61 @@ void GPUQA::RunQA(bool matchOnly, const std::vector<o2::tpc::TrackTPC>* tracksEx
17421742
if (!clNative || !mTracking || !mTracking->mIOPtrs.mergedTrackHitAttachment || !mTracking->mIOPtrs.mergedTracks) {
17431743
throw std::runtime_error("Cannot dump non o2::tpc::clusterNative clusters, need also hit attachmend and GPU tracks");
17441744
}
1745-
static auto cldump = GPUROOTDump<o2::tpc::ClusterNative, GPUTPCGMMergedTrack, GPUTPCGMMergedTrackHit, unsigned int, unsigned int, float, float, float, unsigned int, unsigned int, unsigned int>::getNew("cluster", "track", "trackHit", "attach", "extState", "x", "y", "z", "sector", "row", "nEv", "clusterTree");
17461745
unsigned int clid = 0;
17471746
for (unsigned int i = 0; i < GPUChainTracking::NSLICES; i++) {
17481747
for (unsigned int j = 0; j < GPUCA_ROW_COUNT; j++) {
17491748
for (unsigned int k = 0; k < mClNative->nClusters[i][j]; k++) {
17501749
const auto& cl = mClNative->clusters[i][j][k];
17511750
unsigned int attach = mTracking->mIOPtrs.mergedTrackHitAttachment[clid];
1752-
GPUTPCGMMergedTrack trk;
1753-
GPUTPCGMMergedTrackHit trkHit;
1754-
memset((void*)&trk, 0, sizeof(trk));
1755-
memset((void*)&trkHit, 0, sizeof(trkHit));
17561751
float x = 0, y = 0, z = 0;
17571752
if (attach & gputpcgmmergertypes::attachFlagMask) {
17581753
unsigned int track = attach & gputpcgmmergertypes::attachTrackMask;
1759-
trk = mTracking->mIOPtrs.mergedTracks[track];
1760-
for (unsigned int l = 0; l < trk.NClusters(); l++) {
1761-
const auto& tmp = mTracking->mIOPtrs.mergedTrackHits[trk.FirstClusterRef() + l];
1762-
if (tmp.num == clid) {
1763-
trkHit = tmp;
1764-
break;
1765-
}
1766-
}
1754+
const auto& trk = mTracking->mIOPtrs.mergedTracks[track];
17671755
mTracking->GetTPCTransformHelper()->Transform(i, j, cl.getPad(), cl.getTime(), x, y, z, trk.GetParam().GetTZOffset());
17681756
mTracking->GetParam().Slice2Global(i, x, y, z, &x, &y, &z);
17691757
}
1770-
17711758
unsigned int extState = mTracking->mIOPtrs.mergedTrackHitStates ? mTracking->mIOPtrs.mergedTrackHitStates[clid] : 0;
17721759

1773-
cldump.Fill(cl, trk, trkHit, attach, extState, x, y, z, i, j, mNEvents - 1);
1760+
if (mConfig.dumpToROOT >= 2) {
1761+
GPUTPCGMMergedTrack trk;
1762+
GPUTPCGMMergedTrackHit trkHit;
1763+
memset((void*)&trk, 0, sizeof(trk));
1764+
memset((void*)&trkHit, 0, sizeof(trkHit));
1765+
if (attach & gputpcgmmergertypes::attachFlagMask) {
1766+
unsigned int track = attach & gputpcgmmergertypes::attachTrackMask;
1767+
trk = mTracking->mIOPtrs.mergedTracks[track];
1768+
for (unsigned int l = 0; l < trk.NClusters(); l++) {
1769+
const auto& tmp = mTracking->mIOPtrs.mergedTrackHits[trk.FirstClusterRef() + l];
1770+
if (tmp.num == clid) {
1771+
trkHit = tmp;
1772+
break;
1773+
}
1774+
}
1775+
}
1776+
static auto cldump = GPUROOTDump<o2::tpc::ClusterNative, GPUTPCGMMergedTrack, GPUTPCGMMergedTrackHit, unsigned int, unsigned int, float, float, float, unsigned int, unsigned int, unsigned int>::getNew("cluster", "track", "trackHit", "attach", "extState", "x", "y", "z", "sector", "row", "nEv", "clusterTree");
1777+
cldump.Fill(cl, trk, trkHit, attach, extState, x, y, z, i, j, mNEvents - 1);
1778+
} else {
1779+
static auto cldump = GPUROOTDump<o2::tpc::ClusterNative, unsigned int, unsigned int, float, float, float, unsigned int, unsigned int, unsigned int>::getNew("cluster", "attach", "extState", "x", "y", "z", "sector", "row", "nEv", "clusterTree");
1780+
cldump.Fill(cl, attach, extState, x, y, z, i, j, mNEvents - 1);
1781+
}
17741782
clid++;
17751783
}
17761784
}
17771785
}
17781786

1779-
static auto trkdump = GPUROOTDump<unsigned int, GPUTPCGMMergedTrack>::getNew("nEv", "tracks");
1787+
static auto trkdump = GPUROOTDump<unsigned int, GPUTPCGMMergedTrack>::getNew("nEv", "track", "tracksTree");
17801788
for (unsigned int i = 0; i < mTracking->mIOPtrs.nMergedTracks; i++) {
17811789
if (mTracking->mIOPtrs.mergedTracks[i].OK()) {
17821790
trkdump.Fill(mNEvents - 1, mTracking->mIOPtrs.mergedTracks[i]);
17831791
}
17841792
}
1793+
1794+
if (mTracking && mTracking->GetProcessingSettings().createO2Output) {
1795+
static auto o2trkdump = GPUROOTDump<unsigned int, o2::tpc::TrackTPC>::getNew("nEv", "track", "tracksO2Tree");
1796+
for (unsigned int i = 0; i < mTracking->mIOPtrs.nOutputTracksTPCO2; i++) {
1797+
o2trkdump.Fill(mNEvents - 1, mTracking->mIOPtrs.outputTracksTPCO2[i]);
1798+
}
1799+
}
17851800
}
17861801
mTrackingScratchBuffer.clear();
17871802
mTrackingScratchBuffer.shrink_to_fit();

0 commit comments

Comments
 (0)