Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 24 additions & 37 deletions PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
///

/// \author Youpeng Su (yousu@cern.ch)
#include <iostream>

Check failure on line 14 in PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[include-iostream]

Do not include iostream. Use O2 logging instead.
#include <string>
#include <vector>
#include <cmath>
Expand All @@ -29,6 +29,9 @@
#include <TMatrixD.h>
#include "TProfile2D.h"
#include "PWGLF/DataModel/lambdaJetpolarization.h"
#include "Math/Vector3D.h"
#include "Math/Vector4D.h"
#include "Math/GenVector/Boost.h"

#include <fastjet/ClusterSequence.hh>
#include <fastjet/ClusterSequenceArea.hh>
Expand Down Expand Up @@ -351,11 +354,13 @@
}
double massPr = o2::constants::physics::MassProton;
double massLambda = o2::constants::physics::MassLambda;
double massPi = o2::constants::physics::MassPionCharged;
ROOT::Math::PxPyPzMVector ProtonVec, PionVec, LambdaVec, ProtonBoostedVec, LambdaBoostedVec;

TMatrixD LorentzTransInV0frame(double ELambda, double Lambdapx, double Lambdapy, double Lambdapz)
{
double PLambda = sqrt(Lambdapx * Lambdapx + Lambdapy * Lambdapy + Lambdapz * Lambdapz);

Check failure on line 362 in PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
double LambdaMass = sqrt(ELambda * ELambda - PLambda * PLambda);

Check failure on line 363 in PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
double Alpha = 1 / (LambdaMass * (ELambda + LambdaMass));
TMatrixD matrixLabToLambda(4, 4);
matrixLabToLambda(0, 0) = ELambda / LambdaMass;
Expand Down Expand Up @@ -422,10 +427,10 @@
registry.fill(HIST("V0protonpxInLab"), candidate.v0protonpx());
registry.fill(HIST("V0protonpyInLab"), candidate.v0protonpy());
registry.fill(HIST("V0protonpzInLab"), candidate.v0protonpz());
double protonsinPhiInLab = candidate.v0protonpy() / sqrt(candidate.v0protonpx() * candidate.v0protonpx() + candidate.v0protonpy() * candidate.v0protonpy());

Check failure on line 430 in PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
registry.fill(HIST("V0protonphiInLab"), protonsinPhiInLab);
double PLambda = sqrt(candidate.v0px() * candidate.v0px() + candidate.v0py() * candidate.v0py() + candidate.v0pz() * candidate.v0pz());

Check failure on line 432 in PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
double ELambda = sqrt(candidate.v0Lambdamass() * candidate.v0Lambdamass() + PLambda * PLambda);

Check failure on line 433 in PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
TMatrixD pLabV0(4, 1);
pLabV0(0, 0) = ELambda;
pLabV0(1, 0) = candidate.v0px();
Expand All @@ -438,17 +443,17 @@
registry.fill(HIST("V0pzInRest_frame"), V0InV0(3, 0));
}
for (auto& candidate : myv0s) {
double PLambda = sqrt(candidate.v0px() * candidate.v0px() + candidate.v0py() * candidate.v0py() + candidate.v0pz() * candidate.v0pz());

Check failure on line 446 in PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
double ELambda = sqrt(candidate.v0Lambdamass() * candidate.v0Lambdamass() + PLambda * PLambda);

Check failure on line 447 in PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
TMatrixD pLabproton(4, 1);
double protonE = sqrt(massPr * massPr + candidate.v0protonpx() * candidate.v0protonpx() + candidate.v0protonpy() * candidate.v0protonpy() + candidate.v0protonpz() * candidate.v0protonpz());

Check failure on line 449 in PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
pLabproton(0, 0) = protonE;
pLabproton(1, 0) = candidate.v0protonpx();
pLabproton(2, 0) = candidate.v0protonpy();
pLabproton(3, 0) = candidate.v0protonpz();
TMatrixD protonInV0(4, 1);
protonInV0 = LorentzTransInV0frame(ELambda, candidate.v0px(), candidate.v0py(), candidate.v0pz()) * pLabproton;
double protonMassInV0 = sqrt(protonInV0(0, 0) * protonInV0(0, 0) - protonInV0(1, 0) * protonInV0(1, 0) - protonInV0(2, 0) * protonInV0(2, 0) - protonInV0(3, 0) * protonInV0(3, 0));

Check failure on line 456 in PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
registry.fill(HIST("V0protonMassInRest_frame"), protonMassInV0);
registry.fill(HIST("V0protonpxInRest_frame"), protonInV0(1, 0));
registry.fill(HIST("V0protonpyInRest_frame"), protonInV0(2, 0));
Expand Down Expand Up @@ -1233,32 +1238,20 @@
if (passedLambdaSelection(v0, pos, neg) && ctauLambda < CtauLambda && ifpasslambda) {
V0NumbersPerEventsel++;
registryLongitudinalPolarization.fill(HIST("hMassVsPtLambda"), v0.pt(), v0.mLambda());
double PLambda = sqrt(v0.px() * v0.px() + v0.py() * v0.py() + v0.pz() * v0.pz());
double ELambda = sqrt(v0.mLambda() * v0.mLambda() + PLambda * PLambda);
double protonE = sqrt(massPr * massPr + pos.px() * pos.px() + pos.py() * pos.py() + pos.pz() * pos.pz());
TMatrixD pLabV0(4, 1);
pLabV0(0, 0) = ELambda;
pLabV0(1, 0) = v0.px();
pLabV0(2, 0) = v0.py();
pLabV0(3, 0) = v0.pz();

TMatrixD pLabproton(4, 1);
pLabproton(0, 0) = protonE;
pLabproton(1, 0) = pos.px();
pLabproton(2, 0) = pos.py();
pLabproton(3, 0) = pos.pz();
ProtonVec = ROOT::Math::PxPyPzMVector(v0.pxpos(), v0.pypos(), v0.pzpos(), massPr);
PionVec = ROOT::Math::PxPyPzMVector(v0.pxneg(), v0.pyneg(), v0.pzneg(), massPi);
LambdaVec = ProtonVec + PionVec;
LambdaVec.SetM(massLambda);
ROOT::Math::Boost boost{LambdaVec.BoostToCM()};
ProtonBoostedVec = boost(ProtonVec);
LambdaBoostedVec = boost(LambdaVec);

TMatrixD V0InV0(4, 1);
V0InV0 = LorentzTransInV0frame(ELambda, v0.px(), v0.py(), v0.pz()) * pLabV0;
registryLongitudinalPolarization.fill(HIST("V0pxInRest_frame"), V0InV0(1, 0));
registryLongitudinalPolarization.fill(HIST("V0pyInRest_frame"), V0InV0(2, 0));
registryLongitudinalPolarization.fill(HIST("V0pzInRest_frame"), V0InV0(3, 0));
registryLongitudinalPolarization.fill(HIST("V0pxInRest_frame"), LambdaBoostedVec.Px());
registryLongitudinalPolarization.fill(HIST("V0pyInRest_frame"), LambdaBoostedVec.Py());
registryLongitudinalPolarization.fill(HIST("V0pzInRest_frame"), LambdaBoostedVec.Pz());

TMatrixD protonInV0(4, 1);
protonInV0 = LorentzTransInV0frame(ELambda, v0.px(), v0.py(), v0.pz()) * pLabproton;
double protonPInV0 = sqrt(protonInV0(1, 0) * protonInV0(1, 0) + protonInV0(2, 0) * protonInV0(2, 0) + protonInV0(3, 0) * protonInV0(3, 0));

double protonCosThetainV0 = protonInV0(3, 0) / protonPInV0;
double protonCosThetainV0 = ProtonBoostedVec.Pz() / ProtonBoostedVec.P();

registryLongitudinalPolarization.fill(HIST("hprotoncosthetainV0"), protonCosThetainV0);
registryLongitudinalPolarization.fill(HIST("hprotoncosSquarethetainV0"), protonCosThetainV0 * protonCosThetainV0);
Expand All @@ -1272,21 +1265,15 @@
if (passedAntiLambdaSelection(v0, pos, neg) && ctauAntiLambda < CtauLambda && ifpasslambda) {
registryLongitudinalPolarization.fill(HIST("hMassVsPtAntiLambda"), v0.pt(), v0.mAntiLambda());

double PLambda = sqrt(v0.px() * v0.px() + v0.py() * v0.py() + v0.pz() * v0.pz());
double ELambda = sqrt(v0.mAntiLambda() * v0.mAntiLambda() + PLambda * PLambda);
double protonE = sqrt(massPr * massPr + neg.px() * neg.px() + neg.py() * neg.py() + neg.pz() * neg.pz());

TMatrixD pLabproton(4, 1);
pLabproton(0, 0) = protonE;
pLabproton(1, 0) = neg.px();
pLabproton(2, 0) = neg.py();
pLabproton(3, 0) = neg.pz();

TMatrixD protonInV0(4, 1);
protonInV0 = LorentzTransInV0frame(ELambda, v0.px(), v0.py(), v0.pz()) * pLabproton;
double protonPInV0 = sqrt(protonInV0(1, 0) * protonInV0(1, 0) + protonInV0(2, 0) * protonInV0(2, 0) + protonInV0(3, 0) * protonInV0(3, 0));
ProtonVec = ROOT::Math::PxPyPzMVector(v0.pxneg(), v0.pyneg(), v0.pzneg(), massPr);
PionVec = ROOT::Math::PxPyPzMVector(v0.pxpos(), v0.pypos(), v0.pzpos(), massPi);
LambdaVec = ProtonVec + PionVec;
LambdaVec.SetM(massLambda);
ROOT::Math::Boost boost{LambdaVec.BoostToCM()};
ProtonBoostedVec = boost(ProtonVec);
LambdaBoostedVec = boost(LambdaVec);

double protonCosThetainV0 = protonInV0(3, 0) / protonPInV0;
double protonCosThetainV0 = ProtonBoostedVec.Pz() / ProtonBoostedVec.P();

registryLongitudinalPolarization.fill(HIST("hantiprotoncosthetainV0"), protonCosThetainV0);
registryLongitudinalPolarization.fill(HIST("hantiprotoncosSquarethetainV0"), protonCosThetainV0 * protonCosThetainV0);
Expand Down
Loading