@@ -88,6 +88,7 @@ struct Alice3strangenessFinder {
8888 ConfigurableAxis axisXiMass{" axisXiMass" , {200 , 1 .22f , 1 .42f }, " Xi mass axis" };
8989 ConfigurableAxis axisOmegaMass{" axisOmegaMass" , {200 , 1 .57f , 1 .77f }, " Omega mass axis" };
9090
91+ ConfigurableAxis axisDCA{" axisDCA" , {200 , 0 , 200 }, " DCA axis" };
9192 ConfigurableAxis axisEta{" axisEta" , {80 , -4 .f , 4 .f }, " Eta axis" };
9293 ConfigurableAxis axisPt{" axisPt" , {VARIABLE_WIDTH , 0 .0f , 0 .025f , 0 .05f , 0 .075f , 0 .1f , 0 .125f , 0 .15f , 0 .175f , 0 .2f , 0 .225f , 0 .25f , 0 .275f , 0 .3f , 0 .325f , 0 .35f , 0 .375f , 0 .4f , 0 .425f , 0 .45f , 0 .475f , 0 .5f , 0 .525f , 0 .55f , 0 .575f , 0 .6f , 0 .625f , 0 .65f , 0 .675f , 0 .7f , 0 .725f , 0 .75f , 0 .775f , 0 .8f , 0 .82f , 0 .85f , 0 .875f , 0 .9f , 0 .925f , 0 .95f , 0 .975f , 1 .0f , 1 .05f , 1 .1f }, " pt axis for QA histograms" };
9394
@@ -129,6 +130,7 @@ struct Alice3strangenessFinder {
129130
130131 Configurable<float > v0MaxDauDCA{" v0MaxDauDCA" , 0 .005f , " DCA between v0 daughters (cm)" };
131132 Configurable<float > cascMaxDauDCA{" cascMaxDauDCA" , 0 .005f , " DCA between cascade daughters (cm)" };
133+ Configurable<float > cascMaxEta{" cascMaxEta" , 2 .5f , " DCA between cascade daughters (cm)" };
132134 } presel;
133135
134136 // Operation
@@ -143,6 +145,7 @@ struct Alice3strangenessFinder {
143145
144146 o2::vertexing::DCAFitterN<2 > fitter;
145147 Service<o2::framework::O2DatabasePDG> pdgDB;
148+ static constexpr float ToMicrons = 1e+4 ;
146149
147150 // partitions for v0/casc dau tracks
148151 Partition<Alice3TracksACTS> positiveSecondaryTracksACTS =
@@ -177,6 +180,7 @@ struct Alice3strangenessFinder {
177180
178181 struct Candidate {
179182 int index{-1 };
183+
180184 // decay properties
181185 float dcaDau{};
182186 float eta{};
@@ -239,6 +243,7 @@ struct Alice3strangenessFinder {
239243 histos.add (" hPtPosDauAfterV0Finding" , " " , kTH2D , {axisPt, axisPt});
240244 histos.add (" hPtNegDauAfterV0Finding" , " " , kTH2D , {axisPt, axisPt});
241245 histos.add (" hEventCounter" , " " , kTH1D , {{1 , 0 , 2 }}); // counting processed events
246+
242247 auto hV0Counter = histos.add <TH1 >(" hV0Counter" , " hV0Counter" , kTH1D , {{4 , 0 , 4 }});
243248 hV0Counter->GetXaxis ()->SetBinLabel (1 , " K0S" );
244249 hV0Counter->GetXaxis ()->SetBinLabel (2 , " Lambda" );
@@ -248,9 +253,6 @@ struct Alice3strangenessFinder {
248253 histos.add (" hRadiusVsHitsNeg" , " " , kTH2D , {{400 , 0 , 400 }, {12 , 0.5 , 12.5 }}); // radius vs hist for MC studies
249254 histos.add (" hRadiusVsHitsPos" , " " , kTH2D , {{400 , 0 , 400 }, {12 , 0.5 , 12.5 }}); // radius vs hist for MC studies
250255
251- histos.add (" hXiMass" , " " , kTH1D , {axisXiMass});
252- histos.add (" hOmegaMass" , " " , kTH1D , {axisOmegaMass});
253-
254256 auto hV0Building = histos.add <TH1 >(" hV0Building" , " hV0Building" , kTH1D , {{10 , 0.5 , 10.5 }});
255257 hV0Building->GetXaxis ()->SetBinLabel (1 , " Pair" );
256258 hV0Building->GetXaxis ()->SetBinLabel (2 , " Pdg check" );
@@ -272,6 +274,12 @@ struct Alice3strangenessFinder {
272274 histos.add (" Generated/hGeneratedAntiOmega" , " hGeneratedAntiOmega" , kTH2D , {{axisPt}, {axisEta}});
273275 }
274276
277+ if (buildCascade) {
278+ histos.add (" CascadeBuilding/hDcaBetweenDaus" , " hDcaBetweenDaus" , kTH1D , {{axisDCA}});
279+ histos.add (" CascadeBuilding/hXiMass" , " " , kTH1D , {axisXiMass});
280+ histos.add (" CascadeBuilding/hOmegaMass" , " " , kTH1D , {axisOmegaMass});
281+ }
282+
275283 histos.print ();
276284 }
277285
@@ -585,6 +593,19 @@ struct Alice3strangenessFinder {
585593 continue ; // failed at building candidate
586594 }
587595
596+ // Apply preselections
597+ if (cascCand.dcaDau > presel.cascMaxDauDCA ) {
598+ continue ; // combined tracks should be reasonanly close
599+ }
600+
601+ if (cascCand.eta > presel.cascMaxEta ) {
602+ continue ; // candidate outside of acceptance
603+ }
604+
605+ if (std::hypot (v0Cand.posSV [0 ], v0Cand.posSV [1 ]) < std::hypot (cascCand.posSV [0 ], cascCand.posSV [1 ])) {
606+ continue ; // causality
607+ }
608+
588609 const float massXi = RecoDecay::m (std::array{std::array{cascCand.pDau0 [0 ], cascCand.pDau0 [1 ], cascCand.pDau0 [2 ]},
589610 std::array{cascCand.pDau1 [0 ], cascCand.pDau1 [1 ], cascCand.pDau1 [2 ]}},
590611 std::array{o2::constants::physics::MassLambda, o2::constants::physics::MassPionCharged});
@@ -606,8 +627,9 @@ struct Alice3strangenessFinder {
606627 vtx[0 ], vtx[1 ], vtx[2 ]);
607628
608629 histos.fill (HIST (" hCascadeBuilding" ), 4.0 );
609- histos.fill (HIST (" hXiMass" ), massXi);
610- histos.fill (HIST (" hOmegaMass" ), massOm);
630+ histos.fill (HIST (" CascadeBuilding/hDcaBetweenDaus" ), cascCand.dcaDau * ToMicrons);
631+ histos.fill (HIST (" CascadeBuilding/hXiMass" ), massXi);
632+ histos.fill (HIST (" CascadeBuilding/hOmegaMass" ), massOm);
611633
612634 tableA3CascadeMcLabels (cascCand.index );
613635 tableCascIndices (0 , // cascade index, dummy value
0 commit comments