diff --git a/DataFormats/Detectors/ITSMFT/ITS/include/DataFormatsITS/TrackITS.h b/DataFormats/Detectors/ITSMFT/ITS/include/DataFormatsITS/TrackITS.h index a2b774d75071e..20d16e3c43097 100644 --- a/DataFormats/Detectors/ITSMFT/ITS/include/DataFormatsITS/TrackITS.h +++ b/DataFormats/Detectors/ITSMFT/ITS/include/DataFormatsITS/TrackITS.h @@ -106,7 +106,7 @@ class TrackITSExt : public TrackITS ///< heavy version of TrackITS, with clusters embedded public: static constexpr int MaxClusters = 16; /// Prepare for overlaps and new detector configurations - using TrackITS::TrackITS; // inherit base constructors + using TrackITS::TrackITS; // inherit base constructors TrackITSExt(o2::track::TrackParCov&& parCov, short ncl, float chi2, o2::track::TrackParCov&& outer, std::array cls) @@ -128,6 +128,9 @@ class TrackITSExt : public TrackITS { if (newCluster) { getClusterRefs().setEntries(getNumberOfClusters() + 1); + uint16_t pattern = getPattern(); + pattern |= 0x1 << layer; + setPattern(pattern); } mIndex[layer] = idx; } diff --git a/Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx b/Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx index 367e2163472be..0494167213135 100644 --- a/Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx +++ b/Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx @@ -583,9 +583,22 @@ void Tracker::computeTracksMClabels(const ROframe& event) count = 1; } } - track.setExternalClusterIndex(iCluster, event.getClusterExternalIndex(iCluster, index)); } + uint8_t patt{0}; + // set fake clusters pattern + for (int ic{TrackITSExt::MaxClusters}; ic--;) { + auto clid = track.getClusterIndex(ic); + if (clid != constants::its::UnusedIndex) { + const MCCompLabel& currentLabel = event.getClusterLabels(ic, clid); + if (currentLabel != maxOccurrencesValue) { + patt |= 0x1 << ic; // if cluster label is different from main label + } + track.setExternalClusterIndex(ic, event.getClusterExternalIndex(ic, clid)); + } + } + + track.setUserField(patt); if (isFakeTrack) { maxOccurrencesValue.setFakeFlag(); }