Skip to content

Commit 312d4f3

Browse files
committed
Added findable histograms with daughter pt analysis
1 parent 33fbac8 commit 312d4f3

File tree

1 file changed

+54
-29
lines changed

1 file changed

+54
-29
lines changed

PWGLF/TableProducer/Strangeness/sigmaminustask.cxx

Lines changed: 54 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ struct sigmaminustask {
6464
{
6565
// Axes
6666
const AxisSpec ptAxis{100, -10, 10, "#it{p}_{T} (GeV/#it{c})"};
67+
const AxisSpec ptDaughterAxis{200, 0, 10, "Daughter #it{p}_{T} (GeV/#it{c})"};
6768
const AxisSpec nSigmaPiAxis{60, -30, 30, "n#sigma_{#pi}"};
6869
const AxisSpec nSigmaPrAxis{60, -30, 30, "n#sigma_{p}"};
6970
const AxisSpec sigmaMassAxis{100, 1.1, 1.4, "m (GeV/#it{c}^{2})"};
@@ -78,7 +79,7 @@ struct sigmaminustask {
7879
const AxisSpec massResolutionAxis{100, -0.5, 0.5, "(m_{rec} - m_{gen}) / m_{gen}"};
7980
const AxisSpec radiusResolutionAxis{100, -0.5, 0.5, "(r_{rec} - r_{gen}) / r_{gen}"};
8081

81-
const AxisSpec boolAxis{2, -0.5, 1.5, "Boolean value (0=false, 1=true)"};
82+
const AxisSpec boolAxis{2, -0.5, 1.5, "Boolean value"};
8283
const AxisSpec filtersAxis{10, -0.5, 9.5, "Filter index"};
8384

8485
// Event selection
@@ -111,12 +112,30 @@ struct sigmaminustask {
111112

112113
if (doprocessFindable) {
113114
// Add findable Sigma histograms
114-
rFindable.add("h2MassPtFindableAll", "h2MassPtFindableAll", {HistType::kTH2F, {ptAxis, sigmaMassAxis}});
115115
rFindable.add("hFilterIndex", "hFilterIndex", {HistType::kTH1F, {filtersAxis}});
116+
117+
auto hFilterIndex = rFindable.get<TH1>(HIST("hFilterIndex"));
118+
hFilterIndex->GetXaxis()->SetBinLabel(1, "Initial"); // 0: all generated pairs with tracks
119+
hFilterIndex->GetXaxis()->SetBinLabel(2, "Det. signals"); // 1: correct ITS, TPC signals present
120+
hFilterIndex->GetXaxis()->SetBinLabel(3, "Moth ITS"); // 2: cuts on ITS mother signal
121+
hFilterIndex->GetXaxis()->SetBinLabel(4, "Moth p_{T}"); // 3: mother pT > KBminPtMoth
122+
hFilterIndex->GetXaxis()->SetBinLabel(5, "Daug TPC"); // 4: cuts on TPC daughter signal
123+
hFilterIndex->GetXaxis()->SetBinLabel(6, "#eta cuts"); // 5: eta < KBetaMax
124+
hFilterIndex->GetXaxis()->SetBinLabel(7, "#Delta#phi"); // 6: delta phi < KBmaxPhiDiff
125+
hFilterIndex->GetXaxis()->SetBinLabel(8, "Radius"); // 7: decay radius > KBradiusCut
126+
hFilterIndex->GetXaxis()->SetBinLabel(9, "Collision"); // 8: collision sel8 cut
127+
hFilterIndex->GetXaxis()->SetBinLabel(10, "TOF daug"); // 9: daughter has TOF
128+
116129
rFindable.add("h2MCRadiusFilterIndex", "h2MCRadiusFilterIndex", {HistType::kTH2F, {filtersAxis, radiusAxis}});
117130
rFindable.add("h2RecRadiusFilterIndex", "h2RecRadiusFilterIndex", {HistType::kTH2F, {filtersAxis, radiusAxis}});
118-
rFindable.add("h2MCRadiusFilter_protonkink", "h2MCRadiusFilter_protonkink", {HistType::kTH2F, {filtersAxis, radiusAxis}});
119-
rFindable.add("h2MCRadiusFilter_pikink", "h2MCRadiusFilter_pikink", {HistType::kTH2F, {filtersAxis, radiusAxis}});
131+
132+
rFindable.add("h2MCRadiusFilter_plus_protonkink", "h2MCRadiusFilter_plus_protonkink", {HistType::kTH2F, {filtersAxis, radiusAxis}});
133+
rFindable.add("h2MCRadiusFilter_plus_pikink", "h2MCRadiusFilter_plus_pikink", {HistType::kTH2F, {filtersAxis, radiusAxis}});
134+
rFindable.add("h2MCRadiusFilter_minus_pikink", "h2MCRadiusFilter_minus_pikink", {HistType::kTH2F, {filtersAxis, radiusAxis}});
135+
136+
rFindable.add("h2PtFilter_plus_protonkink", "h2PtFilter_plus_protonkink", {HistType::kTH2F, {filtersAxis, ptDaughterAxis}});
137+
rFindable.add("h2PtFilter_plus_pikink", "h2PtFilter_plus_pikink", {HistType::kTH2F, {filtersAxis, ptDaughterAxis}});
138+
rFindable.add("h2PtFilter_minus_pikink", "h2PtFilter_minus_pikink", {HistType::kTH2F, {filtersAxis, ptDaughterAxis}});
120139
}
121140
}
122141

@@ -299,20 +318,29 @@ struct sigmaminustask {
299318

300319
PROCESS_SWITCH(sigmaminustask, processMC, "MC processing", false);
301320

302-
void fillFindableHistograms(int filterIndex, float mcRadius, float recRadius, bool isPiDaughter) {
321+
void fillFindableHistograms(int filterIndex, float mcRadius, float recRadius, float ptDaughter, bool isSigmaMinus, bool isPiDaughter) {
303322
rFindable.fill(HIST("hFilterIndex"), filterIndex);
304323
rFindable.fill(HIST("h2MCRadiusFilterIndex"), filterIndex, mcRadius);
305324
rFindable.fill(HIST("h2RecRadiusFilterIndex"), filterIndex, recRadius);
306325

307326
if (isPiDaughter) {
308-
rFindable.fill(HIST("h2MCRadiusFilter_pikink"), filterIndex, mcRadius);
327+
if (isSigmaMinus) {
328+
rFindable.fill(HIST("h2MCRadiusFilter_minus_pikink"), filterIndex, mcRadius);
329+
rFindable.fill(HIST("h2PtFilter_minus_pikink"), filterIndex, ptDaughter);
330+
} else {
331+
rFindable.fill(HIST("h2MCRadiusFilter_plus_pikink"), filterIndex, mcRadius);
332+
rFindable.fill(HIST("h2PtFilter_plus_pikink"), filterIndex, ptDaughter);
333+
}
309334
} else {
310-
rFindable.fill(HIST("h2MCRadiusFilter_protonkink"), filterIndex, mcRadius);
335+
if (!isSigmaMinus) {
336+
rFindable.fill(HIST("h2MCRadiusFilter_plus_protonkink"), filterIndex, mcRadius);
337+
rFindable.fill(HIST("h2PtFilter_plus_protonkink"), filterIndex, ptDaughter);
338+
}
311339
}
312340
}
313341

314-
void processFindable(aod::KinkCands const& kinkCands, aod::McTrackLabels const& trackLabelsMC, aod::McParticles const& particlesMC,
315-
TracksFull const& tracks, CollisionsFullMC const& mcCollisions){
342+
void processFindable(aod::KinkCands const& kinkCands, aod::McTrackLabels const& trackLabelsMC,
343+
TracksFull const& tracks, aod::McParticles const&, CollisionsFullMC const&){
316344
// A - generated findable track pairs map: mcMother.globalIndex() -> (motherTrack.globalIndex(), daughterTrack.globalIndex())
317345
std::unordered_map<int64_t, std::pair<int64_t, int64_t>> allCandsIndices;
318346

@@ -394,28 +422,28 @@ struct sigmaminustask {
394422
auto mcDaughter = mcLabDaug.mcParticle_as<aod::McParticles>();
395423

396424
// Compute mass and radii
397-
float mcMass = std::sqrt(mcMother.e() * mcMother.e() - mcMother.p() * mcMother.p());
398-
int sigmaSign = mcMother.pdgCode() > 0 ? 1 : -1;
399-
bool isPiDaughter = std::abs(mcDaughter.pdgCode()) == 211;
400-
float mcRadius = std::sqrt((mcMother.vx() - mcDaughter.vx()) * (mcMother.vx() - mcDaughter.vx()) +
401-
(mcMother.vy() - mcDaughter.vy()) * (mcMother.vy() - mcDaughter.vy()));
425+
bool isSigmaMinus = (std::abs(mcMother.pdgCode()) == 3112);
426+
bool isPiDaughter = (std::abs(mcDaughter.pdgCode()) == 211);
427+
428+
//float mcMass = std::sqrt(mcMother.e() * mcMother.e() - mcMother.p() * mcMother.p());
429+
//int sigmaSign = mcMother.pdgCode() > 0 ? 1 : -1;
430+
float mcRadius = std::sqrt((mcMother.vx() - mcDaughter.vx()) * (mcMother.vx() - mcDaughter.vx()) + (mcMother.vy() - mcDaughter.vy()) * (mcMother.vy() - mcDaughter.vy()));
402431
float recRadius = -1.0;
403432
if (findableToKinkCand.find(mcMother.globalIndex()) != findableToKinkCand.end()) {
404433
auto kinkCand = kinkCands.rawIteratorAt(findableToKinkCand[mcMother.globalIndex()]);
405434
recRadius = std::sqrt(kinkCand.xDecVtx() * kinkCand.xDecVtx() + kinkCand.yDecVtx() * kinkCand.yDecVtx());
406435
}
407-
408-
rFindable.fill(HIST("h2MassPtFindableAll"), sigmaSign * mcMother.pt(), mcMass);
436+
float recPtDaughter = daughterTrack.pt();
409437

410438
// Define filter index and progressively apply kinkbuilder cuts to track pairs
411439
int filterIndex = 0;
412-
fillFindableHistograms(filterIndex, mcRadius, recRadius, isPiDaughter);
440+
fillFindableHistograms(filterIndex, mcRadius, recRadius, recPtDaughter, isSigmaMinus, isPiDaughter);
413441

414442
// 1 - tracks with right ITS, TPC, TOF signals
415443
if (motherTrack.has_collision() && motherTrack.hasITS() && !motherTrack.hasTPC() && !motherTrack.hasTOF() &&
416444
daughterTrack.hasITS() && daughterTrack.hasTPC()) {
417445
filterIndex += 1;
418-
fillFindableHistograms(filterIndex, mcRadius, recRadius, isPiDaughter);
446+
fillFindableHistograms(filterIndex, mcRadius, recRadius, recPtDaughter, isSigmaMinus, isPiDaughter);
419447

420448
} else {
421449
continue;
@@ -425,15 +453,15 @@ struct sigmaminustask {
425453
if (motherTrack.itsNCls() < 6 &&
426454
motherTrack.itsNClsInnerBarrel() == 3 && motherTrack.itsChi2NCl() < 36) {
427455
filterIndex += 1;
428-
fillFindableHistograms(filterIndex, mcRadius, recRadius, isPiDaughter);
456+
fillFindableHistograms(filterIndex, mcRadius, recRadius, recPtDaughter, isSigmaMinus, isPiDaughter);
429457

430458
} else {
431459
continue;
432460
}
433461

434462
if (motherTrack.pt() > KBminPtMoth) {
435463
filterIndex += 1;
436-
fillFindableHistograms(filterIndex, mcRadius, recRadius, isPiDaughter);
464+
fillFindableHistograms(filterIndex, mcRadius, recRadius, recPtDaughter, isSigmaMinus, isPiDaughter);
437465

438466
} else {
439467
continue;
@@ -443,7 +471,7 @@ struct sigmaminustask {
443471
if (daughterTrack.itsNClsInnerBarrel() == 0 && daughterTrack.itsNCls() < 4 &&
444472
daughterTrack.tpcNClsCrossedRows() > 0.8 * daughterTrack.tpcNClsFindable() && daughterTrack.tpcNClsFound() > KBnTPCClusMinDaug) {
445473
filterIndex += 1;
446-
fillFindableHistograms(filterIndex, mcRadius, recRadius, isPiDaughter);
474+
fillFindableHistograms(filterIndex, mcRadius, recRadius, recPtDaughter, isSigmaMinus, isPiDaughter);
447475

448476
} else {
449477
continue;
@@ -452,7 +480,7 @@ struct sigmaminustask {
452480
// 5 - geometric cuts: eta
453481
if (std::abs(motherTrack.eta()) < KBetaMax && std::abs(daughterTrack.eta()) < KBetaMax) {
454482
filterIndex += 1;
455-
fillFindableHistograms(filterIndex, mcRadius, recRadius, isPiDaughter);
483+
fillFindableHistograms(filterIndex, mcRadius, recRadius, recPtDaughter, isSigmaMinus, isPiDaughter);
456484

457485
} else {
458486
continue;
@@ -461,7 +489,7 @@ struct sigmaminustask {
461489
// 6 - geometric cuts: phi difference
462490
if (std::abs(motherTrack.phi() - daughterTrack.phi()) * radToDeg < KBmaxPhiDiff) {
463491
filterIndex += 1;
464-
fillFindableHistograms(filterIndex, mcRadius, recRadius, isPiDaughter);
492+
fillFindableHistograms(filterIndex, mcRadius, recRadius, recPtDaughter, isSigmaMinus, isPiDaughter);
465493

466494
} else {
467495
continue;
@@ -470,7 +498,7 @@ struct sigmaminustask {
470498
// 7 - radius cut
471499
if (recRadius > KBradiusCut) {
472500
filterIndex += 1;
473-
fillFindableHistograms(filterIndex, mcRadius, recRadius, isPiDaughter);
501+
fillFindableHistograms(filterIndex, mcRadius, recRadius, recPtDaughter, isSigmaMinus, isPiDaughter);
474502

475503
} else {
476504
continue;
@@ -480,14 +508,14 @@ struct sigmaminustask {
480508
auto collision = motherTrack.template collision_as<CollisionsFullMC>();
481509
if (!(std::abs(collision.posZ()) > cutzvertex || !collision.sel8())) {
482510
filterIndex += 1;
483-
fillFindableHistograms(filterIndex, mcRadius, recRadius, isPiDaughter);
511+
fillFindableHistograms(filterIndex, mcRadius, recRadius, recPtDaughter, isSigmaMinus, isPiDaughter);
484512

485513
}
486514

487515
// 9 - TOF daughter presence
488516
if (daughterTrack.hasTOF()) {
489517
filterIndex += 1;
490-
fillFindableHistograms(filterIndex, mcRadius, recRadius, isPiDaughter);
518+
fillFindableHistograms(filterIndex, mcRadius, recRadius, recPtDaughter, isSigmaMinus, isPiDaughter);
491519

492520
}
493521
}
@@ -501,6 +529,3 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
501529
return WorkflowSpec{
502530
adaptAnalysisTask<sigmaminustask>(cfgc)};
503531
}
504-
505-
// Next steps:
506-
// 4. For generated h2, avoid mass axis, use a bool axis to easily distinguish sigma minus and sigma plus

0 commit comments

Comments
 (0)