Skip to content

Commit ccd8f0c

Browse files
committed
ITS: remove copying vertices addPrimaryVertices
Signed-off-by: Felix Schlepper <felix.schlepper@cern.ch>
1 parent ad4352b commit ccd8f0c

File tree

4 files changed

+10
-45
lines changed

4 files changed

+10
-45
lines changed

Detectors/ITSMFT/ITS/tracking/include/ITStracking/TimeFrame.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,9 @@ struct TimeFrame {
7777
gsl::span<const std::array<float, 2>> getPrimaryVerticesXAlpha(int rofId) const;
7878
void fillPrimaryVerticesXandAlpha();
7979
int getPrimaryVerticesNum(int rofId = -1) const;
80-
void addPrimaryVertices(const bounded_vector<Vertex>& vertices);
8180
void addPrimaryVerticesLabels(bounded_vector<std::pair<MCCompLabel, float>>& labels);
8281
void addPrimaryVerticesContributorLabels(bounded_vector<MCCompLabel>& labels);
83-
void addPrimaryVertices(const bounded_vector<Vertex>& vertices, const int rofId, const int iteration);
84-
void addPrimaryVertices(const gsl::span<const Vertex>& vertices, const int rofId, const int iteration);
82+
void addPrimaryVertices(const bounded_vector<Vertex>& vertices, const int iteration);
8583
void addPrimaryVerticesInROF(const bounded_vector<Vertex>& vertices, const int rofId, const int iteration);
8684
void addPrimaryVerticesLabelsInROF(const bounded_vector<std::pair<MCCompLabel, float>>& labels, const int rofId);
8785
void addPrimaryVerticesContributorLabelsInROF(const bounded_vector<MCCompLabel>& labels, const int rofId);

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

Lines changed: 5 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -59,24 +59,19 @@ TimeFrame<nLayers>::~TimeFrame()
5959
}
6060

