@@ -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);
115117DECLARE_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",
166167struct 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