@@ -116,6 +116,8 @@ struct AnalysisEnergyCorrelator {
116116 Configurable<float > fConfigJpsiPtMin {" cfgJpsiPtMin" , 0.0 , " J/psi pt minimum" };
117117 Configurable<float > fConfigJpsiPtMax {" cfgJpsiPtMax" , 100.0 , " J/psi pt maximum" };
118118 Configurable<float > fConfigJpsiRapMax {" cfgJpsiRapMax" , 0.9 , " J/psi rapidity maximum" };
119+ Configurable<float > fConfigJpsiTauxyMin {" cfgJpsiTauxyMin" , -10000 , " J/psi tauxy minimum" };
120+ Configurable<float > fConfigJpsiTauxyMax {" cfgJpsiTauxyMax" , 10000.0 , " J/psi tauxy maximum" };
119121 Configurable<std::string> fConfigAddSEPHistogram {" cfgAddSEPHistogram" , " " , " Comma separated list of histograms" };
120122 Configurable<std::string> recSignals{" cfgMCRecSignals" , " eeFromJpsi" , " Comma separated list of MC signals (reconstructed)" };
121123 Configurable<std::string> recSignalsJSON{" cfgMCRecSignalsJSON" , " " , " Comma separated list of MC signals (reconstructed) via JSON" };
@@ -627,8 +629,8 @@ struct AnalysisEnergyCorrelator {
627629 }
628630
629631 // Template function to run same event pairing (barrel-barrel, muon-muon, barrel-muon)
630- template <uint32_t TTrackFillMap, int TPairType, typename TTrack1, typename TTrack2>
631- void runSameEventPairing (TTrack1 const & t1, TTrack2 const & t2, int iEleCut, aod::McParticles const & /* mcParticles*/ )
632+ template <uint32_t TTrackFillMap, int TPairType, typename TTrack1, typename TTrack2, typename TEvent >
633+ void runSameEventPairing (TTrack1 const & t1, TTrack2 const & t2, int iEleCut, TEvent const & event, aod::McParticles const & /* mcParticles*/ )
632634 {
633635 std::map<int , std::vector<TString>> histNames = fTrackHistNames ;
634636 std::map<int , std::vector<TString>> histNamesMC = fBarrelHistNamesMCmatched ;
@@ -647,6 +649,7 @@ struct AnalysisEnergyCorrelator {
647649 } // end loop over MC signals
648650
649651 VarManager::FillPair<TPairType, TTrackFillMap>(t1, t2);
652+ VarManager::FillPairVertexing<TPairType, gkEventFillMapWithMults, TTrackFillMap>(event, t1, t2, VarManager::fgValues);
650653
651654 if (sign1 * sign2 < 0 ) { // +- pairs
652655 fHistMan ->FillHistClass (histNames[iEleCut][0 ].Data (), VarManager::fgValues); // reconstructed, unmatched
@@ -802,18 +805,20 @@ struct AnalysisEnergyCorrelator {
802805 // Fill pair histograms for all cuts that both tracks pass
803806 for (size_t iCut = 0 ; iCut < fTrackCuts .size (); iCut++) {
804807 if (twoTrackFilter & (static_cast <uint32_t >(1 ) << iCut)) {
805- runSameEventPairing<gkTrackFillMapWithCov, VarManager::kDecayToEE >(t1, t2, iCut, mcParticles);
808+ runSameEventPairing<gkTrackFillMapWithCov, VarManager::kDecayToEE >(t1, t2, iCut, event, mcParticles);
806809 }
807810 }
808811
809812 float mass = VarManager::fgValues[VarManager::kMass ];
810813 float pt = VarManager::fgValues[VarManager::kPt ];
811814 float rap = VarManager::fgValues[VarManager::kRap ];
815+ float tauxy = VarManager::fgValues[VarManager::kVertexingTauxyProjectedPoleJPsiMass ];
812816
813817 // Apply J/psi cuts
814818 if (mass < fConfigPairOptions .fConfigJpsiMassMin .value || mass > fConfigPairOptions .fConfigJpsiMassMax .value ||
815819 pt < fConfigPairOptions .fConfigJpsiPtMin .value || pt > fConfigPairOptions .fConfigJpsiPtMax .value ||
816- std::abs (rap) > fConfigPairOptions .fConfigJpsiRapMax .value ) {
820+ std::abs (rap) > fConfigPairOptions .fConfigJpsiRapMax .value ||
821+ tauxy < fConfigPairOptions .fConfigJpsiTauxyMin .value || tauxy > fConfigPairOptions .fConfigJpsiTauxyMax .value ) {
817822 continue ;
818823 }
819824
@@ -928,13 +933,17 @@ struct AnalysisEnergyCorrelator {
928933 }
929934 // Fill pair variables for cut
930935 VarManager::FillPair<VarManager::kDecayToEE , gkTrackFillMapWithCov>(t1, t2, VarManager::fgValues);
936+ VarManager::FillPairVertexing<VarManager::kDecayToEE , gkEventFillMapWithMults, gkTrackFillMapWithCov>(event1, t1, t2, VarManager::fgValues);
931937 float mass = VarManager::fgValues[VarManager::kMass ];
932938 float pt = VarManager::fgValues[VarManager::kPt ];
933939 float rap = VarManager::fgValues[VarManager::kRap ];
940+ float tauxy = VarManager::fgValues[VarManager::kVertexingTauxyProjectedPoleJPsiMass ];
941+
934942 // Apply J/psi cuts
935943 if (mass < fConfigPairOptions .fConfigJpsiMassMin .value || mass > fConfigPairOptions .fConfigJpsiMassMax .value ||
936944 pt < fConfigPairOptions .fConfigJpsiPtMin .value || pt > fConfigPairOptions .fConfigJpsiPtMax .value ||
937- std::abs (rap) > fConfigPairOptions .fConfigJpsiRapMax .value ) {
945+ std::abs (rap) > fConfigPairOptions .fConfigJpsiRapMax .value ||
946+ tauxy < fConfigPairOptions .fConfigJpsiTauxyMin .value || tauxy > fConfigPairOptions .fConfigJpsiTauxyMax .value ) {
938947 continue ;
939948 }
940949 if (t1.sign () * t2.sign () >= 0 ) {
0 commit comments