Skip to content

Commit 83c811b

Browse files
committed
Fix ALICE 3 DQ datamodel naming
1 parent 78c1280 commit 83c811b

3 files changed

Lines changed: 428 additions & 100 deletions

File tree

Lines changed: 335 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,335 @@
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 ReducedTablesAlice3.h
13+
///
14+
/// \brief Reduced DQ table definitions for ALICE 3
15+
///
16+
/// \author Alexander Tiekoetter (atiekoet@cern.ch) University of Muenster
17+
18+
#ifndef ALICE3_DATAMODEL_REDUCEDTABLESALICE3_H_
19+
#define ALICE3_DATAMODEL_REDUCEDTABLESALICE3_H_
20+
21+
#include "PWGDQ/DataModel/ReducedInfoTables.h"
22+
23+
#include "ALICE3/DataModel/OTFPIDTrk.h"
24+
#include "ALICE3/DataModel/OTFRICH.h"
25+
#include "ALICE3/DataModel/OTFTOF.h"
26+
27+
#include <Framework/ASoA.h>
28+
#include <Framework/AnalysisDataModel.h>
29+
#include <Framework/DataTypes.h>
30+
31+
#include <cmath>
32+
#include <cstdint>
33+
34+
namespace o2::aod
35+
{
36+
namespace reducedeventalice3
37+
{
38+
DECLARE_SOA_COLUMN(MultDensity, multDensity, float);
39+
DECLARE_SOA_COLUMN(MCPosX, mcPosX, float); //! MC event position X
40+
DECLARE_SOA_COLUMN(MCPosY, mcPosY, float); //! MC event position Y
41+
DECLARE_SOA_COLUMN(MCPosZ, mcPosZ, float); //! MC event position Z
42+
} // namespace reducedeventalice3
43+
44+
namespace reducedeventmcalice3
45+
{
46+
DECLARE_SOA_COLUMN(MultMCNParticlesEta05, multMCNParticlesEta05, float);
47+
DECLARE_SOA_COLUMN(MultMCNParticlesEta08, multMCNParticlesEta08, float);
48+
DECLARE_SOA_COLUMN(MultMCNParticlesEta10, multMCNParticlesEta10, float);
49+
DECLARE_SOA_COLUMN(MultMCNParticlesEta20, multMCNParticlesEta20, float);
50+
DECLARE_SOA_COLUMN(MultMCNParticlesEta40, multMCNParticlesEta40, float);
51+
} // namespace reducedeventmcalice3
52+
53+
DECLARE_SOA_TABLE_STAGED(ReA3Events, "REA3EVENT", //! Main event information table
54+
o2::soa::Index<>,
55+
collision::PosX, collision::PosY, collision::PosZ, collision::NumContrib,
56+
collision::CollisionTime, collision::CollisionTimeRes, reducedeventalice3::MultDensity);
57+
58+
DECLARE_SOA_TABLE(ReducedA3EventsVtxCov, "AOD", "REA3VTXCOV", //! Event vertex covariance matrix
59+
collision::CovXX, collision::CovXY, collision::CovXZ,
60+
collision::CovYY, collision::CovYZ, collision::CovZZ, collision::Chi2);
61+
62+
DECLARE_SOA_TABLE(ReducedA3EventsInfo, "AOD", "REA3EVENTINFO", //! Main event index table
63+
reducedevent::CollisionId);
64+
65+
DECLARE_SOA_TABLE(ReA3MCEvents, "AOD", "REA3MCEVENT", //! Event level MC truth information
66+
o2::soa::Index<>,
67+
mccollision::GeneratorsID, reducedeventalice3::MCPosX, reducedeventalice3::MCPosY, reducedeventalice3::MCPosZ,
68+
mccollision::T, mccollision::Weight, mccollision::ImpactParameter);
69+
70+
using ReducedA3MCEvent = ReA3MCEvents::iterator;
71+
using ReA3Event = ReA3Events::iterator;
72+
73+
namespace reducedtrackalice3
74+
{
75+
// basic track information
76+
DECLARE_SOA_INDEX_COLUMN(ReA3Event, rea3event); //!
77+
DECLARE_SOA_INDEX_COLUMN(Track, track); //!
78+
// ---- flags reserved for storing various information during filtering
79+
DECLARE_SOA_BITMAP_COLUMN(FilteringFlags, filteringFlags, 64); //!
80+
// -----------------------------------------------------
81+
82+
DECLARE_SOA_COLUMN(IsReconstructed, isReconstructed, bool);
83+
DECLARE_SOA_COLUMN(NSiliconHits, nSiliconHits, int);
84+
DECLARE_SOA_COLUMN(NTPCHits, nTPCHits, int);
85+
86+
DECLARE_SOA_COLUMN(Pt, pt, float); //!
87+
DECLARE_SOA_COLUMN(Eta, eta, float); //!
88+
DECLARE_SOA_COLUMN(Phi, phi, float); //!
89+
DECLARE_SOA_COLUMN(Sign, sign, int); //!
90+
DECLARE_SOA_COLUMN(IsAmbiguous, isAmbiguous, int); //!
91+
DECLARE_SOA_COLUMN(DcaXY, dcaXY, float); //!
92+
DECLARE_SOA_COLUMN(DcaZ, dcaZ, float); //!
93+
DECLARE_SOA_COLUMN(DetectorMap, detectorMap, uint8_t); //! Detector map: see enum DetectorMapEnum
94+
DECLARE_SOA_INDEX_COLUMN(Collision, collision); //!
95+
DECLARE_SOA_DYNAMIC_COLUMN(HasITS, hasITS, //! Flag to check if track has a ITS match
96+
[](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::ITS; });
97+
DECLARE_SOA_DYNAMIC_COLUMN(HasTPC, hasTPC, //! Flag to check if track has a TPC match
98+
[](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::TPC; });
99+
DECLARE_SOA_DYNAMIC_COLUMN(HasTRD, hasTRD, //! Flag to check if track has a TRD match
100+
[](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::TRD; });
101+
DECLARE_SOA_DYNAMIC_COLUMN(HasTOF, hasTOF, //! Flag to check if track has a TOF measurement
102+
[](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::TOF; });
103+
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //!
104+
[](float pt, float phi) -> float { return pt * std::cos(phi); });
105+
DECLARE_SOA_DYNAMIC_COLUMN(Py, py, //!
106+
[](float pt, float phi) -> float { return pt * std::sin(phi); });
107+
DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, //!
108+
[](float pt, float eta) -> float { return pt * std::sinh(eta); });
109+
DECLARE_SOA_DYNAMIC_COLUMN(P, p, //!
110+
[](float pt, float eta) -> float { return pt * std::cosh(eta); });
111+
} // namespace reducedtrackalice3
112+
113+
// basic track information
114+
DECLARE_SOA_TABLE(ReA3Tracks, "AOD", "REA3TRACK", //!
115+
o2::soa::Index<>, reducedtrackalice3::ReA3EventId, reducedtrackalice3::FilteringFlags,
116+
reducedtrackalice3::Pt, reducedtrackalice3::Eta, reducedtrackalice3::Phi, reducedtrackalice3::Sign, reducedtrackalice3::IsAmbiguous,
117+
reducedtrackalice3::Px<reducedtrackalice3::Pt, reducedtrackalice3::Phi>,
118+
reducedtrackalice3::Py<reducedtrackalice3::Pt, reducedtrackalice3::Phi>,
119+
reducedtrackalice3::Pz<reducedtrackalice3::Pt, reducedtrackalice3::Eta>,
120+
reducedtrackalice3::P<reducedtrackalice3::Pt, reducedtrackalice3::Eta>);
121+
122+
DECLARE_SOA_TABLE(ReducedA3TracksBarrelCov, "AOD", "REA3BARRELCOV", //!
123+
track::CYY, track::CZY, track::CZZ, track::CSnpY, track::CSnpZ,
124+
track::CSnpSnp, track::CTglY, track::CTglZ, track::CTglSnp, track::CTglTgl,
125+
track::C1PtY, track::C1PtZ, track::C1PtSnp, track::C1PtTgl, track::C1Pt21Pt2);
126+
127+
namespace reducedA3trackMC
128+
{
129+
DECLARE_SOA_INDEX_COLUMN(ReA3MCEvent, reA3MCEvent); //!
130+
DECLARE_SOA_COLUMN(McReducedFlags, mcReducedFlags, uint16_t); //! Flags to hold compressed MC selection information
131+
DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Mother0, mother0, int, "ReA3MCTracks_Mother0"); //! Track index of the first mother
132+
DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Mother1, mother1, int, "ReA3MCTracks_Mother1"); //! Track index of the last mother
133+
DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Daughter0, daughter0, int, "ReA3MCTracks_Daughter0"); //! Track index of the first daughter
134+
DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Daughter1, daughter1, int, "ReA3MCTracks_Daughter1"); //! Track index of the last daughter
135+
DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN(Mothers, mothers); //! Mother tracks (possible empty) array. Iterate over mcParticle.mothers_as<aod::McParticles>())
136+
DECLARE_SOA_SELF_SLICE_INDEX_COLUMN(Daughters, daughters); //! Daughter tracks (possibly empty) slice. Check for non-zero with mcParticle.has_daughters(). Iterate over mcParticle.daughters_as<aod::McParticles>())
137+
DECLARE_SOA_COLUMN(Pt, pt, float); //!
138+
DECLARE_SOA_COLUMN(Eta, eta, float); //!
139+
DECLARE_SOA_COLUMN(Phi, phi, float); //!
140+
DECLARE_SOA_COLUMN(E, e, float); //!
141+
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //!
142+
[](float pt, float phi) -> float { return pt * std::cos(phi); });
143+
DECLARE_SOA_DYNAMIC_COLUMN(Py, py, //!
144+
[](float pt, float phi) -> float { return pt * std::sin(phi); });
145+
DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, //!
146+
[](float pt, float eta) -> float { return pt * std::sinh(eta); });
147+
DECLARE_SOA_DYNAMIC_COLUMN(P, p, //!
148+
[](float pt, float eta) -> float { return pt * std::cosh(eta); });
149+
DECLARE_SOA_DYNAMIC_COLUMN(Y, y, //! Particle rapidity
150+
[](float pt, float eta, float e) -> float {
151+
float pz = pt * std::sinh(eta);
152+
if ((e - pz) > static_cast<float>(1e-7)) {
153+
return 0.5f * std::log((e + pz) / (e - pz));
154+
} else {
155+
return -999.0f;
156+
}
157+
});
158+
} // namespace reducedA3trackMC
159+
160+
// NOTE: This table is nearly identical to the one from Framework (except that it points to the event ID, not the BC id)
161+
// This table contains all MC truth tracks (both barrel and muon)
162+
DECLARE_SOA_TABLE(ReA3MCTracks, "AOD", "REA3MCTRACK", //! MC track information (on disk)
163+
o2::soa::Index<>, reducedA3trackMC::ReA3MCEventId,
164+
mcparticle::PdgCode, mcparticle::StatusCode, mcparticle::Flags,
165+
reducedA3trackMC::MothersIds, reducedA3trackMC::DaughtersIdSlice,
166+
mcparticle::Weight,
167+
reducedA3trackMC::Pt, reducedA3trackMC::Eta, reducedA3trackMC::Phi, reducedA3trackMC::E,
168+
mcparticle::Vx, mcparticle::Vy, mcparticle::Vz, mcparticle::Vt,
169+
reducedA3trackMC::McReducedFlags,
170+
reducedA3trackMC::Px<reducedA3trackMC::Pt, reducedA3trackMC::Phi>,
171+
reducedA3trackMC::Py<reducedA3trackMC::Pt, reducedA3trackMC::Phi>,
172+
reducedA3trackMC::Pz<reducedA3trackMC::Pt, reducedA3trackMC::Eta>,
173+
reducedA3trackMC::P<reducedA3trackMC::Pt, reducedA3trackMC::Eta>,
174+
reducedA3trackMC::Y<reducedA3trackMC::Pt, reducedA3trackMC::Eta, reducedA3trackMC::E>,
175+
mcparticle::ProducedByGenerator<mcparticle::Flags>,
176+
mcparticle::FromBackgroundEvent<mcparticle::Flags>,
177+
mcparticle::GetGenStatusCode<mcparticle::Flags, mcparticle::StatusCode>,
178+
mcparticle::GetProcess<mcparticle::Flags, mcparticle::StatusCode>,
179+
mcparticle::GetHepMCStatusCode<mcparticle::Flags, mcparticle::StatusCode>,
180+
mcparticle::IsPhysicalPrimary<mcparticle::Flags>);
181+
182+
using ReA3MCTrack = ReA3MCTracks::iterator;
183+
184+
namespace reduceda3barreltracklabel
185+
{
186+
DECLARE_SOA_INDEX_COLUMN(ReA3MCTrack, reA3MCTrack); //!
187+
DECLARE_SOA_COLUMN(McMask, mcMask, uint16_t);
188+
} // namespace reduceda3barreltracklabel
189+
190+
// NOTE: MC labels. This table has one entry for each reconstructed track (joinable with the track tables)
191+
// The McParticleId points to the position of the MC truth track from the ReducedTracksMC table
192+
DECLARE_SOA_TABLE(ReducedA3TracksBarrelLabels, "AOD", "REA3BARLA", //!
193+
reduceda3barreltracklabel::ReA3MCTrackId, reduceda3barreltracklabel::McMask, reducedA3trackMC::McReducedFlags);
194+
195+
using ReducedA3TrackBarrelLabel = ReducedA3TracksBarrelLabels::iterator;
196+
197+
DECLARE_SOA_TABLE(ReducedA3TracksBarrel, "AOD", "REA3BARREL",
198+
track::X, track::Alpha, track::IsWithinBeamPipe<track::X>,
199+
track::Y, track::Z, track::Snp, track::Tgl, track::Signed1Pt,
200+
track::Flags, track::ITSClusterMap, track::ITSChi2NCl,
201+
reducedtrackalice3::IsReconstructed, reducedtrackalice3::NSiliconHits,
202+
reducedtrackalice3::NTPCHits, track::Length, reducedtrack::DcaXY, reducedtrack::DcaZ,
203+
track::IsPVContributor<track::Flags>);
204+
205+
// barrel collision information (joined with ReducedTracks) allowing to connect different tables (cross PWGs)
206+
DECLARE_SOA_TABLE(ReducedA3TracksBarrelInfo, "AOD", "REA3BARRELINFO",
207+
reducedtrackalice3::CollisionId, collision::PosX, collision::PosY, collision::PosZ, reducedtrackalice3::TrackId);
208+
209+
using ReducedA3Track = ReA3Tracks::iterator;
210+
using ReducedA3TrackBarrel = ReducedA3TracksBarrel::iterator;
211+
using ReducedA3TrackBarrelCov = ReducedA3TracksBarrelCov::iterator;
212+
using ReducedA3TrackBarrelInfo = ReducedA3TracksBarrelInfo::iterator;
213+
214+
namespace reducedeventlabela3
215+
{
216+
DECLARE_SOA_INDEX_COLUMN(ReA3MCEvent, reA3MCEvent); //! MC collision
217+
DECLARE_SOA_COLUMN(McMask, mcMask, uint16_t); //! Bit mask to indicate collision mismatches (bit ON means mismatch). Bit 15: indicates negative label
218+
} // namespace reducedeventlabela3
219+
220+
DECLARE_SOA_TABLE(ReducedA3MCEventLabels, "AOD", "REA3MCCOLLBL", //! Table joined to the ReducedEvents table containing the MC index
221+
reducedeventlabela3::ReA3MCEventId, reducedeventlabela3::McMask);
222+
223+
using ReducedA3MCEventLabel = ReducedA3MCEventLabels::iterator;
224+
225+
namespace reducedA3track_association
226+
{
227+
DECLARE_SOA_INDEX_COLUMN(ReA3Event, reA3event); //! ReducedEvent index
228+
DECLARE_SOA_INDEX_COLUMN(ReA3Track, reA3track); //! ReducedTrack index
229+
} // namespace reducedA3track_association
230+
231+
DECLARE_SOA_TABLE(ReducedA3TracksAssoc, "AOD", "REA3ASSOC", //! Table for reducedtrack-to-reducedcollision association
232+
reducedA3track_association::ReA3EventId,
233+
reducedA3track_association::ReA3TrackId);
234+
235+
DECLARE_SOA_TABLE(ReducedA3PIDTOF, "AOD", "REA3PIDTOF",
236+
upgrade_tof::TOFEventTime,
237+
upgrade_tof::TOFEventTimeErr,
238+
upgrade_tof::NSigmaElectronInnerTOF,
239+
upgrade_tof::NSigmaMuonInnerTOF,
240+
upgrade_tof::NSigmaPionInnerTOF,
241+
upgrade_tof::NSigmaKaonInnerTOF,
242+
upgrade_tof::NSigmaProtonInnerTOF,
243+
upgrade_tof::NSigmaDeuteronInnerTOF,
244+
upgrade_tof::NSigmaTritonInnerTOF,
245+
upgrade_tof::NSigmaHelium3InnerTOF,
246+
upgrade_tof::NSigmaAlphaInnerTOF,
247+
upgrade_tof::InnerTOFTrackTimeReco,
248+
upgrade_tof::InnerTOFTrackLengthReco,
249+
upgrade_tof::NSigmaElectronOuterTOF,
250+
upgrade_tof::NSigmaMuonOuterTOF,
251+
upgrade_tof::NSigmaPionOuterTOF,
252+
upgrade_tof::NSigmaKaonOuterTOF,
253+
upgrade_tof::NSigmaProtonOuterTOF,
254+
upgrade_tof::NSigmaDeuteronOuterTOF,
255+
upgrade_tof::NSigmaTritonOuterTOF,
256+
upgrade_tof::NSigmaHelium3OuterTOF,
257+
upgrade_tof::NSigmaAlphaOuterTOF,
258+
upgrade_tof::OuterTOFTrackTimeReco,
259+
upgrade_tof::OuterTOFTrackLengthReco,
260+
upgrade_tof::NSigmaInnerTOF<upgrade_tof::NSigmaElectronInnerTOF,
261+
upgrade_tof::NSigmaMuonInnerTOF,
262+
upgrade_tof::NSigmaPionInnerTOF,
263+
upgrade_tof::NSigmaKaonInnerTOF,
264+
upgrade_tof::NSigmaProtonInnerTOF,
265+
upgrade_tof::NSigmaDeuteronInnerTOF,
266+
upgrade_tof::NSigmaTritonInnerTOF,
267+
upgrade_tof::NSigmaHelium3InnerTOF,
268+
upgrade_tof::NSigmaAlphaInnerTOF>,
269+
upgrade_tof::NSigmaOuterTOF<upgrade_tof::NSigmaElectronOuterTOF,
270+
upgrade_tof::NSigmaMuonOuterTOF,
271+
upgrade_tof::NSigmaPionOuterTOF,
272+
upgrade_tof::NSigmaKaonOuterTOF,
273+
upgrade_tof::NSigmaProtonOuterTOF,
274+
upgrade_tof::NSigmaDeuteronOuterTOF,
275+
upgrade_tof::NSigmaTritonOuterTOF,
276+
upgrade_tof::NSigmaHelium3OuterTOF,
277+
upgrade_tof::NSigmaAlphaOuterTOF>);
278+
279+
DECLARE_SOA_TABLE(ReducedA3PIDRich, "AOD", "REA3PIDRICH",
280+
upgrade_rich::NSigmaElectronRich,
281+
upgrade_rich::NSigmaMuonRich,
282+
upgrade_rich::NSigmaPionRich,
283+
upgrade_rich::NSigmaKaonRich,
284+
upgrade_rich::NSigmaProtonRich,
285+
upgrade_rich::NSigmaDeuteronRich,
286+
upgrade_rich::NSigmaTritonRich,
287+
upgrade_rich::NSigmaHelium3Rich,
288+
upgrade_rich::NSigmaAlphaRich,
289+
upgrade_rich::NSigmaRich<upgrade_rich::NSigmaElectronRich,
290+
upgrade_rich::NSigmaMuonRich,
291+
upgrade_rich::NSigmaPionRich,
292+
upgrade_rich::NSigmaKaonRich,
293+
upgrade_rich::NSigmaProtonRich,
294+
upgrade_rich::NSigmaDeuteronRich,
295+
upgrade_rich::NSigmaTritonRich,
296+
upgrade_rich::NSigmaHelium3Rich,
297+
upgrade_rich::NSigmaAlphaRich>);
298+
299+
DECLARE_SOA_TABLE(ReducedA3PIDRichSignals, "AOD", "REA3PIDRICHSIG",
300+
upgrade_rich::HasSig,
301+
upgrade_rich::HasSigInGas,
302+
upgrade_rich::HasSigEl,
303+
upgrade_rich::HasSigMu,
304+
upgrade_rich::HasSigPi,
305+
upgrade_rich::HasSigKa,
306+
upgrade_rich::HasSigPr,
307+
upgrade_rich::HasSigDe,
308+
upgrade_rich::HasSigTr,
309+
upgrade_rich::HasSigHe3,
310+
upgrade_rich::HasSigAl);
311+
312+
DECLARE_SOA_TABLE(ReducedA3PIDOT, "AOD", "REA3PIDOT",
313+
upgrade::trk::TimeOverThresholdBarrel,
314+
upgrade::trk::NSigmaTrkEl,
315+
upgrade::trk::NSigmaTrkMu,
316+
upgrade::trk::NSigmaTrkPi,
317+
upgrade::trk::NSigmaTrkKa,
318+
upgrade::trk::NSigmaTrkPr,
319+
upgrade::trk::NSigmaTrkDe,
320+
upgrade::trk::NSigmaTrkTr,
321+
upgrade::trk::NSigmaTrkHe,
322+
upgrade::trk::NSigmaTrkAl,
323+
upgrade::trk::NSigmaTrk<upgrade::trk::NSigmaTrkEl,
324+
upgrade::trk::NSigmaTrkMu,
325+
upgrade::trk::NSigmaTrkPi,
326+
upgrade::trk::NSigmaTrkKa,
327+
upgrade::trk::NSigmaTrkPr,
328+
upgrade::trk::NSigmaTrkDe,
329+
upgrade::trk::NSigmaTrkTr,
330+
upgrade::trk::NSigmaTrkHe,
331+
upgrade::trk::NSigmaTrkAl>);
332+
333+
} // namespace o2::aod
334+
335+
#endif // ALICE3_DATAMODEL_REDUCEDTABLESALICE3_H_

0 commit comments

Comments
 (0)