Skip to content

Commit 63a4415

Browse files
authored
[PWGLF] Lambda local polarization induced by jet in pp collision 13.6 TeV (#11392)
1 parent def8e29 commit 63a4415

File tree

1 file changed

+64
-3
lines changed

1 file changed

+64
-3
lines changed

PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include <TTree.h>
2828
#include <TFile.h>
2929
#include <TMatrixD.h>
30+
#include "TProfile2D.h"
3031
#include "PWGLF/DataModel/lambdaJetpolarization.h"
3132

3233
#include <fastjet/ClusterSequence.hh>
@@ -59,7 +60,6 @@ struct LfMyV0s {
5960
Configurable<float> etaMin{"etaMin", -0.9f, "eta min"};
6061
Configurable<float> etaMax{"etaMax", +0.9f, "eta max"};
6162
Configurable<double> deltaEtaEdge{"deltaEtaEdge", 0.00, "eta gap from the edge"};
62-
Configurable<double> minJetPt{"minJetPt", 10.0, "Minimum pt of the jet"};
6363
// track parameters
6464
Configurable<float> minITSnCls{"minITSnCls", 4.0f, "min number of ITS clusters"};
6565
Configurable<float> minTPCnClsFound{"minTPCnClsFound", 80.0f, "min number of found TPC clusters"};
@@ -113,6 +113,8 @@ struct LfMyV0s {
113113
Configurable<float> v0accLambda{"v0accLambda", 0.075, "V0 acc Lambda"};
114114
Configurable<bool> ifinitpasslambda{"ifinitpasslambda", 1, "ifinitpasslambda"};
115115
Configurable<bool> ifpasslambda{"passedLambdaSelection", 0, "passedLambdaSelection"};
116+
Configurable<float> paramArmenterosCut{"paramArmenterosCut", 0.2, "parameter Armenteros Cut"};
117+
Configurable<bool> doArmenterosCut{"doArmenterosCut", 0, "do Armenteros Cut"};
116118

117119
// Jet background subtraction
118120
JetBkgSubUtils backgroundSub;
@@ -131,6 +133,8 @@ struct LfMyV0s {
131133
const AxisSpec ptAxis{100, 0.0f, 10.0f, "#it{p}_{T} (GeV/#it{c})"};
132134
const AxisSpec invMassLambdaAxis{200, 1.09, 1.14, "m_{p#pi} (GeV/#it{c}^{2})"};
133135

136+
ConfigurableAxis TProfile2DaxisPt{"#it{p}_{T} (GeV/#it{c})", {VARIABLE_WIDTH, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.2, 3.7, 4.2, 5, 6, 8, 10, 12}, "pt axis for histograms"};
137+
134138
registry.add("hMassLambda", "hMassLambda", {HistType::kTH1F, {{200, 0.9f, 1.2f}}});
135139
registry.add("V0pTInLab", "V0pTInLab", kTH1F, {axisPT});
136140
registry.add("hMassVsPtLambda", "hMassVsPtLambda", {HistType::kTH2F, {{100, 0.0f, 10.0f}, {200, 1.016f, 1.216f}}});
@@ -245,6 +249,17 @@ struct LfMyV0s {
245249
registryData.add("hLambdaPhiandSinPhi", "hLambdaPhiandSinPhi", kTH2F, {{200, -TMath::Pi() / 2, TMath::Pi() / 2}, {200, -1, 1}});
246250
registryData.add("V0LambdaprotonPhi", "V0LambdaprotonPhi", {HistType::kTH1F, {{200, -TMath::Pi() / 2, TMath::Pi() / 2}}});
247251

252+
registryData.add("profileAntiLambda", "Invariant Mass vs sin(phi)", {HistType::kTProfile, {{200, 0.9, 1.2}}});
253+
registryData.add("hAntiLambdamassandSinPhi", "hAntiLambdaPhiandSinPhi", kTH2F, {{200, -TMath::Pi() / 2, TMath::Pi() / 2}, {200, -1, 1}});
254+
255+
registryData.add("TProfile2DLambdaPtMassSinPhi", "", kTProfile2D, {invMassLambdaAxis, TProfile2DaxisPt});
256+
registryData.add("TProfile2DAntiLambdaPtMassSinPhi", "", kTProfile2D, {invMassLambdaAxis, TProfile2DaxisPt});
257+
registryData.add("TProfile2DLambdaPtMassSintheta", "", kTProfile2D, {invMassLambdaAxis, TProfile2DaxisPt});
258+
registryData.add("TProfile2DAntiLambdaPtMassSintheta", "", kTProfile2D, {invMassLambdaAxis, TProfile2DaxisPt});
259+
260+
registryData.add("TProfile2DLambdaPtMassCosSquareTheta", "", kTProfile2D, {invMassLambdaAxis, TProfile2DaxisPt});
261+
registryData.add("TProfile2DAntiLambdaPtMassCosSquareTheta", "", kTProfile2D, {invMassLambdaAxis, TProfile2DaxisPt});
262+
248263
registryData.add("hNEvents", "hNEvents", {HistType::kTH1I, {{10, 0.f, 10.f}}});
249264
registryData.get<TH1>(HIST("hNEvents"))->GetXaxis()->SetBinLabel(1, "all");
250265
registryData.get<TH1>(HIST("hNEvents"))->GetXaxis()->SetBinLabel(2, "sel8");
@@ -655,6 +670,9 @@ struct LfMyV0s {
655670
if (TMath::Abs(v0.mLambda() - o2::constants::physics::MassLambda0) > v0accLambda) {
656671
return false;
657672
}
673+
if (doArmenterosCut && v0.qtarm() > (paramArmenterosCut * std::abs(v0.alpha())))
674+
return false;
675+
658676
return true;
659677
}
660678

@@ -723,6 +741,8 @@ struct LfMyV0s {
723741
if (TMath::Abs(v0.mAntiLambda() - o2::constants::physics::MassLambda0) > v0accLambda) {
724742
return false;
725743
}
744+
if (doArmenterosCut && v0.qtarm() > (paramArmenterosCut * std::abs(v0.alpha())))
745+
return false;
726746
return true;
727747
}
728748

@@ -890,6 +910,7 @@ struct LfMyV0s {
890910
registryData.fill(HIST("number_of_events_vsmultiplicity"), multiplicity);
891911
// v0 loop
892912
int V0Numbers = 0;
913+
int AntiV0Numbers = 0;
893914
for (const auto& v0 : fullV0s) {
894915
const auto& pos = v0.posTrack_as<StrHadronDaughterTracks>();
895916
const auto& neg = v0.negTrack_as<StrHadronDaughterTracks>();
@@ -899,6 +920,7 @@ struct LfMyV0s {
899920
registryData.fill(HIST("LambdaPtMass"), v0.pt(), v0.mLambda());
900921
}
901922
if (passedAntiLambdaSelection(v0, pos, neg)) {
923+
AntiV0Numbers = AntiV0Numbers + 1;
902924
registryData.fill(HIST("AntiLambdaPtMass"), v0.pt(), v0.mAntiLambda());
903925
}
904926
}
@@ -913,6 +935,7 @@ struct LfMyV0s {
913935
return;
914936
}
915937
double protonsinPhiInJetV0frame = 0;
938+
double AntiprotonsinPhiInJetV0frame = 0;
916939
cout << maxJetpx << endl;
917940
for (const auto& candidate : fullV0s) {
918941
const auto& pos = candidate.posTrack_as<StrHadronDaughterTracks>();
@@ -982,7 +1005,7 @@ struct LfMyV0s {
9821005
double protonPinJetV0 = sqrt(protonInJetV0(1, 0) * protonInJetV0(1, 0) + protonInJetV0(2, 0) * protonInJetV0(2, 0) + protonInJetV0(3, 0) * protonInJetV0(3, 0));
9831006
double protonPtinJetV0 = sqrt(protonInJetV0(1, 0) * protonInJetV0(1, 0) + protonInJetV0(2, 0) * protonInJetV0(2, 0));
9841007

985-
double protonCosThetainJetV0 = protonInV0(3, 0) / protonPinJetV0;
1008+
double protonCosThetainJetV0 = protonInJetV0(3, 0) / protonPinJetV0;
9861009
double protonSinThetainJetV0 = protonPtinJetV0 / protonPinJetV0;
9871010
double protonthetainJetV0 = TMath::ASin(protonSinThetainJetV0);
9881011
registryV0Data.fill(HIST("hprotoncosthetainJetV0"), protonCosThetainJetV0);
@@ -997,6 +1020,41 @@ struct LfMyV0s {
9971020
registryV0Data.fill(HIST("AverageSinthetainJetV0"), candidate.mLambda(), protonSinThetainJetV0);
9981021
registryV0Data.fill(HIST("AverageCosSquarethetainJetV0"), candidate.mLambda(), protonCosThetainJetV0 * protonCosThetainJetV0);
9991022
protonsinPhiInJetV0frame = protonsinPhiInJetV0frame + protonInJetV0(2, 0) / sqrt(protonInJetV0(1, 0) * protonInJetV0(1, 0) + protonInJetV0(2, 0) * protonInJetV0(2, 0));
1023+
1024+
registryData.fill(HIST("TProfile2DLambdaPtMassSinPhi"), candidate.mLambda(), candidate.pt(), protonInJetV0(2, 0) / sqrt(protonInJetV0(1, 0) * protonInJetV0(1, 0) + protonInJetV0(2, 0) * protonInJetV0(2, 0)));
1025+
registryData.fill(HIST("TProfile2DLambdaPtMassSintheta"), candidate.mLambda(), candidate.pt(), protonSinThetainJetV0);
1026+
registryData.fill(HIST("TProfile2DLambdaPtMassCosSquareTheta"), candidate.mLambda(), candidate.pt(), protonCosThetainJetV0 * protonCosThetainJetV0);
1027+
}
1028+
if (passedAntiLambdaSelection(candidate, pos, neg)) {
1029+
double PAntiLambda = sqrt(candidate.px() * candidate.px() + candidate.py() * candidate.py() + candidate.pz() * candidate.pz());
1030+
double EAntiLambda = sqrt(candidate.mAntiLambda() * candidate.mAntiLambda() + PAntiLambda * PAntiLambda);
1031+
double AntiprotonE = sqrt(massPr * massPr + neg.px() * neg.px() + neg.py() * neg.py() + neg.pz() * neg.pz());
1032+
TMatrixD pLabAntiV0(4, 1);
1033+
pLabAntiV0(0, 0) = EAntiLambda;
1034+
pLabAntiV0(1, 0) = candidate.px();
1035+
pLabAntiV0(2, 0) = candidate.py();
1036+
pLabAntiV0(3, 0) = candidate.pz();
1037+
1038+
TMatrixD AntilambdaInJet(4, 1);
1039+
AntilambdaInJet = MyTMatrixTranslationToJet(maxJetpx, maxJetpy, maxJetpz, candidate.px(), candidate.py(), candidate.pz()) * pLabAntiV0;
1040+
1041+
TMatrixD pLabAntiproton(4, 1);
1042+
pLabAntiproton(0, 0) = AntiprotonE;
1043+
pLabAntiproton(1, 0) = neg.px();
1044+
pLabAntiproton(2, 0) = neg.py();
1045+
pLabAntiproton(3, 0) = neg.pz();
1046+
TMatrixD AntiprotonInJetV0(4, 1);
1047+
AntiprotonInJetV0 = LorentzTransInV0frame(EAntiLambda, AntilambdaInJet(1, 0), AntilambdaInJet(2, 0), AntilambdaInJet(3, 0)) * MyTMatrixTranslationToJet(maxJetpx, maxJetpy, maxJetpz, candidate.px(), candidate.py(), candidate.pz()) * pLabAntiproton;
1048+
AntiprotonsinPhiInJetV0frame = AntiprotonsinPhiInJetV0frame + AntiprotonInJetV0(2, 0) / sqrt(AntiprotonInJetV0(1, 0) * AntiprotonInJetV0(1, 0) + AntiprotonInJetV0(2, 0) * AntiprotonInJetV0(2, 0));
1049+
registryData.fill(HIST("TProfile2DAntiLambdaPtMassSinPhi"), candidate.mAntiLambda(), candidate.pt(), AntiprotonInJetV0(2, 0) / sqrt(AntiprotonInJetV0(1, 0) * AntiprotonInJetV0(1, 0) + AntiprotonInJetV0(2, 0) * AntiprotonInJetV0(2, 0)));
1050+
TMatrixD AntiprotonInV0(4, 1);
1051+
AntiprotonInV0 = LorentzTransInV0frame(EAntiLambda, candidate.px(), candidate.py(), candidate.pz()) * pLabAntiproton;
1052+
double AntiprotonPinJetV0 = sqrt(AntiprotonInJetV0(1, 0) * AntiprotonInJetV0(1, 0) + AntiprotonInJetV0(2, 0) * AntiprotonInJetV0(2, 0) + AntiprotonInJetV0(3, 0) * AntiprotonInJetV0(3, 0));
1053+
double AntiprotonPtinJetV0 = sqrt(AntiprotonInJetV0(1, 0) * AntiprotonInJetV0(1, 0) + AntiprotonInJetV0(2, 0) * AntiprotonInJetV0(2, 0));
1054+
double AntiprotonCosThetainJetV0 = AntiprotonInJetV0(3, 0) / AntiprotonPinJetV0;
1055+
double AntiprotonSinThetainJetV0 = AntiprotonPtinJetV0 / AntiprotonPinJetV0;
1056+
registryData.fill(HIST("TProfile2DAntiLambdaPtMassSintheta"), candidate.mAntiLambda(), candidate.pt(), AntiprotonSinThetainJetV0);
1057+
registryData.fill(HIST("TProfile2DAntiLambdaPtMassCosSquareTheta"), candidate.mAntiLambda(), candidate.pt(), AntiprotonCosThetainJetV0 * AntiprotonCosThetainJetV0);
10001058
}
10011059
}
10021060

@@ -1009,6 +1067,10 @@ struct LfMyV0s {
10091067
registryData.fill(HIST("V0LambdaprotonPhi"), TMath::ASin(protonsinPhiInJetV0frame / V0Numbers));
10101068
registryData.fill(HIST("profileLambda"), candidate.mLambda(), protonsinPhiInJetV0frame / V0Numbers);
10111069
}
1070+
if (passedAntiLambdaSelection(candidate, pos, neg)) {
1071+
registryData.fill(HIST("hAntiLambdamassandSinPhi"), candidate.mAntiLambda(), AntiprotonsinPhiInJetV0frame / AntiV0Numbers);
1072+
registryData.fill(HIST("profileAntiLambda"), candidate.mAntiLambda(), AntiprotonsinPhiInJetV0frame / AntiV0Numbers);
1073+
}
10121074
}
10131075
}
10141076
PROCESS_SWITCH(LfMyV0s, processData, "processData", true);
@@ -1019,7 +1081,6 @@ struct LfMyV0s {
10191081
if (!AcceptEvent(collision)) {
10201082
return;
10211083
}
1022-
10231084
registryData.fill(HIST("hNEvents"), 8.5);
10241085
int V0NumbersPerEvent = 0;
10251086
int V0NumbersPerEventsel = 0;

0 commit comments

Comments
 (0)