Skip to content

Commit ac5517a

Browse files
authored
Add centrality and preselection
1 parent 0decfa5 commit ac5517a

File tree

1 file changed

+54
-50
lines changed

1 file changed

+54
-50
lines changed

PWGHF/TableProducer/treeCreatorOmegacSt.cxx

Lines changed: 54 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,10 @@ DECLARE_SOA_TABLE(HfStChBarGens, "AOD", "HFSTCHBARGEN",
117117
// -> Pr + Pi
118118
namespace hf_st_charmed_baryon
119119
{
120+
DECLARE_SOA_COLUMN(Centrality, centrality, float);
120121
DECLARE_SOA_COLUMN(MassOmega, massOmega, float);
121122
DECLARE_SOA_COLUMN(MassXi, massXi, float);
122123
DECLARE_SOA_COLUMN(MassLambda, massLambda, float);
123-
DECLARE_SOA_COLUMN(MassOmegaKaon, massOmegaKaon, float);
124-
DECLARE_SOA_COLUMN(MassOmegaPion, massOmegaPion, float);
125-
DECLARE_SOA_COLUMN(MassXiPion, massXiPion, float);
126124
DECLARE_SOA_COLUMN(NSigmaTpcPion, nSigmaTpcPion, float);
127125
DECLARE_SOA_COLUMN(NSigmaTofPion, nSigmaTofPion, float);
128126
DECLARE_SOA_COLUMN(NSigmaTpcKaon, nSigmaTpcKaon, float);
@@ -135,15 +133,14 @@ DECLARE_SOA_COLUMN(NSigmaTpcBachPi, nSigmaTpcBachPi, float);
135133
DECLARE_SOA_COLUMN(NSigmaTofBachPi, nSigmaTofBachPi, float);
136134
DECLARE_SOA_COLUMN(NSigmaTpcBachKa, nSigmaTpcBachKa, float);
137135
DECLARE_SOA_COLUMN(NSigmaTofBachKa, nSigmaTofBachKa, float);
138-
DECLARE_SOA_COLUMN(PtCasc, ptCasc, float);
136+
DECLARE_SOA_COLUMN(PxCasc, pxCasc, float);
137+
DECLARE_SOA_COLUMN(PyCasc, pyCasc, float);
139138
DECLARE_SOA_COLUMN(PzCasc, pzCasc, float);
140139
DECLARE_SOA_COLUMN(IsPositiveCasc, isPositiveCasc, bool);
141-
DECLARE_SOA_COLUMN(PtPionOrKaon, ptPionOrKaon, float);
140+
DECLARE_SOA_COLUMN(PxPionOrKaon, pxPionOrKaon, float);
141+
DECLARE_SOA_COLUMN(PyPionOrKaon, pyPionOrKaon, float);
142142
DECLARE_SOA_COLUMN(PzPionOrKaon, pzPionOrKaon, float);
143143
DECLARE_SOA_COLUMN(IsPositivePionOrKaon, isPositivePionOrKaon, bool);
144-
DECLARE_SOA_COLUMN(PtCharmedBaryon, ptCharmedBaryon, float);
145-
DECLARE_SOA_COLUMN(DecayLengthScaledOmegaC, decayLengthScaledOmegaC, float);
146-
DECLARE_SOA_COLUMN(ImpactProduct, impactProduct, float);
147144
DECLARE_SOA_COLUMN(ItsClusterMapPionOrKaon, itsClusterMapPionOrKaon, uint8_t);
148145
DECLARE_SOA_COLUMN(CpaCharmedBaryon, cpaCharmedBaryon, float);
149146
DECLARE_SOA_COLUMN(CpaXYCharmedBaryon, cpaXYCharmedBaryon, float);
@@ -178,12 +175,10 @@ DECLARE_SOA_COLUMN(ToiMask, toiMask, uint32_t);
178175
} // namespace hf_st_charmed_baryon
179176

180177
DECLARE_SOA_TABLE(HfStChBars, "AOD", "HFSTCHBAR",
178+
hf_st_charmed_baryon::Centrality,
181179
hf_st_charmed_baryon::MassOmega,
182180
hf_st_charmed_baryon::MassXi,
183181
hf_st_charmed_baryon::MassLambda,
184-
hf_st_charmed_baryon::MassOmegaKaon,
185-
hf_st_charmed_baryon::MassOmegaPion,
186-
hf_st_charmed_baryon::MassXiPion,
187182
hf_st_charmed_baryon::NSigmaTpcPion,
188183
hf_st_charmed_baryon::NSigmaTofPion,
189184
hf_st_charmed_baryon::NSigmaTpcKaon,
@@ -196,15 +191,14 @@ DECLARE_SOA_TABLE(HfStChBars, "AOD", "HFSTCHBAR",
196191
hf_st_charmed_baryon::NSigmaTofBachPi,
197192
hf_st_charmed_baryon::NSigmaTpcBachKa,
198193
hf_st_charmed_baryon::NSigmaTofBachKa,
199-
hf_st_charmed_baryon::PtCasc,
194+
hf_st_charmed_baryon::PxCasc,
195+
hf_st_charmed_baryon::PyCasc,
200196
hf_st_charmed_baryon::PzCasc,
201197
hf_st_charmed_baryon::IsPositiveCasc,
202-
hf_st_charmed_baryon::PtPionOrKaon,
198+
hf_st_charmed_baryon::PxPionOrKaon,
199+
hf_st_charmed_baryon::PyPionOrKaon,
203200
hf_st_charmed_baryon::PzPionOrKaon,
204201
hf_st_charmed_baryon::IsPositivePionOrKaon,
205-
hf_st_charmed_baryon::PtCharmedBaryon,
206-
hf_st_charmed_baryon::DecayLengthScaledOmegaC,
207-
hf_st_charmed_baryon::ImpactProduct,
208202
hf_st_charmed_baryon::ItsClusterMapPionOrKaon,
209203
hf_st_charmed_baryon::CpaCharmedBaryon,
210204
hf_st_charmed_baryon::CpaXYCharmedBaryon,
@@ -263,7 +257,7 @@ struct HfTreeCreatorOmegacSt {
263257
Configurable<float> massWindowLambda{"massWindowLambda", 0.05, "Inv. mass window for Lambda"};
264258
Configurable<float> massWindowXiC{"massWindowXiC", 0.1, "Inv. mass window for Xic"};
265259
Configurable<float> massWindowOmegaC{"massWindowOmegaC", 0.1, "Inv. mass window for Omegac"};
266-
Configurable<int> selectedChannel{"selectedChannel", 0, "Selected decay channel for Xic or Omegac: 0=all, 1=Xic->Xi+Pi, 2=Xic->Omega+K, 3=Omegac->Omega+Pi, 4=Omegac->Omega+K"};
260+
Configurable<int> selectedChannel{"selectedChannel", 0, "Selected decay channel for Xic or Omegac: 0=all, 1=Xic->Xi+Pi, 2=Xic->Omega+K, 3=Omegac->Omega+Pi, 4=Omegac->Omega+K, 5=Omegac->Xi+Pi"};
267261
Configurable<float> maxMatchingChi2TrackedCascade{"maxMatchingChi2TrackedCascade", 2000., "Max matching chi2 for tracked cascades"};
268262
Configurable<bool> recalculateMasses{"recalculateMasses", true, "Recalculate Xi/Omega masses"};
269263
Configurable<float> maxNSigmaBachelor{"maxNSigmaBachelor", 5., "Max Nsigma for bachelor of tracked cascade"};
@@ -284,10 +278,13 @@ struct HfTreeCreatorOmegacSt {
284278
// whether to require TOF in addition to TPC
285279
Configurable<bool> useTofPid{"useTofPid", false, "Require TOF PID together with TPC PID when true; otherwise use TPC only"};
286280

281+
//pT cut for CharmBaryon
282+
Configurable<float> minPtCharmedBaryon{"minPtCharmedBaryon", 0.f, "Minimum pT for the charmed baryon"};
283+
Configurable<float> maxPtCharmedBaryon{"maxPtCharmedBaryon", 50.f, "Maximum pT for the charmed baryon"};
287284

288285
// CPA cuts (defaults: >= 0.9)
289286
Configurable<float> minCpaCharmedBaryon{"minCpaCharmedBaryon", 0.9f, "Minimum CPA for charmed baryon"};
290-
Configurable<float> minCpaXYCharmedBaryon{"minCpaXYCharmedBaryon", 0.9f, "Minimum CPA XY for charmed baryon"};
287+
Configurable<float> minCpaXYCharmedBaryon{"minCpaXYCharmedBaryon", 0.9f, "Minimum CPA XY for charmed baryon"};//remove maybe???
291288
Configurable<float> minCpaCasc{"minCpaCasc", 0.9f, "Minimum CPA for cascade"};
292289
Configurable<float> minCpaXYCasc{"minCpaXYCasc", 0.9f, "Minimum CPA XY for cascade"};
293290

@@ -302,7 +299,7 @@ struct HfTreeCreatorOmegacSt {
302299
Configurable<float> maxImpactCharmBachelorZ{"maxImpactCharmBachelorZ", 10.f, "Max abs DCA Z of charm bachelor"};
303300
Configurable<float> minPtCascade{"minPtCascade", 0.f, "Minimum pT requirement for the cascade track"};
304301
Configurable<float> minPtPionOrKaon{"minPtPionOrKaon", 0.f, "Minimum pT requirement for the charm baryon daughter pion/kaon track"};
305-
Configurable<float> minImpProduct{"minImpProduct", -1.e9f, "Lower bound for DCA impact product"};
302+
Configurable<float> minImpProduct{"minImpProduct", -1.f, "Lower bound for DCA impact product"};
306303
Configurable<float> maxImpProduct{"maxImpProduct", 0.f, "Upper bound for DCA impact product"};
307304

308305
SliceCache cache;
@@ -352,6 +349,8 @@ struct HfTreeCreatorOmegacSt {
352349
{"hMassOmegaPiVsPt", "inv. mass #Omega + #pi;inv. mass (GeV/#it{c}^{2});p_{T} (GeV/#it{c})", {HistType::kTH2D, {{400, 1.5, 3.}, {10, 0., 10.}}}},
353350
{"hMassOmegaK", "inv. mass #Omega + K;inv. mass (GeV/#it{c}^{2})", {HistType::kTH1D, {{400, 1.5, 3.}}}},
354351
{"hMassOmegaKVsPt", "inv. mass #Omega + K;inv. mass (GeV/#it{c}^{2});p_{T} (GeV/#it{c})", {HistType::kTH2D, {{400, 1.5, 3.}, {10, 0., 10.}}}},
352+
{"hMassXiPi", "inv. mass #Xi + #pi;inv. mass (GeV/#it{c}^{2})", {HistType::kTH1D, {{400, 1.5, 3.}}}},
353+
{"hMassXiPiVsPt", "inv. mass #Xi + #pi;inv. mass (GeV/#it{c}^{2});p_{T} (GeV/#it{c})", {HistType::kTH2D, {{400, 1.5, 3.}, {10, 0., 10.}}}},
355354
{"hMassOmegacId", "inv. mass #Omega + #pi (MC ID);inv. mass (GeV/#it{c}^{2})", {HistType::kTH1D, {{400, 1.5, 3.}}}},
356355
{"hMassOmegacGen", "inv. mass #Omega + #pi (from MC);inv. mass (GeV/#it{c}^{2})", {HistType::kTH1D, {{400, 1.5, 3.}}}},
357356
{"hPtVsMassOmega", "#Omega mass;p_{T} (GeV/#it{c});m (GeV/#it{c}^3)", {HistType::kTH2D, {{200, 0., 10.}, {1000, 1., 3.}}}},
@@ -490,6 +489,7 @@ struct HfTreeCreatorOmegacSt {
490489
std::optional<std::reference_wrapper<aod::McParticles const>> mcParticles = std::nullopt)
491490
{
492491
const auto matCorr = static_cast<o2::base::Propagator::MatCorrType>(materialCorrectionType.value);
492+
493493
for (const auto& collision : collisions) {
494494
// Event selection & centrality using HF helper
495495
float centrality{-1.f};
@@ -510,6 +510,7 @@ struct HfTreeCreatorOmegacSt {
510510
}
511511
runNumber = bc.runNumber();
512512
auto timestamp = bc.timestamp();
513+
513514
if (auto* grpo = ccdb->getForTimeStamp<o2::parameters::GRPObject>(grpPath, timestamp)) {
514515
o2::base::Propagator::initFieldFromGRP(grpo);
515516
bz = grpo->getNominalL3Field();
@@ -538,6 +539,7 @@ struct HfTreeCreatorOmegacSt {
538539
const auto collId = collision.globalIndex();
539540
auto groupedTrackIds = trackIndices.sliceBy(trackIndicesPerCollision, collId);
540541
auto groupedTrackedCascades = trackedCascades.sliceBy(assignedTrackedCascadesPerCollision, collId);
542+
541543
o2::dataformats::DCA impactParameterCasc;
542544
for (const auto& trackedCascade : groupedTrackedCascades) {
543545
const auto trackCasc = trackedCascade.track_as<TracksType>();
@@ -555,6 +557,7 @@ struct HfTreeCreatorOmegacSt {
555557
} else {
556558
o2::base::Propagator::Instance()->propagateToDCABxByBz(primaryVertex, trackParCovCasc, 2.f, matCorr, &impactParameterCasc);
557559
}
560+
558561
const auto& casc = trackedCascade.cascade();
559562
const auto& bachelor = casc.bachelor_as<TracksType>();
560563
const auto& v0 = casc.v0();
@@ -567,6 +570,7 @@ struct HfTreeCreatorOmegacSt {
567570
bachelor.tpcNClsFindable() < minNoClsTrackedCascade) {
568571
continue;
569572
}
573+
570574
const auto& v0TrackPr = trackCasc.sign() < 0 ? v0TrackPos : v0TrackNeg;
571575
const auto& v0TrackPi = trackCasc.sign() < 0 ? v0TrackNeg : v0TrackPos;
572576

@@ -689,6 +693,7 @@ struct HfTreeCreatorOmegacSt {
689693
(track.tpcNClsCrossedRows() >= TpcNclsFindableFraction * track.tpcNClsFindable()) &&
690694
(track.tpcChi2NCl() <= TpcChi2NclMax) &&
691695
(track.itsChi2NCl() <= ItsChi2NclMax)) {
696+
//TPC and TOF PID for pion/kaon from chambaryon
692697
const bool passTPCpid = (std::abs(track.tpcNSigmaPi()) < maxNSigmaPion) || (std::abs(track.tpcNSigmaKa()) < maxNSigmaKaon);
693698
const float tofPiAbs = std::abs(track.tofNSigmaPi());
694699
const float tofKaAbs = std::abs(track.tofNSigmaKa());
@@ -740,28 +745,27 @@ struct HfTreeCreatorOmegacSt {
740745
df2.createParentTrackParCov().getPxPyPzGlo(pCharmedBaryon);
741746
const auto cpaCharmedBaryon = RecoDecay::cpa(primaryVertexPos, df2.getPCACandidate(), pCharmedBaryon);
742747
const auto cpaXYCharmedBaryon = RecoDecay::cpaXY(primaryVertexPos, df2.getPCACandidate(), pCharmedBaryon);
748+
743749
df2.getTrackParamAtPCA(0).getPxPyPzGlo(momenta[0]);
744750
df2.getTrackParamAtPCA(1).getPxPyPzGlo(momenta[1]);
745751
const auto ptCascade = std::hypot(momenta[0][0], momenta[0][1]);
746752
const auto ptPionOrKaon = std::hypot(momenta[1][0], momenta[1][1]);
747-
const auto ptCharmedBaryon = std::hypot(pCharmedBaryon[0], pCharmedBaryon[1]);
748-
const auto pCharmedBaryonMag = RecoDecay::p(momenta[0], momenta[1]);
749-
const auto massOmegaPi = RecoDecay::m(momenta, massesOmegacToOmegaPi);
750-
const auto massOmegaK = RecoDecay::m(momenta, OmegaK);
751-
const auto massXiPi = RecoDecay::m(momenta, massesXicToXiPi);
752-
const float massOmegaPion = static_cast<float>(massOmegaPi);
753-
const float massOmegaKaon = static_cast<float>(massOmegaK);
754-
const float massXiPion = static_cast<float>(massXiPi);
755-
const auto decayLengthScaledOmegaC = static_cast<float>((pCharmedBaryonMag > 0.) ? decayLength * o2::constants::physics::MassOmegaC0 / pCharmedBaryonMag * 1.e4 : 0.);
756-
registry.fill(HIST("hMassOmegaPi"), massOmegaPi);
757-
registry.fill(HIST("hMassOmegaPiVsPt"), massOmegaPi, RecoDecay::pt(momenta[0], momenta[1]));
758-
registry.fill(HIST("hMassOmegaK"), massOmegaK);
759-
registry.fill(HIST("hMassOmegaKVsPt"), massOmegaK, RecoDecay::pt(momenta[0], momenta[1]));
760-
const bool massOmegacToOmegaPiPass = std::abs(massOmegaPi - o2::constants::physics::MassOmegaC0) < massWindowOmegaC;
761-
const bool massOmegacToOmegaKPass = std::abs(massOmegaK - o2::constants::physics::MassOmegaC0) < massWindowOmegaC;
762-
const bool massXicToOmegaKaPass = std::abs(massOmegaK - o2::constants::physics::MassXiC0) < massWindowXiC;
763-
const bool massXicToXiPiPass = std::abs(massXiPi - o2::constants::physics::MassXiC0) < massWindowXiC;
764-
const bool anyChannelPass = massOmegacToOmegaKPass || massOmegacToOmegaPiPass || massXicToXiPiPass || massXicToOmegaKaPass;
753+
const auto ptCharmedBaryon = RecoDecay::pt(momenta[0], momenta[1]);
754+
const auto massOmegaPion = RecoDecay::m(momenta, massesOmegacToOmegaPi);
755+
const auto massOmegaKaon = RecoDecay::m(momenta, OmegaK);
756+
const auto massXiPion = RecoDecay::m(momenta, massesXicToXiPi);
757+
registry.fill(HIST("hMassOmegaPi"), massOmegaPion);
758+
registry.fill(HIST("hMassOmegaPiVsPt"), massOmegaPion, ptCharmedBaryon);
759+
registry.fill(HIST("hMassOmegaK"), massOmegaKaon);
760+
registry.fill(HIST("hMassOmegaKVsPt"), massOmegaKaon, ptCharmedBaryon);
761+
registry.fill(HIST("hMassXiPi"), massXiPion);
762+
registry.fill(HIST("hMassXiPiVsPt"), massXiPion, ptCharmedBaryon);
763+
const bool massOmegacToOmegaPiPass = std::abs(massOmegaPion - o2::constants::physics::MassOmegaC0) < massWindowOmegaC;
764+
const bool massOmegacToOmegaKPass = std::abs(massOmegaKaon - o2::constants::physics::MassOmegaC0) < massWindowOmegaC;
765+
const bool massOmegacToXiPiPass = std::abs(massXiPion - o2::constants::physics::MassOmegaC0) < massWindowOmegaC;
766+
const bool massXicToOmegaKaPass = std::abs(massOmegaKaon - o2::constants::physics::MassXiC0) < massWindowXiC;
767+
const bool massXicToXiPiPass = std::abs(massXiPion - o2::constants::physics::MassXiC0) < massWindowXiC;
768+
const bool anyChannelPass = massOmegacToOmegaKPass || massOmegacToOmegaPiPass || massXicToXiPiPass || massXicToOmegaKaPass || massOmegacToXiPiPass;
765769
bool passSelectedChannel = true;
766770
switch (selectedChannel.value) {
767771
case 0:
@@ -779,6 +783,9 @@ struct HfTreeCreatorOmegacSt {
779783
case 4:
780784
passSelectedChannel = massOmegacToOmegaKPass;
781785
break;
786+
case 5:
787+
passSelectedChannel = massOmegacToXiPiPass;
788+
break;
782789
default:
783790
passSelectedChannel = true; // unexpected code -> do not reject
784791
break;
@@ -861,17 +868,18 @@ struct HfTreeCreatorOmegacSt {
861868
continue;
862869
if (ptPionOrKaon < minPtPionOrKaon)
863870
continue;
871+
if (ptCharmedBaryon < minPtCharmedBaryon)
872+
continue;
873+
if (ptCharmedBaryon > maxPtCharmedBaryon)
874+
continue;
864875
if (impactProduct < minImpProduct || impactProduct > maxImpProduct)
865876
continue;
866877
registry.fill(HIST("hDecayLength"), decayLength * 1e4);
867878
registry.fill(HIST("hDecayLengthScaled"), decayLength * o2::constants::physics::MassOmegaC0 / RecoDecay::p(momenta[0], momenta[1]) * 1e4);
868-
std::cout << "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"<< std::endl;
869-
outputTable(massOmega,
879+
outputTable(centrality,
880+
massOmega,
870881
massXi,
871882
massV0,
872-
massOmegaKaon,
873-
massOmegaPion,
874-
massXiPion,
875883
track.tpcNSigmaPi(),
876884
track.tofNSigmaPi(),
877885
track.tpcNSigmaKa(),
@@ -884,15 +892,14 @@ struct HfTreeCreatorOmegacSt {
884892
bachelor.tofNSigmaPi(),
885893
bachelor.tpcNSigmaKa(),
886894
bachelor.tofNSigmaKa(),
887-
ptCascade, // cascade transverse momentum
895+
momenta[0][0], // cascade momentum
896+
momenta[0][1],
888897
momenta[0][2],
889898
static_cast<bool>(trackCasc.sign() > 0),
890-
ptPionOrKaon, // pion/kaon transverse momentum
899+
momenta[1][0], // pion/kaon momentum
900+
momenta[1][1],
891901
momenta[1][2],
892902
static_cast<bool>(track.sign() > 0),
893-
ptCharmedBaryon,
894-
decayLengthScaledOmegaC,
895-
impactProduct,
896903
static_cast<uint8_t>(track.itsClusterMap()),
897904
cpaCharmedBaryon,
898905
cpaXYCharmedBaryon,
@@ -932,9 +939,6 @@ struct HfTreeCreatorOmegacSt {
932939
hCandidatesCascPiOrK->Fill(SVFitting::Fail);
933940
continue;
934941
}
935-
936-
std::cout << "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"<< std::endl;
937-
938942
hCandidatesCascPiOrK->Fill(SVFitting::FitOk);
939943
}
940944
}

0 commit comments

Comments
 (0)