@@ -150,6 +150,15 @@ void GPUTPCGMMerger::DumpTrackParam(std::ostream& out) const
150150 out << std::setprecision (ss);
151151}
152152
153+ void GPUTPCGMMerger::DumpRebuiltTracks (std::ostream& out) const
154+ {
155+ out << " \n TPC Merger Rebuilt Tracks\n " ;
156+ out << " Cluster Attachment\n " ;
157+ DumpTrackClusters (out, false , true );
158+ out << " Track Params\n " ;
159+ DumpTrackParam (out);
160+ }
161+
153162void GPUTPCGMMerger::DumpMergeCE (std::ostream& out) const
154163{
155164 DumpTrackLinks (out, true , " for CE merging" );
@@ -255,6 +264,34 @@ void GPUTPCGMMerger::DumpFinal(std::ostream& out) const
255264 out << " \n " ;
256265}
257266
267+ void GPUTPCGMMerger::DumpInterpolatedHits (std::ostream& out) const
268+ {
269+ out << " \n TPC Merger Interpolated Hits\n " ;
270+ for (uint32_t i = 0 ; i < mMemory ->nMergedTracks ; i++) {
271+ const auto & trk = mMergedTracks [i];
272+ if (trk.OK () && trk.GetParam ().GetNDF () >= 0 && trk.NClusters ()) {
273+ out << " Track " << i << " :" ;
274+ for (uint32_t j = 0 ; j < GPUTPCGeometry::NROWS; j++) {
275+ auto * candidates = &mClusterCandidates [(i * GPUTPCGeometry::NROWS + j) * Param ().rec .tpc .rebuildTrackInFitClusterCandidates ];
276+ if (candidates[0 ].id ) {
277+ out << " Row " << j << " : " ;
278+ if (candidates[0 ].best ) {
279+ out << " Best " << candidates[0 ].best << " - " ;
280+ }
281+ for (uint32_t k = 0 ; k < Param ().rec .tpc .rebuildTrackInFitClusterCandidates ; k++) {
282+ if (candidates[k].id ) {
283+ out << k << " : id " << candidates[k].id << " err " << candidates[k].error << " weight " << candidates[k].weight << " - " ;
284+ }
285+ }
286+ out << " ; " ;
287+ }
288+ }
289+ out << " \n " ;
290+ }
291+ }
292+ out << " \n " ;
293+ }
294+
258295template <int32_t mergeType>
259296inline void GPUTPCGMMerger::MergedTrackStreamerInternal (const GPUTPCGMBorderTrack& b1, const GPUTPCGMBorderTrack& b2, const char * name, int32_t sector1, int32_t sector2, uint8_t mergeMode, float weight, float frac) const
260297{
0 commit comments