Skip to content

Commit 163a1f7

Browse files
authored
[PWGCF,PWGLF] Data model update (AliceO2Group#9510)
1 parent bb11a03 commit 163a1f7

File tree

10 files changed

+453
-317
lines changed

10 files changed

+453
-317
lines changed

PWGCF/Femto3D/DataModel/singletrackselector.h

Lines changed: 198 additions & 249 deletions
Large diffs are not rendered by default.

PWGCF/Femto3D/TableProducer/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# granted to it by virtue of its status as an Intergovernmental Organization
1010
# or submit itself to any jurisdiction.
1111

12-
add_subdirectory(Converters)
12+
#add_subdirectory(Converters)
1313

1414
o2physics_add_dpl_workflow(single-track-selector
1515
SOURCES singleTrackSelector.cxx
@@ -19,4 +19,9 @@ o2physics_add_dpl_workflow(single-track-selector
1919
o2physics_add_dpl_workflow(single-track-selector-extra
2020
SOURCES singleTrackSelectorExtra.cxx
2121
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
22+
COMPONENT_NAME Analysis)
23+
24+
o2physics_add_dpl_workflow(single-track-selector-pid-dummy
25+
SOURCES singleTrackSelectorPIDMaker.cxx
26+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
2227
COMPONENT_NAME Analysis)

PWGCF/Femto3D/TableProducer/singleTrackSelector.cxx

Lines changed: 36 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,16 @@ struct singleTrackSelector {
100100
Produces<o2::aod::SingleCollExtras> tableRowCollExtra;
101101
Produces<o2::aod::SingleTrackSels> tableRow;
102102
Produces<o2::aod::SingleTrkExtras> tableRowExtra;
103+
103104
Produces<o2::aod::SinglePIDEls> tableRowPIDEl;
104-
Produces<o2::aod::SinglePIDsITSPi> tableRowPIDITSPi;
105-
Produces<o2::aod::SinglePIDsITSKa> tableRowPIDITSKa;
106-
Produces<o2::aod::SinglePIDsITSPr> tableRowPIDITSPr;
105+
Produces<o2::aod::SinglePIDPis> tableRowPIDPi;
106+
Produces<o2::aod::SinglePIDKas> tableRowPIDKa;
107+
Produces<o2::aod::SinglePIDPrs> tableRowPIDPr;
108+
Produces<o2::aod::SinglePIDDes> tableRowPIDDe;
109+
Produces<o2::aod::SinglePIDHes> tableRowPIDHe;
110+
107111
Produces<o2::aod::SingleTrkMCs> tableRowMC;
112+
// Produces<o2::aod::SingleTrkMCExtras> tableRowMCExtra;
108113

109114
Filter eventFilter = (applyEvSel.node() == 0) ||
110115
((applyEvSel.node() == 1) && (aod::evsel::sel7 == true)) ||
@@ -237,26 +242,29 @@ struct singleTrackSelector {
237242
singletrackselector::packSymmetric<singletrackselector::binning::dca>(track.dcaZ()),
238243
singletrackselector::packInTable<singletrackselector::binning::chi2>(track.tpcChi2NCl()),
239244
singletrackselector::packInTable<singletrackselector::binning::chi2>(track.itsChi2NCl()),
240-
singletrackselector::packInTable<singletrackselector::binning::rowsOverFindable>(track.tpcCrossedRowsOverFindableCls()),
241-
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tofNSigmaPi()),
242-
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaPi()),
243-
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tofNSigmaKa()),
244-
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaKa()),
245-
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tofNSigmaPr()),
246-
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaPr()),
247-
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tofNSigmaDe()),
248-
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaDe()),
249-
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tofNSigmaHe()),
250-
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaHe()));
245+
singletrackselector::packInTable<singletrackselector::binning::rowsOverFindable>(track.tpcCrossedRowsOverFindableCls()));
251246

252247
tableRowExtra(track.tpcInnerParam(),
253248
track.tpcSignal(),
254249
track.beta());
255250

256-
tableRowPIDEl(singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaEl()));
257-
tableRowPIDITSPi(singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.itsNSigmaPi()));
258-
tableRowPIDITSKa(singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.itsNSigmaKa()));
259-
tableRowPIDITSPr(singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.itsNSigmaPr()));
251+
tableRowPIDEl(singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tofNSigmaEl()),
252+
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaEl()));
253+
254+
tableRowPIDPi(singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tofNSigmaPi()),
255+
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaPi()));
256+
257+
tableRowPIDKa(singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tofNSigmaKa()),
258+
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaKa()));
259+
260+
tableRowPIDPr(singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tofNSigmaPr()),
261+
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaPr()));
262+
263+
tableRowPIDDe(singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tofNSigmaDe()),
264+
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaDe()));
265+
266+
tableRowPIDHe(singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tofNSigmaHe()),
267+
singletrackselector::packSymmetric<singletrackselector::binning::nsigma>(track.tpcNSigmaHe()));
260268

