@@ -108,6 +108,9 @@ struct sigmaminustask {
108108 const AxisSpec dcaMothAxis{100 , 0 , 0.03 , " DCA [cm]" };
109109 const AxisSpec dcaDaugAxis{200 , 0 , 20 , " DCA [cm]" };
110110 const AxisSpec radiusAxis{100 , -1 , 40 , " Decay radius [cm]" };
111+ const AxisSpec alphaAPAxis{200 , -1.0 , 1.0 , " #alpha_{AP}" };
112+ const AxisSpec qtAPAxis{200 , 0.0 , 0.5 , " q_{T,AP}" };
113+ const AxisSpec cosPointingAngleAxis{100 , -1.0 , 1.0 , " Cos#theta_{PA}" };
111114
112115 const AxisSpec ptResolutionAxis{100 , -1.0 , 1.0 , " (#it{p}_{T}^{rec} - #it{p}_{T}^{gen}) / #it{p}_{T}^{gen}" };
113116 const AxisSpec massResolutionAxis{100 , -0.5 , 0.5 , " (m_{rec} - m_{gen}) / m_{gen}" };
@@ -125,6 +128,8 @@ struct sigmaminustask {
125128 rSigmaMinus.add (" h2NSigmaTPCPiPt" , " h2NSigmaTPCPiPt" , {HistType::kTH2F , {ptAxis, nSigmaPiAxis}});
126129 rSigmaMinus.add (" h2DCAMothPt" , " h2DCAMothPt" , {HistType::kTH2F , {ptAxis, dcaMothAxis}});
127130 rSigmaMinus.add (" h2DCADaugPt" , " h2DCADaugPt" , {HistType::kTH2F , {ptAxis, dcaDaugAxis}});
131+ rSigmaMinus.add (" h2ArmenterosPreCuts" , " h2ArmenterosPreCuts" , {HistType::kTH2F , {alphaAPAxis, qtAPAxis}});
132+ rSigmaMinus.add (" h2CosPointingAnglePt" , " h2CosPointingAnglePt" , {HistType::kTH2F , {ptAxis, cosPointingAngleAxis}});
128133
129134 if (doprocessMC) {
130135 // Add MC histograms if needed
@@ -214,6 +219,14 @@ struct sigmaminustask {
214219 return std::sqrt (p2A - dp * dp / p2V0);
215220 }
216221
222+ float cosPAngle (const std::array<float , 3 >& momMother, const std::array<float , 3 >& posMother, const std::array<float , 3 >& posKink)
223+ {
224+ std::array<float , 3 > vMother = {posKink[0 ] - posMother[0 ], posKink[1 ] - posMother[1 ], posKink[2 ] - posMother[2 ]};
225+ float pMother = std::sqrt (std::inner_product (momMother.begin (), momMother.end (), momMother.begin (), 0 .f ));
226+ float vMotherNorm = std::sqrt (std::inner_product (vMother.begin (), vMother.end (), vMother.begin (), 0 .f ));
227+ return (std::inner_product (momMother.begin (), momMother.end (), vMother.begin (), 0 .f )) / (pMother * vMotherNorm);
228+ }
229+
217230 void processData (CollisionsFull::iterator const & collision, aod::KinkCands const & KinkCands, TracksFull const &)
218231 {
219232 if (std::abs (collision.posZ ()) > cutzvertex || !collision.sel8 ()) {
@@ -228,10 +241,17 @@ struct sigmaminustask {
228241 continue ;
229242 }
230243
231- float qt = qtAP (std::array{kinkCand.pxMoth (), kinkCand.pyMoth (), kinkCand.pzMoth ()}, std::array{kinkCand.pxDaug (), kinkCand.pyDaug (), kinkCand.pzDaug ()});
232- if (qt < cutMinQtAP || qt > cutMaxQtAP) {
244+ float alphaAPValue = alphaAP (std::array{kinkCand.pxMoth (), kinkCand.pyMoth (), kinkCand.pzMoth ()}, std::array{kinkCand.pxDaug (), kinkCand.pyDaug (), kinkCand.pzDaug ()});
245+ float qtValue = qtAP (std::array{kinkCand.pxMoth (), kinkCand.pyMoth (), kinkCand.pzMoth ()}, std::array{kinkCand.pxDaug (), kinkCand.pyDaug (), kinkCand.pzDaug ()});
246+ rSigmaMinus.fill (HIST (" h2ArmenterosPreCuts" ), alphaAPValue, qtValue);
247+
248+ if (qtValue < cutMinQtAP || qtValue > cutMaxQtAP) {
233249 continue ;
234250 }
251+ float cosPointingAngleRec = cosPAngle (std::array{kinkCand.pxMoth (), kinkCand.pyMoth (), kinkCand.pzMoth ()},
252+ std::array{0 .0f , 0 .0f , 0 .0f },
253+ std::array{kinkCand.xDecVtx (), kinkCand.yDecVtx (), kinkCand.zDecVtx ()});
254+ rSigmaMinus.fill (HIST (" h2CosPointingAnglePt" ), kinkCand.mothSign () * kinkCand.ptMoth (), cosPointingAngleRec);
235255
236256 rSigmaMinus.fill (HIST (" h2MassSigmaMinusPt" ), kinkCand.mothSign () * kinkCand.ptMoth (), kinkCand.mSigmaMinus ());
237257 rSigmaMinus.fill (HIST (" h2SigmaMassVsXiMass" ), kinkCand.mXiMinus (), kinkCand.mSigmaMinus ());
@@ -275,6 +295,9 @@ struct sigmaminustask {
275295 }
276296
277297 // histograms filled with all kink candidates
298+ float alphaAPValue = alphaAP (std::array{kinkCand.pxMoth (), kinkCand.pyMoth (), kinkCand.pzMoth ()}, std::array{kinkCand.pxDaug (), kinkCand.pyDaug (), kinkCand.pzDaug ()});
299+ float qtValue = qtAP (std::array{kinkCand.pxMoth (), kinkCand.pyMoth (), kinkCand.pzMoth ()}, std::array{kinkCand.pxDaug (), kinkCand.pyDaug (), kinkCand.pzDaug ()});
300+ rSigmaMinus.fill (HIST (" h2ArmenterosPreCuts" ), alphaAPValue, qtValue);
278301 rSigmaMinus.fill (HIST (" h2MassSigmaMinusPt" ), kinkCand.mothSign () * kinkCand.ptMoth (), kinkCand.mSigmaMinus ());
279302 rSigmaMinus.fill (HIST (" h2SigmaMassVsXiMass" ), kinkCand.mXiMinus (), kinkCand.mSigmaMinus ());
280303 rSigmaMinus.fill (HIST (" h2NSigmaTPCPiPt" ), kinkCand.mothSign () * kinkCand.ptMoth (), dauTrack.tpcNSigmaPi ());
@@ -305,6 +328,9 @@ struct sigmaminustask {
305328 float deltaYMother = mcTrackPiDau.vy () - piMother.vy ();
306329 float decayRadiusMC = std::sqrt (deltaXMother * deltaXMother + deltaYMother * deltaYMother);
307330 float decayRadiusRec = std::sqrt (kinkCand.xDecVtx () * kinkCand.xDecVtx () + kinkCand.yDecVtx () * kinkCand.yDecVtx ());
331+ float cosPointingAngleRec = cosPAngle (std::array{kinkCand.pxMoth (), kinkCand.pyMoth (), kinkCand.pzMoth ()},
332+ std::array{0 .0f , 0 .0f , 0 .0f },
333+ std::array{kinkCand.xDecVtx (), kinkCand.yDecVtx (), kinkCand.zDecVtx ()});
308334
309335 // Check coherence of MCcollision Id for daughter MCparticle and reconstructed collision
310336 bool mcCollisionIdCheck = false ;
@@ -327,6 +353,7 @@ struct sigmaminustask {
327353 rSigmaMinus.fill (HIST (" h2RadiusResolution" ), kinkCand.mothSign () * kinkCand.ptMoth (), (decayRadiusRec - decayRadiusMC) / decayRadiusMC);
328354 rSigmaMinus.fill (HIST (" h2DCAMothPt" ), kinkCand.mothSign () * kinkCand.ptMoth (), kinkCand.dcaMothPv ());
329355 rSigmaMinus.fill (HIST (" h2DCADaugPt" ), kinkCand.mothSign () * kinkCand.ptMoth (), kinkCand.dcaDaugPv ());
356+ rSigmaMinus.fill (HIST (" h2CosPointingAnglePt" ), kinkCand.mothSign () * kinkCand.ptMoth (), cosPointingAngleRec);
330357
331358 if (std::abs (mcTrackPiDau.pdgCode ()) == 211 ) {
332359 rSigmaMinus.fill (HIST (" h2NSigmaTOFPiPt" ), kinkCand.mothSign () * kinkCand.ptMoth (), dauTrack.tofNSigmaPi ());
0 commit comments