@@ -169,45 +169,41 @@ template <int nLayers>
169169void VertexerTraits<nLayers>::computeTracklets(const int iteration)
170170{
171171 mTaskArena ->execute ([&] {
172- tbb::parallel_for (
173- tbb::blocked_range<short >(0 , (short )mTimeFrame ->getNrof ()),
174- [&](const tbb::blocked_range<short >& Rofs) {
175- for (short pivotRofId = Rofs.begin (); pivotRofId < Rofs.end (); ++pivotRofId) {
176- bool skipROF = iteration && (int )mTimeFrame ->getPrimaryVertices (pivotRofId).size () > mVrtParams [iteration].vertPerRofThreshold ;
177- short startROF{std::max ((short )0 , static_cast <short >(pivotRofId - mVrtParams [iteration].deltaRof ))};
178- short endROF{std::min (static_cast <short >(mTimeFrame ->getNrof ()), static_cast <short >(pivotRofId + mVrtParams [iteration].deltaRof + 1 ))};
179- for (auto targetRofId = startROF; targetRofId < endROF; ++targetRofId) {
180- trackleterKernelHost<TrackletMode::Layer0Layer1, true >(
181- !skipROF ? mTimeFrame ->getClustersOnLayer (targetRofId, 0 ) : gsl::span<Cluster>(), // Clusters to be matched with the next layer in target rof
182- !skipROF ? mTimeFrame ->getClustersOnLayer (pivotRofId, 1 ) : gsl::span<Cluster>(), // Clusters to be matched with the current layer in pivot rof
183- mTimeFrame ->getUsedClustersROF (targetRofId, 0 ), // Span of the used clusters in the target rof
184- mTimeFrame ->getIndexTable (targetRofId, 0 ).data (), // Index table to access the data on the next layer in target rof
185- mVrtParams [iteration].phiCut ,
186- mTimeFrame ->getTracklets ()[0 ], // Flat tracklet buffer
187- mTimeFrame ->getNTrackletsCluster (pivotRofId, 0 ), // Span of the number of tracklets per each cluster in pivot rof
188- mIndexTableUtils ,
189- pivotRofId,
190- targetRofId,
191- gsl::span<int >(), // Offset in the tracklet buffer
192- mVrtParams [iteration].maxTrackletsPerCluster );
193- trackleterKernelHost<TrackletMode::Layer1Layer2, true >(
194- !skipROF ? mTimeFrame ->getClustersOnLayer (targetRofId, 2 ) : gsl::span<Cluster>(),
195- !skipROF ? mTimeFrame ->getClustersOnLayer (pivotRofId, 1 ) : gsl::span<Cluster>(),
196- mTimeFrame ->getUsedClustersROF (targetRofId, 2 ),
197- mTimeFrame ->getIndexTable (targetRofId, 2 ).data (),
198- mVrtParams [iteration].phiCut ,
199- mTimeFrame ->getTracklets ()[1 ],
200- mTimeFrame ->getNTrackletsCluster (pivotRofId, 1 ), // Span of the number of tracklets per each cluster in pivot rof
201- mIndexTableUtils ,
202- pivotRofId,
203- targetRofId,
204- gsl::span<int >(), // Offset in the tracklet buffer
205- mVrtParams [iteration].maxTrackletsPerCluster );
206- }
207- mTimeFrame ->getNTrackletsROF (pivotRofId, 0 ) = std::accumulate (mTimeFrame ->getNTrackletsCluster (pivotRofId, 0 ).begin (), mTimeFrame ->getNTrackletsCluster (pivotRofId, 0 ).end (), 0 );
208- mTimeFrame ->getNTrackletsROF (pivotRofId, 1 ) = std::accumulate (mTimeFrame ->getNTrackletsCluster (pivotRofId, 1 ).begin (), mTimeFrame ->getNTrackletsCluster (pivotRofId, 1 ).end (), 0 );
209- }
210- });
172+ tbb::parallel_for (0 , mTimeFrame ->getNrof (), [&](const short pivotRofId) {
173+ bool skipROF = iteration && (int )mTimeFrame ->getPrimaryVertices (pivotRofId).size () > mVrtParams [iteration].vertPerRofThreshold ;
174+ short startROF{std::max ((short )0 , static_cast <short >(pivotRofId - mVrtParams [iteration].deltaRof ))};
175+ short endROF{std::min (static_cast <short >(mTimeFrame ->getNrof ()), static_cast <short >(pivotRofId + mVrtParams [iteration].deltaRof + 1 ))};
176+ for (auto targetRofId = startROF; targetRofId < endROF; ++targetRofId) {
177+ trackleterKernelHost<TrackletMode::Layer0Layer1, true >(
178+ !skipROF ? mTimeFrame ->getClustersOnLayer (targetRofId, 0 ) : gsl::span<Cluster>(), // Clusters to be matched with the next layer in target rof
179+ !skipROF ? mTimeFrame ->getClustersOnLayer (pivotRofId, 1 ) : gsl::span<Cluster>(), // Clusters to be matched with the current layer in pivot rof
180+ mTimeFrame ->getUsedClustersROF (targetRofId, 0 ), // Span of the used clusters in the target rof
181+ mTimeFrame ->getIndexTable (targetRofId, 0 ).data (), // Index table to access the data on the next layer in target rof
182+ mVrtParams [iteration].phiCut ,
183+ mTimeFrame ->getTracklets ()[0 ], // Flat tracklet buffer
184+ mTimeFrame ->getNTrackletsCluster (pivotRofId, 0 ), // Span of the number of tracklets per each cluster in pivot rof
185+ mIndexTableUtils ,
186+ pivotRofId,
187+ targetRofId,
188+ gsl::span<int >(), // Offset in the tracklet buffer
189+ mVrtParams [iteration].maxTrackletsPerCluster );
190+ trackleterKernelHost<TrackletMode::Layer1Layer2, true >(
191+ !skipROF ? mTimeFrame ->getClustersOnLayer (targetRofId, 2 ) : gsl::span<Cluster>(),
192+ !skipROF ? mTimeFrame ->getClustersOnLayer (pivotRofId, 1 ) : gsl::span<Cluster>(),
193+ mTimeFrame ->getUsedClustersROF (targetRofId, 2 ),
194+ mTimeFrame ->getIndexTable (targetRofId, 2 ).data (),
195+ mVrtParams [iteration].phiCut ,
196+ mTimeFrame ->getTracklets ()[1 ],
197+ mTimeFrame ->getNTrackletsCluster (pivotRofId, 1 ), // Span of the number of tracklets per each cluster in pivot rof
198+ mIndexTableUtils ,
199+ pivotRofId,
200+ targetRofId,
201+ gsl::span<int >(), // Offset in the tracklet buffer
202+ mVrtParams [iteration].maxTrackletsPerCluster );
203+ }
204+ mTimeFrame ->getNTrackletsROF (pivotRofId, 0 ) = std::accumulate (mTimeFrame ->getNTrackletsCluster (pivotRofId, 0 ).begin (), mTimeFrame ->getNTrackletsCluster (pivotRofId, 0 ).end (), 0 );
205+ mTimeFrame ->getNTrackletsROF (pivotRofId, 1 ) = std::accumulate (mTimeFrame ->getNTrackletsCluster (pivotRofId, 1 ).begin (), mTimeFrame ->getNTrackletsCluster (pivotRofId, 1 ).end (), 0 );
206+ });
211207
212208 mTimeFrame ->computeTrackletsPerROFScans ();
213209 if (auto tot0 = mTimeFrame ->getTotalTrackletsTF (0 ), tot1 = mTimeFrame ->getTotalTrackletsTF (1 );
@@ -218,45 +214,41 @@ void VertexerTraits<nLayers>::computeTracklets(const int iteration)
218214 mTimeFrame ->getTracklets ()[1 ].resize (tot1);
219215 }
220216
221- tbb::parallel_for (
222- tbb::blocked_range<short >(0 , (short )mTimeFrame ->getNrof ()),
223- [&](const tbb::blocked_range<short >& Rofs) {
224- for (short pivotRofId = Rofs.begin (); pivotRofId < Rofs.end (); ++pivotRofId) {
225- bool skipROF = iteration && (int )mTimeFrame ->getPrimaryVertices (pivotRofId).size () > mVrtParams [iteration].vertPerRofThreshold ;
226- short startROF{std::max ((short )0 , static_cast <short >(pivotRofId - mVrtParams [iteration].deltaRof ))};
227- short endROF{std::min (static_cast <short >(mTimeFrame ->getNrof ()), static_cast <short >(pivotRofId + mVrtParams [iteration].deltaRof + 1 ))};
228- auto mobileOffset0 = mTimeFrame ->getNTrackletsROF (pivotRofId, 0 );
229- auto mobileOffset1 = mTimeFrame ->getNTrackletsROF (pivotRofId, 1 );
230- for (auto targetRofId = startROF; targetRofId < endROF; ++targetRofId) {
231- trackleterKernelHost<TrackletMode::Layer0Layer1, false >(
232- !skipROF ? mTimeFrame ->getClustersOnLayer (targetRofId, 0 ) : gsl::span<Cluster>(),
233- !skipROF ? mTimeFrame ->getClustersOnLayer (pivotRofId, 1 ) : gsl::span<Cluster>(),
234- mTimeFrame ->getUsedClustersROF (targetRofId, 0 ),
235- mTimeFrame ->getIndexTable (targetRofId, 0 ).data (),
236- mVrtParams [iteration].phiCut ,
237- mTimeFrame ->getTracklets ()[0 ],
238- mTimeFrame ->getNTrackletsCluster (pivotRofId, 0 ),
239- mIndexTableUtils ,
240- pivotRofId,
241- targetRofId,
242- mTimeFrame ->getExclusiveNTrackletsCluster (pivotRofId, 0 ),
243- mVrtParams [iteration].maxTrackletsPerCluster );
244- trackleterKernelHost<TrackletMode::Layer1Layer2, false >(
245- !skipROF ? mTimeFrame ->getClustersOnLayer (targetRofId, 2 ) : gsl::span<Cluster>(),
246- !skipROF ? mTimeFrame ->getClustersOnLayer (pivotRofId, 1 ) : gsl::span<Cluster>(),
247- mTimeFrame ->getUsedClustersROF (targetRofId, 2 ),
248- mTimeFrame ->getIndexTable (targetRofId, 2 ).data (),
249- mVrtParams [iteration].phiCut ,
250- mTimeFrame ->getTracklets ()[1 ],
251- mTimeFrame ->getNTrackletsCluster (pivotRofId, 1 ),
252- mIndexTableUtils ,
253- pivotRofId,
254- targetRofId,
255- mTimeFrame ->getExclusiveNTrackletsCluster (pivotRofId, 1 ),
256- mVrtParams [iteration].maxTrackletsPerCluster );
257- }
258- }
259- });
217+ tbb::parallel_for (0 , mTimeFrame ->getNrof (), [&](const short pivotRofId) {
218+ bool skipROF = iteration && (int )mTimeFrame ->getPrimaryVertices (pivotRofId).size () > mVrtParams [iteration].vertPerRofThreshold ;
219+ short startROF{std::max ((short )0 , static_cast <short >(pivotRofId - mVrtParams [iteration].deltaRof ))};
220+ short endROF{std::min (static_cast <short >(mTimeFrame ->getNrof ()), static_cast <short >(pivotRofId + mVrtParams [iteration].deltaRof + 1 ))};
221+ auto mobileOffset0 = mTimeFrame ->getNTrackletsROF (pivotRofId, 0 );
222+ auto mobileOffset1 = mTimeFrame ->getNTrackletsROF (pivotRofId, 1 );
223+ for (auto targetRofId = startROF; targetRofId < endROF; ++targetRofId) {
224+ trackleterKernelHost<TrackletMode::Layer0Layer1, false >(
225+ !skipROF ? mTimeFrame ->getClustersOnLayer (targetRofId, 0 ) : gsl::span<Cluster>(),
226+ !skipROF ? mTimeFrame ->getClustersOnLayer (pivotRofId, 1 ) : gsl::span<Cluster>(),
227+ mTimeFrame ->getUsedClustersROF (targetRofId, 0 ),
228+ mTimeFrame ->getIndexTable (targetRofId, 0 ).data (),
229+ mVrtParams [iteration].phiCut ,
230+ mTimeFrame ->getTracklets ()[0 ],
231+ mTimeFrame ->getNTrackletsCluster (pivotRofId, 0 ),
232+ mIndexTableUtils ,
233+ pivotRofId,
234+ targetRofId,
235+ mTimeFrame ->getExclusiveNTrackletsCluster (pivotRofId, 0 ),
236+ mVrtParams [iteration].maxTrackletsPerCluster );
237+ trackleterKernelHost<TrackletMode::Layer1Layer2, false >(
238+ !skipROF ? mTimeFrame ->getClustersOnLayer (targetRofId, 2 ) : gsl::span<Cluster>(),
239+ !skipROF ? mTimeFrame ->getClustersOnLayer (pivotRofId, 1 ) : gsl::span<Cluster>(),
240+ mTimeFrame ->getUsedClustersROF (targetRofId, 2 ),
241+ mTimeFrame ->getIndexTable (targetRofId, 2 ).data (),
242+ mVrtParams [iteration].phiCut ,
243+ mTimeFrame ->getTracklets ()[1 ],
244+ mTimeFrame ->getNTrackletsCluster (pivotRofId, 1 ),
245+ mIndexTableUtils ,
246+ pivotRofId,
247+ targetRofId,
248+ mTimeFrame ->getExclusiveNTrackletsCluster (pivotRofId, 1 ),
249+ mVrtParams [iteration].maxTrackletsPerCluster );
250+ }
251+ });
260252 });
261253
262254 // / Create tracklets labels for L0-L1, information is as flat as in tracklets vector (no rofId)
0 commit comments