@@ -39,7 +39,8 @@ using std::array;
3939
4040using DauTracks = soa::Join<aod::DauTrackExtras, aod::DauTrackTPCPIDs>;
4141using CollEventPlane = soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraFT0CQVs, aod::StraFT0CQVsEv, aod::StraTPCQVs>::iterator;
42- using CollEventPlaneCentralFW = soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraFT0CQVs, aod::StraTPCQVs>::iterator;
42+ using CollEventAndSpecPlane = soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraFT0CQVs, aod::StraFT0CQVsEv, aod::StraTPCQVs, aod::StraZDCSP>::iterator;
43+ using CollEventPlaneCentralFW = soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraFT0CQVs, aod::StraTPCQVs, aod::StraZDCSP>::iterator;
4344using MCCollisionsStra = soa::Join<aod::StraMCCollisions, aod::StraMCCollMults>;
4445using CascCandidates = soa::Join<aod::CascCollRefs, aod::CascCores, aod::CascExtras, aod::CascBBs>;
4546using CascMCCandidates = soa::Join<aod::CascCollRefs, aod::CascCores, aod::CascExtras, aod::CascBBs, aod::CascCoreMCLabels>;
@@ -345,7 +346,7 @@ struct cascadeFlow {
345346 }
346347
347348 template <class collision_t , class cascade_t >
348- void fillAnalysedTable (collision_t coll, cascade_t casc, float v2CSP, float v2CEP, float PsiT0C, float BDTresponseXi, float BDTresponseOmega, int pdgCode)
349+ void fillAnalysedTable (collision_t coll, bool hasEventPlane, bool hasSpectatorPlane, cascade_t casc, float v2CSP, float v2CEP, float v1SP_ZDCA, float v1SP_ZDCC , float PsiT0C, float BDTresponseXi, float BDTresponseOmega, int pdgCode)
349350 {
350351 double masses[2 ]{o2::constants::physics::MassXiMinus, o2::constants::physics::MassOmegaMinus};
351352 ROOT::Math::PxPyPzMVector cascadeVector[2 ], lambdaVector, protonVector;
@@ -370,17 +371,21 @@ struct cascadeFlow {
370371 bool isNoCollInTimeRangeStd = 0 ;
371372 if (coll.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard ))
372373 isNoCollInTimeRangeStd = 1 ;
374+
373375 // IN-ROF pile-up rejection
374376 bool isNoCollInRofStd = 0 ;
375377 if (coll.selection_bit (o2::aod::evsel::kNoCollInRofStandard ))
376378 isNoCollInRofStd = 1 ;
379+
377380 // TVX in TRD
378381 // bool isTVXinTRD = 0;
379382 // if (coll.alias_bit(kTVXinTRD)) isTVXinTRD = 1;
380383
381384 analysisSample (coll.centFT0C (),
382385 isNoCollInTimeRangeStd,
383386 isNoCollInRofStd,
387+ hasEventPlane,
388+ hasSpectatorPlane,
384389 casc.sign (),
385390 casc.pt (),
386391 casc.eta (),
@@ -389,6 +394,8 @@ struct cascadeFlow {
389394 casc.mOmega (),
390395 v2CSP,
391396 v2CEP,
397+ v1SP_ZDCA,
398+ v1SP_ZDCC,
392399 PsiT0C,
393400 BDTresponseXi,
394401 BDTresponseOmega,
@@ -418,6 +425,7 @@ struct cascadeFlow {
418425 resolution.add (" QVectorsNormT0CTPCA" , " QVectorsNormT0CTPCA" , HistType::kTH2F , {axisQVsNorm, CentAxis});
419426 resolution.add (" QVectorsNormT0CTPCC" , " QVectorsNormT0CTPCC" , HistType::kTH2F , {axisQVsNorm, CentAxis});
420427 resolution.add (" QVectorsNormTPCAC" , " QVectorsNormTPCCB" , HistType::kTH2F , {axisQVsNorm, CentAxis});
428+ resolution.add (" QVectorsSpecPlane" , " QVectorsSpecPlane" , HistType::kTH2F , {axisQVsNorm, CentAxis});
421429
422430 histos.add (" hNEvents" , " hNEvents" , {HistType::kTH1F , {{10 , 0 .f , 10 .f }}});
423431 for (Int_t n = 1 ; n <= histos.get <TH1>(HIST (" hNEvents" ))->GetNbinsX (); n++) {
@@ -427,6 +435,7 @@ struct cascadeFlow {
427435 histos.add (" hEventCentrality" , " hEventCentrality" , kTH1F , {{101 , 0 , 101 }});
428436 histos.add (" hPsiT0C" , " hPsiT0C" , HistType::kTH1D , {{100 , -TMath::Pi (), TMath::Pi ()}});
429437 histos.add (" hPsiT0CvsCentFT0C" , " hPsiT0CvsCentFT0C" , HistType::kTH2D , {CentAxis, {100 , -TMath::Pi (), TMath::Pi ()}});
438+ histos.add (" hPsiZDCA_vs_ZDCC" , " hPsiZDCA_vs_ZDCC" , HistType::kTH2D , {{100 , -TMath::Pi (), TMath::Pi ()}, {100 , -TMath::Pi (), TMath::Pi ()}});
430439 histos.add (" hEventNchCorrelation" , " hEventNchCorrelation" , kTH2F , {{5000 , 0 , 5000 }, {5000 , 0 , 2500 }});
431440 histos.add (" hEventPVcontributorsVsCentrality" , " hEventPVcontributorsVsCentrality" , kTH2F , {{100 , 0 , 100 }, {5000 , 0 , 5000 }});
432441 histos.add (" hEventGlobalTracksVsCentrality" , " hEventGlobalTracksVsCentrality" , kTH2F , {{100 , 0 , 100 }, {2500 , 0 , 2500 }});
@@ -451,6 +460,8 @@ struct cascadeFlow {
451460 histos.add (" hcascminuspsiT0C" , " hcascminuspsiT0C" , HistType::kTH1F , {{100 , 0 , TMath::Pi ()}});
452461 histos.add (" hv2CEPvsFT0C" , " hv2CEPvsFT0C" , HistType::kTH2F , {CentAxis, {100 , -1 , 1 }});
453462 histos.add (" hv2CEPvsv2CSP" , " hv2CEPvsV2CSP" , HistType::kTH2F , {{100 , -1 , 1 }, {100 , -1 , 1 }});
463+ histos.add (" hv1EPvsv1SP" , " hV1EPvsV1SP" , HistType::kTH2F , {{100 , -1 , 1 }, {100 , -1 , 1 }});
464+ histos.add (" hv1SP_ZDCA_vs_ZDCC" , " hv1SP_ZDCA_vs_ZDCC" , HistType::kTH2F , {{100 , -1 , 1 }, {100 , -1 , 1 }});
454465
455466 histosMCGen.add (" h2DGenXiEta08" , " h2DGenXiEta08" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
456467 histosMCGen.add (" h2DGenOmegaEta08" , " h2DGenOmegaEta08" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
@@ -580,7 +591,7 @@ struct cascadeFlow {
580591 }
581592 }
582593
583- void processAnalyseData (CollEventPlane const & coll, CascCandidates const & Cascades, DauTracks const &)
594+ void processAnalyseData (CollEventAndSpecPlane const & coll, CascCandidates const & Cascades, DauTracks const &)
584595 {
585596
586597 if (!AcceptEvent (coll, 1 )) {
@@ -591,6 +602,17 @@ struct cascadeFlow {
591602 if (isGoodEventEP && !coll.triggereventep ()) {
592603 return ;
593604 }
605+
606+ // event has event plane
607+ bool hasEventPlane = 0 ;
608+ if (coll.triggereventep ())
609+ hasEventPlane = 1 ;
610+
611+ // event has spectator plane
612+ bool hasSpectatorPlane = 0 ;
613+ if (coll.triggereventsp ())
614+ hasSpectatorPlane = 1 ;
615+
594616 histos.fill (HIST (" hNEvents" ), 9.5 );
595617 histos.fill (HIST (" hEventNchCorrelationAfterEP" ), coll.multNTracksPVeta1 (), coll.multNTracksGlobal ());
596618 histos.fill (HIST (" hEventPVcontributorsVsCentralityAfterEP" ), coll.centFT0C (), coll.multNTracksPVeta1 ());
@@ -602,9 +624,12 @@ struct cascadeFlow {
602624 ROOT::Math::XYZVector eventplaneVecT0C{coll.qvecFT0CRe (), coll.qvecFT0CIm (), 0 };
603625 ROOT::Math::XYZVector eventplaneVecTPCA{coll.qvecBPosRe (), coll.qvecBPosIm (), 0 };
604626 ROOT::Math::XYZVector eventplaneVecTPCC{coll.qvecBNegRe (), coll.qvecBNegIm (), 0 };
627+ ROOT::Math::XYZVector spectatorplaneVecZDCA{std::cos (coll.psiZDCA ()), std::sin (coll.psiZDCA ()), 0 }; // eta positive = projectile
628+ ROOT::Math::XYZVector spectatorplaneVecZDCC{std::cos (coll.psiZDCC ()), std::sin (coll.psiZDCC ()), 0 }; // eta negative = target
605629
606630 const float PsiT0C = std::atan2 (coll.qvecFT0CIm (), coll.qvecFT0CRe ()) * 0 .5f ;
607631 histos.fill (HIST (" hPsiT0C" ), PsiT0C);
632+ histos.fill (HIST (" hPsiZDCA_vs_ZDCC" ), coll.psiZDCC (), coll.psiZDCA ());
608633 histos.fill (HIST (" hPsiT0CvsCentFT0C" ), coll.centFT0C (), PsiT0C);
609634
610635 resolution.fill (HIST (" QVectorsT0CTPCA" ), eventplaneVecT0C.Dot (eventplaneVecTPCA), coll.centFT0C ());
@@ -613,6 +638,7 @@ struct cascadeFlow {
613638 resolution.fill (HIST (" QVectorsNormT0CTPCA" ), eventplaneVecT0C.Dot (eventplaneVecTPCA) / (coll.qTPCR () * coll.sumAmplFT0C ()), coll.centFT0C ());
614639 resolution.fill (HIST (" QVectorsNormT0CTPCC" ), eventplaneVecT0C.Dot (eventplaneVecTPCC) / (coll.qTPCL () * coll.sumAmplFT0C ()), coll.centFT0C ());
615640 resolution.fill (HIST (" QVectorsNormTPCAC" ), eventplaneVecTPCA.Dot (eventplaneVecTPCC) / (coll.qTPCR () * coll.qTPCL ()), coll.centFT0C ());
641+ resolution.fill (HIST (" QVectorsSpecPlane" ), spectatorplaneVecZDCC.Dot (spectatorplaneVecZDCA), coll.centFT0C ());
616642
617643 std::vector<float > bdtScore[2 ];
618644 for (auto & casc : Cascades) {
@@ -678,9 +704,18 @@ struct cascadeFlow {
678704 auto v2CSP = cascQvec.Dot (eventplaneVecT0C); // not normalised by amplitude
679705 auto cascminuspsiT0C = GetPhiInRange (casc.phi () - PsiT0C);
680706 auto v2CEP = TMath::Cos (2.0 * cascminuspsiT0C);
707+ ROOT::Math::XYZVector cascUvec{std::cos (casc.phi ()), std::sin (casc.phi ()), 0 };
708+ auto v1SP_ZDCA = cascUvec.Dot (spectatorplaneVecZDCA);
709+ auto v1SP_ZDCC = cascUvec.Dot (spectatorplaneVecZDCC);
710+ auto v1EP_ZDCA = TMath::Cos (casc.phi () - coll.psiZDCA ());
711+ auto v1EP_ZDCC = TMath::Cos (casc.phi () - coll.psiZDCC ());
712+ float v1SP = 0.5 * (v1SP_ZDCA - v1SP_ZDCC);
713+ float v1EP = 0.5 * (v1EP_ZDCA - v1EP_ZDCC); // same as v1SP
681714
682715 histos.fill (HIST (" hv2CEPvsFT0C" ), coll.centFT0C (), v2CEP);
683716 histos.fill (HIST (" hv2CEPvsv2CSP" ), v2CSP, v2CEP);
717+ histos.fill (HIST (" hv1EPvsv1SP" ), v1SP, v1EP);
718+ histos.fill (HIST (" hv1SP_ZDCA_vs_ZDCC" ), v1SP_ZDCC, v1SP_ZDCA);
684719 histos.fill (HIST (" hCascadePhi" ), casc.phi ());
685720 histos.fill (HIST (" hcascminuspsiT0C" ), cascminuspsiT0C);
686721 double values[4 ]{casc.mXi (), casc.pt (), v2CSP, coll.centFT0C ()};
@@ -698,7 +733,7 @@ struct cascadeFlow {
698733 BDTresponse[1 ] = bdtScore[1 ][1 ];
699734 }
700735 if (isSelectedCasc[0 ] || isSelectedCasc[1 ])
701- fillAnalysedTable (coll, casc, v2CSP, v2CEP, PsiT0C, BDTresponse[0 ], BDTresponse[1 ], 0 );
736+ fillAnalysedTable (coll, hasEventPlane, hasSpectatorPlane, casc, v2CSP, v2CEP, v1SP_ZDCA, v1SP_ZDCC , PsiT0C, BDTresponse[0 ], BDTresponse[1 ], 0 );
702737 }
703738 }
704739
@@ -716,6 +751,16 @@ struct cascadeFlow {
716751 }
717752 }
718753
754+ // event has event plane
755+ bool hasEventPlane = 0 ;
756+ if (abs (coll.qvecFT0CRe ()) > 990 || abs (coll.qvecFT0CIm ()) > 990 || abs (coll.qvecBNegRe ()) > 990 || abs (coll.qvecBNegIm ()) > 990 || abs (coll.qvecBPosRe ()) > 990 || abs (coll.qvecBPosIm ()) > 990 )
757+ hasEventPlane = 1 ;
758+
759+ // event has spectator plane
760+ bool hasSpectatorPlane = 0 ;
761+ if (coll.triggereventsp ())
762+ hasSpectatorPlane = 1 ;
763+
719764 histos.fill (HIST (" hNEvents" ), 9.5 );
720765 histos.fill (HIST (" hEventNchCorrelationAfterEP" ), coll.multNTracksPVeta1 (), coll.multNTracksGlobal ());
721766 histos.fill (HIST (" hEventPVcontributorsVsCentralityAfterEP" ), coll.centFT0C (), coll.multNTracksPVeta1 ());
@@ -727,6 +772,9 @@ struct cascadeFlow {
727772 ROOT::Math::XYZVector eventplaneVecT0C{coll.qvecFT0CRe (), coll.qvecFT0CIm (), 0 };
728773 ROOT::Math::XYZVector eventplaneVecTPCA{coll.qvecBPosRe (), coll.qvecBPosIm (), 0 };
729774 ROOT::Math::XYZVector eventplaneVecTPCC{coll.qvecBNegRe (), coll.qvecBNegIm (), 0 };
775+ ROOT::Math::XYZVector spectatorplaneVecZDCA{std::cos (coll.psiZDCA ()), std::sin (coll.psiZDCA ()), 0 }; // eta positive = projectile
776+ ROOT::Math::XYZVector spectatorplaneVecZDCC{std::cos (coll.psiZDCC ()), std::sin (coll.psiZDCC ()), 0 }; // eta negative = target
777+
730778 float NormQvT0C = sqrt (eventplaneVecT0C.Dot (eventplaneVecT0C));
731779 float NormQvTPCA = sqrt (eventplaneVecTPCA.Dot (eventplaneVecTPCA));
732780 float NormQvTPCC = sqrt (eventplaneVecTPCC.Dot (eventplaneVecTPCC));
@@ -741,6 +789,7 @@ struct cascadeFlow {
741789 resolution.fill (HIST (" QVectorsNormT0CTPCA" ), eventplaneVecT0C.Dot (eventplaneVecTPCA) / (NormQvT0C * NormQvTPCA), coll.centFT0C ());
742790 resolution.fill (HIST (" QVectorsNormT0CTPCC" ), eventplaneVecT0C.Dot (eventplaneVecTPCC) / (NormQvT0C * NormQvTPCC), coll.centFT0C ());
743791 resolution.fill (HIST (" QVectorsNormTPCAC" ), eventplaneVecTPCA.Dot (eventplaneVecTPCC) / (NormQvTPCA * NormQvTPCC), coll.centFT0C ());
792+ resolution.fill (HIST (" QVectorsSpecPlane" ), spectatorplaneVecZDCC.Dot (spectatorplaneVecZDCA), coll.centFT0C ());
744793
745794 std::vector<float > bdtScore[2 ];
746795 for (auto & casc : Cascades) {
@@ -806,9 +855,18 @@ struct cascadeFlow {
806855 auto v2CSP = cascQvec.Dot (eventplaneVecT0C);
807856 auto cascminuspsiT0C = GetPhiInRange (casc.phi () - PsiT0C);
808857 auto v2CEP = TMath::Cos (2.0 * cascminuspsiT0C);
858+ ROOT::Math::XYZVector cascUvec{std::cos (casc.phi ()), std::sin (casc.phi ()), 0 };
859+ auto v1SP_ZDCA = cascUvec.Dot (spectatorplaneVecZDCA);
860+ auto v1SP_ZDCC = cascUvec.Dot (spectatorplaneVecZDCC);
861+ auto v1EP_ZDCA = TMath::Cos (casc.phi () - coll.psiZDCA ());
862+ auto v1EP_ZDCC = TMath::Cos (casc.phi () - coll.psiZDCC ());
863+ float v1SP = 0.5 * (v1SP_ZDCA - v1SP_ZDCC);
864+ float v1EP = 0.5 * (v1EP_ZDCA - v1EP_ZDCC); // same as v1SP
809865
810866 histos.fill (HIST (" hv2CEPvsFT0C" ), coll.centFT0C (), v2CEP);
811867 histos.fill (HIST (" hv2CEPvsv2CSP" ), v2CSP, v2CEP);
868+ histos.fill (HIST (" hv1EPvsv1SP" ), v1SP, v1EP);
869+ histos.fill (HIST (" hv1SP_ZDCA_vs_ZDCC" ), v1SP_ZDCC, v1SP_ZDCA);
812870 histos.fill (HIST (" hCascadePhi" ), casc.phi ());
813871 histos.fill (HIST (" hcascminuspsiT0C" ), cascminuspsiT0C);
814872 double values[4 ]{casc.mXi (), casc.pt (), v2CSP, coll.centFT0C ()};
@@ -826,7 +884,7 @@ struct cascadeFlow {
826884 BDTresponse[1 ] = bdtScore[1 ][1 ];
827885 }
828886 if (isSelectedCasc[0 ] || isSelectedCasc[1 ])
829- fillAnalysedTable (coll, casc, v2CSP, v2CEP, PsiT0C, BDTresponse[0 ], BDTresponse[1 ], 0 );
887+ fillAnalysedTable (coll, hasEventPlane, hasSpectatorPlane, casc, v2CSP, v2CEP, v1SP_ZDCA, v1SP_ZDCC , PsiT0C, BDTresponse[0 ], BDTresponse[1 ], 0 );
830888 }
831889 }
832890
@@ -837,6 +895,9 @@ struct cascadeFlow {
837895 return ;
838896 }
839897
898+ bool hasEventPlane = 0 ; // no info at the moment
899+ bool hasSpectatorPlane = 0 ; // no infor at the moment
900+
840901 histos.fill (HIST (" hNEvents" ), 9.5 );
841902 histos.fill (HIST (" hEventNchCorrelationAfterEP" ), coll.multNTracksPVeta1 (), coll.multNTracksGlobal ());
842903 histos.fill (HIST (" hEventPVcontributorsVsCentralityAfterEP" ), coll.centFT0C (), coll.multNTracksPVeta1 ());
@@ -940,6 +1001,8 @@ struct cascadeFlow {
9401001 const float PsiT0C = 0 ; // not defined in MC for now
9411002 auto v2CSP = 0 ; // not defined in MC for now
9421003 auto v2CEP = 0 ; // not defined in MC for now
1004+ auto v1SP_ZDCA = 0 ; // not defined in MC for now
1005+ auto v1SP_ZDCC = 0 ; // not defined in MC for now
9431006
9441007 if (isApplyML) {
9451008 BDTresponse[0 ] = bdtScore[0 ][1 ];
@@ -950,7 +1013,7 @@ struct cascadeFlow {
9501013 continue ;
9511014 }
9521015 if (isSelectedCasc[0 ] || isSelectedCasc[1 ])
953- fillAnalysedTable (coll, casc, v2CSP, v2CEP, PsiT0C, BDTresponse[0 ], BDTresponse[1 ], pdgCode);
1016+ fillAnalysedTable (coll, hasEventPlane, hasSpectatorPlane, casc, v2CSP, v2CEP, v1SP_ZDCA, v1SP_ZDCC , PsiT0C, BDTresponse[0 ], BDTresponse[1 ], pdgCode);
9541017 }
9551018 }
9561019
0 commit comments