Skip to content

Commit 70311df

Browse files
authored
[PWG-LF] spectra TOF add mismatched info (#5519)
- fix multiplicity for MC
1 parent 2e64bfe commit 70311df

2 files changed

Lines changed: 121 additions & 12 deletions

File tree

PWGLF/DataModel/spectraTOF.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,30 @@ static constexpr std::string_view hdcaxyphi[NpCharge] = {"dcaxyphi/pos/el", "dca
100100
"dcaxyphi/neg/ka", "dcaxyphi/neg/pr", "dcaxyphi/neg/de",
101101
"dcaxyphi/neg/tr", "dcaxyphi/neg/he", "dcaxyphi/neg/al"};
102102
// MC
103+
static constexpr std::string_view hpt_mism_its_prm[NpCharge] = {"MC/el/pos/prm/pt/mismITS", "MC/mu/pos/prm/pt/mismITS", "MC/pi/pos/prm/pt/mismITS",
104+
"MC/ka/pos/prm/pt/mismITS", "MC/pr/pos/prm/pt/mismITS", "MC/de/pos/prm/pt/mismITS",
105+
"MC/tr/pos/prm/pt/mismITS", "MC/he/pos/prm/pt/mismITS", "MC/al/pos/prm/pt/mismITS",
106+
"MC/el/neg/prm/pt/mismITS", "MC/mu/neg/prm/pt/mismITS", "MC/pi/neg/prm/pt/mismITS",
107+
"MC/ka/neg/prm/pt/mismITS", "MC/pr/neg/prm/pt/mismITS", "MC/de/neg/prm/pt/mismITS",
108+
"MC/tr/neg/prm/pt/mismITS", "MC/he/neg/prm/pt/mismITS", "MC/al/neg/prm/pt/mismITS"};
109+
static constexpr std::string_view hpt_mism_tpc_prm[NpCharge] = {"MC/el/pos/prm/pt/mismTPC", "MC/mu/pos/prm/pt/mismTPC", "MC/pi/pos/prm/pt/mismTPC",
110+
"MC/ka/pos/prm/pt/mismTPC", "MC/pr/pos/prm/pt/mismTPC", "MC/de/pos/prm/pt/mismTPC",
111+
"MC/tr/pos/prm/pt/mismTPC", "MC/he/pos/prm/pt/mismTPC", "MC/al/pos/prm/pt/mismTPC",
112+
"MC/el/neg/prm/pt/mismTPC", "MC/mu/neg/prm/pt/mismTPC", "MC/pi/neg/prm/pt/mismTPC",
113+
"MC/ka/neg/prm/pt/mismTPC", "MC/pr/neg/prm/pt/mismTPC", "MC/de/neg/prm/pt/mismTPC",
114+
"MC/tr/neg/prm/pt/mismTPC", "MC/he/neg/prm/pt/mismTPC", "MC/al/neg/prm/pt/mismTPC"};
115+
static constexpr std::string_view hpt_mism_trd_prm[NpCharge] = {"MC/el/pos/prm/pt/mismTRD", "MC/mu/pos/prm/pt/mismTRD", "MC/pi/pos/prm/pt/mismTRD",
116+
"MC/ka/pos/prm/pt/mismTRD", "MC/pr/pos/prm/pt/mismTRD", "MC/de/pos/prm/pt/mismTRD",
117+
"MC/tr/pos/prm/pt/mismTRD", "MC/he/pos/prm/pt/mismTRD", "MC/al/pos/prm/pt/mismTRD",
118+
"MC/el/neg/prm/pt/mismTRD", "MC/mu/neg/prm/pt/mismTRD", "MC/pi/neg/prm/pt/mismTRD",
119+
"MC/ka/neg/prm/pt/mismTRD", "MC/pr/neg/prm/pt/mismTRD", "MC/de/neg/prm/pt/mismTRD",
120+
"MC/tr/neg/prm/pt/mismTRD", "MC/he/neg/prm/pt/mismTRD", "MC/al/neg/prm/pt/mismTRD"};
121+
static constexpr std::string_view hpt_mism_tof_prm[NpCharge] = {"MC/el/pos/prm/pt/mismTOF", "MC/mu/pos/prm/pt/mismTOF", "MC/pi/pos/prm/pt/mismTOF",
122+
"MC/ka/pos/prm/pt/mismTOF", "MC/pr/pos/prm/pt/mismTOF", "MC/de/pos/prm/pt/mismTOF",
123+
"MC/tr/pos/prm/pt/mismTOF", "MC/he/pos/prm/pt/mismTOF", "MC/al/pos/prm/pt/mismTOF",
124+
"MC/el/neg/prm/pt/mismTOF", "MC/mu/neg/prm/pt/mismTOF", "MC/pi/neg/prm/pt/mismTOF",
125+
"MC/ka/neg/prm/pt/mismTOF", "MC/pr/neg/prm/pt/mismTOF", "MC/de/neg/prm/pt/mismTOF",
126+
"MC/tr/neg/prm/pt/mismTOF", "MC/he/neg/prm/pt/mismTOF", "MC/al/neg/prm/pt/mismTOF"};
103127
static constexpr std::string_view hpt_num_prm[NpCharge] = {"MC/el/pos/prm/pt/num", "MC/mu/pos/prm/pt/num", "MC/pi/pos/prm/pt/num",
104128
"MC/ka/pos/prm/pt/num", "MC/pr/pos/prm/pt/num", "MC/de/pos/prm/pt/num",
105129
"MC/tr/pos/prm/pt/num", "MC/he/pos/prm/pt/num", "MC/al/pos/prm/pt/num",

PWGLF/Tasks/Nuspex/spectraTOF.cxx

Lines changed: 97 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include "Common/DataModel/EventSelection.h"
2828
#include "Common/DataModel/Centrality.h"
2929
#include "Common/DataModel/Multiplicity.h"
30+
#include "Common/DataModel/McCollisionExtra.h"
3031
#include "Common/Core/TrackSelection.h"
3132
#include "Framework/StaticFor.h"
3233
#include "Common/Core/TrackSelectionDefaults.h"
@@ -487,24 +488,31 @@ struct tofSpectra {
487488
histos.add(hpt_den_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
488489
histos.add(hpt_den_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
489490

491+
histos.add(hpt_den_prm_recoev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
492+
histos.add(hpt_den_prm_evsel[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
493+
histos.add(hpt_den_prm_goodev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
494+
histos.add(hpt_den_prm_mcgoodev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
495+
histos.add(hpt_den_prm_mcbadev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
490496
//***************************************************************************************
491497
} else {
492498
histos.add(hpt_num_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
499+
histos.add(hpt_num_str[i].data(), pTCharge[i], kTH1D, {ptAxis});
500+
histos.add(hpt_num_mat[i].data(), pTCharge[i], kTH1D, {ptAxis});
501+
493502
histos.add(hpt_numtof_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
494503
histos.add(hpt_numtof_str[i].data(), pTCharge[i], kTH1D, {ptAxis});
495504
histos.add(hpt_numtof_mat[i].data(), pTCharge[i], kTH1D, {ptAxis});
496-
histos.add(hpt_num_str[i].data(), pTCharge[i], kTH1D, {ptAxis});
497-
histos.add(hpt_num_mat[i].data(), pTCharge[i], kTH1D, {ptAxis});
505+
498506
histos.add(hpt_den_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
499507
histos.add(hpt_den_str[i].data(), pTCharge[i], kTH1D, {ptAxis});
500508
histos.add(hpt_den_mat[i].data(), pTCharge[i], kTH1D, {ptAxis});
501-
}
502509

503-
histos.add(hpt_den_prm_recoev[i].data(), pTCharge[i], kTH1D, {ptAxis});
504-
histos.add(hpt_den_prm_evsel[i].data(), pTCharge[i], kTH1D, {ptAxis});
505-
histos.add(hpt_den_prm_goodev[i].data(), pTCharge[i], kTH1D, {ptAxis});
506-
histos.add(hpt_den_prm_mcgoodev[i].data(), pTCharge[i], kTH1D, {ptAxis});
507-
histos.add(hpt_den_prm_mcbadev[i].data(), pTCharge[i], kTH1D, {ptAxis});
510+
histos.add(hpt_den_prm_recoev[i].data(), pTCharge[i], kTH1D, {ptAxis});
511+
histos.add(hpt_den_prm_evsel[i].data(), pTCharge[i], kTH1D, {ptAxis});
512+
histos.add(hpt_den_prm_goodev[i].data(), pTCharge[i], kTH1D, {ptAxis});
513+
histos.add(hpt_den_prm_mcgoodev[i].data(), pTCharge[i], kTH1D, {ptAxis});
514+
histos.add(hpt_den_prm_mcbadev[i].data(), pTCharge[i], kTH1D, {ptAxis});
515+
}
508516

509517
histos.add(hdcaxyprm[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaXyAxis});
510518
histos.add(hdcazprm[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaZAxis});
@@ -516,6 +524,12 @@ struct tofSpectra {
516524
histos.add(hdcaxyprmgoodevs[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaXyAxis});
517525
histos.add(hdcazprmgoodevs[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaZAxis});
518526
}
527+
528+
// Mismatched info
529+
histos.add(hpt_mism_its_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
530+
histos.add(hpt_mism_tpc_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
531+
histos.add(hpt_mism_trd_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
532+
histos.add(hpt_mism_tof_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
519533
}
520534
}
521535
// Print output histograms statistics
@@ -1017,6 +1031,46 @@ struct tofSpectra {
10171031
return true;
10181032
}
10191033

1034+
template <typename ParticleType>
1035+
bool isMismatchedTrack(const ParticleType& track, const int detector)
1036+
{
1037+
switch (detector) {
1038+
case 0: // ITS
1039+
for (int i = 0; i < 7; i++) {
1040+
if (track.mcMask() & 1 << i) {
1041+
return true;
1042+
}
1043+
}
1044+
return false;
1045+
break;
1046+
case 1: // TPC
1047+
for (int i = 7; i < 10; i++) {
1048+
if (track.mcMask() & 1 << i) {
1049+
return true;
1050+
}
1051+
}
1052+
break;
1053+
case 2: // TRD
1054+
if (track.mcMask() & 1 << 10) {
1055+
return true;
1056+
}
1057+
return false;
1058+
break;
1059+
case 3: // TOF
1060+
if (track.mcMask() & 1 << 11) {
1061+
return true;
1062+
}
1063+
return false;
1064+
break;
1065+
default: // All
1066+
if (track.mcMask() & 1 << 15) {
1067+
return true;
1068+
}
1069+
return false;
1070+
}
1071+
return false;
1072+
}
1073+
10201074
using CollisionCandidate = soa::Join<aod::Collisions, aod::EvSels, aod::TPCMults, aod::PVMults, aod::MultZeqs, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs>;
10211075
using TrackCandidates = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA,
10221076
aod::pidEvTimeFlags, aod::TrackSelection, aod::TOFSignal>;
@@ -1295,6 +1349,20 @@ struct tofSpectra {
12951349
histos.fill(HIST(hpt_numtof_prm[i]), track.pt());
12961350
}
12971351
}
1352+
1353+
// Filling mismatched info for primary tracks
1354+
if (isMismatchedTrack(track, 0)) {
1355+
histos.fill(HIST(hpt_mism_its_prm[i]), track.pt());
1356+
}
1357+
if (isMismatchedTrack(track, 1)) {
1358+
histos.fill(HIST(hpt_mism_tpc_prm[i]), track.pt());
1359+
}
1360+
if (isMismatchedTrack(track, 2)) {
1361+
histos.fill(HIST(hpt_mism_trd_prm[i]), track.pt());
1362+
}
1363+
if (isMismatchedTrack(track, 3)) {
1364+
histos.fill(HIST(hpt_mism_tof_prm[i]), track.pt());
1365+
}
12981366
}
12991367
}
13001368

@@ -1363,7 +1431,7 @@ struct tofSpectra {
13631431
return;
13641432
}
13651433

1366-
const float multiplicity = collision.centFT0C();
1434+
const float multiplicity = getMultiplicity(collision);
13671435
if (!mcParticle.isPhysicalPrimary()) {
13681436
if (mcParticle.getProcess() == 4) {
13691437
if (makeTHnSparseChoice) {
@@ -1452,15 +1520,29 @@ struct tofSpectra {
14521520
return;
14531521
}
14541522

1523+
const float multiplicity = getMultiplicity(collision);
1524+
14551525
if (mcParticle.isPhysicalPrimary()) {
14561526
if (collision.sel8()) {
14571527
if (abs(collision.posZ()) < cfgCutVertex) {
1458-
histos.fill(HIST(hpt_den_prm_goodev[i]), mcParticle.pt());
1528+
if (makeTHnSparseChoice) {
1529+
histos.fill(HIST(hpt_den_prm_goodev[i]), mcParticle.pt(), multiplicity, mcParticle.eta());
1530+
} else {
1531+
histos.fill(HIST(hpt_den_prm_goodev[i]), mcParticle.pt());
1532+
}
14591533
} else {
1460-
histos.fill(HIST(hpt_den_prm_evsel[i]), mcParticle.pt());
1534+
if (makeTHnSparseChoice) {
1535+
histos.fill(HIST(hpt_den_prm_evsel[i]), mcParticle.pt(), multiplicity, mcParticle.eta());
1536+
} else {
1537+
histos.fill(HIST(hpt_den_prm_evsel[i]), mcParticle.pt());
1538+
}
14611539
}
14621540
} else {
1463-
histos.fill(HIST(hpt_den_prm_recoev[i]), mcParticle.pt());
1541+
if (makeTHnSparseChoice) {
1542+
histos.fill(HIST(hpt_den_prm_recoev[i]), mcParticle.pt(), multiplicity, mcParticle.eta());
1543+
} else {
1544+
histos.fill(HIST(hpt_den_prm_recoev[i]), mcParticle.pt());
1545+
}
14641546
}
14651547
}
14661548
}
@@ -1565,6 +1647,9 @@ struct tofSpectra {
15651647
if (!track.collision_as<CollisionCandidateMC>().sel8()) {
15661648
continue;
15671649
}
1650+
if (removeTFBorder && !track.collision_as<CollisionCandidateMC>().selection_bit(aod::evsel::kNoTimeFrameBorder)) {
1651+
continue;
1652+
}
15681653
if (!passesCutWoDCA(track)) {
15691654
continue;
15701655
}

0 commit comments

Comments
 (0)