18#include <unordered_map>
25bool TrackLabeler::areBothSidesFired(
const gsl::span<const MCClusterLabel>& labels)
const
28 bool isFiredBP =
false, isFiredNBP =
false;
29 for (
auto&
label : labels) {
30 if (
label.isFiredBP()) {
33 if (
label.isFiredNBP()) {
37 return isFiredBP && isFiredNBP;
43 std::unordered_map<MCCompLabel, int> allLabels;
44 for (
int ich = 0; ich < 4; ++ich) {
45 auto icl = track.getClusterMatched(ich);
50 auto clLabels = inMCContainer.
getLabels(icl);
54 bool bothFired = areBothSidesFired(clLabels);
56 for (
auto&
label : clLabels) {
58 bool oneFired = (!
label.isFiredBP() || !
label.isFiredNBP());
59 if (bothFired && oneFired) {
72 for (
auto& item : allLabels) {
73 if (item.second > nMatched) {
74 nMatched = item.second;
75 outLabel = item.first;
80 outLabel.setFakeFlag();
89 mMCTracksLabels.clear();
91 for (
auto& track : tracks) {
92 mMCTracksLabels.emplace_back(makeTrackLabel(track, inMCContainer));
97 mMCTrackClustersLabels.clear();
98 mMCTrackClustersLabels.mergeAtBack(inMCContainer);
void process(gsl::span< const Cluster > clusters, gsl::span< const Track > tracks, const o2::dataformats::MCTruthContainer< MCClusterLabel > &inMCContainer)
GLuint GLsizei const GLchar * label
std::vector< Cluster > clusters
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...