@@ -117,12 +117,10 @@ DECLARE_SOA_TABLE(HfStChBarGens, "AOD", "HFSTCHBARGEN",
117117// -> Pr + Pi
118118namespace hf_st_charmed_baryon
119119{
120+ DECLARE_SOA_COLUMN (Centrality, centrality, float );
120121DECLARE_SOA_COLUMN (MassOmega, massOmega, float );
121122DECLARE_SOA_COLUMN (MassXi, massXi, float );
122123DECLARE_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 );
126124DECLARE_SOA_COLUMN (NSigmaTpcPion, nSigmaTpcPion, float );
127125DECLARE_SOA_COLUMN (NSigmaTofPion, nSigmaTofPion, float );
128126DECLARE_SOA_COLUMN (NSigmaTpcKaon, nSigmaTpcKaon, float );
@@ -135,15 +133,14 @@ DECLARE_SOA_COLUMN(NSigmaTpcBachPi, nSigmaTpcBachPi, float);
135133DECLARE_SOA_COLUMN (NSigmaTofBachPi, nSigmaTofBachPi, float );
136134DECLARE_SOA_COLUMN (NSigmaTpcBachKa, nSigmaTpcBachKa, float );
137135DECLARE_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 );
139138DECLARE_SOA_COLUMN (PzCasc, pzCasc, float );
140139DECLARE_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 );
142142DECLARE_SOA_COLUMN (PzPionOrKaon, pzPionOrKaon, float );
143143DECLARE_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 );
147144DECLARE_SOA_COLUMN (ItsClusterMapPionOrKaon, itsClusterMapPionOrKaon, uint8_t );
148145DECLARE_SOA_COLUMN (CpaCharmedBaryon, cpaCharmedBaryon, float );
149146DECLARE_SOA_COLUMN (CpaXYCharmedBaryon, cpaXYCharmedBaryon, float );
@@ -178,12 +175,10 @@ DECLARE_SOA_COLUMN(ToiMask, toiMask, uint32_t);
178175} // namespace hf_st_charmed_baryon
179176
180177DECLARE_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