Skip to content

Commit 0ed432c

Browse files
author
Andrea
committed
Allowing to avoid collision index in track table. This is needed/useful for running on hyperloop. Collision info (position, ncontrib) can be stored track-by-track in a dedicated table that is mergeable with the track one. Practically, with typical track-sampling criteria used, this allows to save space.
1 parent 822373c commit 0ed432c

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

DPG/Tasks/ITS/filterTracks.cxx

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,9 @@ DECLARE_SOA_TABLE(FilterCollPos, "AOD", "FILTERCOLLPOS",
112112
o2::aod::collision::Chi2,
113113
o2::aod::collision::NumContrib,
114114
o2::aod::collision::CollisionTime);
115+
DECLARE_SOA_TABLE(FiltTrackColIdx, "AOD", "FILTTRACKCOLIDX",
116+
o2::aod::track::CollisionId);
115117
DECLARE_SOA_TABLE(FilterTrack, "AOD", "FILTERTRACK",
116-
o2::aod::track::CollisionId,
117118
aod::filtertracks::IsInsideBeamPipe,
118119
o2::aod::track::TrackType,
119120
o2::aod::track::X,
@@ -166,6 +167,7 @@ DECLARE_SOA_TABLE(GenParticles, "AOD", "GENPARTICLES",
166167
struct FilterTracks {
167168
const static int nStudiedParticlesMc = 3;
168169

170+
Produces<aod::FiltTrackColIdx> filteredTracksCollIdx;
169171
Produces<aod::FilterTrackExtr> filteredTracksTableExtra;
170172
Produces<aod::FilterTrack> filteredTracksTable;
171173
Produces<aod::FiltTracExtDet> filteredTracksTableExtraDet;
@@ -182,7 +184,7 @@ struct FilterTracks {
182184
Configurable<int> trackPtSampling{"trackPtSampling", 0, "track sampling mode"};
183185
Configurable<bool> produceCollTableFull{"produceCollTableFull", false, "produce full collision table"};
184186
Configurable<bool> produceCollTableLite{"produceCollTableLite", false, "produce lite collision table"};
185-
Configurable<bool> produceCollTableExtraLite{"produceCollTableExtraLite", true, "produce extra lite collision table"};
187+
Configurable<int> produceCollTableExtraLite{"produceCollTableExtraLite", 2, "produce extra lite collision table"};
186188
Configurable<float> trackPtWeightLowPt{"trackPtWeightLowPt", 0.01f, "trackPtWeightLowPt"};
187189
Configurable<float> trackPtWeightMidPt{"trackPtWeightMidPt", 0.10f, "trackPtWeightMidPt"};
188190
Configurable<float> collFilterFraction{"collFilterFraction", 0.05f, "collFilterFraction"};
@@ -218,8 +220,9 @@ struct FilterTracks {
218220
void fillTableData(auto track)
219221
{
220222

223+
filteredTracksCollIdx(track.collisionId());
221224
filteredTracksTableExtra(track.pt(), track.eta(), track.sign(), track.dcaXY(), track.dcaZ(), track.sigmaDcaXY2(), track.sigmaDcaZ2(), track.tpcNSigmaPi(), track.tpcNSigmaKa(), track.tpcNSigmaPr(), track.tofNSigmaPi(), track.tofNSigmaKa(), track.tofNSigmaPr());
222-
filteredTracksTable(track.collisionId(), track.isWithinBeamPipe() ? 1 : 0, track.trackType(), track.x(), track.alpha(), track.y(), track.z(), track.snp(), track.tgl(), track.signed1Pt());
225+
filteredTracksTable(track.isWithinBeamPipe() ? 1 : 0, track.trackType(), track.x(), track.alpha(), track.y(), track.z(), track.snp(), track.tgl(), track.signed1Pt());
223226

224227
filteredTracksTableExtraDet(track.itsClusterSizes(), track.itsChi2NCl(), track.tpcChi2NCl(), track.tpcNClsFound(), track.trackTime());
225228
}
@@ -302,19 +305,31 @@ struct FilterTracks {
302305
if (trackPtSampling == 0) {
303306
for (auto const& track : tracks) {
304307
fillTableData(track);
308+
if (produceCollTableExtraLite == 2) {
309+
filterCollPosTable(collision.posX(), collision.posY(), collision.posZ(), collision.chi2(), collision.numContrib(), collision.collisionTime());
310+
};
305311
}
306312
} else {
307313
auto lowPtTracksThisColl = lowPtTracks->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache);
308314
for (auto const& track : lowPtTracksThisColl) {
309315
fillTableData(track);
316+
if (produceCollTableExtraLite == 2) {
317+
filterCollPosTable(collision.posX(), collision.posY(), collision.posZ(), collision.chi2(), collision.numContrib(), collision.collisionTime());
318+
};
310319
}
311320
auto midPtTracksThisColl = midPtTracks->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache);
312321
for (auto const& track : midPtTracksThisColl) {
313322
fillTableData(track);
323+
if (produceCollTableExtraLite == 2) {
324+
filterCollPosTable(collision.posX(), collision.posY(), collision.posZ(), collision.chi2(), collision.numContrib(), collision.collisionTime());
325+
};
314326
}
315327
auto highPtTracksThisColl = highPtTracks->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache);
316328
for (auto const& track : highPtTracksThisColl) {
317329
fillTableData(track);
330+
if (produceCollTableExtraLite == 2) {
331+
filterCollPosTable(collision.posX(), collision.posY(), collision.posZ(), collision.chi2(), collision.numContrib(), collision.collisionTime());
332+
};
318333
}
319334
}
320335
}
@@ -325,7 +340,7 @@ struct FilterTracks {
325340
filterCollTable(collision.bcId(), collision.posX(), collision.posY(), collision.posZ(), collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ(), collision.flags(), collision.chi2(), collision.numContrib(), collision.collisionTime(), collision.collisionTimeRes());
326341
if (produceCollTableLite)
327342
filterCollLiteTable(collision.posX(), collision.posY(), collision.posZ(), collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ(), collision.chi2(), collision.numContrib(), collision.collisionTime());
328-
if (produceCollTableExtraLite)
343+
if (produceCollTableExtraLite == 1)
329344
filterCollPosTable(collision.posX(), collision.posY(), collision.posZ(), collision.chi2(), collision.numContrib(), collision.collisionTime());
330345
}
331346
PROCESS_SWITCH(FilterTracks, processCollisions, "process collisions", true);

0 commit comments

Comments
 (0)