Skip to content

Commit eed2cb4

Browse files
authored
[PWGHF] Ds-h correlation, adding separation in PID (#12095)
1 parent c6068a5 commit eed2cb4

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

PWGHF/HFC/DataModel/DerivedDataCorrelationTables.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ namespace o2::aod
2222
{
2323
namespace hf_collisions_reduced
2424
{
25+
DECLARE_SOA_COLUMN(NumPvContrib, numPvContrib, int); //! Event multiplicity from PV contributors
2526
DECLARE_SOA_COLUMN(Multiplicity, multiplicity, float); //! Event multiplicity
2627
DECLARE_SOA_COLUMN(PosZ, posZ, float); //! Primary vertex z position
2728

@@ -30,6 +31,7 @@ DECLARE_SOA_COLUMN(PosZ, posZ, float); //! Primary vertex z posi
3031
DECLARE_SOA_TABLE(HfcRedCollisions, "AOD", "HFCREDCOLLISION", //! Table with collision info
3132
soa::Index<>,
3233
aod::hf_collisions_reduced::Multiplicity,
34+
aod::hf_collisions_reduced::NumPvContrib,
3335
aod::hf_collisions_reduced::PosZ);
3436

3537
using HfcRedCollision = HfcRedCollisions::iterator;

PWGHF/HFC/TableProducer/correlatorDsHadrons.cxx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "PWGHF/DataModel/CandidateSelectionTables.h"
2222
#include "PWGHF/HFC/DataModel/CorrelationTables.h"
2323
#include "PWGHF/HFC/DataModel/DerivedDataCorrelationTables.h"
24+
#include "PWGHF/HFC/Utils/utilsCorrelations.h"
2425
#include "PWGHF/Utils/utilsAnalysis.h"
2526

2627
#include "Common/CCDB/EventSelectionParams.h"
@@ -58,6 +59,7 @@ using namespace o2::constants::physics;
5859
using namespace o2::constants::math;
5960
using namespace o2::framework;
6061
using namespace o2::framework::expressions;
62+
using namespace o2::analysis::hf_correlations;
6163

6264
enum ResonantChannel : int8_t {
6365
PhiPi = 1,
@@ -179,6 +181,8 @@ struct HfCorrelatorDsHadrons {
179181
Configurable<bool> removeCollWSplitVtx{"removeCollWSplitVtx", false, "Flag for rejecting the splitted collisions"};
180182
Configurable<bool> useSel8{"useSel8", true, "Flag for applying sel8 for collision selection (used only in MC processes)"};
181183
Configurable<bool> selNoSameBunchPileUpColl{"selNoSameBunchPileUpColl", true, "Flag for rejecting the collisions associated with the same bunch crossing (used only in MC processes)"};
184+
Configurable<bool> pidTrkApplied{"pidTrkApplied", false, "Apply PID selection for associated tracks"};
185+
Configurable<bool> forceTOF{"forceTOF", false, "force the TOF signal for the PID"};
182186
Configurable<int> selectionFlagDs{"selectionFlagDs", 7, "Selection Flag for Ds (avoid the case of flag = 0, no outputMlScore)"};
183187
Configurable<int> numberEventsMixed{"numberEventsMixed", 5, "Number of events mixed in ME process"};
184188
Configurable<int> decayChannel{"decayChannel", 1, "Resonant decay channels: 1 for Ds->PhiPi->KKpi, 2 for Ds->K0*K->KKPi"};
@@ -193,7 +197,11 @@ struct HfCorrelatorDsHadrons {
193197
Configurable<float> ptTrackMin{"ptTrackMin", 0.3, "min. track pT"};
194198
Configurable<float> ptTrackMax{"ptTrackMax", 50., "max. track pT"};
195199
Configurable<float> zVtxMax{"zVtxMax", 10., "max. position-z of the reconstructed collision"};
200+
Configurable<float> tofPIDThreshold{"tofPIDThreshold", 0.75, "minimum pT after which TOF PID is applicable"};
196201
Configurable<std::vector<int>> classMl{"classMl", {0, 1, 2}, "Indexes of ML scores to be stored. Three indexes max."};
202+
Configurable<std::vector<int>> trkPIDspecies{"trkPIDspecies", std::vector<int>{o2::track::PID::Proton, o2::track::PID::Pion, o2::track::PID::Kaon}, "Trk sel: Particles species for PID, proton, pion, kaon"};
203+
Configurable<std::vector<float>> pidTPCMax{"pidTPCMax", std::vector<float>{3., 0., 0.}, "maximum nSigma TPC"};
204+
Configurable<std::vector<float>> pidTOFMax{"pidTOFMax", std::vector<float>{3., 0., 0.}, "maximum nSigma TOF"};
197205
Configurable<std::vector<double>> binsPtD{"binsPtD", std::vector<double>{o2::analysis::hf_cuts_ds_to_k_k_pi::vecBinsPt}, "pT bin limits for candidate mass plots"};
198206
Configurable<std::vector<double>> binsPtHadron{"binsPtHadron", std::vector<double>{0.3, 2., 4., 8., 12., 50.}, "pT bin limits for assoc particle"};
199207
Configurable<std::vector<double>> binsPtEfficiencyD{"binsPtEfficiencyD", std::vector<double>{o2::analysis::hf_cuts_ds_to_k_k_pi::vecBinsPt}, "pT bin limits for efficiency"};
@@ -761,18 +769,20 @@ struct HfCorrelatorDsHadrons {
761769
// Ds fill histograms and Ds candidates information stored
762770
for (const auto& candidate : candsDsThisColl) {
763771
std::vector<float> outputMl = {-1., -1., -1.};
772+
auto prong0 = candidate.template prong0_as<MyTracksData>();
773+
int chargeDs = prong0.sign();
764774
// candidate selected
765775
if (candidate.isSelDsToKKPi() >= selectionFlagDs) {
766776
for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) {
767777
outputMl[iclass] = candidate.mlProbDsToKKPi()[classMl->at(iclass)];
768778
}
769-
candReduced(indexHfcReducedCollision, candidate.phi(), candidate.eta(), candidate.pt(), hfHelper.invMassDsToKKPi(candidate), candidate.prong0Id(), candidate.prong1Id(), candidate.prong2Id());
779+
candReduced(indexHfcReducedCollision, candidate.phi(), candidate.eta(), candidate.pt() * chargeDs, hfHelper.invMassDsToKKPi(candidate), candidate.prong0Id(), candidate.prong1Id(), candidate.prong2Id());
770780
candSelInfo(indexHfcReducedCollision, outputMl[0], outputMl[2]);
771781
} else if (candidate.isSelDsToPiKK() >= selectionFlagDs) {
772782
for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) {
773783
outputMl[iclass] = candidate.mlProbDsToPiKK()[classMl->at(iclass)];
774784
}
775-
candReduced(indexHfcReducedCollision, candidate.phi(), candidate.eta(), candidate.pt(), hfHelper.invMassDsToPiKK(candidate), candidate.prong0Id(), candidate.prong1Id(), candidate.prong2Id());
785+
candReduced(indexHfcReducedCollision, candidate.phi(), candidate.eta(), candidate.pt() * chargeDs, hfHelper.invMassDsToPiKK(candidate), candidate.prong0Id(), candidate.prong1Id(), candidate.prong2Id());
776786
candSelInfo(indexHfcReducedCollision, outputMl[0], outputMl[2]);
777787
}
778788
}
@@ -782,11 +792,15 @@ struct HfCorrelatorDsHadrons {
782792
if (!track.isGlobalTrackWoDCA()) {
783793
continue;
784794
}
785-
assocTrackReduced(indexHfcReducedCollision, track.globalIndex(), track.phi(), track.eta(), track.pt());
795+
if (pidTrkApplied) {
796+
if (!passPIDSelection(track, trkPIDspecies, pidTPCMax, pidTOFMax, tofPIDThreshold, forceTOF))
797+
continue;
798+
}
799+
assocTrackReduced(indexHfcReducedCollision, track.globalIndex(), track.phi(), track.eta(), track.pt() * track.sign());
786800
assocTrackSelInfo(indexHfcReducedCollision, track.tpcNClsCrossedRows(), track.itsClusterMap(), track.itsNCls(), track.dcaXY(), track.dcaZ());
787801
}
788802

789-
collReduced(collision.multFT0M(), collision.posZ());
803+
collReduced(collision.multFT0M(), collision.numContrib(), collision.posZ());
790804
}
791805
}
792806
PROCESS_SWITCH(HfCorrelatorDsHadrons, processDerivedDataDs, "Process derived data Ds", false);

0 commit comments

Comments
 (0)