Skip to content

Commit a8c8cec

Browse files
authored
[PWGLF] Add daughters TPC signal to decay3body output tables (#17529)
1 parent 80ea9c0 commit a8c8cec

4 files changed

Lines changed: 66 additions & 18 deletions

File tree

PWGLF/DataModel/Vtx3BodyTables.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ DECLARE_SOA_COLUMN(TPCNSigmaPr, tpcNSigmaPr, float); //! nsigma proton o
9797
DECLARE_SOA_COLUMN(TPCNSigmaPi, tpcNSigmaPi, float); //! nsigma pion of TPC PID of the pion daughter
9898
DECLARE_SOA_COLUMN(TPCNSigmaDe, tpcNSigmaDe, float); //! nsigma deuteron of TPC PID of the bachelor daughter
9999
DECLARE_SOA_COLUMN(TPCNSigmaPiBach, tpcNSigmaPiBach, float); //! nsigma pion of TPC PID of the bachelor daughter
100+
DECLARE_SOA_COLUMN(TPCSignalPr, tpcSignalPr, float); //! TPC signal of proton daughter
101+
DECLARE_SOA_COLUMN(TPCSignalPi, tpcSignalPi, float); //! TPC signal of pion daughter
102+
DECLARE_SOA_COLUMN(TPCSignalDe, tpcSignalDe, float); //! TPC signal of deuteron daughter
100103
DECLARE_SOA_COLUMN(TOFNSigmaDe, tofNSigmaDe, float); //! nsigma deuteron of TOF PID of the bachelor daughter
101104
DECLARE_SOA_COLUMN(PIDTrackingDe, pidTrackingDe, uint32_t); //! PID during tracking of bachelor daughter
102105

@@ -231,6 +234,7 @@ DECLARE_SOA_TABLE(Vtx3BodyDatas, "AOD", "VTX3BODYDATA", //!
231234
vtx3body::DCAVtxToDaughtersAv,
232235
vtx3body::CosPA, vtx3body::Ct,
233236
vtx3body::TPCNSigmaPr, vtx3body::TPCNSigmaPi, vtx3body::TPCNSigmaDe, vtx3body::TPCNSigmaPiBach,
237+
vtx3body::TPCSignalPr, vtx3body::TPCSignalPi, vtx3body::TPCSignalDe,
234238
vtx3body::TOFNSigmaDe,
235239
vtx3body::ITSClSizePr, vtx3body::ITSClSizePi, vtx3body::ITSClSizeDe,
236240
vtx3body::TPCNClTrackPr, vtx3body::TPCNClTrackPi, vtx3body::TPCNClTrackDe,
@@ -288,6 +292,7 @@ DECLARE_SOA_TABLE(McVtx3BodyDatas, "AOD", "MC3BODYDATA", //!
288292
vtx3body::DCAVtxToDaughtersAv,
289293
vtx3body::CosPA, vtx3body::Ct,
290294
vtx3body::TPCNSigmaPr, vtx3body::TPCNSigmaPi, vtx3body::TPCNSigmaDe, vtx3body::TPCNSigmaPiBach,
295+
vtx3body::TPCSignalPr, vtx3body::TPCSignalPi, vtx3body::TPCSignalDe,
291296
vtx3body::TOFNSigmaDe,
292297
vtx3body::ITSClSizePr, vtx3body::ITSClSizePi, vtx3body::ITSClSizeDe,
293298
vtx3body::TPCNClTrackPr, vtx3body::TPCNClTrackPi, vtx3body::TPCNClTrackDe,

PWGLF/TableProducer/Nuspex/decay3bodybuilder.cxx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -947,6 +947,7 @@ struct decay3bodyBuilder {
947947
-1., // daughterDCAtoSVaverage
948948
-1., -1., // cosPA, ctau
949949
-1., -1., -1., -1., // tpcNsigma: 0 - proton, 1 - pion, 2 - deuteron, 3 - bach with pion hyp
950+
-1., -1., -1., // tpcSignal: 0 - proton, 1 - pion, 2 - deuteron
950951
-1., // tofNsigmaDeuteron
951952
-1., -1., -1., // average ITS cluster sizes: proton, pion, deuteron
952953
-1., -1., -1., // TPCNCl: proton, pion, deuteron
@@ -1109,6 +1110,7 @@ struct decay3bodyBuilder {
11091110
helper.decay3body.daughterDCAtoSVaverage,
11101111
helper.decay3body.cosPA, helper.decay3body.ctau,
11111112
helper.decay3body.tpcNsigma[0], helper.decay3body.tpcNsigma[1], helper.decay3body.tpcNsigma[2], helper.decay3body.tpcNsigma[3], // 0 - proton, 1 - pion, 2 - deuteron, 3 - bach with pion hyp
1113+
helper.decay3body.tpcSignal[0], helper.decay3body.tpcSignal[1], helper.decay3body.tpcSignal[2],
11121114
helper.decay3body.tofNsigmaDeuteron,
11131115
helper.decay3body.averageITSClSize[0], helper.decay3body.averageITSClSize[1], helper.decay3body.averageITSClSize[2], // 0 - proton, 1 - pion, 2 - deuteron
11141116
helper.decay3body.tpcNCl[0], helper.decay3body.tpcNCl[1], helper.decay3body.tpcNCl[2], // 0 - proton, 1 - pion, 2 - deuteron
@@ -1141,6 +1143,7 @@ struct decay3bodyBuilder {
11411143
helper.decay3body.daughterDCAtoSVaverage,
11421144
helper.decay3body.cosPA, helper.decay3body.ctau,
11431145
helper.decay3body.tpcNsigma[0], helper.decay3body.tpcNsigma[1], helper.decay3body.tpcNsigma[2], helper.decay3body.tpcNsigma[3], // 0 - proton, 1 - pion, 2 - deuteron, 3 - bach with pion hyp
1146+
helper.decay3body.tpcSignal[0], helper.decay3body.tpcSignal[1], helper.decay3body.tpcSignal[2],
11441147
helper.decay3body.tofNsigmaDeuteron,
11451148
helper.decay3body.averageITSClSize[0], helper.decay3body.averageITSClSize[1], helper.decay3body.averageITSClSize[2], // 0 - proton, 1 - pion, 2 - deuteron
11461149
helper.decay3body.tpcNCl[0], helper.decay3body.tpcNCl[1], helper.decay3body.tpcNCl[2], // 0 - proton, 1 - pion, 2 - deuteron

PWGLF/TableProducer/Nuspex/trackedHypertritonRecoTask.cxx

Lines changed: 51 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,13 @@ struct TrackedHypertritonRecoTask {
322322
zorroEvents->GetXaxis()->SetBinLabel(2, "fTracked3Body");
323323
zorroEvents->GetYaxis()->SetBinLabel(1, "before sel8");
324324
zorroEvents->GetYaxis()->SetBinLabel(2, "after sel8");
325+
326+
registry.add("hTrackProtonTPCSignal", "hTrackProtonTPCSignal", HistType::kTH2F, {{100, -10.0f, 10.0f, "p/z (GeV/c)"}, {2000, 0.0f, 2000.0f, "d#it{E}/d#it{x}"}});
327+
registry.add("hTrackPionTPCSignal", "hTrackPionTPCSignal", HistType::kTH2F, {{100, -10.0f, 10.0f, "p/z (GeV/c)"}, {2000, 0.0f, 2000.0f, "d#it{E}/d#it{x}"}});
328+
registry.add("hTrackDeuteronTPCSignal", "hTrackDeuteronTPCSignal", HistType::kTH2F, {{100, -10.0f, 10.0f, "p/z (GeV/c)"}, {2000, 0.0f, 2000.0f, "d#it{E}/d#it{x}"}});
329+
registry.add("hTrackProtonTPCSignalSelected", "hTrackProtonTPCSignalSelected", HistType::kTH2F, {{100, -10.0f, 10.0f, "p/z (GeV/c)"}, {2000, 0.0f, 2000.0f, "d#it{E}/d#it{x}"}});
330+
registry.add("hTrackPionTPCSignalSelected", "hTrackPionTPCSignalSelected", HistType::kTH2F, {{100, -10.0f, 10.0f, "p/z (GeV/c)"}, {2000, 0.0f, 2000.0f, "d#it{E}/d#it{x}"}});
331+
registry.add("hTrackDeuteronTPCSignalSelected", "hTrackDeuteronTPCSignalSelected", HistType::kTH2F, {{100, -10.0f, 10.0f, "p/z (GeV/c)"}, {2000, 0.0f, 2000.0f, "d#it{E}/d#it{x}"}});
325332
}
326333

327334
void initCCDB(aod::BCsWithTimestamps::iterator const& bc)
@@ -801,6 +808,7 @@ struct TrackedHypertritonRecoTask {
801808
candidate.daughterDCAtoSV[0], candidate.daughterDCAtoSV[1], candidate.daughterDCAtoSV[2],
802809
candidate.daughterDCAtoSVaverage, candidate.cosPA, candidate.ctau,
803810
candidate.tpcNsigma[0], candidate.tpcNsigma[1], candidate.tpcNsigma[2], candidate.tpcNsigma[3],
811+
candidate.tpcSignal[0], candidate.tpcSignal[1], candidate.tpcSignal[2],
804812
static_cast<float>(candidate.tofNsigmaDeuteron),
805813
candidate.averageITSClSize[0], candidate.averageITSClSize[1], candidate.averageITSClSize[2],
806814
static_cast<int>(candidate.tpcNCl[0]), static_cast<int>(candidate.tpcNCl[1]), static_cast<int>(candidate.tpcNCl[2]),
@@ -828,6 +836,7 @@ struct TrackedHypertritonRecoTask {
828836
candidate.daughterDCAtoSV[0], candidate.daughterDCAtoSV[1], candidate.daughterDCAtoSV[2],
829837
candidate.daughterDCAtoSVaverage, candidate.cosPA, candidate.ctau,
830838
candidate.tpcNsigma[0], candidate.tpcNsigma[1], candidate.tpcNsigma[2], candidate.tpcNsigma[3],
839+
candidate.tpcSignal[0], candidate.tpcSignal[1], candidate.tpcSignal[2],
831840
static_cast<float>(candidate.tofNsigmaDeuteron),
832841
candidate.averageITSClSize[0], candidate.averageITSClSize[1], candidate.averageITSClSize[2],
833842
static_cast<int>(candidate.tpcNCl[0]), static_cast<int>(candidate.tpcNCl[1]), static_cast<int>(candidate.tpcNCl[2]),
@@ -846,24 +855,25 @@ struct TrackedHypertritonRecoTask {
846855

847856
void fillGeneratedThreeBodyMCTable(ThreeBodyMCInfo const& info)
848857
{
849-
mcVtx3BodyDatas(-1.f,
850-
-1.f, -1.f, // mass, massV0
851-
-1.f, -1.f, -1.f, // position
852-
-1.f, -1.f, -1.f, // momentum
853-
-1.f, -1.f, // chi2, trackedClSize
854-
-1.f, -1.f, -1.f, // proton momentum
855-
-1.f, -1.f, -1.f, // pion momentum
856-
-1.f, -1.f, -1.f, // deuteron momentum
857-
-1.f, -1.f, -1.f, // daughter x at inner update
858-
-1.f, -1.f, -1.f, // track DCAxy to PV
859-
-1.f, -1.f, -1.f, // track DCA to PV
860-
-1.f, -1.f, -1.f, // propagated track DCAxy to PV
861-
-1.f, -1.f, -1.f, // propagated track DCA to PV
862-
-1.f, -1.f, -1.f, // daughter DCA to SV
863-
-1.f, -1.f, -1.f, // average daughter DCA, cosPA, ctau
864-
-1.f, -1.f, -1.f, -1.f,
865-
-1.f,
866-
-1.f, -1.f, -1.f,
858+
mcVtx3BodyDatas(-1.f, // sign
859+
-1.f, -1.f, // mass, massV0
860+
-1.f, -1.f, -1.f, // position
861+
-1.f, -1.f, -1.f, // momentum
862+
-1.f, -1.f, // chi2, trackedClSize
863+
-1.f, -1.f, -1.f, // proton momentum
864+
-1.f, -1.f, -1.f, // pion momentum
865+
-1.f, -1.f, -1.f, // deuteron momentum
866+
-1.f, -1.f, -1.f, // daughter x at inner update
867+
-1.f, -1.f, -1.f, // track DCAxy to PV
868+
-1.f, -1.f, -1.f, // track DCA to PV
869+
-1.f, -1.f, -1.f, // propagated track DCAxy to PV
870+
-1.f, -1.f, -1.f, // propagated track DCA to PV
871+
-1.f, -1.f, -1.f, // daughter DCA to SV
872+
-1.f, -1.f, -1.f, // average daughter DCA, cosPA, ctau
873+
-1.f, -1.f, -1.f, -1.f, // TPC nSigmas
874+
-1.f, 1.f, -1.f, // TPC signals
875+
-1.f, // TOF nSigma deuteron
876+
-1.f, -1.f, -1.f, // average cluster sizes
867877
-1, -1, -1, std::numeric_limits<uint32_t>::max(),
868878
info.genMomentum[0], info.genMomentum[1], info.genMomentum[2],
869879
info.genDecayVertex[0], info.genDecayVertex[1], info.genDecayVertex[2],
@@ -875,6 +885,20 @@ struct TrackedHypertritonRecoTask {
875885
info.isDeuteronPrimary, static_cast<int>(info.survivedEventSelection));
876886
}
877887

888+
template <typename TTrack>
889+
void fillQAHistograms(TTrack const& trackProton, TTrack const& trackPion, TTrack const& trackDeuteron, bool isSelected)
890+
{
891+
if (!isSelected) {
892+
registry.fill(HIST("hTrackProtonTPCSignal"), trackProton.sign() * trackProton.tpcInnerParam(), trackProton.tpcSignal());
893+
registry.fill(HIST("hTrackPionTPCSignal"), trackPion.sign() * trackPion.tpcInnerParam(), trackPion.tpcSignal());
894+
registry.fill(HIST("hTrackDeuteronTPCSignal"), trackDeuteron.sign() * trackDeuteron.tpcInnerParam(), trackDeuteron.tpcSignal());
895+
} else {
896+
registry.fill(HIST("hTrackProtonTPCSignalSelected"), trackProton.sign() * trackProton.tpcInnerParam(), trackProton.tpcSignal());
897+
registry.fill(HIST("hTrackPionTPCSignalSelected"), trackPion.sign() * trackPion.tpcInnerParam(), trackPion.tpcSignal());
898+
registry.fill(HIST("hTrackDeuteronTPCSignalSelected"), trackDeuteron.sign() * trackDeuteron.tpcInnerParam(), trackDeuteron.tpcSignal());
899+
}
900+
}
901+
878902
void processData(Collisions const& collisions,
879903
aod::V0s const& /*v0s*/,
880904
aod::Decay3Bodys const& /*decay3Bodys*/,
@@ -931,6 +955,8 @@ struct TrackedHypertritonRecoTask {
931955
const auto trackProton = trackDeuteron.sign() > 0 ? trackPositive : trackNegative;
932956
const auto trackPion = trackDeuteron.sign() > 0 ? trackNegative : trackPositive;
933957

958+
fillQAHistograms(trackProton, trackPion, trackDeuteron, false);
959+
934960
if (builder3Body.buildDecay3BodyCandidate(collision, trackProton, trackPion, trackDeuteron,
935961
decay3Body.globalIndex(), deuteronTOFNSigma(collision, trackDeuteron), tracked3Body.itsClsSize(),
936962
threeBody.useKFParticle, threeBody.setTopologicalConstraint,
@@ -944,6 +970,7 @@ struct TrackedHypertritonRecoTask {
944970
continue;
945971
}
946972

973+
fillQAHistograms(trackProton, trackPion, trackDeuteron, true);
947974
fillThreeBodyTables();
948975
}
949976
}
@@ -1022,13 +1049,19 @@ struct TrackedHypertritonRecoTask {
10221049
const auto trackDeuteron = decay3Body.track2_as<TracksMC>();
10231050
const auto trackProton = trackDeuteron.sign() > 0 ? trackPositive : trackNegative;
10241051
const auto trackPion = trackDeuteron.sign() > 0 ? trackNegative : trackPositive;
1052+
1053+
fillQAHistograms(trackProton, trackPion, trackDeuteron, false);
1054+
10251055
if (!builder3Body.buildDecay3BodyCandidate(collision, trackProton, trackPion, trackDeuteron,
10261056
decay3Body.globalIndex(), deuteronTOFNSigmaMC(collision, trackDeuteron), tracked3Body.itsClsSize(),
10271057
threeBody.useKFParticle, threeBody.setTopologicalConstraint,
10281058
threeBody.useSelections, threeBody.useChi2Selection, threeBody.useTPCforPion,
10291059
threeBody.acceptTPCOnly, threeBody.askOnlyITSMatch, threeBody.calculateCovariance)) {
1060+
10301061
continue;
10311062
}
1063+
1064+
fillQAHistograms(trackProton, trackPion, trackDeuteron, true);
10321065
const auto mcInfo = getThreeBodyMCInfo(trackProton, trackPion, trackDeuteron, collision, mcParticles);
10331066
if (mcInfo.motherLabel < 0 && !mc.storeBackground) {
10341067
continue;

PWGLF/Utils/decay3bodyBuilderHelper.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ struct decay3bodyCandidate {
5454
std::array<float, 3> momProton{};
5555
std::array<float, 3> momPion{};
5656
std::array<float, 3> momDeuteron{};
57+
std::array<float, 3> tpcInnerMomProton{};
58+
std::array<float, 3> tpcInnerMomPion{};
59+
std::array<float, 3> tpcInnerMomDeuteron{};
5760
std::array<float, 3> posProton{};
5861
std::array<float, 3> posPion{};
5962
std::array<float, 3> posDeuteron{};
@@ -65,6 +68,7 @@ struct decay3bodyCandidate {
6568
std::array<float, 3> trackDCAxyToPVprop{}; // 0 - proton, 1 - pion, 2 - deuteron
6669
std::array<float, 3> trackDCAToPVprop{}; // 0 - proton, 1 - pion, 2 - deuteron
6770
std::array<float, 4> tpcNsigma{}; // 0 - proton, 1 - pion, 2 - deuteron, 3 - bach with pion hyp
71+
std::array<float, 3> tpcSignal{}; // 0 - proton, 1 - pion, 2 - deuteron
6872
double tofNsigmaDeuteron{};
6973
std::array<float, 3> averageITSClSize{}; // 0 - proton, 1 - pion, 2 - deuteron
7074
std::array<float, 3> tpcNCl{}; // 0 - proton, 1 - pion, 2 - deuteron
@@ -498,6 +502,9 @@ class decay3bodyBuilderHelper
498502
decay3body.tpcNsigma[1] = trackPion.tpcNSigmaPi();
499503
decay3body.tpcNsigma[2] = trackDeuteron.tpcNSigmaDe();
500504
decay3body.tpcNsigma[3] = trackDeuteron.tpcNSigmaPi();
505+
decay3body.tpcSignal[0] = trackProton.tpcSignal();
506+
decay3body.tpcSignal[1] = trackPion.tpcSignal();
507+
decay3body.tpcSignal[2] = trackDeuteron.tpcSignal();
501508
// recalculated bachelor TOF PID
502509
decay3body.tofNsigmaDeuteron = tofNsigmaDeuteron;
503510

0 commit comments

Comments
 (0)