31 const gsl::span<const o2::tpc::TPCClRefElem>& tpcClusRefs,
32 const gsl::span<const unsigned char>& tpcClusShMap,
34 uint8_t& shared, uint8_t& found, uint8_t& crossed)
36 LOGP(
debug,
"tpcClusRefs {}/{}", (
void*)tpcClusRefs.data(), tpcClusRefs.size());
37 LOGP(
debug,
"tpcClusShMap {}/{}", (
void*)tpcClusShMap.data(), tpcClusShMap.size());
39 constexpr int maxRows = 152;
40 constexpr int neighbour = 2;
41 std::array<bool, maxRows> clMap{}, shMap{};
44 uint32_t clusterIndex;
46 for (
int i = 0;
i < track.getNClusterReferences();
i++) {
47 o2::tpc::TrackTPC::getClusterReference(tpcClusRefs,
i, sectorIndex, rowIndex, clusterIndex, track.getClusterRef());
48 unsigned int absoluteIndex = tpcClusAcc.
clusterOffset[sectorIndex][rowIndex] + clusterIndex;
49 clMap[rowIndex] =
true;
51 if (!shMap[rowIndex]) {
54 shMap[rowIndex] =
true;
61 for (
int i = 0;
i < maxRows;
i++) {
66 }
else if ((
i - last) <= neighbour) {
69 int lim = std::min(
i + 1 + neighbour, maxRows);
70 for (
int j =
i + 1;
j < lim;
j++) {
80 constexpr uint8_t bit = 1;
81 for (
auto& itsRequirement : mRequiredITSHits) {
82 auto hits = std::count_if(itsRequirement.second.begin(), itsRequirement.second.end(), [&](
auto&& requiredLayer) { return itsClusterMap & (bit << requiredLayer); });
83 if ((itsRequirement.first == -1) && (hits > 0)) {
85 }
else if (hits < itsRequirement.first) {