Skip to content

Commit 1878c39

Browse files
authored
Add files via upload
1 parent b51dfb4 commit 1878c39

File tree

1 file changed

+21
-37
lines changed

1 file changed

+21
-37
lines changed

PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

Lines changed: 21 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,8 @@ struct LfMyV0s {
351351
}
352352
double massPr = o2::constants::physics::MassProton;
353353
double massLambda = o2::constants::physics::MassLambda;
354+
double massPi = o2::constants::physics::MassPionCharged;
355+
ROOT::Math::PxPyPzMVector ProtonVec, PionVec, LambdaVec, ProtonBoostedVec, LambdaBoostedVec;
354356

355357
TMatrixD LorentzTransInV0frame(double ELambda, double Lambdapx, double Lambdapy, double Lambdapz)
356358
{
@@ -1233,32 +1235,20 @@ struct LfMyV0s {
12331235
if (passedLambdaSelection(v0, pos, neg) && ctauLambda < CtauLambda && ifpasslambda) {
12341236
V0NumbersPerEventsel++;
12351237
registryLongitudinalPolarization.fill(HIST("hMassVsPtLambda"), v0.pt(), v0.mLambda());
1236-
double PLambda = sqrt(v0.px() * v0.px() + v0.py() * v0.py() + v0.pz() * v0.pz());
1237-
double ELambda = sqrt(v0.mLambda() * v0.mLambda() + PLambda * PLambda);
1238-
double protonE = sqrt(massPr * massPr + pos.px() * pos.px() + pos.py() * pos.py() + pos.pz() * pos.pz());
1239-
TMatrixD pLabV0(4, 1);
1240-
pLabV0(0, 0) = ELambda;
1241-
pLabV0(1, 0) = v0.px();
1242-
pLabV0(2, 0) = v0.py();
1243-
pLabV0(3, 0) = v0.pz();
12441238

1245-
TMatrixD pLabproton(4, 1);
1246-
pLabproton(0, 0) = protonE;
1247-
pLabproton(1, 0) = pos.px();
1248-
pLabproton(2, 0) = pos.py();
1249-
pLabproton(3, 0) = pos.pz();
1239+
ProtonVec = ROOT::Math::PxPyPzMVector(v0.pxpos(), v0.pypos(), v0.pzpos(), massPr);
1240+
PionVec = ROOT::Math::PxPyPzMVector(v0.pxneg(), v0.pyneg(), v0.pzneg(), massPi);
1241+
LambdaVec = ProtonVec + PionVec;
1242+
LambdaVec.SetM(massLambda);
1243+
ROOT::Math::Boost boost{LambdaVec.BoostToCM()};
1244+
ProtonBoostedVec = boost(ProtonVec);
1245+
LambdaBoostedVec = boost(LambdaVec);
12501246

1251-
TMatrixD V0InV0(4, 1);
1252-
V0InV0 = LorentzTransInV0frame(ELambda, v0.px(), v0.py(), v0.pz()) * pLabV0;
1253-
registryLongitudinalPolarization.fill(HIST("V0pxInRest_frame"), V0InV0(1, 0));
1254-
registryLongitudinalPolarization.fill(HIST("V0pyInRest_frame"), V0InV0(2, 0));
1255-
registryLongitudinalPolarization.fill(HIST("V0pzInRest_frame"), V0InV0(3, 0));
1247+
registryLongitudinalPolarization.fill(HIST("V0pxInRest_frame"), LambdaBoostedVec.Px());
1248+
registryLongitudinalPolarization.fill(HIST("V0pyInRest_frame"), LambdaBoostedVec.Py());
1249+
registryLongitudinalPolarization.fill(HIST("V0pzInRest_frame"), LambdaBoostedVec.Pz());
12561250

1257-
TMatrixD protonInV0(4, 1);
1258-
protonInV0 = LorentzTransInV0frame(ELambda, v0.px(), v0.py(), v0.pz()) * pLabproton;
1259-
double protonPInV0 = sqrt(protonInV0(1, 0) * protonInV0(1, 0) + protonInV0(2, 0) * protonInV0(2, 0) + protonInV0(3, 0) * protonInV0(3, 0));
1260-
1261-
double protonCosThetainV0 = protonInV0(3, 0) / protonPInV0;
1251+
double protonCosThetainV0 = ProtonBoostedVec.Pz() / ProtonBoostedVec.P();
12621252

12631253
registryLongitudinalPolarization.fill(HIST("hprotoncosthetainV0"), protonCosThetainV0);
12641254
registryLongitudinalPolarization.fill(HIST("hprotoncosSquarethetainV0"), protonCosThetainV0 * protonCosThetainV0);
@@ -1272,21 +1262,15 @@ struct LfMyV0s {
12721262
if (passedAntiLambdaSelection(v0, pos, neg) && ctauAntiLambda < CtauLambda && ifpasslambda) {
12731263
registryLongitudinalPolarization.fill(HIST("hMassVsPtAntiLambda"), v0.pt(), v0.mAntiLambda());
12741264

1275-
double PLambda = sqrt(v0.px() * v0.px() + v0.py() * v0.py() + v0.pz() * v0.pz());
1276-
double ELambda = sqrt(v0.mAntiLambda() * v0.mAntiLambda() + PLambda * PLambda);
1277-
double protonE = sqrt(massPr * massPr + neg.px() * neg.px() + neg.py() * neg.py() + neg.pz() * neg.pz());
1278-
1279-
TMatrixD pLabproton(4, 1);
1280-
pLabproton(0, 0) = protonE;
1281-
pLabproton(1, 0) = neg.px();
1282-
pLabproton(2, 0) = neg.py();
1283-
pLabproton(3, 0) = neg.pz();
1284-
1285-
TMatrixD protonInV0(4, 1);
1286-
protonInV0 = LorentzTransInV0frame(ELambda, v0.px(), v0.py(), v0.pz()) * pLabproton;
1287-
double protonPInV0 = sqrt(protonInV0(1, 0) * protonInV0(1, 0) + protonInV0(2, 0) * protonInV0(2, 0) + protonInV0(3, 0) * protonInV0(3, 0));
1265+
ProtonVec = ROOT::Math::PxPyPzMVector(v0.pxneg(), v0.pyneg(), v0.pzneg(), massPr);
1266+
PionVec = ROOT::Math::PxPyPzMVector(v0.pxpos(), v0.pypos(), v0.pzpos(), massPi);
1267+
LambdaVec = ProtonVec + PionVec;
1268+
LambdaVec.SetM(massLambda);
1269+
ROOT::Math::Boost boost{LambdaVec.BoostToCM()};
1270+
ProtonBoostedVec = boost(ProtonVec);
1271+
LambdaBoostedVec = boost(LambdaVec);
12881272

1289-
double protonCosThetainV0 = protonInV0(3, 0) / protonPInV0;
1273+
double protonCosThetainV0 = ProtonBoostedVec.Pz() / ProtonBoostedVec.P();
12901274

12911275
registryLongitudinalPolarization.fill(HIST("hantiprotoncosthetainV0"), protonCosThetainV0);
12921276
registryLongitudinalPolarization.fill(HIST("hantiprotoncosSquarethetainV0"), protonCosThetainV0 * protonCosThetainV0);

0 commit comments

Comments
 (0)