261269
if constexpr (isMC) {
262270
int origin = -1;
@@ -277,6 +285,10 @@ struct singleTrackSelector {
277285
track.mcParticle().p(),
278286
track.mcParticle().eta(),
279287
track.mcParticle().phi());
288+
289+
// tableRowMCExtra(track.mcParticle().vx(),
290+
// track.mcParticle().vy(),
291+
// track.mcParticle().vz());
280292
}
281293
break; // break the loop with particlesToKeep after the 'if' condition is satisfied -- don't want double entries
282294
}
@@ -288,10 +300,6 @@ struct singleTrackSelector {
288300
aod::BCsWithTimestamps const&)
289301
{
290302

291-
auto tracksWithITSPid = soa::Attach<Trks,
292-
aod::pidits::ITSNSigmaPi,
293-
aod::pidits::ITSNSigmaKa,
294-
aod::pidits::ITSNSigmaPr>(tracks);
295303
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
296304
initCCDB(bc);
297305

@@ -320,7 +328,7 @@ struct singleTrackSelector {
320328
collision.posZ(),
321329
d_bz);
322330

323-
fillTrackTables<false>(tracksWithITSPid);
331+
fillTrackTables<false>(tracks);
324332
}
325333
}
326334
PROCESS_SWITCH(singleTrackSelector, processDataRun2, "process data Run2", false);
@@ -329,10 +337,7 @@ struct singleTrackSelector {
329337
soa::Filtered<Trks> const& tracks,
330338
aod::BCsWithTimestamps const&)
331339
{
332-
auto tracksWithITSPid = soa::Attach<Trks,
333-
aod::pidits::ITSNSigmaPi,
334-
aod::pidits::ITSNSigmaKa,
335-
aod::pidits::ITSNSigmaPr>(tracks);
340+
336341
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
337342
initCCDB(bc);
338343

@@ -403,7 +408,7 @@ struct singleTrackSelector {
403408
hadronicRate,
404409
occupancy);
405410

406-
fillTrackTables<false>(tracksWithITSPid);
411+
fillTrackTables<false>(tracks);
407412
}
408413
}
409414
PROCESS_SWITCH(singleTrackSelector, processDataRun3, "process data Run3", true);
@@ -413,10 +418,6 @@ struct singleTrackSelector {
413418
aod::McParticles const&, aod::BCsWithTimestamps const&)
414419
{
415420

416-
auto tracksWithITSPid = soa::Attach<soa::Join<Trks, aod::McTrackLabels>,
417-
aod::pidits::ITSNSigmaPi,
418-
aod::pidits::ITSNSigmaKa,
419-
aod::pidits::ITSNSigmaPr>(tracks);
420421
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
421422
initCCDB(bc);
422423

@@ -444,7 +445,7 @@ struct singleTrackSelector {
444445
collision.posZ(),
445446
d_bz);
446447

447-
fillTrackTables<true>(tracksWithITSPid);
448+
fillTrackTables<true>(tracks);
448449
}
449450
}
450451
PROCESS_SWITCH(singleTrackSelector, processMCRun2, "process MC Run2", false);
@@ -454,10 +455,7 @@ struct singleTrackSelector {
454455
aod::McParticles const& mcParticles,
455456
aod::BCsWithTimestamps const&)
456457
{
457-
auto tracksWithITSPid = soa::Attach<soa::Join<Trks, aod::McTrackLabels>,
458-
aod::pidits::ITSNSigmaPi,
459-
aod::pidits::ITSNSigmaKa,
460-
aod::pidits::ITSNSigmaPr>(tracks);
458+
461459
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
462460
initCCDB(bc);
463461
double hadronicRate = 0.;
@@ -519,7 +517,7 @@ struct singleTrackSelector {
519517
hadronicRate,
520518
occupancy);
521519

522-
fillTrackTables<true>(tracksWithITSPid);
520+
fillTrackTables<true>(tracks);
523521

524522
if (!enable_gen_info) {
525523
return;

PWGCF/Femto3D/TableProducer/singleTrackSelectorExtra.cxx

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,27 +34,13 @@ struct singleTrackSelectorDummy {
3434

3535
Produces<o2::aod::SingleCollExtras> tableRowCollExtra;
3636

37-
void processDefault(aod::SingleCollSels::iterator const&)
37+
void process(aod::SingleCollSels::iterator const&)
3838
{
3939
uint64_t selection = 0;
4040
tableRowCollExtra(selection,
4141
0.0,
4242
0);
4343
}
44-
PROCESS_SWITCH(singleTrackSelectorDummy, processDefault, "filling the CollExtra table with dummy values", true);
45-
46-
void processExtra_v0(soa::Join<aod::SingleCollSels, aod::SingleCollExtras_v0>::iterator const& collision)
47-
{
48-
uint64_t selection = 0;
49-
selection |= collision.isNoSameBunchPileup() ? BIT(evsel::kNoSameBunchPileup) : 0;
50-
selection |= collision.isGoodZvtxFT0vsPV() ? BIT(evsel::kIsGoodZvtxFT0vsPV) : 0;
51-
selection |= collision.isVertexITSTPC() ? BIT(evsel::kIsVertexITSTPC) : 0;
52-
53-
tableRowCollExtra(selection,
54-
collision.hadronicRate(),
55-
0);
56-
}
57-
PROCESS_SWITCH(singleTrackSelectorDummy, processExtra_v0, "process using info from the previous version of stored CollExtra table", false);
5844
};
5945

6046
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
//
12+
/// \file singleTrackSelectorPIDMaker.cxx
13+
/// \brief creates dummy tables for PID columns that are not in the derived data
14+
/// \author Sofia Tomassini, Gleb Romanenko, Nicolò Jacazio
15+
/// \since 22 January 2025
16+
17+
#include <fairlogger/Logger.h>
18+
#include <Framework/AnalysisDataModel.h>
19+
20+
#include <vector>
21+
#include <string>
22+
#include <unordered_map>
23+
24+
#include "PWGCF/Femto3D/DataModel/singletrackselector.h"
25+
26+
#include "Framework/AnalysisTask.h"
27+
#include "Framework/runDataProcessing.h"
28+
29+
using namespace o2;
30+
using namespace o2::framework;
31+
using namespace o2::framework::expressions;
32+
using namespace o2::track;
33+
using namespace o2::aod;
34+
//::singletrackselector; // the namespace defined in .h
35+
36+
struct StPidEl {
37+
Produces<o2::aod::SinglePIDEls> table;
38+
void process(o2::aod::SingleTrackSels const& tracks)
39+
{
40+
table.reserve(tracks.size());
41+
for (int i = 0; i < tracks.size(); i++) {
42+
table(singletrackselector::binning::nsigma::underflowBin,
43+
singletrackselector::binning::nsigma::underflowBin);
44+
}
45+
}
46+
};
47+
struct StPidPi {
48+
Produces<o2::aod::SinglePIDPis> table;
49+
void process(o2::aod::SingleTrackSels const& tracks)
50+
{
51+
table.reserve(tracks.size());
52+
for (int i = 0; i < tracks.size(); i++) {
53+
table(singletrackselector::binning::nsigma::underflowBin,
54+
singletrackselector::binning::nsigma::underflowBin);
55+
}
56+
}
57+
};
58+
struct StPidKa {
59+
Produces<o2::aod::SinglePIDKas> table;
60+
void process(o2::aod::SingleTrackSels const& tracks)
61+
{
62+
table.reserve(tracks.size());
63+
for (int i = 0; i < tracks.size(); i++) {
64+
table(singletrackselector::binning::nsigma::underflowBin,
65+
singletrackselector::binning::nsigma::underflowBin);
66+
}
67+
}
68+
};
69+
struct StPidPr {
70+
Produces<o2::aod::SinglePIDPrs> table;
71+
void process(o2::aod::SingleTrackSels const& tracks)
72+
{
73+
table.reserve(tracks.size());
74+
for (int i = 0; i < tracks.size(); i++) {
75+
table(singletrackselector::binning::nsigma::underflowBin,
76+
singletrackselector::binning::nsigma::underflowBin);
77+
}
78+
}
79+
};
80+
struct StPidDe {
81+
Produces<o2::aod::SinglePIDDes> table;
82+
void process(o2::aod::SingleTrackSels const& tracks)
83+
{
84+
table.reserve(tracks.size());
85+
for (int i = 0; i < tracks.size(); i++) {
86+
table(singletrackselector::binning::nsigma::underflowBin,
87+
singletrackselector::binning::nsigma::underflowBin);
88+
}
89+
}
90+
};
91+
struct StPidHe {
92+
Produces<o2::aod::SinglePIDHes> table;
93+
void process(o2::aod::SingleTrackSels const& tracks)
94+
{
95+
table.reserve(tracks.size());
96+
for (int i = 0; i < tracks.size(); i++) {
97+
table(singletrackselector::binning::nsigma::underflowBin,
98+
singletrackselector::binning::nsigma::underflowBin);
99+
}
100+
}
101+
};
102+
103+
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
104+
{
105+
auto workflow = WorkflowSpec{};
106+
107+
// Check if 'aod-metadata-tables' option is available in the config context
108+
if (cfgc.options().hasOption("aod-metadata-tables")) {
109+
const std::vector<std::string> tables = cfgc.options().get<std::vector<std::string>>("aod-metadata-tables");
110+
111+
// Map of table names to their corresponding converter task functions
112+
std::unordered_map<std::string, std::vector<std::function<void()>>> tableToTasks = {
113+
{"O2singlepidel", {[&]() { workflow.push_back(adaptAnalysisTask<StPidEl>(cfgc)); }}},
114+
{"O2singlepidpi", {[&]() { workflow.push_back(adaptAnalysisTask<StPidPi>(cfgc)); }}},
115+
{"O2singlepidka", {[&]() { workflow.push_back(adaptAnalysisTask<StPidKa>(cfgc)); }}},
116+
{"O2singlepidpr", {[&]() { workflow.push_back(adaptAnalysisTask<StPidPr>(cfgc)); }}},
117+
{"O2singlepidde", {[&]() { workflow.push_back(adaptAnalysisTask<StPidDe>(cfgc)); }}},
118+
{"O2singlepidhe", {[&]() { workflow.push_back(adaptAnalysisTask<StPidHe>(cfgc)); }}}
119+
120+
};
121+
122+
for (auto const& tableInWorkflow : tables) {
123+
LOG(info) << tableInWorkflow;
124+
}
125+
126+
// Iterate through the tables and process based on the mapping
127+
for (auto const& table : tableToTasks) {
128+
bool foundIt = false;
129+
for (auto const& tableInWorkflow : tables) {
130+
if (tableInWorkflow == table.first) {
131+
foundIt = true;
132+
break;
133+
}
134+
}
135+
if (foundIt)
136+
continue;
137+
for (auto const& task : table.second) {
138+
LOG(info) << "Adding task " << table.first;
139+
task();
140+
}
141+
}
142+
} else {
143+
LOG(warning) << "AOD converter: No tables found in the meta data";
144+
}
145+
return workflow;
146+
}

PWGCF/Femto3D/Tasks/femto3dPairTask.cxx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
#include <random>
1919
#include <chrono>
2020
#include <vector>
21+
#include <map>
22+
#include <memory>
23+
#include <utility>
2124
#include <TParameter.h>
2225
#include <TH1F.h>
2326

@@ -118,7 +121,7 @@ struct FemtoCorrelations {
118121
std::pair<int, std::vector<float>> TOFcuts_2;
119122

120123
using FilteredCollisions = soa::Join<aod::SingleCollSels, aod::SingleCollExtras>;
121-
using FilteredTracks = aod::SingleTrackSels;
124+
using FilteredTracks = soa::Join<aod::SingleTrackSels, aod::SinglePIDPis, aod::SinglePIDKas, aod::SinglePIDPrs, aod::SinglePIDDes, aod::SinglePIDHes>;
122125

123126
typedef std::shared_ptr<soa::Filtered<FilteredTracks>::iterator> trkType;
124127
typedef std::shared_ptr<soa::Filtered<FilteredCollisions>::iterator> colType;

PWGCF/Femto3D/Tasks/femto3dPairTaskMC.cxx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
/// \since 31 May 2023
1515

1616
#include <vector>
17+
#include <map>
18+
#include <memory>
19+
#include <utility>
1720
#include <TParameter.h>
1821
#include <TH1F.h>
1922

@@ -100,7 +103,7 @@ struct FemtoCorrelationsMC {
100103
std::pair<int, std::vector<float>> TOFcuts_2;
101104

102105
using FilteredCollisions = soa::Join<aod::SingleCollSels, aod::SingleCollExtras>;
103-
using FilteredTracks = soa::Join<aod::SingleTrackSels, aod::SingleTrkMCs>;
106+
using FilteredTracks = soa::Join<aod::SingleTrackSels, aod::SingleTrkMCs, aod::SinglePIDPis, aod::SinglePIDKas, aod::SinglePIDPrs, aod::SinglePIDDes, aod::SinglePIDHes>;
104107

105108
typedef std::shared_ptr<soa::Filtered<FilteredTracks>::iterator> trkType;
106109
typedef std::shared_ptr<soa::Filtered<FilteredCollisions>::iterator> colType;

0 commit comments

Comments
 (0)