6161
template <int nLayers>
62-
void TimeFrame<nLayers>::addPrimaryVertices(const bounded_vector<Vertex>& vertices)
62+
void TimeFrame<nLayers>::addPrimaryVertices(const bounded_vector<Vertex>& vertices, const int iteration)
6363
{
6464
for (const auto& vertex : vertices) {
65-
mPrimaryVertices.emplace_back(vertex);
66-
if (!isBeamPositionOverridden) {
65+
mPrimaryVertices.emplace_back(vertex); // put a copy in the present
66+
mTotVertPerIteration[iteration]++;
67+
if (!isBeamPositionOverridden) { // beam position is updated only at first occurrence of the vertex. A bit sketchy if we have past/future vertices, it should not impact too much.
6768
const float w = vertex.getNContributors();
6869
mBeamPos[0] = (mBeamPos[0] * mBeamPosWeight + vertex.getX() * w) / (mBeamPosWeight + w);
6970
mBeamPos[1] = (mBeamPos[1] * mBeamPosWeight + vertex.getY() * w) / (mBeamPosWeight + w);
7071
mBeamPosWeight += w;
7172
}
7273
}
73-
mROFramesPV.push_back(mPrimaryVertices.size());
74-
}
75-
76-
template <int nLayers>
77-
void TimeFrame<nLayers>::addPrimaryVertices(const bounded_vector<Vertex>& vertices, const int rofId, const int iteration)
78-
{
79-
addPrimaryVertices(gsl::span<const Vertex>(vertices), rofId, iteration);
74+
mROFramesPV.push_back(mPrimaryVertices.size()); // current rof must have number of vertices up to present
8075
}
8176

8277
template <int nLayers>
@@ -119,34 +114,6 @@ void TimeFrame<nLayers>::addPrimaryVerticesContributorLabelsInROF(const bounded_
119114
mVerticesContributorLabels.insert(mVerticesContributorLabels.begin() + n, labels.begin(), labels.end());
120115
}
121116

122-
template <int nLayers>
123-
void TimeFrame<nLayers>::addPrimaryVertices(const gsl::span<const Vertex>& vertices, const int rofId, const int iteration)
124-
{
125-
bounded_vector<Vertex> futureVertices(mMemoryPool.get());
126-
for (const auto& vertex : vertices) {
127-
if (vertex.getTimeStamp().getTimeStamp() < rofId) { // put a copy in the past
128-
insertPastVertex(vertex, iteration);
129-
} else {
130-
if (vertex.getTimeStamp().getTimeStamp() > rofId) { // or put a copy in the future
131-
futureVertices.emplace_back(vertex);
132-
}
133-
}
134-
mPrimaryVertices.emplace_back(vertex); // put a copy in the present
135-
mTotVertPerIteration[iteration]++;
136-
if (!isBeamPositionOverridden) { // beam position is updated only at first occurrence of the vertex. A bit sketchy if we have past/future vertices, it should not impact too much.
137-
const float w = vertex.getNContributors();
138-
mBeamPos[0] = (mBeamPos[0] * mBeamPosWeight + vertex.getX() * w) / (mBeamPosWeight + w);
139-
mBeamPos[1] = (mBeamPos[1] * mBeamPosWeight + vertex.getY() * w) / (mBeamPosWeight + w);
140-
mBeamPosWeight += w;
141-
}
142-
}
143-
mROFramesPV.push_back(mPrimaryVertices.size()); // current rof must have number of vertices up to present
144-
for (auto& vertex : futureVertices) {
145-
mPrimaryVertices.emplace_back(vertex);
146-
mTotVertPerIteration[iteration]++;
147-
}
148-
}
149-
150117
template <int nLayers>
151118
int TimeFrame<nLayers>::loadROFrameData(gsl::span<o2::itsmft::ROFRecord> rofs,
152119
gsl::span<const itsmft::CompClusterExt> clusters,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc)
165165
gsl::span<const std::pair<MCCompLabel, float>> vMCRecInfo;
166166
gsl::span<const MCCompLabel> vMCContLabels;
167167
for (auto iRof{0}; iRof < trackROFspan.size(); ++iRof) {
168-
std::vector<Vertex> vtxVecLoc;
168+
bounded_vector<Vertex> vtxVecLoc;
169169
auto& vtxROF = vertROFvec.emplace_back(trackROFspan[iRof]);
170170
vtxROF.setFirstEntry(vertices.size());
171171
if (mRunVertexer) {
@@ -223,7 +223,7 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc)
223223
for (auto& v : vtxVecLoc) {
224224
vertices.push_back(v);
225225
}
226-
mTimeFrame->addPrimaryVertices(vtxVecLoc, iRof, 0);
226+
mTimeFrame->addPrimaryVertices(vtxVecLoc, 0);
227227
}
228228
}
229229
if (mRunVertexer) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ void VertexerTraits::computeVertices(const int iteration)
520520
}
521521
}
522522
if (!iteration) {
523-
mTimeFrame->addPrimaryVertices(vertices, rofId, iteration);
523+
mTimeFrame->addPrimaryVertices(vertices, iteration);
524524
if (mTimeFrame->hasMCinformation()) {
525525
mTimeFrame->addPrimaryVerticesLabels(polls);
526526
if (mVrtParams[iteration].outputContLabels) {
@@ -625,7 +625,7 @@ void VertexerTraits::addTruthSeedingVertices()
625625
} else {
626626
mTimeFrame->getNoVertexROF()++;
627627
}
628-
mTimeFrame->addPrimaryVertices(verts, iROF, 0);
628+
mTimeFrame->addPrimaryVertices(verts, 0);
629629
mTimeFrame->addPrimaryVerticesLabels(polls);
630630
}
631631
LOGP(info, "Found {}/{} ROFs with {} vertices -> <NV>={:.2f}", vertices.size(), mTimeFrame->getNrof(), nVerts, (float)nVerts / (float)vertices.size());

0 commit comments

Comments
 (0)