@@ -64,6 +64,7 @@ struct MultCentTable {
6464 // slicers
6565 Preslice<soa::Join<aod::TracksIU, aod::TracksExtra>> slicerTracksIU = o2::aod::track::collisionId;
6666 Preslice<soa::Join<aod::TracksIU, aod::TracksExtra, aod::TrackSelection, aod::TrackSelectionExtension>> slicerTracksIUwithSelections = o2::aod::track::collisionId;
67+ Preslice<soa::Join<aod::Tracks, aod::TracksExtra>> slicerTrackRun2 = o2::aod::track::collisionId;
6768
6869 void init (o2::framework::InitContext& initContext)
6970 {
@@ -76,9 +77,23 @@ struct MultCentTable {
7677 module .init (opts, initContext);
7778 }
7879
79- void processRun2 (aod::Collisions const & collisions, soa::Join<aod::StoredTracksIU, aod::TracksCovIU, aod::TracksExtra> const & tracks, aod::Collisions const &, aod::BCs const & bcs)
80+ void processRun2 (soa::Join<aod::Collisions, aod::EvSels, aod::Run2MatchedSparse> const & collisions,
81+ soa::Join<aod::Tracks, aod::TracksExtra> const & tracks,
82+ soa::Join<aod::BCs, aod::Run2BCInfos, aod::Timestamps> const & bcs,
83+ aod::Zdcs const &,
84+ aod::FV0As const &,
85+ aod::FV0Cs const &,
86+ aod::FT0s const &)
8087 {
81- // WIP
88+ mults.clear ();
89+ for (auto const & collision : collisions) {
90+ o2::common::multiplicity::multEntry mult;
91+ // const auto& bc = collision.bc_as<soa::Join<aod::BCs, aod::Run2BCInfos, aod::Timestamps, aod::Run2MatchedToBCSparse>>();
92+ const uint64_t collIdx = collision.globalIndex ();
93+ auto tracksThisCollision = tracks.sliceBy (slicerTrackRun2, collIdx);
94+ mult = module .collisionProcessRun2 (collision, tracksThisCollision, bcs, products);
95+ mults.push_back (mult);
96+ }
8297 }
8398
8499 void processRun3 (soa::Join<aod::Collisions, aod::EvSels> const & collisions,
@@ -140,7 +155,22 @@ struct MultCentTable {
140155 products.tableExtraMult2MCExtras (collision.mcCollisionId ());
141156 }
142157 }
143- void processCentrality (aod::Collisions const & collisions, soa::Join<aod::BCs, aod::BcSels, aod::Timestamps> const & bcs, aod::FT0s const &)
158+ void processCentralityRun2 (aod::Collisions const & collisions, soa::Join<aod::BCs, aod::Run2BCInfos, aod::Timestamps> const & bcs)
159+ {
160+ // it is important that this function is at the end of the other process functions.
161+ // it requires `mults` to be properly set, which will only happen after the other process
162+ // functions have been called.
163+
164+ // internally, the function below will do nothing if no centrality is requested.
165+ // it is thus safer to always keep the actual process function for centrality
166+ // generation to true, since the requisites for being in this context are
167+ // always fulfilled
168+ if (collisions.size () != mults.size ()) {
169+ LOGF (fatal, " Size of collisions doesn't match size of multiplicity buffer!" );
170+ }
171+ module .generateCentralitiesRun2 (ccdb, metadataInfo, bcs, mults, products);
172+ }
173+ void processCentralityRun3 (aod::Collisions const & collisions, soa::Join<aod::BCs, aod::BcSels, aod::Timestamps> const & bcs, aod::FT0s const &)
144174 {
145175 // it is important that this function is at the end of the other process functions.
146176 // it requires `mults` to be properly set, which will only happen after the other process
@@ -153,7 +183,7 @@ struct MultCentTable {
153183 if (collisions.size () != mults.size ()) {
154184 LOGF (fatal, " Size of collisions doesn't match size of multiplicity buffer!" );
155185 }
156- module .generateCentralities (ccdb, metadataInfo, bcs, mults, products);
186+ module .generateCentralitiesRun3 (ccdb, metadataInfo, bcs, mults, products);
157187 }
158188
159189 PROCESS_SWITCH (MultCentTable, processRun2, " Process Run 2" , false );
@@ -162,7 +192,8 @@ struct MultCentTable {
162192 PROCESS_SWITCH (MultCentTable, processMFT, " Process MFT info" , false );
163193 PROCESS_SWITCH (MultCentTable, processMonteCarlo, " Process Monte Carlo information" , false );
164194 PROCESS_SWITCH (MultCentTable, processMonteCarlo2Mults, " Process Monte Carlo information" , false );
165- PROCESS_SWITCH (MultCentTable, processCentrality, " Generate centralities" , true );
195+ PROCESS_SWITCH (MultCentTable, processCentralityRun2, " Generate Run 2 centralities" , false );
196+ PROCESS_SWITCH (MultCentTable, processCentralityRun3, " Generate Run 3 centralities" , true );
166197};
167198
168199WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments