Skip to content

Commit 68d23d8

Browse files
authored
[PWGJE] Jet Fragmentation & V0 QA (#11750)
1 parent 3f137bc commit 68d23d8

File tree

2 files changed

+146
-2
lines changed

2 files changed

+146
-2
lines changed

PWGJE/Tasks/jetFragmentation.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2658,9 +2658,9 @@ struct JetFragmentation {
26582658
std::vector<int> state = convertState(M, nV0inJet, nV0Classes);
26592659
std::vector<double> corrected;
26602660
if (doCorrectionWithTracks)
2661-
corrected = correctedValues(state, values);
2662-
else
26632661
corrected = correctedValuesPlusTracks<CandidatesV0DataWithFlags, aod::JetTracks>(state, jet);
2662+
else
2663+
corrected = correctedValues(state, values);
26642664

26652665
double ws = stateWeight(state, weights);
26662666
double jetpt = corrected[nV0inJet];

PWGJE/Tasks/v0QA.cxx

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,13 @@ struct V0QA {
7070
Configurable<float> lifetimeLambdaMax{"lifetimeLambdaMax", 30.0, "Maximum lifetime of Lambda (cm)"};
7171
Configurable<float> yPartMax{"yPartMax", 0.5, "Maximum rapidity of particles"};
7272
Configurable<float> vertexZCut{"vertexZCut", 10.0, "Vertex Z cut"};
73+
Configurable<float> v0Fraction{"v0Fraction", 0.5, "Fraction of V0s to accept randomly"};
7374

7475
Filter jetCollisionFilter = nabs(aod::jcollision::posZ) < vertexZCut;
7576

7677
ConfigurableAxis binPtJet{"ptJet", {100., 0.0f, 50.0f}, ""};
7778
ConfigurableAxis binPtV0{"ptV0", {100., 0.0f, 50.0f}, ""};
79+
ConfigurableAxis binZV0{"zV0", {100., 1e-3f, 1 + 1e-3f}, ""};
7880
ConfigurableAxis binEta{"binEta", {100, -1.0f, 1.0f}, ""};
7981
ConfigurableAxis binPhi{"binPhi", {constants::math::PI * 10 / 2, 0.0f, constants::math::TwoPI}, ""};
8082

@@ -103,6 +105,7 @@ struct V0QA {
103105

104106
const AxisSpec axisJetPt{binPtJet, "Jet Pt (GeV/c)"};
105107
const AxisSpec axisV0Pt{binPtV0, "V0 Pt (GeV/c)"};
108+
const AxisSpec axisV0Z{binZV0, "z_{V0} = #it{p}_{T, V0} / #it{p}_{T, jet}"};
106109
const AxisSpec axisEta{binEta, "Eta"};
107110
const AxisSpec axisPhi{binPhi, "Phi"};
108111
const AxisSpec axisV0Radius{binV0Radius, "V0 Radius (cm)"};
@@ -225,6 +228,38 @@ struct V0QA {
225228
registry.add("feeddown/JetsPtXiMinusPtLambdaPt", "Jets Pt, #Xi^{-} Pt, #Lambda Pt", HistType::kTHnSparseD, {axisJetPt, axisJetPt, axisV0Pt, axisV0Pt});
226229
registry.add("feeddown/JetsPtXiPlusPtAntiLambdaPt", "Jets Pt, #Xi^{+} Pt, #bar{#Lambda} Pt", HistType::kTHnSparseD, {axisJetPt, axisJetPt, axisV0Pt, axisV0Pt});
227230
}
231+
if (doprocessTestWeightedJetFinder) {
232+
registry.add("tests/weighted/JetPtEtaPhi", "Jet Pt, Eta, Phi", HistType::kTH3D, {axisJetPt, axisEta, axisPhi});
233+
registry.add("tests/weighted/JetPtEtaV0Pt", "Jet Pt, Eta, V0 Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
234+
registry.add("tests/weighted/JetPtEtaV0Z", "Jet Pt, Eta, V0 Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
235+
registry.add("tests/weighted/JetPtEtaK0SPt", "Jet Pt, Eta, K0S Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
236+
registry.add("tests/weighted/JetPtEtaK0SZ", "Jet Pt, Eta, K0S Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
237+
registry.add("tests/weighted/JetPtEtaLambdaPt", "Jet Pt, Eta, Lambda Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
238+
registry.add("tests/weighted/JetPtEtaLambdaZ", "Jet Pt, Eta, Lambda Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
239+
registry.add("tests/weighted/JetPtEtaAntiLambdaPt", "Jet Pt, Eta, AntiLambda Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
240+
registry.add("tests/weighted/JetPtEtaAntiLambdaZ", "Jet Pt, Eta, AntiLambda Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
241+
}
242+
if (doprocessTestSubtractedJetFinder) {
243+
registry.add("tests/nosub/JetPtEtaPhi", "Jet Pt, Eta, Phi", HistType::kTH3D, {axisJetPt, axisEta, axisPhi});
244+
registry.add("tests/nosub/JetPtEtaV0Pt", "Jet Pt, Eta, V0 Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
245+
registry.add("tests/nosub/JetPtEtaV0Z", "Jet Pt, Eta, V0 Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
246+
registry.add("tests/nosub/JetPtEtaK0SPt", "Jet Pt, Eta, K0S Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
247+
registry.add("tests/nosub/JetPtEtaK0SZ", "Jet Pt, Eta, K0S Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
248+
registry.add("tests/nosub/JetPtEtaLambdaPt", "Jet Pt, Eta, Lambda Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
249+
registry.add("tests/nosub/JetPtEtaLambdaZ", "Jet Pt, Eta, Lambda Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
250+
registry.add("tests/nosub/JetPtEtaAntiLambdaPt", "Jet Pt, Eta, AntiLambda Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
251+
registry.add("tests/nosub/JetPtEtaAntiLambdaZ", "Jet Pt, Eta, AntiLambda Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
252+
253+
registry.add("tests/sub/JetPtEtaPhi", "Jet Pt, Eta, Phi", HistType::kTH3D, {axisJetPt, axisEta, axisPhi});
254+
registry.add("tests/sub/JetPtEtaV0Pt", "Jet Pt, Eta, V0 Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
255+
registry.add("tests/sub/JetPtEtaV0Z", "Jet Pt, Eta, V0 Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
256+
registry.add("tests/sub/JetPtEtaK0SPt", "Jet Pt, Eta, K0S Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
257+
registry.add("tests/sub/JetPtEtaK0SZ", "Jet Pt, Eta, K0S Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
258+
registry.add("tests/sub/JetPtEtaLambdaPt", "Jet Pt, Eta, Lambda Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
259+
registry.add("tests/sub/JetPtEtaLambdaZ", "Jet Pt, Eta, Lambda Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
260+
registry.add("tests/sub/JetPtEtaAntiLambdaPt", "Jet Pt, Eta, AntiLambda Pt", HistType::kTH3D, {axisJetPt, axisEta, axisV0Pt});
261+
registry.add("tests/sub/JetPtEtaAntiLambdaZ", "Jet Pt, Eta, AntiLambda Z", HistType::kTH3D, {axisJetPt, axisEta, axisV0Z});
262+
}
228263
if (doprocessV0TrackQA) {
229264
registry.add("tracks/Pos", "pos", HistType::kTHnSparseD, {axisV0Pt, axisV0Pt, axisEta, axisPhi});
230265
registry.add("tracks/Neg", "neg", HistType::kTHnSparseD, {axisV0Pt, axisV0Pt, axisEta, axisPhi});
@@ -1220,6 +1255,115 @@ struct V0QA {
12201255
}
12211256
PROCESS_SWITCH(V0QA, processFeeddownMatchedJets, "Jets feeddown", false);
12221257

1258+
// Test the difference between excluding V0s from jet finding and subtracting V0s from jets afterwards
1259+
void processTestWeightedJetFinder(soa::Filtered<aod::JetCollisions>::iterator const& jcoll, soa::Join<aod::V0ChargedJets, aod::V0ChargedJetConstituents> const& jets, aod::CandidatesV0Data const&)
1260+
{
1261+
if (!jetderiveddatautilities::selectCollision(jcoll, eventSelectionBits))
1262+
return;
1263+
1264+
for (const auto& jet : jets) {
1265+
registry.fill(HIST("tests/weighted/JetPtEtaPhi"), jet.pt(), jet.eta(), jet.phi());
1266+
1267+
for (const auto& v0 : jet.template candidates_as<aod::CandidatesV0Data>()) {
1268+
if (v0.isRejectedCandidate())
1269+
continue;
1270+
1271+
double z = v0.pt() / jet.pt();
1272+
1273+
registry.fill(HIST("tests/weighted/JetPtEtaV0Pt"), jet.pt(), jet.eta(), v0.pt());
1274+
registry.fill(HIST("tests/weighted/JetPtEtaV0Z"), jet.pt(), jet.eta(), z);
1275+
1276+
if (v0.isK0SCandidate()) {
1277+
registry.fill(HIST("tests/weighted/JetPtEtaK0SPt"), jet.pt(), jet.eta(), v0.pt());
1278+
registry.fill(HIST("tests/weighted/JetPtEtaK0SZ"), jet.pt(), jet.eta(), z);
1279+
}
1280+
if (v0.isLambdaCandidate()) {
1281+
registry.fill(HIST("tests/weighted/JetPtEtaLambdaPt"), jet.pt(), jet.eta(), v0.pt());
1282+
registry.fill(HIST("tests/weighted/JetPtEtaLambdaZ"), jet.pt(), jet.eta(), z);
1283+
}
1284+
if (v0.isAntiLambdaCandidate()) {
1285+
registry.fill(HIST("tests/weighted/JetPtEtaAntiLambdaPt"), jet.pt(), jet.eta(), v0.pt());
1286+
registry.fill(HIST("tests/weighted/JetPtEtaAntiLambdaZ"), jet.pt(), jet.eta(), z);
1287+
}
1288+
}
1289+
}
1290+
}
1291+
PROCESS_SWITCH(V0QA, processTestWeightedJetFinder, "Test weighted jet finder", false);
1292+
1293+
void processTestSubtractedJetFinder(soa::Filtered<aod::JetCollisions>::iterator const& jcoll, soa::Join<aod::V0ChargedJets, aod::V0ChargedJetConstituents> const& jets, aod::CandidatesV0Data const&)
1294+
{
1295+
if (!jetderiveddatautilities::selectCollision(jcoll, eventSelectionBits))
1296+
return;
1297+
1298+
for (const auto& jet : jets) {
1299+
registry.fill(HIST("tests/nosub/JetPtEtaPhi"), jet.pt(), jet.eta(), jet.phi());
1300+
1301+
std::vector<double> v0Pt;
1302+
std::vector<int> v0Type; // 0: K0S, 1: Lambda, 2: AntiLambda
1303+
double ptjetsub = jet.pt();
1304+
1305+
for (const auto& v0 : jet.template candidates_as<aod::CandidatesV0Data>()) {
1306+
if (v0.isRejectedCandidate())
1307+
continue;
1308+
1309+
double z = v0.pt() / jet.pt();
1310+
1311+
registry.fill(HIST("tests/nosub/JetPtEtaV0Pt"), jet.pt(), jet.eta(), v0.pt());
1312+
registry.fill(HIST("tests/nosub/JetPtEtaV0Z"), jet.pt(), jet.eta(), z);
1313+
1314+
if (v0.isK0SCandidate()) {
1315+
registry.fill(HIST("tests/nosub/JetPtEtaK0SPt"), jet.pt(), jet.eta(), v0.pt());
1316+
registry.fill(HIST("tests/nosub/JetPtEtaK0SZ"), jet.pt(), jet.eta(), z);
1317+
}
1318+
if (v0.isLambdaCandidate()) {
1319+
registry.fill(HIST("tests/nosub/JetPtEtaLambdaPt"), jet.pt(), jet.eta(), v0.pt());
1320+
registry.fill(HIST("tests/nosub/JetPtEtaLambdaZ"), jet.pt(), jet.eta(), z);
1321+
}
1322+
if (v0.isAntiLambdaCandidate()) {
1323+
registry.fill(HIST("tests/nosub/JetPtEtaAntiLambdaPt"), jet.pt(), jet.eta(), v0.pt());
1324+
registry.fill(HIST("tests/nosub/JetPtEtaAntiLambdaZ"), jet.pt(), jet.eta(), z);
1325+
}
1326+
1327+
double r = gRandom->Uniform();
1328+
if (r < v0Fraction) { // Accepted
1329+
v0Pt.push_back(v0.pt());
1330+
if (v0.isK0SCandidate()) {
1331+
v0Type.push_back(0);
1332+
} else if (v0.isLambdaCandidate()) {
1333+
v0Type.push_back(1);
1334+
} else if (v0.isAntiLambdaCandidate()) {
1335+
v0Type.push_back(2);
1336+
}
1337+
} else { // Subtracted
1338+
ptjetsub -= v0.pt();
1339+
}
1340+
}
1341+
1342+
for (unsigned int i = 0; i < v0Pt.size(); ++i) {
1343+
registry.fill(HIST("tests/sub/JetPtEtaPhi"), ptjetsub, jet.eta(), jet.phi());
1344+
1345+
int type = v0Type[i];
1346+
double pt = v0Pt[i];
1347+
double z = pt / ptjetsub;
1348+
1349+
registry.fill(HIST("tests/sub/JetPtEtaV0Pt"), ptjetsub, jet.eta(), pt);
1350+
registry.fill(HIST("tests/sub/JetPtEtaV0Z"), ptjetsub, jet.eta(), z);
1351+
1352+
if (type == 0) { // K0S
1353+
registry.fill(HIST("tests/sub/JetPtEtaK0SPt"), ptjetsub, jet.eta(), pt);
1354+
registry.fill(HIST("tests/sub/JetPtEtaK0SZ"), ptjetsub, jet.eta(), z);
1355+
} else if (type == 1) { // Lambda
1356+
registry.fill(HIST("tests/sub/JetPtEtaLambdaPt"), ptjetsub, jet.eta(), pt);
1357+
registry.fill(HIST("tests/sub/JetPtEtaLambdaZ"), ptjetsub, jet.eta(), z);
1358+
} else if (type == 2) { // AntiLambda
1359+
registry.fill(HIST("tests/sub/JetPtEtaAntiLambdaPt"), ptjetsub, jet.eta(), pt);
1360+
registry.fill(HIST("tests/sub/JetPtEtaAntiLambdaZ"), ptjetsub, jet.eta(), z);
1361+
}
1362+
}
1363+
}
1364+
}
1365+
PROCESS_SWITCH(V0QA, processTestSubtractedJetFinder, "Test subtracted jet finder", false);
1366+
12231367
using DaughterJTracks = soa::Join<aod::JetTracks, aod::JTrackPIs>;
12241368
using DaughterTracks = soa::Join<aod::FullTracks, aod::TracksDCA, aod::TrackSelection, aod::TracksCov>;
12251369
void processV0TrackQA(aod::JetCollision const& /*jcoll*/, aod::CandidatesV0Data const& v0s, DaughterJTracks const&, DaughterTracks const&)

0 commit comments

Comments
 (0)