37 const gsl::span<const o2::tpc::TPCClRefElem>& tpcClusRefs,
38 const gsl::span<const unsigned char>& tpcClusShMap,
40 uint8_t& shared, uint8_t& found, uint8_t& crossed)
42 LOGP(info,
"tpcClusRefs {}/{}", (
void*)tpcClusRefs.data(), tpcClusRefs.size());
43 LOGP(info,
"tpcClusShMap {}/{}", (
void*)tpcClusShMap.data(), tpcClusShMap.size());
45 constexpr int maxRows = 152;
46 constexpr int neighbour = 2;
47 std::array<bool, maxRows> clMap{}, shMap{};
50 uint32_t clusterIndex;
52 for (
int i = 0;
i < track.getNClusterReferences();
i++) {
53 o2::tpc::TrackTPC::getClusterReference(tpcClusRefs,
i, sectorIndex, rowIndex, clusterIndex, track.getClusterRef());
54 unsigned int absoluteIndex = tpcClusAcc.
clusterOffset[sectorIndex][rowIndex] + clusterIndex;
55 clMap[rowIndex] =
true;
57 if (!shMap[rowIndex]) {
60 shMap[rowIndex] =
true;
67 for (
int i = 0;
i < maxRows;
i++) {
72 }
else if ((
i - last) <= neighbour) {
75 int lim = std::min(
i + 1 + neighbour, maxRows);
76 for (
int j =
i + 1;
j < lim;
j++) {
86 constexpr uint8_t bit = 1;
87 for (
auto& itsRequirement : mRequiredITSHits) {
88 auto hits = std::count_if(itsRequirement.second.begin(), itsRequirement.second.end(), [&](
auto&& requiredLayer) { return itsClusterMap & (bit << requiredLayer); });
89 if ((itsRequirement.first == -1) && (hits > 0)) {
91 }
else if (hits < itsRequirement.first) {