From 8e9ebe718aeb0d11e0eaff8d9cb8925f4a505f60 Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Mon, 6 Jul 2026 11:42:49 +0200 Subject: [PATCH] update AcrossTFMixing for polarization --- PWGDQ/Core/VarManager.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index d652252ebe8..1c46e84f636 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -4450,6 +4450,26 @@ void VarManager::FillPairMEAcrossTFs(T const& t1, T const& t2, float* values) values[kEta] = v12.Eta(); values[kPhi] = v12.Phi() > 0 ? v12.Phi() : v12.Phi() + 2. * M_PI; values[kRap] = -v12.Rapidity(); + + if (fgUsedVars[kCosThetaStarRandom] || fgUsedVars[kCosThetaStarFT0C]) { + ROOT::Math::Boost boostv12{v12.BoostToCM()}; + ROOT::Math::XYZVectorF v_CM{(boostv12(v1).Vect()).Unit()}; + + if (fgUsedVars[kCosThetaStarRandom]) { + // Randomize the event plane angle to check the unpolarized contribution + ROOT::Math::XYZVector zaxisRandom = ROOT::Math::XYZVector(TMath::Cos(values[kRandomPsi2]), TMath::Sin(values[kRandomPsi2]), 0).Unit(); + values[kCosThetaStarRandom] = v_CM.Dot(zaxisRandom); + values[kCos2ThetaStarRandom] = values[kCosThetaStarRandom] * values[kCosThetaStarRandom]; + } + + if (fgUsedVars[kCosThetaStarFT0C]) { + // event plane angle from FT0C + ROOT::Math::XYZVector zaxisFT0C = ROOT::Math::XYZVector(TMath::Cos(values[kPsi2C]), TMath::Sin(values[kPsi2C]), 0).Unit(); + values[kCosThetaStarFT0C] = v_CM.Dot(zaxisFT0C); + values[kAbsCosThetaStarFT0C] = std::abs(values[kCosThetaStarFT0C]); + values[kCos2ThetaStarFT0C] = values[kCosThetaStarFT0C] * values[kCosThetaStarFT0C]; + } + } } template