|
16 | 16 | /// \author S. Kundu (CERN) [email protected] |
17 | 17 | /// \author M. Faggin (CERN) [email protected] |
18 | 18 |
|
| 19 | +#include <vector> |
| 20 | + |
19 | 21 | #include "TRandom3.h" |
20 | 22 | #include "Math/Vector3D.h" |
21 | 23 | #include "Math/Vector4D.h" |
@@ -189,6 +191,9 @@ struct TaskPolarisationCharmHadrons { |
189 | 191 | Configurable<bool> activateTHnEulerPhiMonitor{"activateTHnEulerPhiMonitor", false, "Flag to switch on the monitoring THnSparse vs. Euler angle phi (Lc -> pKpi)"}; |
190 | 192 | ConfigurableAxis configTHnAxisEulerPhi{"configTHnAxisEulerPhi", {24, -o2::constants::math::PI, o2::constants::math::PI}, "Euler polar angle #phi"}; |
191 | 193 |
|
| 194 | + /// Application of rapidity cut for reconstructed candidates |
| 195 | + Configurable<float> rapidityCut{"rapidityCut", 999.f, "Max. value of reconstructed candidate rapidity (abs. value)"}; |
| 196 | + |
192 | 197 | Filter filterSelectDstarCandidates = aod::hf_sel_candidate_dstar::isSelDstarToD0Pi == selectionFlagDstarToD0Pi; |
193 | 198 | Filter filterSelectLcToPKPiCandidates = (aod::hf_sel_candidate_lc::isSelLcToPKPi >= selectionFlagLcToPKPi) || (aod::hf_sel_candidate_lc::isSelLcToPiKP >= selectionFlagLcToPKPi); |
194 | 199 |
|
@@ -537,18 +542,18 @@ struct TaskPolarisationCharmHadrons { |
537 | 542 | if constexpr (!doMc) { // data |
538 | 543 | if constexpr (withMl) { // with ML |
539 | 544 | if constexpr (channel == charm_polarisation::DecayChannel::DstarToDzeroPi) { // D*+ |
540 | | - registry.fill(HIST("hHelicity"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassD0, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
| 545 | + registry.fill(HIST("hHelicity"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassD0, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
541 | 546 | } else if constexpr (channel == charm_polarisation::DecayChannel::LcToPKPi) { // Lc+ |
542 | | - registry.fill(HIST("hHelicity"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassKPiLc, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
| 547 | + registry.fill(HIST("hHelicity"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassKPiLc, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
543 | 548 | if (activateTHnEulerPhiMonitor) { |
544 | 549 | registry.fill(HIST("hEulerPhiHelicity"), invMassCharmHad, ptCharmHad, invMassKPiLc, phiEuler, outputMl[0], /*outputMl[1],*/ outputMl[2], charge); |
545 | 550 | } |
546 | 551 | } |
547 | 552 | } else { // without ML |
548 | 553 | if constexpr (channel == charm_polarisation::DecayChannel::DstarToDzeroPi) { // D*+ |
549 | | - registry.fill(HIST("hHelicity"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassD0, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
| 554 | + registry.fill(HIST("hHelicity"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassD0, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
550 | 555 | } else if constexpr (channel == charm_polarisation::DecayChannel::LcToPKPi) { // Lc+ |
551 | | - registry.fill(HIST("hHelicity"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassKPiLc, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
| 556 | + registry.fill(HIST("hHelicity"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassKPiLc, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
552 | 557 | if (activateTHnEulerPhiMonitor) { |
553 | 558 | registry.fill(HIST("hEulerPhiHelicity"), invMassCharmHad, ptCharmHad, invMassKPiLc, phiEuler, charge); |
554 | 559 | } |
@@ -601,18 +606,18 @@ struct TaskPolarisationCharmHadrons { |
601 | 606 | if constexpr (!doMc) { // data |
602 | 607 | if constexpr (withMl) { // with ML |
603 | 608 | if constexpr (channel == charm_polarisation::DecayChannel::DstarToDzeroPi) { // D*+ |
604 | | - registry.fill(HIST("hProduction"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassD0, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
| 609 | + registry.fill(HIST("hProduction"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassD0, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
605 | 610 | } else if constexpr (channel == charm_polarisation::DecayChannel::LcToPKPi) { // Lc+ |
606 | | - registry.fill(HIST("hProduction"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassKPiLc, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
| 611 | + registry.fill(HIST("hProduction"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassKPiLc, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
607 | 612 | if (activateTHnEulerPhiMonitor) { |
608 | 613 | registry.fill(HIST("hEulerPhiProduction"), invMassCharmHad, ptCharmHad, invMassKPiLc, phiEuler, outputMl[0], /*outputMl[1],*/ outputMl[2], charge); |
609 | 614 | } |
610 | 615 | } |
611 | 616 | } else { // without ML |
612 | 617 | if constexpr (channel == charm_polarisation::DecayChannel::DstarToDzeroPi) { // D*+ |
613 | | - registry.fill(HIST("hProduction"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassD0, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
| 618 | + registry.fill(HIST("hProduction"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassD0, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
614 | 619 | } else if constexpr (channel == charm_polarisation::DecayChannel::LcToPKPi) { // Lc+ |
615 | | - registry.fill(HIST("hProduction"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassKPiLc, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
| 620 | + registry.fill(HIST("hProduction"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassKPiLc, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
616 | 621 | if (activateTHnEulerPhiMonitor) { |
617 | 622 | registry.fill(HIST("hEulerPhiProduction"), invMassCharmHad, ptCharmHad, invMassKPiLc, phiEuler, charge); |
618 | 623 | } |
@@ -665,18 +670,18 @@ struct TaskPolarisationCharmHadrons { |
665 | 670 | if constexpr (!doMc) { // data |
666 | 671 | if constexpr (withMl) { // with ML |
667 | 672 | if constexpr (channel == charm_polarisation::DecayChannel::DstarToDzeroPi) { // D*+ |
668 | | - registry.fill(HIST("hBeam"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassD0, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
| 673 | + registry.fill(HIST("hBeam"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassD0, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
669 | 674 | } else if constexpr (channel == charm_polarisation::DecayChannel::LcToPKPi) { // Lc+ |
670 | | - registry.fill(HIST("hBeam"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassKPiLc, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
| 675 | + registry.fill(HIST("hBeam"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassKPiLc, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
671 | 676 | if (activateTHnEulerPhiMonitor) { |
672 | 677 | registry.fill(HIST("hEulerPhiBeam"), invMassCharmHad, ptCharmHad, invMassKPiLc, phiEuler, outputMl[0], /*outputMl[1],*/ outputMl[2], charge); |
673 | 678 | } |
674 | 679 | } |
675 | 680 | } else { // without ML |
676 | 681 | if constexpr (channel == charm_polarisation::DecayChannel::DstarToDzeroPi) { // D*+ |
677 | | - registry.fill(HIST("hBeam"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassD0, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
| 682 | + registry.fill(HIST("hBeam"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassD0, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
678 | 683 | } else if constexpr (channel == charm_polarisation::DecayChannel::LcToPKPi) { // Lc+ |
679 | | - registry.fill(HIST("hBeam"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassKPiLc, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
| 684 | + registry.fill(HIST("hBeam"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassKPiLc, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
680 | 685 | if (activateTHnEulerPhiMonitor) { |
681 | 686 | registry.fill(HIST("hEulerPhiBeam"), invMassCharmHad, ptCharmHad, invMassKPiLc, phiEuler, charge); |
682 | 687 | } |
@@ -729,15 +734,15 @@ struct TaskPolarisationCharmHadrons { |
729 | 734 | if constexpr (!doMc) { // data |
730 | 735 | if constexpr (withMl) { // with ML |
731 | 736 | if constexpr (channel == charm_polarisation::DecayChannel::DstarToDzeroPi) { // D*+ |
732 | | - registry.fill(HIST("hRandom"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassD0, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
| 737 | + registry.fill(HIST("hRandom"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassD0, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
733 | 738 | } else if constexpr (channel == charm_polarisation::DecayChannel::LcToPKPi) { // Lc+ |
734 | | - registry.fill(HIST("hRandom"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassKPiLc, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
| 739 | + registry.fill(HIST("hRandom"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassKPiLc, cosThetaStar, outputMl[0], /*outputMl[1],*/ outputMl[2], absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
735 | 740 | } |
736 | 741 | } else { // without ML |
737 | 742 | if constexpr (channel == charm_polarisation::DecayChannel::DstarToDzeroPi) { // D*+ |
738 | | - registry.fill(HIST("hRandom"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassD0, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
| 743 | + registry.fill(HIST("hRandom"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassD0, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate); |
739 | 744 | } else if constexpr (channel == charm_polarisation::DecayChannel::LcToPKPi) { // Lc+ |
740 | | - registry.fill(HIST("hRandom"), invMassCharmHad, ptCharmHad, numPvContributors, rapCharmHad, invMassKPiLc, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
| 745 | + registry.fill(HIST("hRandom"), invMassCharmHad, ptCharmHad, numPvContributors, std::abs(rapCharmHad), invMassKPiLc, cosThetaStar, absEtaMin, numItsClsMin, numTpcClsMin, isRotatedCandidate, charge); |
741 | 746 | } |
742 | 747 | } |
743 | 748 | } else { // MC --> no distinction among channels, since rotational bkg not supported |
@@ -1168,6 +1173,11 @@ struct TaskPolarisationCharmHadrons { |
1168 | 1173 | continue; |
1169 | 1174 | } |
1170 | 1175 |
|
| 1176 | + /// apply rapidity selection on the reconstructed candidate |
| 1177 | + if (std::abs(rapidity) > rapidityCut) { |
| 1178 | + continue; |
| 1179 | + } |
| 1180 | + |
1171 | 1181 | float phiRandom = gRandom->Uniform(0.f, constants::math::TwoPI); |
1172 | 1182 | float thetaRandom = gRandom->Uniform(0.f, constants::math::PI); |
1173 | 1183 | ROOT::Math::PxPyPzMVector fourVecDau = ROOT::Math::PxPyPzMVector(pxDau, pyDau, pzDau, massDau); |
|
0 commit comments