@@ -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