Skip to content

Commit 8dbe752

Browse files
authored
[PWGLF] Lambda local polarization induced by jet in pp collision 13.6 TeV (#10547)
1 parent 91239e6 commit 8dbe752

File tree

3 files changed

+64
-5
lines changed

3 files changed

+64
-5
lines changed

PWGLF/DataModel/lambdaJetpolarization.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ DECLARE_SOA_TABLE(MyTable, "AOD", "MYTABLE", o2::soa::Index<>,
6767
myTable::MyCollisionId, myTable::MyCollisionV0, myTable::V0px, myTable::V0py, myTable::V0pz, myTable::V0pT, myTable::V0Lambdamass,
6868
myTable::V0protonpx, myTable::V0protonpy, myTable::V0protonpz);
6969

70+
DECLARE_SOA_TABLE(MyTableAnti, "AOD", "MYTABLEAnti", o2::soa::Index<>,
71+
myTable::MyCollisionId, myTable::MyCollisionV0, myTable::V0px, myTable::V0py, myTable::V0pz, myTable::V0pT, myTable::V0Lambdamass,
72+
myTable::V0protonpx, myTable::V0protonpy, myTable::V0protonpz);
73+
7074
DECLARE_SOA_TABLE(MyTableJet, "AOD", "MYTABLEJet", o2::soa::Index<>,
7175
myTable::MyCollisionId, myTable::MyCollisionJet, myTable::Jetpx, myTable::Jetpy, myTable::Jetpz, myTable::JetpT);
7276

PWGLF/TableProducer/Strangeness/lambdaJetpolarizationbuilder.cxx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ using namespace o2::framework::expressions;
4040

4141
struct myAnalysis {
4242
Produces<o2::aod::MyTable> myTable;
43+
Produces<o2::aod::MyTableAnti> myTableanti;
4344
Produces<o2::aod::MyTableJet> myTableJet;
4445
Produces<o2::aod::MyCollision> outputCollisions;
4546
Produces<o2::aod::MyCollisionV0s> outputCollisionsV0;
@@ -95,7 +96,8 @@ struct myAnalysis {
9596
Configurable<float> v0rejLambda{"v0rejLambda", 0.01, "V0 rej K0s"};
9697
Configurable<float> CtauLambda{"ctauLambda", 30, "C tau Lambda (cm)"};
9798
Configurable<bool> ifpasslambda{"passedLambdaSelection", 1, "passedLambdaSelection"};
98-
Configurable<bool> ifpassantilambda{"passedANtiLambdaSelection", 1, "passedAntiLambdaSelection"};
99+
Configurable<bool> ifpassantilambda{"passedAntiLambdaSelection", 1, "passedAntiLambdaSelection"};
100+
Configurable<bool> ifinitpasslambda{"ifinitpasslambda", 0, "ifinitpasslambda"};
99101
// Event Selection/////////////////////////////////
100102
Configurable<float> cutzvertex{"cutzvertex", 10.0f, "Accepted z-vertex range (cm)"};
101103
Configurable<bool> sel8{"sel8", 0, "Apply sel8 event selection"};
@@ -600,7 +602,7 @@ struct myAnalysis {
600602
JEhistos.fill(HIST("V0DCANegToPV"), v0.dcanegtopv());
601603
JEhistos.fill(HIST("V0DCAPosToPV"), v0.dcapostopv());
602604
JEhistos.fill(HIST("V0DCAV0Daughters"), v0.dcaV0daughters());
603-
} else if (passedInitLambdaSelection(v0, pos, neg)) {
605+
} else if (passedInitLambdaSelection(v0, pos, neg) && ifinitpasslambda) {
604606
JEhistos.fill(HIST("hPt"), v0.pt());
605607
JEhistos.fill(HIST("V0Radius"), v0.v0radius());
606608
JEhistos.fill(HIST("CosPA"), v0.v0cosPA());
@@ -621,7 +623,7 @@ struct myAnalysis {
621623
JEhistos.fill(HIST("v0Lambdapz"), v0.pz());
622624
myTable(outputCollisionsV0.lastIndex(), v0.collisionId(), v0.px(), v0.py(), v0.pz(), v0.pt(), v0.mLambda(), pos.px(), pos.py(), pos.pz());
623625
JEhistos.fill(HIST("hV0Lambda"), nEventsV0, v0.px(), v0.py(), v0.pz(), v0.mLambda(), pos.px(), pos.py(), pos.pz());
624-
} else if (passedInitLambdaSelection(v0, pos, neg)) {
626+
} else if (passedInitLambdaSelection(v0, pos, neg) && ifinitpasslambda) {
625627
V0LambdaNumbers = V0LambdaNumbers + 1;
626628
JEhistos.fill(HIST("hMassVsPtLambda"), v0.pt(), v0.mLambda());
627629
JEhistos.fill(HIST("hMassLambda"), v0.mLambda());
@@ -635,7 +637,6 @@ struct myAnalysis {
635637
JEhistos.fill(HIST("hV0Lambda"), nEventsV0, v0.px(), v0.py(), v0.pz(), v0.mLambda(), pos.px(), pos.py(), pos.pz());
636638
}
637639
if (passedAntiLambdaSelection(v0, pos, neg) && ifpassantilambda) {
638-
639640
JEhistos.fill(HIST("hMassVsPtAntiLambda"), v0.pt(), v0.mAntiLambda());
640641
JEhistos.fill(HIST("hMassAntiLambda"), v0.mAntiLambda());
641642
JEhistos.fill(HIST("TPCNSigmaPosPi"), pos.tpcNSigmaPi());
@@ -644,7 +645,8 @@ struct myAnalysis {
644645
JEhistos.fill(HIST("v0AntiLambdapx"), v0.px());
645646
JEhistos.fill(HIST("v0AntiLambdapy"), v0.py());
646647
JEhistos.fill(HIST("v0AntiLambdapz"), v0.pz());
647-
} else if (passedInitLambdaSelection(v0, pos, neg)) {
648+
myTableanti(outputCollisionsV0.lastIndex(), v0.collisionId(), v0.px(), v0.py(), v0.pz(), v0.pt(), v0.mAntiLambda(), pos.px(), pos.py(), pos.pz());
649+
} else if (passedInitLambdaSelection(v0, pos, neg) && ifinitpasslambda) {
648650
JEhistos.fill(HIST("hMassVsPtAntiLambda"), v0.pt(), v0.mAntiLambda());
649651
JEhistos.fill(HIST("hMassAntiLambda"), v0.mAntiLambda());
650652
JEhistos.fill(HIST("TPCNSigmaPosPi"), pos.tpcNSigmaPi());
@@ -653,6 +655,7 @@ struct myAnalysis {
653655
JEhistos.fill(HIST("v0AntiLambdapx"), v0.px());
654656
JEhistos.fill(HIST("v0AntiLambdapy"), v0.py());
655657
JEhistos.fill(HIST("v0AntiLambdapz"), v0.pz());
658+
myTableanti(outputCollisionsV0.lastIndex(), v0.collisionId(), v0.px(), v0.py(), v0.pz(), v0.pt(), v0.mLambda(), pos.px(), pos.py(), pos.pz());
656659
}
657660
}
658661
JEhistos.fill(HIST("V0Counts"), V0NumbersPerEvent);

PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ struct LfMyV0s {
5050
registry.add("hMassLambda", "hMassLambda", {HistType::kTH1F, {{200, 0.9f, 1.2f}}});
5151
registry.add("V0pTInLab", "V0pTInLab", kTH1F, {axisPT});
5252
registry.add("hMassVsPtLambda", "hMassVsPtLambda", {HistType::kTH2F, {{100, 0.0f, 10.0f}, {200, 1.016f, 1.216f}}});
53+
registry.add("hMassVsPtAntiLambda", "hMassVsPtAntiLambda", {HistType::kTH2F, {{100, 0.0f, 10.0f}, {200, 1.016f, 1.216f}}});
5354

5455
registry.add("V0pxInLab", "V0pxInLab", kTH1F, {axisPx});
5556
registry.add("V0pyInLab", "V0pyInLab", kTH1F, {axisPy});
@@ -84,13 +85,16 @@ struct LfMyV0s {
8485
registry.add("V0protonpyInJetV0frame", "V0protonpyInJetV0frame", kTH1F, {axisPy});
8586
registry.add("V0protonpzInJetV0frame", "V0protonpzInJetV0frame", kTH1F, {axisPz});
8687
registry.add("V0protonphiInJetV0frame", "V0protonphiInJetV0frame", kTH1F, {axisPhi});
88+
registry.add("V0antiprotonphiInJetV0frame", "V0antiprotonphiInJetV0frame", kTH1F, {axisPhi});
8789

8890
registry.add("V0LambdapxInJetV0frame", "V0LambdapxInJetV0frame", kTH1F, {axisPx});
8991
registry.add("V0LambdapyInJetV0frame", "V0LambdapyInJetV0frame", kTH1F, {axisPy});
9092
registry.add("V0LambdapzInJetV0frame", "V0LambdapzInJetV0frame", kTH1F, {axisPz});
9193

9294
registry.add("hLambdamassandSinPhi", "hLambdamassandSinPhi", kTH2F, {{200, 0.9, 1.2}, {200, -1, 1}});
95+
registry.add("hAntiLambdamassandSinPhi", "hAntiLambdamassandSinPhi", kTH2F, {{200, 0.9, 1.2}, {200, -1, 1}});
9396
registry.add("profile", "Invariant Mass vs sin(phi)", {HistType::kTProfile, {{200, 0.9, 1.2}}});
97+
registry.add("profileAntiV0", "Invariant Mass vs sin(phi)", {HistType::kTProfile, {{200, 0.9, 1.2}}});
9498
}
9599
double massPr = o2::constants::physics::MassProton;
96100
double massLambda = o2::constants::physics::MassLambda;
@@ -264,6 +268,54 @@ struct LfMyV0s {
264268
}
265269
}
266270
PROCESS_SWITCH(LfMyV0s, processLeadingJetV0Analysis, "processLeadingJetV0Analysis", true);
271+
272+
void processLeadingJetAntiV0Analysis(aod::MyTableAnti const& myv0s, aod::MyTableLeadingJet const& myleadingJets)
273+
{
274+
for (auto& LeadingJet : myleadingJets) {
275+
int V0Numbers = 0;
276+
double protonsinPhiInJetV0frame = 0;
277+
for (auto& candidate : myv0s) {
278+
if (candidate.mycollisionv0() == LeadingJet.mycollisionleadingjet()) {
279+
V0Numbers = V0Numbers + 1;
280+
double PLambda = sqrt(candidate.v0px() * candidate.v0px() + candidate.v0py() * candidate.v0py() + candidate.v0pz() * candidate.v0pz());
281+
double ELambda = sqrt(candidate.v0Lambdamass() * candidate.v0Lambdamass() + PLambda * PLambda);
282+
double protonE = sqrt(massPr * massPr + candidate.v0protonpx() * candidate.v0protonpx() + candidate.v0protonpy() * candidate.v0protonpy() + candidate.v0protonpz() * candidate.v0protonpz());
283+
284+
TMatrixD pLabV0(4, 1);
285+
pLabV0(0, 0) = ELambda;
286+
pLabV0(1, 0) = candidate.v0px();
287+
pLabV0(2, 0) = candidate.v0py();
288+
pLabV0(3, 0) = candidate.v0pz();
289+
290+
TMatrixD lambdaInJet(4, 1);
291+
lambdaInJet = MyTMatrixTranslationToJet(LeadingJet.leadingjetpx(), LeadingJet.leadingjetpy(), LeadingJet.leadingjetpz(), candidate.v0px(), candidate.v0py(), candidate.v0pz()) * pLabV0;
292+
293+
TMatrixD lambdaInJetV0(4, 1);
294+
lambdaInJetV0 = LorentzTransInV0frame(ELambda, lambdaInJet(1, 0), lambdaInJet(2, 0), lambdaInJet(3, 0)) * MyTMatrixTranslationToJet(LeadingJet.leadingjetpx(), LeadingJet.leadingjetpy(), LeadingJet.leadingjetpz(), candidate.v0px(), candidate.v0py(), candidate.v0pz()) * pLabV0;
295+
296+
TMatrixD pLabproton(4, 1);
297+
pLabproton(0, 0) = protonE;
298+
pLabproton(1, 0) = candidate.v0protonpx();
299+
pLabproton(2, 0) = candidate.v0protonpy();
300+
pLabproton(3, 0) = candidate.v0protonpz();
301+
TMatrixD protonInJetV0(4, 1);
302+
protonInJetV0 = LorentzTransInV0frame(ELambda, lambdaInJet(1, 0), lambdaInJet(2, 0), lambdaInJet(3, 0)) * MyTMatrixTranslationToJet(LeadingJet.leadingjetpx(), LeadingJet.leadingjetpy(), LeadingJet.leadingjetpz(), candidate.v0px(), candidate.v0py(), candidate.v0pz()) * pLabproton;
303+
protonsinPhiInJetV0frame = protonsinPhiInJetV0frame + protonInJetV0(2, 0) / sqrt(protonInJetV0(1, 0) * protonInJetV0(1, 0) + protonInJetV0(2, 0) * protonInJetV0(2, 0));
304+
}
305+
}
306+
for (auto& candidate : myv0s) {
307+
if (candidate.mycollisionv0() == LeadingJet.mycollisionleadingjet()) {
308+
registry.fill(HIST("V0antiprotonphiInJetV0frame"), protonsinPhiInJetV0frame / V0Numbers);
309+
registry.fill(HIST("hAntiLambdamassandSinPhi"), candidate.v0Lambdamass(), protonsinPhiInJetV0frame / V0Numbers);
310+
registry.fill(HIST("profileAntiV0"), candidate.v0Lambdamass(), protonsinPhiInJetV0frame / V0Numbers);
311+
}
312+
}
313+
}
314+
for (auto& candidate : myv0s) {
315+
registry.fill(HIST("hMassVsPtAntiLambda"), candidate.v0pt(), candidate.v0Lambdamass());
316+
}
317+
}
318+
PROCESS_SWITCH(LfMyV0s, processLeadingJetAntiV0Analysis, "processLeadingJetAntiV0Analysis", true);
267319
};
268320

269321
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)