diff --git a/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx b/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx index ed8ea9265bb..7bcc2b70076 100644 --- a/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx +++ b/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx @@ -116,6 +116,8 @@ struct AnalysisEnergyCorrelator { Configurable fConfigJpsiPtMin{"cfgJpsiPtMin", 0.0, "J/psi pt minimum"}; Configurable fConfigJpsiPtMax{"cfgJpsiPtMax", 100.0, "J/psi pt maximum"}; Configurable fConfigJpsiRapMax{"cfgJpsiRapMax", 0.9, "J/psi rapidity maximum"}; + Configurable fConfigJpsiTauxyMin{"cfgJpsiTauxyMin", -10000, "J/psi tauxy minimum"}; + Configurable fConfigJpsiTauxyMax{"cfgJpsiTauxyMax", 10000.0, "J/psi tauxy maximum"}; Configurable fConfigAddSEPHistogram{"cfgAddSEPHistogram", "", "Comma separated list of histograms"}; Configurable recSignals{"cfgMCRecSignals", "eeFromJpsi", "Comma separated list of MC signals (reconstructed)"}; Configurable recSignalsJSON{"cfgMCRecSignalsJSON", "", "Comma separated list of MC signals (reconstructed) via JSON"}; @@ -627,8 +629,8 @@ struct AnalysisEnergyCorrelator { } // Template function to run same event pairing (barrel-barrel, muon-muon, barrel-muon) - template - void runSameEventPairing(TTrack1 const& t1, TTrack2 const& t2, int iEleCut, aod::McParticles const& /*mcParticles*/) + template + void runSameEventPairing(TTrack1 const& t1, TTrack2 const& t2, int iEleCut, TEvent const& event, aod::McParticles const& /*mcParticles*/) { std::map> histNames = fTrackHistNames; std::map> histNamesMC = fBarrelHistNamesMCmatched; @@ -647,6 +649,7 @@ struct AnalysisEnergyCorrelator { } // end loop over MC signals VarManager::FillPair(t1, t2); + VarManager::FillPairVertexing(event, t1, t2, VarManager::fgValues); if (sign1 * sign2 < 0) { // +- pairs fHistMan->FillHistClass(histNames[iEleCut][0].Data(), VarManager::fgValues); // reconstructed, unmatched @@ -802,18 +805,20 @@ struct AnalysisEnergyCorrelator { // Fill pair histograms for all cuts that both tracks pass for (size_t iCut = 0; iCut < fTrackCuts.size(); iCut++) { if (twoTrackFilter & (static_cast(1) << iCut)) { - runSameEventPairing(t1, t2, iCut, mcParticles); + runSameEventPairing(t1, t2, iCut, event, mcParticles); } } float mass = VarManager::fgValues[VarManager::kMass]; float pt = VarManager::fgValues[VarManager::kPt]; float rap = VarManager::fgValues[VarManager::kRap]; + float tauxy = VarManager::fgValues[VarManager::kVertexingTauxyProjectedPoleJPsiMass]; // Apply J/psi cuts if (mass < fConfigPairOptions.fConfigJpsiMassMin.value || mass > fConfigPairOptions.fConfigJpsiMassMax.value || pt < fConfigPairOptions.fConfigJpsiPtMin.value || pt > fConfigPairOptions.fConfigJpsiPtMax.value || - std::abs(rap) > fConfigPairOptions.fConfigJpsiRapMax.value) { + std::abs(rap) > fConfigPairOptions.fConfigJpsiRapMax.value || + tauxy < fConfigPairOptions.fConfigJpsiTauxyMin.value || tauxy > fConfigPairOptions.fConfigJpsiTauxyMax.value) { continue; } @@ -928,13 +933,17 @@ struct AnalysisEnergyCorrelator { } // Fill pair variables for cut VarManager::FillPair(t1, t2, VarManager::fgValues); + VarManager::FillPairVertexing(event1, t1, t2, VarManager::fgValues); float mass = VarManager::fgValues[VarManager::kMass]; float pt = VarManager::fgValues[VarManager::kPt]; float rap = VarManager::fgValues[VarManager::kRap]; + float tauxy = VarManager::fgValues[VarManager::kVertexingTauxyProjectedPoleJPsiMass]; + // Apply J/psi cuts if (mass < fConfigPairOptions.fConfigJpsiMassMin.value || mass > fConfigPairOptions.fConfigJpsiMassMax.value || pt < fConfigPairOptions.fConfigJpsiPtMin.value || pt > fConfigPairOptions.fConfigJpsiPtMax.value || - std::abs(rap) > fConfigPairOptions.fConfigJpsiRapMax.value) { + std::abs(rap) > fConfigPairOptions.fConfigJpsiRapMax.value || + tauxy < fConfigPairOptions.fConfigJpsiTauxyMin.value || tauxy > fConfigPairOptions.fConfigJpsiTauxyMax.value) { continue; } if (t1.sign() * t2.sign() >= 0) {