@@ -39,6 +39,11 @@ using namespace o2::event_visualisation;
3939void EveWorkflowHelper::selectTracks (const CalibObjectsConst* calib,
4040 GID ::mask_t maskCl, GID ::mask_t maskTrk, GID ::mask_t maskMatch)
4141{
42+ struct TrackTimeNode {
43+ GID trackGID;
44+ float trackTime;
45+ };
46+ std::vector<TrackTimeNode> trackTimeNodes;
4247 std::vector<Bracket> itsROFBrackets;
4348
4449 if (mEnabledFilters .test (Filter::ITSROF )) {
@@ -96,7 +101,7 @@ void EveWorkflowHelper::selectTracks(const CalibObjectsConst* calib,
96101 return false ;
97102 };
98103
99- auto creator = [maskTrk, this , &correctTrackTime, &isInsideITSROF](auto & trk, GID gid, float time, float terr) {
104+ auto creator = [maskTrk, this , &correctTrackTime, &isInsideITSROF, &trackTimeNodes ](auto & trk, GID gid, float time, float terr) {
100105 if (!maskTrk[gid.getSource ()]) {
101106 return true ;
102107 }
@@ -115,13 +120,29 @@ void EveWorkflowHelper::selectTracks(const CalibObjectsConst* calib,
115120 return true ;
116121 }
117122
118- mTrackSet .trackGID .push_back (gid);
119- mTrackSet .trackTime .push_back (bracket.mean ());
123+ // mTrackSet.trackGID.push_back(gid);
124+ // mTrackSet.trackTime.push_back(bracket.mean());
125+
126+ TrackTimeNode node;
127+ node.trackGID = gid;
128+ node.trackTime = bracket.mean ();
129+ trackTimeNodes.push_back (node);
120130
121131 return true ;
122132 };
123133
124134 this ->mRecoCont .createTracksVariadic (creator);
135+ std::sort (trackTimeNodes.begin (), trackTimeNodes.end (),
136+ [](TrackTimeNode a, TrackTimeNode b) {
137+ return a.trackTime > b.trackTime ;
138+ });
139+ for (auto node : trackTimeNodes) {
140+ if (mEnabledFilters .test (Filter::TotalNTracks) && mTrackSet .trackGID .size () >= mMaxNTracks ) {
141+ break ;
142+ }
143+ mTrackSet .trackGID .push_back (node.trackGID );
144+ mTrackSet .trackTime .push_back (node.trackTime );
145+ }
125146}
126147
127148void EveWorkflowHelper::draw ()
0 commit comments