Skip to content

Commit 48404ce

Browse files
authored
adding transient collision id table for v0 and cascades (#4167)
1 parent 4412e19 commit 48404ce

4 files changed

Lines changed: 86 additions & 5 deletions

File tree

Analysis/DataModel/src/dumpDataModel.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,8 @@ edge[dir=back, arrowtail=empty]
154154
dumpTable<MuonClusters>();
155155
dumpTable<Zdcs>();
156156
dumpTable<Run2V0s>();
157-
dumpTable<V0s>();
158-
dumpTable<Cascades>();
157+
dumpTable<StoredV0s>();
158+
dumpTable<StoredCascades>();
159159
dumpTable<BCs>();
160160
dumpTable<FT0s>();
161161
dumpTable<FV0s>();

Analysis/Tutorials/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,6 @@ o2_add_dpl_workflow(custom-index
112112
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisCore O2::AnalysisDataModel
113113
COMPONENT_NAME AnalysisTutorial)
114114

115+
o2_add_dpl_workflow(vzero-iteration
116+
SOURCES src/vzeroIteration.cxx
117+
COMPONENT_NAME AnalysisTutorial)
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
// Copyright CERN and copyright holders of ALICE O2. This software is
2+
// distributed under the terms of the GNU General Public License v3 (GPL
3+
// Version 3), copied verbatim in the file "COPYING".
4+
//
5+
// See http://alice-o2.web.cern.ch/license for full licensing information.
6+
//
7+
// In applying this license CERN does not waive the privileges and immunities
8+
// granted to it by virtue of its status as an Intergovernmental Organization
9+
// or submit itself to any jurisdiction.
10+
#include "Framework/runDataProcessing.h"
11+
#include "Framework/AnalysisTask.h"
12+
#include "Framework/AnalysisDataModel.h"
13+
14+
using namespace o2;
15+
using namespace o2::framework;
16+
17+
struct ATask {
18+
Produces<aod::TransientV0s> transientV0s;
19+
Produces<aod::TransientCascades> transientCascades;
20+
21+
void process(aod::StoredV0s const& v0s, aod::StoredCascades const& cascades, aod::Tracks const& tracks)
22+
{
23+
for (auto& v0 : v0s) {
24+
transientV0s(v0.posTrack().collisionId());
25+
}
26+
for (auto& cascade : cascades) {
27+
transientCascades(cascade.bachelor().collisionId());
28+
}
29+
}
30+
};
31+
32+
struct BTask {
33+
void process(aod::V0s const& v0s, aod::Tracks const& tracks)
34+
{
35+
for (auto& v0 : v0s) {
36+
LOGF(DEBUG, "V0 (%d, %d, %d)", v0.posTrack().collisionId(), v0.negTrack().collisionId(), v0.collisionId());
37+
}
38+
}
39+
};
40+
41+
struct CTask {
42+
void process(aod::Cascades const& cascades, aod::Tracks const& tracks)
43+
{
44+
for (auto& cascade : cascades) {
45+
LOGF(DEBUG, "Cascade (%d, %d)", cascade.bachelor().collisionId(), cascade.collisionId());
46+
}
47+
}
48+
};
49+
50+
// Grouping
51+
struct DTask {
52+
void process(aod::Collision const& collision, aod::V0s const& v0s, aod::Tracks const& tracks)
53+
{
54+
LOGF(INFO, "Collision %d has %d V0s", collision.globalIndex(), v0s.size());
55+
56+
for (auto& v0 : v0s) {
57+
LOGF(DEBUG, "Collision %d V0 %d (%d, %d)", collision.globalIndex(), v0.globalIndex(), v0.posTrackId(), v0.negTrackId());
58+
}
59+
}
60+
};
61+
62+
WorkflowSpec defineDataProcessing(ConfigContext const&)
63+
{
64+
return WorkflowSpec{
65+
adaptAnalysisTask<ATask>("produce-v0index"),
66+
adaptAnalysisTask<BTask>("consume-v0"),
67+
adaptAnalysisTask<CTask>("consume-cascades"),
68+
adaptAnalysisTask<DTask>("consume-grouped-v0"),
69+
};
70+
}

Framework/Core/include/Framework/AnalysisDataModel.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -441,19 +441,27 @@ namespace v0
441441
{
442442
DECLARE_SOA_INDEX_COLUMN_FULL(PosTrack, posTrack, int, Tracks, "fPosTrackID");
443443
DECLARE_SOA_INDEX_COLUMN_FULL(NegTrack, negTrack, int, Tracks, "fNegTrackID");
444+
DECLARE_SOA_INDEX_COLUMN(Collision, collision);
444445
} // namespace v0
445446

446-
DECLARE_SOA_TABLE(V0s, "AOD", "V0", v0::PosTrackId, v0::NegTrackId);
447+
DECLARE_SOA_TABLE(StoredV0s, "AOD", "O2v0", o2::soa::Index<>, v0::PosTrackId, v0::NegTrackId);
448+
DECLARE_SOA_TABLE(TransientV0s, "AOD", "V0INDEX", v0::CollisionId);
449+
450+
using V0s = soa::Join<TransientV0s, StoredV0s>;
447451
using V0 = V0s::iterator;
448452

449453
namespace cascade
450454
{
451455
DECLARE_SOA_INDEX_COLUMN(V0, v0);
452456
DECLARE_SOA_INDEX_COLUMN_FULL(Bachelor, bachelor, int, Tracks, "fTracksID");
457+
DECLARE_SOA_INDEX_COLUMN(Collision, collision);
453458
} // namespace cascade
454459

455-
DECLARE_SOA_TABLE(Cascades, "AOD", "CASCADE", cascade::V0Id, cascade::BachelorId);
456-
using Casecade = Cascades::iterator;
460+
DECLARE_SOA_TABLE(StoredCascades, "AOD", "O2cascade", o2::soa::Index<>, cascade::V0Id, cascade::BachelorId);
461+
DECLARE_SOA_TABLE(TransientCascades, "AOD", "CASCADEINDEX", cascade::CollisionId);
462+
463+
using Cascades = soa::Join<TransientCascades, StoredCascades>;
464+
using Cascade = Cascades::iterator;
457465

458466
// ---- LEGACY tables ----
459467

0 commit comments

Comments
 (0)