123 int32_t nTracklets = *NTracklets();
124 if (nTracklets < 0) {
127 out <<
"\nTracklets: (Sector" << mISector <<
") (" << nTracklets <<
")" << std::endl;
128 std::vector<int32_t> Ids(nTracklets);
129 std::iota(Ids.begin(), Ids.end(), 0);
131 std::sort(Ids.begin(), Ids.end(), [
this](
const int32_t&
a,
const int32_t&
b) {
132 if (this->Tracklets()[a].FirstRow() != this->Tracklets()[b].FirstRow()) {
133 return this->Tracklets()[a].FirstRow() > this->Tracklets()[b].FirstRow();
135 if (this->Tracklets()[
a].LastRow() != this->Tracklets()[
b].LastRow()) {
136 return this->Tracklets()[
a].LastRow() > this->Tracklets()[
b].LastRow();
138 if (this->Tracklets()[
a].
Param().Y() != this->Tracklets()[
b].
Param().Y()) {
139 return this->Tracklets()[
a].Param().Y() > this->Tracklets()[
b].Param().Y();
141 return this->Tracklets()[
a].Param().Z() > this->Tracklets()[
b].Param().Z();
144 for (int32_t jj = 0; jj < nTracklets; jj++) {
145 const int32_t
j = Ids[jj];
146 const auto& tracklet = Tracklets()[
j];
147 out <<
"Tracklet " << std::setw(4) << jj <<
" (Rows: " << Tracklets()[
j].FirstRow() <<
" - " << tracklet.LastRow() <<
", Weight " << Tracklets()[
j].HitWeight() <<
") ";
149 GPUError(
"Error: Tracklet %d First %d Last %d",
j, tracklet.FirstRow(), tracklet.LastRow());
150 out <<
" (Error: Tracklet " <<
j <<
" First " << tracklet.FirstRow() <<
" Last " << tracklet.LastRow() <<
") ";
153 out <<
i <<
"-" << mTrackletRowHits[tracklet.FirstHit() + (
i - tracklet.FirstRow())] <<
", ";
155 }
else if (tracklet.LastRow() >= tracklet.FirstRow()) {
156 for (int32_t
i = tracklet.FirstRow();
i <= tracklet.LastRow();
i++) {
157 out <<
i <<
"-" << mTrackletRowHits[tracklet.FirstHit() + (
i - tracklet.FirstRow())] <<
", ";