Skip to content

Commit ab6398a

Browse files
Merge pull request #425 from romainschotter/david
Add multiplicity + centrality for Run 2 converted data
2 parents 3c38215 + c435422 commit ab6398a

File tree

2 files changed

+348
-11
lines changed

2 files changed

+348
-11
lines changed

Common/TableProducer/multCentTable.cxx

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

168199
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)