@@ -70,6 +70,22 @@ DECLARE_SOA_COLUMN(MainBeautyAncestorPt, mainBeautyAncestorPt, float); //! origi
7070DECLARE_SOA_COLUMN (MainBeautyAncestorY, mainBeautyAncestorY, float ); // ! original index in MCParticle tree of main mother: needed when chekcing if particles come from same mother
7171DECLARE_SOA_COLUMN (MaxEtaDaughter, maxEtaDaughter, float ); // ! max (abs) eta of daughter particles, needed to reproduce acceptance cut
7272} // namespace filterTracks
73+ DECLARE_SOA_TABLE (FilterColl, " AOD" , " FILTERCOLL" ,
74+ o2::aod::collision::BCId,
75+ o2::aod::collision::PosX,
76+ o2::aod::collision::PosY,
77+ o2::aod::collision::PosZ,
78+ o2::aod::collision::CovXX,
79+ o2::aod::collision::CovXY,
80+ o2::aod::collision::CovYY,
81+ o2::aod::collision::CovXZ,
82+ o2::aod::collision::CovYZ,
83+ o2::aod::collision::CovZZ,
84+ o2::aod::collision::Flags,
85+ o2::aod::collision::Chi2,
86+ o2::aod::collision::NumContrib,
87+ o2::aod::collision::CollisionTime,
88+ o2::aod::collision::CollisionTimeRes);
7389DECLARE_SOA_TABLE (FilterTrack, " AOD" , " FILTERTRACK" ,
7490 o2::aod::track::CollisionId,
7591 aod::filterTracks::IsInsideBeamPipe,
@@ -128,6 +144,7 @@ struct FilterTracks {
128144 Produces<aod::FiltTracExtDet> filteredTracksTableExtraDet;
129145 Produces<aod::FilterTrackMC> filteredTracksMC;
130146 Produces<aod::GenParticles> selectedGenParticles;
147+ Produces<aod::FilterColl> filterCollTable;
131148
132149 // Configurable<int> dummy{"dummy", 0, "dummy"};
133150 Configurable<float > minTrackPt{" minTrackPt" , 0.25 , " min track pt" };
@@ -137,14 +154,15 @@ struct FilterTracks {
137154 Configurable<float > trackPtWeightMidPt{" trackPtWeightMidPt" , 0 .10f , " trackPtWeightMidPt" };
138155
139156 Filter trackFilter = requireGlobalTrackWoDCAInFilter() && aod::track::pt > minTrackPt&& nabs(aod::track::dcaXY) < trackDcaXyMax;
157+ using CollisionsWithEvSel = soa::Join<aod::Collisions, aod::EvSels>;
140158 using TracksWithSelAndDca = soa::Join<aod::Tracks, aod::TracksCov, aod::TracksDCA, aod::TracksDCACov, aod::TracksExtra, aod::TrackSelection, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::pidTPCFullKa, aod::pidTOFFullKa, aod::pidTPCFullPr, aod::pidTOFFullPr>;
141159 using TracksWithSelAndDcaMc = soa::Join<TracksWithSelAndDca, aod::McTrackLabels>;
142- Partition<soa::Filtered<TracksWithSelAndDca>> lowPtTracks = aod::track::pt < 2 .f && (nabs(aod::track::pt * 10000 .f - nround(aod::track::pt * 10000 .f)) < trackPtWeightLowPt * 2 .f);
143- Partition<soa::Filtered<TracksWithSelAndDca>> midPtTracks = aod::track::pt > 2 .f && aod::track::pt < 5 .f && (nabs(aod::track::pt * 10000 .f - nround(aod::track::pt * 10000 .f)) < trackPtWeightMidPt * 2 .f);
160+ Partition<soa::Filtered<TracksWithSelAndDca>> lowPtTracks = aod::track::pt < 2 .f && (nabs(aod::track::pt * 10000 .f - nround(aod::track::pt * 10000 .f)) < trackPtWeightLowPt.node() * 2 .f);
161+ Partition<soa::Filtered<TracksWithSelAndDca>> midPtTracks = aod::track::pt > 2 .f && aod::track::pt < 5 .f && (nabs(aod::track::pt * 10000 .f - nround(aod::track::pt * 10000 .f)) < trackPtWeightMidPt.node() * 2 .f);
144162 Partition<soa::Filtered<TracksWithSelAndDca>> highPtTracks = aod::track::pt > 5 .f;
145163
146- Partition<soa::Filtered<TracksWithSelAndDcaMc>> lowPtTracksMC = aod::track::pt < 2 .f && (nabs(aod::track::pt * 10000 .f - nround(aod::track::pt * 10000 .f)) < trackPtWeightLowPt * 2 .f);
147- Partition<soa::Filtered<TracksWithSelAndDcaMc>> midPtTracksMC = aod::track::pt > 2 .f && aod::track::pt < 5 .f && (nabs(aod::track::pt * 10000 .f - nround(aod::track::pt * 10000 .f)) < trackPtWeightMidPt * 2 .f);
164+ Partition<soa::Filtered<TracksWithSelAndDcaMc>> lowPtTracksMC = aod::track::pt < 2 .f && (nabs(aod::track::pt * 10000 .f - nround(aod::track::pt * 10000 .f)) < trackPtWeightLowPt.node() * 2 .f);
165+ Partition<soa::Filtered<TracksWithSelAndDcaMc>> midPtTracksMC = aod::track::pt > 2 .f && aod::track::pt < 5 .f && (nabs(aod::track::pt * 10000 .f - nround(aod::track::pt * 10000 .f)) < trackPtWeightMidPt.node() * 2 .f);
148166 Partition<soa::Filtered<TracksWithSelAndDcaMc>> highPtTracksMC = aod::track::pt > 5 .f;
149167
150168 std::array<int , 3 > pdgSignalParticleArray = {310 , 421 , 4122 }; // K0s, D0 and Lc
@@ -255,6 +273,11 @@ struct FilterTracks {
255273 }
256274 }
257275 PROCESS_SWITCH (FilterTracks, processData, " process data" , true );
276+ void processCollisions (CollisionsWithEvSel::iterator const & collision)
277+ {
278+ 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 ());
279+ }
280+ PROCESS_SWITCH (FilterTracks, processCollisions, " process collisions" , true );
258281
259282 void processMC (soa::Filtered<TracksWithSelAndDcaMc> const & tracks, aod::McParticles const & mcParticles)
260283 {
0 commit comments