Skip to content

Commit a8381b2

Browse files
authored
[PWGLF] add generic nuclei three-body builder (#17206)
1 parent fd9fe7a commit a8381b2

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
@@ -335,6 +335,112 @@ DECLARE_SOA_TABLE(McVtx3BodyDatas, "AOD", "MC3BODYDATA", //!
335335
using Vtx3BodyDatasCovs = soa::Join<Vtx3BodyDatas, Vtx3BodyCovs>;
336336
using Vtx3BodyDatasCovsIndexed = soa::Join<Vtx3BodyDatas, Vtx3BodyCovs, Decay3BodyIndices>;
337337

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

340446
#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)