Skip to content

Commit 2e80fb9

Browse files
committed
ITS: add rofs for vertices back
Signed-off-by: Felix Schlepper <felix.schlepper@cern.ch>
1 parent 678b002 commit 2e80fb9

File tree

1 file changed

+44
-26
lines changed

1 file changed

+44
-26
lines changed

Detectors/ITSMFT/ITS/tracking/src/TrackingInterface.cxx

Lines changed: 44 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -310,38 +310,56 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc)
310310
// NOTE: we are not setting the BCData of these ROFs (should we?)
311311
const auto& clockLayer = mTimeFrame->getROFOverlapTableView().getClockLayer();
312312
int highestROF{0};
313-
for (const auto& trc : tracks) {
314-
highestROF = std::max(highestROF, (int)clockLayer.getROF(trc.getTimeStamp().lower()));
315-
}
316-
allTrackROFs.resize(highestROF);
317-
318-
// Some conversions that needs to be moved in the tracker internals
319-
std::vector<int> rofEntries(highestROF + 1, 0);
320-
for (unsigned int iTrk{0}; iTrk < tracks.size(); ++iTrk) {
321-
auto& trc{tracks[iTrk]};
322-
trc.setFirstClusterEntry((int)allClusIdx.size()); // before adding tracks, create final cluster indices
323-
int ncl = trc.getNumberOfClusters(), nclf = 0;
324-
for (int ic = TrackITSExt::MaxClusters; ic--;) { // track internally keeps in->out cluster indices, but we want to store the references as out->in!!!
325-
auto clid = trc.getClusterIndex(ic);
326-
if (clid >= 0) {
327-
trc.setClusterSize(ic, mTimeFrame->getClusterSize((mDoStaggering) ? ic : 0, clid));
328-
allClusIdx.push_back(clid);
329-
nclf++;
313+
{
314+
for (const auto& trc : tracks) {
315+
highestROF = std::max(highestROF, (int)clockLayer.getROF(trc.getTimeStamp().lower()));
316+
}
317+
allTrackROFs.resize(highestROF);
318+
std::vector<int> rofEntries(highestROF + 1, 0);
319+
for (unsigned int iTrk{0}; iTrk < tracks.size(); ++iTrk) {
320+
auto& trc{tracks[iTrk]};
321+
trc.setFirstClusterEntry((int)allClusIdx.size()); // before adding tracks, create final cluster indices
322+
int ncl = trc.getNumberOfClusters(), nclf = 0;
323+
for (int ic = TrackITSExt::MaxClusters; ic--;) { // track internally keeps in->out cluster indices, but we want to store the references as out->in!!!
324+
auto clid = trc.getClusterIndex(ic);
325+
if (clid >= 0) {
326+
trc.setClusterSize(ic, mTimeFrame->getClusterSize((mDoStaggering) ? ic : 0, clid));
327+
allClusIdx.push_back(clid);
328+
nclf++;
329+
}
330330
}
331+
assert(ncl == nclf);
332+
allTracks.emplace_back(trc);
333+
auto rof = clockLayer.getROF(trc.getTimeStamp().lower());
334+
++rofEntries[rof];
335+
}
336+
std::exclusive_scan(rofEntries.begin(), rofEntries.end(), rofEntries.begin(), 0);
337+
for (size_t iROF{0}; iROF < allTrackROFs.size(); ++iROF) {
338+
allTrackROFs[iROF].setFirstEntry(rofEntries[iROF]);
339+
allTrackROFs[iROF].setNEntries(rofEntries[iROF + 1] - rofEntries[iROF]);
331340
}
332-
assert(ncl == nclf);
333-
allTracks.emplace_back(trc);
334-
auto rof = clockLayer.getROF(trc.getTimeStamp().lower());
335-
++rofEntries[rof];
336341
}
337-
std::exclusive_scan(rofEntries.begin(), rofEntries.end(), rofEntries.begin(), 0);
338-
for (size_t iROF{0}; iROF < allTrackROFs.size(); ++iROF) {
339-
allTrackROFs[iROF].setFirstEntry(rofEntries[iROF]);
340-
allTrackROFs[iROF].setNEntries(rofEntries[iROF + 1] - rofEntries[iROF]);
342+
{ // same thing for vertices rofs
343+
highestROF = 0;
344+
for (const auto& vtx : vertices) {
345+
highestROF = std::max(highestROF, (int)clockLayer.getROF(vtx.getTimeStamp().lower()));
346+
}
347+
vertROFvec.resize(highestROF);
348+
std::vector<int> rofEntries(highestROF + 1, 0);
349+
for (const auto& vtx : vertices) {
350+
auto rof = clockLayer.getROF(vtx.getTimeStamp().lower());
351+
++rofEntries[rof];
352+
}
353+
std::exclusive_scan(rofEntries.begin(), rofEntries.end(), rofEntries.begin(), 0);
354+
355+
for (size_t iROF{0}; iROF < vertROFvec.size(); ++iROF) {
356+
vertROFvec[iROF].setFirstEntry(rofEntries[iROF]);
357+
vertROFvec[iROF].setNEntries(rofEntries[iROF + 1] - rofEntries[iROF]);
358+
}
341359
}
342360
}
343361

344-
LOGP(info, "ITSTracker pushed {} tracks in {} rofs and {} vertices", allTracks.size(), allTrackROFs.size(), vertices.size());
362+
LOGP(info, "ITSTracker pushed {} tracks in {} rofs and {} vertices in {} rofs", allTracks.size(), allTrackROFs.size(), vertices.size(), vertROFvec.size());
345363
if (mIsMC) {
346364
LOGP(info, "ITSTracker pushed {} track labels", allTrackLabels.size());
347365
LOGP(info, "ITSTracker pushed {} vertex labels", allVerticesLabels.size());

0 commit comments

Comments
 (0)