Skip to content

Commit b85729d

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

4 files changed

Lines changed: 10 additions & 45 deletions

File tree

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
@@ -163,7 +163,7 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc)
163163
gsl::span<const std::pair<MCCompLabel, float>> vMCRecInfo;
164164
gsl::span<const MCCompLabel> vMCContLabels;
165165
for (auto iRof{0}; iRof < trackROFspan.size(); ++iRof) {
166-
std::vector<Vertex> vtxVecLoc;
166+
bounded_vector<Vertex> vtxVecLoc;
167167
auto& vtxROF = vertROFvec.emplace_back(trackROFspan[iRof]);
168168
vtxROF.setFirstEntry(vertices.size());
169169
if (mRunVertexer) {
@@ -221,7 +221,7 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc)
221221
for (auto& v : vtxVecLoc) {
222222
vertices.push_back(v);
223223
}
224-
mTimeFrame->addPrimaryVertices(vtxVecLoc, iRof, 0);
224+
mTimeFrame->addPrimaryVertices(vtxVecLoc, 0);
225225
}
226226
}
227227
if (mRunVertexer) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ void VertexerTraits::computeVertices(const int iteration)
519519
}
520520
}
521521
if (!iteration) {
522-
mTimeFrame->addPrimaryVertices(vertices, rofId, iteration);
522+
mTimeFrame->addPrimaryVertices(vertices, iteration);
523523
if (mTimeFrame->hasMCinformation()) {
524524
mTimeFrame->addPrimaryVerticesLabels(polls);
525525
if (mVrtParams[iteration].outputContLabels) {
@@ -612,7 +612,7 @@ void VertexerTraits::addTruthSeedingVertices()
612612
} else {
613613
mTimeFrame->getNoVertexROF()++;
614614
}
615-
mTimeFrame->addPrimaryVertices(verts, iROF, 0);
615+
mTimeFrame->addPrimaryVertices(verts, 0);
616616
mTimeFrame->addPrimaryVerticesLabels(polls);
617617
}
618618
LOGP(info, "Found {}/{} ROFs with {} vertices -> <NV>={:.2f}", vertices.size(), mTimeFrame->getNrof(), nVerts, (float)nVerts / (float)vertices.size());

0 commit comments

Comments
 (0)