Skip to content

Commit 3438e9c

Browse files
committed
PWGLF: add generic nuclei three-body builder
1 parent 084cc23 commit 3438e9c

4 files changed

Lines changed: 993 additions & 6 deletions

File tree

PWGLF/DataModel/Vtx3BodyTables.h

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,112 @@ DECLARE_SOA_TABLE(McVtx3BodyDatas, "AOD", "MC3BODYDATA", //!
326326
using Vtx3BodyDatasCovs = soa::Join<Vtx3BodyDatas, Vtx3BodyCovs>;
327327
using Vtx3BodyDatasCovsIndexed = soa::Join<Vtx3BodyDatas, Vtx3BodyCovs, Decay3BodyIndices>;
328328

329+
namespace nuclei3body
330+
{
331+
DECLARE_SOA_INDEX_COLUMN_FULL(Helium3Track, helium3Track, int, Tracks, "_He3"); //!
332+
DECLARE_SOA_INDEX_COLUMN_FULL(Daughter1Track, daughter1Track, int, Tracks, "_D1"); //!
333+
DECLARE_SOA_INDEX_COLUMN_FULL(Daughter2Track, daughter2Track, int, Tracks, "_D2"); //!
334+
DECLARE_SOA_INDEX_COLUMN(Collision, collision); //!
335+
336+
DECLARE_SOA_COLUMN(SignHe3, signHe3, int8_t); //! He3 charge sign
337+
DECLARE_SOA_COLUMN(SignDaughter1, signDaughter1, int8_t); //! daughter 1 charge sign
338+
DECLARE_SOA_COLUMN(SignDaughter2, signDaughter2, int8_t); //! daughter 2 charge sign
339+
DECLARE_SOA_COLUMN(Pt, pt, float); //! candidate transverse momentum
340+
DECLARE_SOA_COLUMN(Eta, eta, float); //! candidate pseudorapidity
341+
DECLARE_SOA_COLUMN(Phi, phi, float); //! candidate azimuth
342+
DECLARE_SOA_COLUMN(PHe3, pHe3, float); //! magnitude of fitted, charge-corrected He3 momentum
343+
DECLARE_SOA_COLUMN(PDaughter1, pDaughter1, float); //! magnitude of fitted daughter 1 momentum
344+
DECLARE_SOA_COLUMN(PDaughter2, pDaughter2, float); //! magnitude of fitted daughter 2 momentum
345+
DECLARE_SOA_COLUMN(Chi2, chi2, float); //! DCA-fitter chi2 at PCA
346+
DECLARE_SOA_COLUMN(DcaDaughters, dcaDaughters, float); //! square root of DCA-fitter chi2 at PCA
347+
DECLARE_SOA_COLUMN(CosPA, cosPA, float); //! cosine of pointing angle
348+
DECLARE_SOA_COLUMN(DecayLength, decayLength, float); //! PV-to-SV distance
349+
350+
DECLARE_SOA_COLUMN(DcaXYHe3ToPv, dcaXYHe3ToPv, float); //! He3 DCAxy to PV
351+
DECLARE_SOA_COLUMN(DcaZHe3ToPv, dcaZHe3ToPv, float); //! He3 DCAz to PV
352+
DECLARE_SOA_COLUMN(DcaXYDaughter1ToPv, dcaXYDaughter1ToPv, float); //! daughter 1 DCAxy to PV
353+
DECLARE_SOA_COLUMN(DcaZDaughter1ToPv, dcaZDaughter1ToPv, float); //! daughter 1 DCAz to PV
354+
DECLARE_SOA_COLUMN(DcaXYDaughter2ToPv, dcaXYDaughter2ToPv, float); //! daughter 2 DCAxy to PV
355+
DECLARE_SOA_COLUMN(DcaZDaughter2ToPv, dcaZDaughter2ToPv, float); //! daughter 2 DCAz to PV
356+
357+
DECLARE_SOA_COLUMN(TpcNSigmaHe3, tpcNSigmaHe3, float); //! custom He3 TPC n-sigma
358+
DECLARE_SOA_COLUMN(TofNSigmaHe3, tofNSigmaHe3, float); //! He3 TOF n-sigma; sentinel without TOF
359+
DECLARE_SOA_COLUMN(TpcNSigmaPiDaughter1, tpcNSigmaPiDaughter1, float);
360+
DECLARE_SOA_COLUMN(TpcNSigmaKaDaughter1, tpcNSigmaKaDaughter1, float);
361+
DECLARE_SOA_COLUMN(TpcNSigmaPrDaughter1, tpcNSigmaPrDaughter1, float);
362+
DECLARE_SOA_COLUMN(TofNSigmaPiDaughter1, tofNSigmaPiDaughter1, float);
363+
DECLARE_SOA_COLUMN(TofNSigmaKaDaughter1, tofNSigmaKaDaughter1, float);
364+
DECLARE_SOA_COLUMN(TofNSigmaPrDaughter1, tofNSigmaPrDaughter1, float);
365+
DECLARE_SOA_COLUMN(TpcNSigmaPiDaughter2, tpcNSigmaPiDaughter2, float);
366+
DECLARE_SOA_COLUMN(TpcNSigmaKaDaughter2, tpcNSigmaKaDaughter2, float);
367+
DECLARE_SOA_COLUMN(TpcNSigmaPrDaughter2, tpcNSigmaPrDaughter2, float);
368+
DECLARE_SOA_COLUMN(TofNSigmaPiDaughter2, tofNSigmaPiDaughter2, float);
369+
DECLARE_SOA_COLUMN(TofNSigmaKaDaughter2, tofNSigmaKaDaughter2, float);
370+
DECLARE_SOA_COLUMN(TofNSigmaPrDaughter2, tofNSigmaPrDaughter2, float);
371+
372+
DECLARE_SOA_COLUMN(TpcNClsHe3, tpcNClsHe3, uint16_t);
373+
DECLARE_SOA_COLUMN(TpcNClsDaughter1, tpcNClsDaughter1, uint16_t);
374+
DECLARE_SOA_COLUMN(TpcNClsDaughter2, tpcNClsDaughter2, uint16_t);
375+
DECLARE_SOA_COLUMN(TpcCrossedRowsHe3, tpcCrossedRowsHe3, uint16_t);
376+
DECLARE_SOA_COLUMN(TpcCrossedRowsDaughter1, tpcCrossedRowsDaughter1, uint16_t);
377+
DECLARE_SOA_COLUMN(TpcCrossedRowsDaughter2, tpcCrossedRowsDaughter2, uint16_t);
378+
DECLARE_SOA_COLUMN(ItsNClsHe3, itsNClsHe3, uint8_t);
379+
DECLARE_SOA_COLUMN(ItsNClsDaughter1, itsNClsDaughter1, uint8_t);
380+
DECLARE_SOA_COLUMN(ItsNClsDaughter2, itsNClsDaughter2, uint8_t);
381+
382+
DECLARE_SOA_COLUMN(McLabelHe3, mcLabelHe3, int);
383+
DECLARE_SOA_COLUMN(McLabelDaughter1, mcLabelDaughter1, int);
384+
DECLARE_SOA_COLUMN(McLabelDaughter2, mcLabelDaughter2, int);
385+
DECLARE_SOA_COLUMN(McPdgHe3, mcPdgHe3, int);
386+
DECLARE_SOA_COLUMN(McPdgDaughter1, mcPdgDaughter1, int);
387+
DECLARE_SOA_COLUMN(McPdgDaughter2, mcPdgDaughter2, int);
388+
DECLARE_SOA_COLUMN(McMatchStatus, mcMatchStatus, uint8_t); //! 0 missing label, 1 no common mother, 2 common mother, 3 configured decay
389+
DECLARE_SOA_COLUMN(McMotherLabel, mcMotherLabel, int);
390+
DECLARE_SOA_COLUMN(McMotherPdg, mcMotherPdg, int);
391+
DECLARE_SOA_COLUMN(GenMotherPt, genMotherPt, float);
392+
DECLARE_SOA_COLUMN(GenMotherEta, genMotherEta, float);
393+
DECLARE_SOA_COLUMN(GenMotherPhi, genMotherPhi, float);
394+
DECLARE_SOA_COLUMN(GenDecayLength, genDecayLength, float);
395+
} // namespace nuclei3body
396+
397+
#define NUCLEI_THREE_BODY_RECO_COLUMNS \
398+
nuclei3body::Helium3TrackId, nuclei3body::Daughter1TrackId, \
399+
nuclei3body::Daughter2TrackId, nuclei3body::CollisionId, \
400+
nuclei3body::SignHe3, nuclei3body::SignDaughter1, nuclei3body::SignDaughter2, \
401+
nuclei3body::Pt, nuclei3body::Eta, nuclei3body::Phi, \
402+
nuclei3body::PHe3, nuclei3body::PDaughter1, nuclei3body::PDaughter2, \
403+
nuclei3body::Chi2, nuclei3body::DcaDaughters, nuclei3body::CosPA, \
404+
nuclei3body::DecayLength, \
405+
nuclei3body::DcaXYHe3ToPv, nuclei3body::DcaZHe3ToPv, \
406+
nuclei3body::DcaXYDaughter1ToPv, nuclei3body::DcaZDaughter1ToPv, \
407+
nuclei3body::DcaXYDaughter2ToPv, nuclei3body::DcaZDaughter2ToPv, \
408+
nuclei3body::TpcNSigmaHe3, nuclei3body::TofNSigmaHe3, \
409+
nuclei3body::TpcNSigmaPiDaughter1, nuclei3body::TpcNSigmaKaDaughter1, \
410+
nuclei3body::TpcNSigmaPrDaughter1, nuclei3body::TofNSigmaPiDaughter1, \
411+
nuclei3body::TofNSigmaKaDaughter1, nuclei3body::TofNSigmaPrDaughter1, \
412+
nuclei3body::TpcNSigmaPiDaughter2, nuclei3body::TpcNSigmaKaDaughter2, \
413+
nuclei3body::TpcNSigmaPrDaughter2, nuclei3body::TofNSigmaPiDaughter2, \
414+
nuclei3body::TofNSigmaKaDaughter2, nuclei3body::TofNSigmaPrDaughter2, \
415+
nuclei3body::TpcNClsHe3, nuclei3body::TpcNClsDaughter1, nuclei3body::TpcNClsDaughter2, \
416+
nuclei3body::TpcCrossedRowsHe3, nuclei3body::TpcCrossedRowsDaughter1, \
417+
nuclei3body::TpcCrossedRowsDaughter2, nuclei3body::ItsNClsHe3, \
418+
nuclei3body::ItsNClsDaughter1, nuclei3body::ItsNClsDaughter2
419+
420+
DECLARE_SOA_TABLE(NucleiThreeBodyDatas, "AOD", "NUC3BODYDATA",
421+
o2::soa::Index<>,
422+
NUCLEI_THREE_BODY_RECO_COLUMNS);
423+
424+
DECLARE_SOA_TABLE(McNucleiThreeBodyDatas, "AOD", "MCNUC3BODY",
425+
o2::soa::Index<>,
426+
NUCLEI_THREE_BODY_RECO_COLUMNS,
427+
nuclei3body::McLabelHe3, nuclei3body::McLabelDaughter1, nuclei3body::McLabelDaughter2,
428+
nuclei3body::McPdgHe3, nuclei3body::McPdgDaughter1, nuclei3body::McPdgDaughter2,
429+
nuclei3body::McMatchStatus, nuclei3body::McMotherLabel, nuclei3body::McMotherPdg,
430+
nuclei3body::GenMotherPt, nuclei3body::GenMotherEta,
431+
nuclei3body::GenMotherPhi, nuclei3body::GenDecayLength);
432+
433+
#undef NUCLEI_THREE_BODY_RECO_COLUMNS
434+
329435
} // namespace o2::aod
330436

331437
#endif // PWGLF_DATAMODEL_VTX3BODYTABLES_H_

PWGLF/TableProducer/Nuspex/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ o2physics_add_dpl_workflow(tracked-hypertriton-reco-task
2929
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DCAFitter KFParticle::KFParticle O2::TOFBase O2::DetectorsVertexing O2Physics::EventFilteringUtils
3030
COMPONENT_NAME Analysis)
3131

32+
o2physics_add_dpl_workflow(nuclei-three-body-builder
33+
SOURCES nucleiThreeBodyBuilder.cxx
34+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DCAFitter O2Physics::EventFilteringUtils
35+
COMPONENT_NAME Analysis)
36+
3237
o2physics_add_dpl_workflow(lnn-reco-task
3338
SOURCES lnnRecoTask.cxx
3439
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DCAFitter

0 commit comments

Comments
 (0)