@@ -308,6 +308,8 @@ struct cascadeFlow {
308308 Configurable<bool > isStoreTrueCascOnly{" isStoreTrueCascOnly" , 1 , " " };
309309 Configurable<float > etaCascMCGen{" etaCascMCGen" , 0.8 , " etaCascMCGen" };
310310 Configurable<float > yCascMCGen{" yCascMCGen" , 0.5 , " yCascMCGen" };
311+ Configurable<float > etaLambdaFromXiMCGen{" etaLambdaFromXiMCGen" , 0.8 , " etaLambdaFromXiMCGen" };
312+ Configurable<float > yXiToLambdaMCGen{" yXiToLambdaMCGen" , 1.0 , " yXiToLambdaMCGen" };
311313
312314 struct : ConfigurableGroup {
313315 Configurable<std::string> ccdbUrl{" ccdbUrl" , " http://alice-ccdb.cern.ch" , " url of the ccdb repository" };
@@ -588,43 +590,45 @@ struct cascadeFlow {
588590 template <typename TCollision>
589591 double ComputeEPResolutionwShifts (const TCollision& coll, double psiT0C, double psiV0A, double psiT0A, double psiTPCA, double psiTPCC, TProfile3D* shiftprofileA, TProfile3D* shiftprofileB, TProfile3D* shiftprofileC, TProfile3D* shiftprofileD, TProfile3D* shiftprofileE)
590592 {
593+ float collcentrality = coll.centFT0C ();
594+ if (isCollisionCentrality == 1 ) collcentrality = coll.centFT0M ();
591595 int nmode = 2 ;
592596 auto deltapsiFT0C = 0.0 ;
593597 auto deltapsiFV0A = 0.0 ;
594598 auto deltapsiFT0A = 0.0 ;
595599 auto deltapsiTPCA = 0.0 ;
596600 auto deltapsiTPCC = 0.0 ;
597601 for (int ishift = 1 ; ishift <= 10 ; ishift++) {
598- auto coeffshiftxFT0C = shiftprofileA->GetBinContent (shiftprofileA->FindBin (coll. centFT0C () , 0.5 , ishift - 0.5 ));
599- auto coeffshiftyFT0C = shiftprofileA->GetBinContent (shiftprofileA->FindBin (coll. centFT0C () , 1.5 , ishift - 0.5 ));
600- auto coeffshiftxTPCA = shiftprofileB->GetBinContent (shiftprofileB->FindBin (coll. centFT0C () , 0.5 , ishift - 0.5 ));
601- auto coeffshiftyTPCA = shiftprofileB->GetBinContent (shiftprofileB->FindBin (coll. centFT0C () , 1.5 , ishift - 0.5 ));
602- auto coeffshiftxTPCC = shiftprofileC->GetBinContent (shiftprofileC->FindBin (coll. centFT0C () , 0.5 , ishift - 0.5 ));
603- auto coeffshiftyTPCC = shiftprofileC->GetBinContent (shiftprofileC->FindBin (coll. centFT0C () , 1.5 , ishift - 0.5 ));
604- auto coeffshiftxFV0A = shiftprofileD->GetBinContent (shiftprofileD->FindBin (coll. centFT0C () , 0.5 , ishift - 0.5 ));
605- auto coeffshiftyFV0A = shiftprofileD->GetBinContent (shiftprofileD->FindBin (coll. centFT0C () , 1.5 , ishift - 0.5 ));
606- auto coeffshiftxFT0A = shiftprofileE->GetBinContent (shiftprofileE->FindBin (coll. centFT0C () , 0.5 , ishift - 0.5 ));
607- auto coeffshiftyFT0A = shiftprofileE->GetBinContent (shiftprofileE->FindBin (coll. centFT0C () , 1.5 , ishift - 0.5 ));
602+ auto coeffshiftxFT0C = shiftprofileA->GetBinContent (shiftprofileA->FindBin (collcentrality , 0.5 , ishift - 0.5 ));
603+ auto coeffshiftyFT0C = shiftprofileA->GetBinContent (shiftprofileA->FindBin (collcentrality , 1.5 , ishift - 0.5 ));
604+ auto coeffshiftxTPCA = shiftprofileB->GetBinContent (shiftprofileB->FindBin (collcentrality , 0.5 , ishift - 0.5 ));
605+ auto coeffshiftyTPCA = shiftprofileB->GetBinContent (shiftprofileB->FindBin (collcentrality , 1.5 , ishift - 0.5 ));
606+ auto coeffshiftxTPCC = shiftprofileC->GetBinContent (shiftprofileC->FindBin (collcentrality , 0.5 , ishift - 0.5 ));
607+ auto coeffshiftyTPCC = shiftprofileC->GetBinContent (shiftprofileC->FindBin (collcentrality , 1.5 , ishift - 0.5 ));
608+ auto coeffshiftxFV0A = shiftprofileD->GetBinContent (shiftprofileD->FindBin (collcentrality , 0.5 , ishift - 0.5 ));
609+ auto coeffshiftyFV0A = shiftprofileD->GetBinContent (shiftprofileD->FindBin (collcentrality , 1.5 , ishift - 0.5 ));
610+ auto coeffshiftxFT0A = shiftprofileE->GetBinContent (shiftprofileE->FindBin (collcentrality , 0.5 , ishift - 0.5 ));
611+ auto coeffshiftyFT0A = shiftprofileE->GetBinContent (shiftprofileE->FindBin (collcentrality , 1.5 , ishift - 0.5 ));
608612 deltapsiFT0C += ((1 / (1.0 * ishift)) * (-coeffshiftxFT0C * std::cos (ishift * static_cast <float >(nmode) * psiT0C) + coeffshiftyFT0C * TMath::Sin (ishift * static_cast <float >(nmode) * psiT0C)));
609613 deltapsiFV0A += ((1 / (1.0 * ishift)) * (-coeffshiftxFV0A * std::cos (ishift * static_cast <float >(nmode) * psiV0A) + coeffshiftyFV0A * TMath::Sin (ishift * static_cast <float >(nmode) * psiV0A)));
610614 deltapsiFT0A += ((1 / (1.0 * ishift)) * (-coeffshiftxFT0A * std::cos (ishift * static_cast <float >(nmode) * psiT0A) + coeffshiftyFT0A * TMath::Sin (ishift * static_cast <float >(nmode) * psiT0A)));
611615 deltapsiTPCA += ((1 / (1.0 * ishift)) * (-coeffshiftxTPCA * std::cos (ishift * static_cast <float >(nmode) * psiTPCA) + coeffshiftyTPCA * TMath::Sin (ishift * static_cast <float >(nmode) * psiTPCA)));
612616 deltapsiTPCC += ((1 / (1.0 * ishift)) * (-coeffshiftxTPCC * std::cos (ishift * static_cast <float >(nmode) * psiTPCC) + coeffshiftyTPCC * TMath::Sin (ishift * static_cast <float >(nmode) * psiTPCC)));
613617 }
614- histos.fill (HIST (" Psi_EP_FT0C_shifted" ), coll. centFT0C () , psiT0C + deltapsiFT0C);
615- histos.fill (HIST (" Psi_EP_FV0A_shifted" ), coll. centFT0C () , psiV0A + deltapsiFV0A);
616- histos.fill (HIST (" Psi_EP_FT0A_shifted" ), coll. centFT0C () , psiT0A + deltapsiFT0A);
617- histos.fill (HIST (" Psi_EP_TPCA_shifted" ), coll. centFT0C () , psiTPCA + deltapsiTPCA);
618- histos.fill (HIST (" Psi_EP_TPCC_shifted" ), coll. centFT0C () , psiTPCC + deltapsiTPCC);
619- resolution.fill (HIST (" QVectorsT0CTPCA_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0C + deltapsiFT0C - psiTPCA - deltapsiTPCA)), coll. centFT0C () );
620- resolution.fill (HIST (" QVectorsT0CTPCC_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0C + deltapsiFT0C - psiTPCC - deltapsiTPCC)), coll. centFT0C () );
621- resolution.fill (HIST (" QVectorsT0CV0A_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0C + deltapsiFT0C - psiV0A - deltapsiFV0A)), coll. centFT0C () );
622- resolution.fill (HIST (" QVectorsT0CT0A_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0C + deltapsiFT0C - psiT0A - deltapsiFT0A)), coll. centFT0C () );
623- resolution.fill (HIST (" QVectorsV0ATPCC_Shifted" ), std::cos (static_cast <float >(nmode) * (psiV0A + deltapsiFV0A - psiTPCC - deltapsiTPCC)), coll. centFT0C () );
624- resolution.fill (HIST (" QVectorsV0ATPCA_Shifted" ), std::cos (static_cast <float >(nmode) * (psiV0A + deltapsiFV0A - psiTPCA - deltapsiTPCA)), coll. centFT0C () );
625- resolution.fill (HIST (" QVectorsT0ATPCC_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0A + deltapsiFT0A - psiTPCC - deltapsiTPCC)), coll. centFT0C () );
626- resolution.fill (HIST (" QVectorsT0ATPCA_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0A + deltapsiFT0A - psiTPCA - deltapsiTPCA)), coll. centFT0C () );
627- resolution.fill (HIST (" QVectorsTPCAC_Shifted" ), std::cos (static_cast <float >(nmode) * (psiTPCA + deltapsiTPCA - psiTPCC - deltapsiTPCC)), coll. centFT0C () );
618+ histos.fill (HIST (" Psi_EP_FT0C_shifted" ), collcentrality , psiT0C + deltapsiFT0C);
619+ histos.fill (HIST (" Psi_EP_FV0A_shifted" ), collcentrality , psiV0A + deltapsiFV0A);
620+ histos.fill (HIST (" Psi_EP_FT0A_shifted" ), collcentrality , psiT0A + deltapsiFT0A);
621+ histos.fill (HIST (" Psi_EP_TPCA_shifted" ), collcentrality , psiTPCA + deltapsiTPCA);
622+ histos.fill (HIST (" Psi_EP_TPCC_shifted" ), collcentrality , psiTPCC + deltapsiTPCC);
623+ resolution.fill (HIST (" QVectorsT0CTPCA_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0C + deltapsiFT0C - psiTPCA - deltapsiTPCA)), collcentrality );
624+ resolution.fill (HIST (" QVectorsT0CTPCC_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0C + deltapsiFT0C - psiTPCC - deltapsiTPCC)), collcentrality );
625+ resolution.fill (HIST (" QVectorsT0CV0A_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0C + deltapsiFT0C - psiV0A - deltapsiFV0A)), collcentrality );
626+ resolution.fill (HIST (" QVectorsT0CT0A_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0C + deltapsiFT0C - psiT0A - deltapsiFT0A)), collcentrality );
627+ resolution.fill (HIST (" QVectorsV0ATPCC_Shifted" ), std::cos (static_cast <float >(nmode) * (psiV0A + deltapsiFV0A - psiTPCC - deltapsiTPCC)), collcentrality );
628+ resolution.fill (HIST (" QVectorsV0ATPCA_Shifted" ), std::cos (static_cast <float >(nmode) * (psiV0A + deltapsiFV0A - psiTPCA - deltapsiTPCA)), collcentrality );
629+ resolution.fill (HIST (" QVectorsT0ATPCC_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0A + deltapsiFT0A - psiTPCC - deltapsiTPCC)), collcentrality );
630+ resolution.fill (HIST (" QVectorsT0ATPCA_Shifted" ), std::cos (static_cast <float >(nmode) * (psiT0A + deltapsiFT0A - psiTPCA - deltapsiTPCA)), collcentrality );
631+ resolution.fill (HIST (" QVectorsTPCAC_Shifted" ), std::cos (static_cast <float >(nmode) * (psiTPCA + deltapsiTPCA - psiTPCC - deltapsiTPCC)), collcentrality );
628632 return true ;
629633 }
630634
@@ -802,13 +806,15 @@ struct cascadeFlow {
802806 invMassLambda = v0.mLambda ();
803807 double ctauLambda = v0.distovertotmom (coll.posX (), coll.posY (), coll.posZ ()) * o2::constants::physics::MassLambda0;
804808 analysisLambdaSample (coll.centFT0C (),
809+ coll.centFT0M (),
805810 hasEventPlane,
806811 hasSpectatorPlane,
807812 chargeIndex,
808813 v0.pt (),
809814 v0.phi (),
810815 v0.eta (),
811816 invMassLambda,
817+ v0.mK0Short (),
812818 ctauLambda,
813819 v0.v0radius (),
814820 v0.dcapostopv (),
@@ -1129,6 +1135,8 @@ struct cascadeFlow {
11291135 histosMCGen.add (" h2DGenLambdaY05" , " h2DGenLambdaY05" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
11301136 histosMCGen.add (" h2DGenAntiLambdaEta08" , " h2DGenAntiLambdaEta08" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
11311137 histosMCGen.add (" h2DGenAntiLambdaY05" , " h2DGenAntiLambdaY05" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
1138+ histosMCGen.add (" h2DGenXiVsPtLambda" , " h2DGenXiVsPtLambda" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
1139+ histosMCGen.add (" h2DGenLambdaFromXiPtMatrix" , " h2DGenLambdaFromXiPtMatrix" , HistType::kTH2F , {{200 , 0 , 20 }, {200 , 0 , 20 }});
11321140 histosMCGen.add (" hGenXiY" , " hGenXiY" , HistType::kTH1F , {{100 , -1 , 1 }});
11331141 histosMCGen.add (" hGenOmegaY" , " hGenOmegaY" , HistType::kTH1F , {{100 , -1 , 1 }});
11341142 histosMCGen.add (" hGenLambdaY" , " hGenLambdaY" , HistType::kTH1F , {{100 , -2 , 2 }});
@@ -1149,6 +1157,10 @@ struct cascadeFlow {
11491157
11501158 histosMCReco.add (" h2DRecoTrueLambda" , " h2DRecoTrueLambda" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
11511159 histosMCReco.add (" h2DRecoTrueAntiLambda" , " h2DRecoTrueAntiLambda" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
1160+ histosMCReco.add (" h2DRecoTrueLambdaSec" , " h2DRecoTrueLambdaSec" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
1161+ histosMCReco.add (" h2DRecoTrueAntiLambdaSec" , " h2DRecoTrueAntiLambdaSec" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
1162+ histosMCReco.add (" h2DRecoTrueLambdaFromXi" , " h2DRecoTrueLambdaFromXi" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
1163+ histosMCReco.add (" h2DRecoTrueAntiLambdaFromXi" , " h2DRecoTrueAntiLambdaFromXi" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
11521164
11531165 for (int iS{0 }; iS < nParticles; ++iS) {
11541166 cascadev2::hMassBeforeSelVsPt[iS] = histos.add <TH2 >(Form (" hMassBeforeSelVsPt%s" , cascadev2::speciesNames[iS].data ()), " hMassBeforeSelVsPt" , HistType::kTH2F , {massCascAxis[iS], ptAxisCasc});
@@ -2092,15 +2104,15 @@ struct cascadeFlow {
20922104 resolution.fill (HIST (" QVectorsT0ATPCC" ), eventplaneVecT0A.Dot (eventplaneVecTPCC), collisionCentrality);
20932105 resolution.fill (HIST (" QVectorsT0ATPCA" ), eventplaneVecT0A.Dot (eventplaneVecTPCA), collisionCentrality);
20942106
2095- resolution.fill (HIST (" EP_T0CTPCA" ), std::cos (2 * (psiT0C - psiTPCA)), coll. centFT0C () );
2096- resolution.fill (HIST (" EP_T0CTPCC" ), std::cos (2 * (psiT0C - psiTPCC)), coll. centFT0C () );
2097- resolution.fill (HIST (" EP_TPCAC" ), std::cos (2 * (psiTPCA - psiTPCC)), coll. centFT0C () );
2098- resolution.fill (HIST (" EP_T0CV0A" ), std::cos (2 * (psiT0C - psiV0A)), coll. centFT0C () );
2099- resolution.fill (HIST (" EP_V0ATPCC" ), std::cos (2 * (psiV0A - psiTPCC)), coll. centFT0C () );
2100- resolution.fill (HIST (" EP_V0ATPCA" ), std::cos (2 * (psiV0A - psiTPCA)), coll. centFT0C () );
2101- resolution.fill (HIST (" EP_T0CT0A" ), std::cos (2 * (psiT0C - psiT0A)), coll. centFT0C () );
2102- resolution.fill (HIST (" EP_T0ATPCC" ), std::cos (2 * (psiT0A - psiTPCC)), coll. centFT0C () );
2103- resolution.fill (HIST (" EP_T0ATPCA" ), std::cos (2 * (psiT0A - psiTPCA)), coll. centFT0C () );
2107+ resolution.fill (HIST (" EP_T0CTPCA" ), std::cos (2 * (psiT0C - psiTPCA)), collisionCentrality );
2108+ resolution.fill (HIST (" EP_T0CTPCC" ), std::cos (2 * (psiT0C - psiTPCC)), collisionCentrality );
2109+ resolution.fill (HIST (" EP_TPCAC" ), std::cos (2 * (psiTPCA - psiTPCC)), collisionCentrality );
2110+ resolution.fill (HIST (" EP_T0CV0A" ), std::cos (2 * (psiT0C - psiV0A)), collisionCentrality );
2111+ resolution.fill (HIST (" EP_V0ATPCC" ), std::cos (2 * (psiV0A - psiTPCC)), collisionCentrality );
2112+ resolution.fill (HIST (" EP_V0ATPCA" ), std::cos (2 * (psiV0A - psiTPCA)), collisionCentrality );
2113+ resolution.fill (HIST (" EP_T0CT0A" ), std::cos (2 * (psiT0C - psiT0A)), collisionCentrality );
2114+ resolution.fill (HIST (" EP_T0ATPCC" ), std::cos (2 * (psiT0A - psiTPCC)), collisionCentrality );
2115+ resolution.fill (HIST (" EP_T0ATPCA" ), std::cos (2 * (psiT0A - psiTPCA)), collisionCentrality );
21042116
21052117 resolution.fill (HIST (" QVectorsNormT0CTPCA" ), eventplaneVecT0C.Dot (eventplaneVecTPCA) / (coll.qTPCR () * coll.sumAmplFT0C ()), collisionCentrality);
21062118 resolution.fill (HIST (" QVectorsNormT0CTPCC" ), eventplaneVecT0C.Dot (eventplaneVecTPCC) / (coll.qTPCL () * coll.sumAmplFT0C ()), collisionCentrality);
@@ -2687,6 +2699,7 @@ struct cascadeFlow {
26872699 float ptmc = RecoDecay::sqrtSumOfSquares (v0mc.pxMC (), v0mc.pyMC ());
26882700 float lambdaMCeta = RecoDecay::eta (std::array{v0mc.pxMC (), v0mc.pyMC (), v0mc.pzMC ()});
26892701 float lambdaMCy = 0 ;
2702+
26902703 if (std::abs (v0mc.pdgCode ()) == PDG_t::kLambda0 ) {
26912704 lambdaMCy = RecoDecay::y (std::array{v0mc.pxMC (), v0mc.pyMC (), v0mc.pzMC ()}, constants::physics::MassLambda);
26922705 if (std::abs (lambdaMCeta) < etaCascMCGen) {
@@ -2740,6 +2753,17 @@ struct cascadeFlow {
27402753 theta1 = o2::constants::math::PI + theta; // pi/2 < theta1 < pi --> pi/4 < theta1/2 < pi/2 --> 1 < tan (theta1/2) --> negative eta
27412754
27422755 float cascMCeta = -std::log (std::tan (theta1 / 2 ));
2756+
2757+ float pxLambda = cascmc.pxPosMC () + cascmc.pxNegMC ();
2758+ float pyLambda = cascmc.pyPosMC () + cascmc.pyNegMC ();
2759+ float pzLambda = cascmc.pzPosMC () + cascmc.pzNegMC ();
2760+ float ptmcLambda = RecoDecay::sqrtSumOfSquares (pxLambda, pyLambda);
2761+ float thetaLambda = std::atan (ptmcLambda / pzLambda);
2762+ float theta1Lambda = 0 ;
2763+ if (thetaLambda > 0 ) theta1Lambda = thetaLambda;
2764+ else theta1Lambda = o2::constants::math::PI + thetaLambda;
2765+ float lambdaMCeta = -std::log (std::tan (theta1Lambda / 2 ));
2766+
27432767 float cascMCy = 0 ;
27442768 if (std::abs (cascmc.pdgCode ()) == PDG_t::kXiMinus ) {
27452769 cascMCy = RecoDecay::y (std::array{cascmc.pxMC (), cascmc.pyMC (), cascmc.pzMC ()}, constants::physics::MassXiMinus);
@@ -2750,6 +2774,10 @@ struct cascadeFlow {
27502774 if (std::abs (cascMCy) < yCascMCGen)
27512775 histosMCGen.fill (HIST (" h2DGenXiY05" ), centrality, ptmc);
27522776 histosMCGen.fill (HIST (" hGenXiY" ), cascMCy);
2777+ if (std::abs (cascMCy) < yXiToLambdaMCGen && std::abs (lambdaMCeta) < etaLambdaFromXiMCGen){
2778+ histosMCGen.fill (HIST (" h2DGenXiVsPtLambda" ), centrality, ptmcLambda); // to compute secondary lambda efficiency
2779+ histosMCGen.fill (HIST (" h2DGenLambdaFromXiPtMatrix" ), ptmc, ptmcLambda);
2780+ }
27532781 } else if (std::abs (cascmc.pdgCode ()) == PDG_t::kOmegaMinus ) {
27542782 cascMCy = RecoDecay::y (std::array{cascmc.pxMC (), cascmc.pyMC (), cascmc.pzMC ()}, constants::physics::MassOmegaMinus);
27552783 if (std::abs (cascMCeta) < etaCascMCGen) {
@@ -2871,6 +2899,9 @@ struct cascadeFlow {
28712899 } else {
28722900 histos.fill (HIST (" hCentvsPtvsPrimaryFracLambda" ), collisionCentrality, v0.pt (), 1 );
28732901 histos.fill (HIST (" hCentvsPrimaryFracLambda" ), collisionCentrality, 1 );
2902+ histosMCReco.fill (HIST (" h2DRecoTrueLambdaSec" ), collisionCentrality, ptmc);
2903+ if (v0MC.pdgCodeMother () == PDG_t::kXiMinus )
2904+ histosMCReco.fill (HIST (" h2DRecoTrueLambdaFromXi" ), collisionCentrality, ptmc);
28742905 }
28752906 } else if (isTrueALambda) {
28762907 if (isPrimary) {
@@ -2880,6 +2911,9 @@ struct cascadeFlow {
28802911 } else {
28812912 histos.fill (HIST (" hCentvsPtvsPrimaryFracLambda" ), collisionCentrality, v0.pt (), 3 );
28822913 histos.fill (HIST (" hCentvsPrimaryFracLambda" ), collisionCentrality, 3 );
2914+ histosMCReco.fill (HIST (" h2DRecoTrueAntiLambdaSec" ), collisionCentrality, ptmc);
2915+ if (v0MC.pdgCodeMother () == -PDG_t::kXiMinus )
2916+ histosMCReco.fill (HIST (" h2DRecoTrueAntiLambdaFromXi" ), collisionCentrality, ptmc);
28832917 }
28842918 }
28852919 }
0 commit comments