@@ -214,13 +214,16 @@ void VertexerTraits::computeTracklets(const int iteration)
214214 mTimeFrame ->getNTrackletsROF (pivotRofId, 1 ) = std::accumulate (mTimeFrame ->getNTrackletsCluster (pivotRofId, 1 ).begin (), mTimeFrame ->getNTrackletsCluster (pivotRofId, 1 ).end (), 0 );
215215 }
216216 });
217- });
218217
219- mTimeFrame ->computeTrackletsPerROFScans ();
220- mTimeFrame ->getTracklets ()[0 ].resize (mTimeFrame ->getTotalTrackletsTF (0 ));
221- mTimeFrame ->getTracklets ()[1 ].resize (mTimeFrame ->getTotalTrackletsTF (1 ));
218+ mTimeFrame ->computeTrackletsPerROFScans ();
219+ if (auto tot0 = mTimeFrame ->getTotalTrackletsTF (0 ), tot1 = mTimeFrame ->getTotalTrackletsTF (1 );
220+ tot0 == 0 || tot1 == 0 ) {
221+ return ;
222+ } else {
223+ mTimeFrame ->getTracklets ()[0 ].resize (tot0);
224+ mTimeFrame ->getTracklets ()[1 ].resize (tot1);
225+ }
222226
223- mTaskArena ->execute ([&] {
224227 tbb::parallel_for (
225228 tbb::blocked_range<short >(0 , (short )mTimeFrame ->getNrof ()),
226229 [&](const tbb::blocked_range<short >& Rofs) {
@@ -266,18 +269,20 @@ void VertexerTraits::computeTracklets(const int iteration)
266269 if (mTimeFrame ->hasMCinformation ()) {
267270 for (const auto & trk : mTimeFrame ->getTracklets ()[0 ]) {
268271 o2::MCCompLabel label;
269- int sortedId0{mTimeFrame ->getSortedIndex (trk.rof [0 ], 0 , trk.firstClusterIndex )};
270- int sortedId1{mTimeFrame ->getSortedIndex (trk.rof [1 ], 1 , trk.secondClusterIndex )};
271- for (const auto & lab0 : mTimeFrame ->getClusterLabels (0 , mTimeFrame ->getClusters ()[0 ][sortedId0].clusterId )) {
272- for (const auto & lab1 : mTimeFrame ->getClusterLabels (1 , mTimeFrame ->getClusters ()[1 ][sortedId1].clusterId )) {
273- if (lab0 == lab1 && lab0.isValid ()) {
274- label = lab0;
272+ if (!trk.isEmpty ()) {
273+ int sortedId0{mTimeFrame ->getSortedIndex (trk.rof [0 ], 0 , trk.firstClusterIndex )};
274+ int sortedId1{mTimeFrame ->getSortedIndex (trk.rof [1 ], 1 , trk.secondClusterIndex )};
275+ for (const auto & lab0 : mTimeFrame ->getClusterLabels (0 , mTimeFrame ->getClusters ()[0 ][sortedId0].clusterId )) {
276+ for (const auto & lab1 : mTimeFrame ->getClusterLabels (1 , mTimeFrame ->getClusters ()[1 ][sortedId1].clusterId )) {
277+ if (lab0 == lab1 && lab0.isValid ()) {
278+ label = lab0;
279+ break ;
280+ }
281+ }
282+ if (label.isValid ()) {
275283 break ;
276284 }
277285 }
278- if (label.isValid ()) {
279- break ;
280- }
281286 }
282287 mTimeFrame ->getTrackletsLabel (0 ).emplace_back (label);
283288 }
0 commit comments