Project
Loading...
Searching...
No Matches
GPUTPCClusterFinderDump.cxx
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
14
15#include "GPUTPCClusterFinder.h"
16#include "GPUReconstruction.h"
17#include "CfArray2D.h"
19#include "GPUSettings.h"
20
21using namespace o2::gpu;
22using namespace o2::gpu::tpccf;
23
24void GPUTPCClusterFinder::DumpDigits(std::ostream& out)
25{
26 const auto nPositions = mPmemory->counters.nPositions;
27
28 out << "\nClusterer - Digits - Sector " << mISector << " - Fragment " << mPmemory->fragment.index << ": " << nPositions << "\n";
29
30 out << std::hex;
31 for (size_t i = 0; i < mPmemory->counters.nPositions; i++) {
32 const auto& pos = mPpositions[i];
33 out << pos.time() << " " << pos.gpad << '\n';
34 }
35 out << std::dec;
36}
37
38void GPUTPCClusterFinder::DumpChargeMap(std::ostream& out, std::string_view title)
39{
40 out << "\nClusterer - " << title << " - Sector " << mISector << " - Fragment " << mPmemory->fragment.index << "\n";
42
43 out << std::hex;
44
47
48 for (TPCFragmentTime i = start; i < end; i++) {
49 int32_t zeros = 0;
50 for (GlobalPad j = 0; j < (int32_t)TPC_CLUSTERER_STRIDED_PAD_COUNT; j++) {
51 uint16_t q = map[{j, i}];
52 zeros += (q == 0);
53 if (q != 0) {
54 if (zeros > 0) {
55 out << " z" << zeros;
56 zeros = 0;
57 }
58
59 out << " q" << q;
60 }
61 }
62 if (zeros > 0) {
63 out << " z" << zeros;
64 }
65 out << '\n';
66 }
67
68 out << std::dec;
69}
70
71void GPUTPCClusterFinder::DumpPeakMap(std::ostream& out, std::string_view title)
72{
73 out << "\nClusterer - " << title << " - Sector " << mISector << " - Fragment " << mPmemory->fragment.index << "\n";
74
76
77 out << std::hex;
78
81
82 for (TPCFragmentTime i = start; i < end; i++) {
83 int32_t zeros = 0;
84
85 out << i << ":";
86 for (GlobalPad j = 0; j < (int32_t)TPC_CLUSTERER_STRIDED_PAD_COUNT; j++) {
87 uint8_t q = map[{j, i}];
88 zeros += (q == 0);
89 if (q != 0) {
90 if (zeros > 0) {
91 out << " z" << zeros;
92 zeros = 0;
93 }
94
95 out << " p" << int32_t{q};
96 }
97 }
98 if (zeros > 0) {
99 out << " z" << zeros;
100 }
101 out << '\n';
102 }
103
104 out << std::dec;
105}
106
107void GPUTPCClusterFinder::DumpPeaks(std::ostream& out)
108{
109 out << "\nClusterer - Peaks - Sector " << mISector << " - Fragment " << mPmemory->fragment.index << "\n";
110 for (uint32_t i = 0; i < mPmemory->counters.nPositions; i++) {
111 out << int32_t{mPisPeak[i]};
112 if ((i + 1) % 100 == 0) {
113 out << "\n";
114 }
115 }
116}
117
119{
120 const auto nPeaks = mPmemory->counters.nPeaks;
121
122 out << "\nClusterer - Compacted Peaks - Sector " << mISector << " - Fragment " << mPmemory->fragment.index << ": " << nPeaks << "\n";
123 for (size_t i = 0; i < nPeaks; i++) {
124 const auto& pos = mPpeakPositions[i];
125 out << pos.time() << " " << int32_t{pos.pad()} << " " << int32_t{pos.row()} << "\n";
126 }
127}
128
130{
131 const auto& fragment = mPmemory->fragment;
132 const auto nPeaks = mPmemory->counters.nPeaks;
133
134 out << "\nClusterer - NoiseSuppression - Sector " << mISector << " - Fragment " << fragment.index << mISector << "\n";
135 for (uint32_t i = 0; i < nPeaks; i++) {
136 out << int32_t{mPisPeak[i]};
137 if ((i + 1) % 100 == 0) {
138 out << "\n";
139 }
140 }
141}
142
144{
145 const auto& fragment = mPmemory->fragment;
146 const auto nPeaks = mPmemory->counters.nClusters;
147
148 out << "\nClusterer - Noise Suppression Peaks Compacted - Sector " << mISector << " - Fragment " << fragment.index << ": " << nPeaks << "\n";
149 for (size_t i = 0; i < nPeaks; i++) {
150 const auto& peak = mPfilteredPeakPositions[i];
151 out << peak.time() << " " << int32_t{peak.pad()} << " " << int32_t{peak.row()} << "\n";
152 }
153}
154
156{
157 out << "\nClusterer - Clusters - Sector " << mISector << " - All Fragments\n";
158
159 for (uint32_t i = 0; i < GPUTPCGeometry::NROWS; i++) {
160 size_t N = mPclusterInRow[i];
162
163 std::vector<tpc::ClusterNative> sortedCluster;
164 sortedCluster.insert(sortedCluster.end(), row, row + N);
165 std::sort(sortedCluster.begin(), sortedCluster.end());
166
167 out << "Row: " << i << ": " << N << "\n";
168 for (const auto& cl : sortedCluster) {
169 uint32_t qTot = cl.qTot;
170 uint32_t sigmaTime = cl.sigmaTimePacked;
171 if (cl.isSaturated()) {
172 qTot = cl.getSaturatedQtot();
173 sigmaTime = cl.getSaturatedTailLength();
174 }
175 out << std::hex << cl.timeFlagsPacked << std::dec << " " << cl.padPacked << " " << sigmaTime << " " << int32_t{cl.sigmaPadPacked} << " " << cl.qMax << " " << qTot << "\n";
176 }
177 }
178}
Class of a TPC cluster in TPC-native coordinates (row, time)
int32_t i
uint16_t pos
Definition RawData.h:3
uint32_t j
Definition RawData.h:0
GPUReconstruction * mRec
const GPUSettingsProcessing & GetProcessingSettings() const
void DumpSuppressedPeaks(std::ostream &out)
void DumpPeakMap(std::ostream &out, std::string_view)
void DumpChargeMap(std::ostream &out, std::string_view)
void DumpSuppressedPeaksCompacted(std::ostream &out)
void DumpPeaksCompacted(std::ostream &out)
tpc::ClusterNative * mPclusterByRow
static constexpr uint32_t NROWS
#define TPC_CLUSTERER_STRIDED_PAD_COUNT
#define TPC_MAX_FRAGMENT_LEN_PADDED(size)
GLuint GLuint end
Definition glcorearb.h:469
GLuint start
Definition glcorearb.h:469
tpccf::GlobalPad gpad
Definition CfChargePos.h:26
struct o2::gpu::GPUTPCClusterFinder::Memory::counters_t counters
std::vector< int > row