Skip to content

Commit a326899

Browse files
authored
[PWGLF] Resonance Framework - Separate collision table (#10351)
1 parent 8febe43 commit a326899

File tree

11 files changed

+183
-123
lines changed

11 files changed

+183
-123
lines changed

PWGLF/DataModel/LFResonanceTables.h

Lines changed: 72 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,7 @@ DECLARE_SOA_TABLE(ResoCollisions, "AOD", "RESOCOLLISION",
8181
collision::PosY,
8282
collision::PosZ,
8383
resocollision::Cent,
84-
resocollision::Spherocity,
85-
resocollision::EvtPl,
86-
resocollision::EvtPlResAB,
87-
resocollision::EvtPlResAC,
88-
resocollision::EvtPlResBC,
89-
resocollision::BMagField,
90-
timestamp::Timestamp,
91-
evsel::NumTracksInTimeRange);
84+
resocollision::BMagField);
9285
using ResoCollision = ResoCollisions::iterator;
9386

9487
DECLARE_SOA_TABLE(ResoMCCollisions, "AOD", "RESOMCCOLLISION",
@@ -139,6 +132,36 @@ using ResoCollisionDF = ResoCollisionDFs::iterator;
139132
// inspired from PWGCF/DataModel/FemtoDerived.h
140133
namespace resodaughter
141134
{
135+
struct ResoTrackFlags {
136+
public:
137+
typedef uint8_t flagtype;
138+
static constexpr flagtype kPassedITSRefit = 1 << 0;
139+
static constexpr flagtype kPassedTPCRefit = 1 << 1;
140+
static constexpr flagtype kIsGlobalTrackWoDCA = 1 << 2;
141+
static constexpr flagtype kIsGlobalTrack = 1 << 3;
142+
static constexpr flagtype kIsPrimaryTrack = 1 << 4;
143+
static constexpr flagtype kIsPVContributor = 1 << 5;
144+
static constexpr flagtype kHasTOF = 1 << 6;
145+
static constexpr flagtype kSign = 1 << 7;
146+
/// @brief check if the flag is set
147+
static bool checkFlag(const flagtype flags, const flagtype mask)
148+
{
149+
return (flags & mask) == mask;
150+
}
151+
};
152+
#define requireTrackFlag(mask) ((o2::aod::resodaughter::trackFlags & o2::aod::resodaughter::mask) == o2::aod::resodaughter::mask)
153+
154+
#define requirePassedITSRefit() requireTrackFlag(ResoTrackFlags::kPassedITSRefit)
155+
#define requirePassedTPCRefit() requireTrackFlag(ResoTrackFlags::kPassedTPCRefit)
156+
#define requireGlobalTrack() requireTrackFlag(ResoTrackFlags::kIsGlobalTrack)
157+
#define requireGlobalTrackWoDCA() requireTrackFlag(ResoTrackFlags::kIsGlobalTrackWoDCA)
158+
#define requirePrimaryTrack() requireTrackFlag(ResoTrackFlags::kIsPrimaryTrack)
159+
#define requirePVContributor() requireTrackFlag(ResoTrackFlags::kIsPVContributor)
160+
#define requireHasTOF() requireTrackFlag(ResoTrackFlags::kHasTOF)
161+
#define requireSign() requireTrackFlag(ResoTrackFlags::kSign)
162+
163+
#define DECLARE_DYN_TRKSEL_COLUMN(name, getter, mask) \
164+
DECLARE_SOA_DYNAMIC_COLUMN(name, getter, [](ResoTrackFlags::flagtype flags) -> bool { return ResoTrackFlags::checkFlag(flags, mask); });
142165

143166
DECLARE_SOA_INDEX_COLUMN(ResoCollision, resoCollision);
144167
DECLARE_SOA_INDEX_COLUMN(ResoCollisionDF, resoCollisionDF);
@@ -155,6 +178,8 @@ DECLARE_SOA_COLUMN(Indices, indices, int[2]);
155178
DECLARE_SOA_COLUMN(CascadeIndices, cascadeIndices, int[3]); //! Field for the track indices to remove auto-correlations (ordered: positive, negative, bachelor)
156179
DECLARE_SOA_COLUMN(TpcNClsCrossedRows, tpcNClsCrossedRows, uint8_t); //! Number of TPC crossed rows
157180
DECLARE_SOA_COLUMN(TpcNClsFound, tpcNClsFound, uint8_t); //! Number of TPC clusters found
181+
DECLARE_SOA_COLUMN(DcaXY10000, dcaXY10000, int16_t); //! DCA_xy x10,000 in int16_t, resolution 10 um
182+
DECLARE_SOA_COLUMN(DcaZ10000, dcaZ10000, int16_t); //! DCA_z x10,000 in int16_t, resolution 10 um
158183
DECLARE_SOA_COLUMN(TrackFlags, trackFlags, uint8_t); //! Track flags
159184
DECLARE_SOA_COLUMN(TpcNSigmaPi10, tpcNSigmaPi10, int8_t); //! TPC PID x10 of the track as Pion
160185
DECLARE_SOA_COLUMN(TpcNSigmaKa10, tpcNSigmaKa10, int8_t); //! TPC PID x10 of the track as Kaon
@@ -208,6 +233,12 @@ DECLARE_SOA_COLUMN(SiblingIds, siblingIds, int[2]); //! Index of the particles
208233
DECLARE_SOA_COLUMN(BachTrkID, bachTrkID, int); //! Id of the bach track from cascade
209234
DECLARE_SOA_COLUMN(V0ID, v0ID, int); //! Id of the V0 from cascade
210235
// Dynamic columns
236+
// DCA_xy x10,000
237+
DECLARE_SOA_DYNAMIC_COLUMN(DcaXY, dcaXY,
238+
[](int16_t dcaXY10000) { return (float)dcaXY10000 / 10000.f; });
239+
// DCA_z x10,000
240+
DECLARE_SOA_DYNAMIC_COLUMN(DcaZ, dcaZ,
241+
[](int16_t dcaZ10000) { return (float)dcaZ10000 / 10000.f; });
211242
// TPC PID return value/10
212243
DECLARE_SOA_DYNAMIC_COLUMN(TpcNSigmaPi, tpcNSigmaPi,
213244
[](int8_t tpcNSigmaPi10) { return (float)tpcNSigmaPi10 / 10.f; });
@@ -266,21 +297,38 @@ DECLARE_SOA_DYNAMIC_COLUMN(Eta, eta, [](float px, float py, float pz) -> float {
266297
DECLARE_SOA_DYNAMIC_COLUMN(Phi, phi, [](float px, float py) -> float { return RecoDecay::phi(px, py); });
267298
// Track flags
268299
DECLARE_SOA_DYNAMIC_COLUMN(PassedITSRefit, passedITSRefit,
269-
[](uint8_t trackFlags) -> bool { return (trackFlags & (1 << 0)) != 0; });
300+
[](ResoTrackFlags::flagtype trackFlags) -> bool {
301+
return ResoTrackFlags::checkFlag(trackFlags, ResoTrackFlags::kPassedITSRefit);
302+
});
270303
DECLARE_SOA_DYNAMIC_COLUMN(PassedTPCRefit, passedTPCRefit,
271-
[](uint8_t trackFlags) -> bool { return (trackFlags & (1 << 1)) != 0; });
304+
[](ResoTrackFlags::flagtype trackFlags) -> bool {
305+
return ResoTrackFlags::checkFlag(trackFlags, ResoTrackFlags::kPassedTPCRefit);
306+
});
272307
DECLARE_SOA_DYNAMIC_COLUMN(IsGlobalTrackWoDCA, isGlobalTrackWoDCA,
273-
[](uint8_t trackFlags) -> bool { return (trackFlags & (1 << 2)) != 0; });
308+
[](ResoTrackFlags::flagtype trackFlags) -> bool {
309+
return ResoTrackFlags::checkFlag(trackFlags, ResoTrackFlags::kIsGlobalTrackWoDCA);
310+
});
274311
DECLARE_SOA_DYNAMIC_COLUMN(IsGlobalTrack, isGlobalTrack,
275-
[](uint8_t trackFlags) -> bool { return (trackFlags & (1 << 3)) != 0; });
312+
[](ResoTrackFlags::flagtype trackFlags) -> bool {
313+
return ResoTrackFlags::checkFlag(trackFlags, ResoTrackFlags::kIsGlobalTrack);
314+
});
276315
DECLARE_SOA_DYNAMIC_COLUMN(IsPrimaryTrack, isPrimaryTrack,
277-
[](uint8_t trackFlags) -> bool { return (trackFlags & (1 << 4)) != 0; });
316+
[](ResoTrackFlags::flagtype trackFlags) -> bool {
317+
return ResoTrackFlags::checkFlag(trackFlags, ResoTrackFlags::kIsPrimaryTrack);
318+
});
278319
DECLARE_SOA_DYNAMIC_COLUMN(IsPVContributor, isPVContributor,
279-
[](uint8_t trackFlags) -> bool { return (trackFlags & (1 << 5)) != 0; });
320+
[](ResoTrackFlags::flagtype trackFlags) -> bool {
321+
return ResoTrackFlags::checkFlag(trackFlags, ResoTrackFlags::kIsPVContributor);
322+
});
280323
DECLARE_SOA_DYNAMIC_COLUMN(HasTOF, hasTOF,
281-
[](uint8_t trackFlags) -> bool { return (trackFlags & (1 << 6)) != 0; });
324+
[](ResoTrackFlags::flagtype trackFlags) -> bool {
325+
return ResoTrackFlags::checkFlag(trackFlags, ResoTrackFlags::kHasTOF);
326+
});
282327
DECLARE_SOA_DYNAMIC_COLUMN(Sign, sign,
283-
[](uint8_t trackFlags) -> int8_t { return (trackFlags & (1 << 7)) ? 1 : -1; });
328+
[](ResoTrackFlags::flagtype trackFlags) -> int8_t {
329+
return (trackFlags & ResoTrackFlags::kSign) ? 1 : -1;
330+
});
331+
284332
} // namespace resodaughter
285333
DECLARE_SOA_TABLE(ResoTracks, "AOD", "RESOTRACK",
286334
o2::soa::Index<>,
@@ -292,8 +340,8 @@ DECLARE_SOA_TABLE(ResoTracks, "AOD", "RESOTRACK",
292340
resodaughter::Pz,
293341
resodaughter::TpcNClsCrossedRows,
294342
resodaughter::TpcNClsFound,
295-
o2::aod::track::DcaXY,
296-
o2::aod::track::DcaZ,
343+
resodaughter::DcaXY10000,
344+
resodaughter::DcaZ10000,
297345
resodaughter::TpcNSigmaPi10,
298346
resodaughter::TpcNSigmaKa10,
299347
resodaughter::TpcNSigmaPr10,
@@ -311,6 +359,8 @@ DECLARE_SOA_TABLE(ResoTracks, "AOD", "RESOTRACK",
311359
resodaughter::TofNSigmaPr<resodaughter::TofNSigmaPr10>,
312360
resodaughter::TpcSignal<resodaughter::TpcSignal10>,
313361
// resodaughter::Pt<resodaughter::Px, resodaughter::Py>,
362+
resodaughter::DcaXY<resodaughter::DcaXY10000>,
363+
resodaughter::DcaZ<resodaughter::DcaZ10000>,
314364
resodaughter::Eta<resodaughter::Px, resodaughter::Py, resodaughter::Pz>,
315365
resodaughter::Phi<resodaughter::Px, resodaughter::Py>,
316366
resodaughter::PassedITSRefit<resodaughter::TrackFlags>,
@@ -334,8 +384,8 @@ DECLARE_SOA_TABLE(ResoTrackDFs, "AOD", "RESOTRACKDF",
334384
resodaughter::Pz,
335385
resodaughter::TpcNClsCrossedRows,
336386
resodaughter::TpcNClsFound,
337-
o2::aod::track::DcaXY,
338-
o2::aod::track::DcaZ,
387+
resodaughter::DcaXY10000,
388+
resodaughter::DcaZ10000,
339389
resodaughter::TpcNSigmaPi10,
340390
resodaughter::TpcNSigmaKa10,
341391
resodaughter::TpcNSigmaPr10,
@@ -353,6 +403,8 @@ DECLARE_SOA_TABLE(ResoTrackDFs, "AOD", "RESOTRACKDF",
353403
resodaughter::TofNSigmaPr<resodaughter::TofNSigmaPr10>,
354404
resodaughter::TpcSignal<resodaughter::TpcSignal10>,
355405
// resodaughter::Pt<resodaughter::Px, resodaughter::Py>,
406+
resodaughter::DcaXY<resodaughter::DcaXY10000>,
407+
resodaughter::DcaZ<resodaughter::DcaZ10000>,
356408
resodaughter::Eta<resodaughter::Px, resodaughter::Py, resodaughter::Pz>,
357409
resodaughter::Phi<resodaughter::Px, resodaughter::Py>,
358410
resodaughter::PassedITSRefit<resodaughter::TrackFlags>,

0 commit comments

Comments
 (0)