Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions PWGLF/DataModel/spectraTOF.h
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,30 @@ static constexpr std::string_view hdcaxyphi[NpCharge] = {"dcaxyphi/pos/el", "dca
"dcaxyphi/neg/ka", "dcaxyphi/neg/pr", "dcaxyphi/neg/de",
"dcaxyphi/neg/tr", "dcaxyphi/neg/he", "dcaxyphi/neg/al"};
// MC
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",
"MC/ka/pos/prm/pt/mismITS", "MC/pr/pos/prm/pt/mismITS", "MC/de/pos/prm/pt/mismITS",
"MC/tr/pos/prm/pt/mismITS", "MC/he/pos/prm/pt/mismITS", "MC/al/pos/prm/pt/mismITS",
"MC/el/neg/prm/pt/mismITS", "MC/mu/neg/prm/pt/mismITS", "MC/pi/neg/prm/pt/mismITS",
"MC/ka/neg/prm/pt/mismITS", "MC/pr/neg/prm/pt/mismITS", "MC/de/neg/prm/pt/mismITS",
"MC/tr/neg/prm/pt/mismITS", "MC/he/neg/prm/pt/mismITS", "MC/al/neg/prm/pt/mismITS"};
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",
"MC/ka/pos/prm/pt/mismTPC", "MC/pr/pos/prm/pt/mismTPC", "MC/de/pos/prm/pt/mismTPC",
"MC/tr/pos/prm/pt/mismTPC", "MC/he/pos/prm/pt/mismTPC", "MC/al/pos/prm/pt/mismTPC",
"MC/el/neg/prm/pt/mismTPC", "MC/mu/neg/prm/pt/mismTPC", "MC/pi/neg/prm/pt/mismTPC",
"MC/ka/neg/prm/pt/mismTPC", "MC/pr/neg/prm/pt/mismTPC", "MC/de/neg/prm/pt/mismTPC",
"MC/tr/neg/prm/pt/mismTPC", "MC/he/neg/prm/pt/mismTPC", "MC/al/neg/prm/pt/mismTPC"};
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",
"MC/ka/pos/prm/pt/mismTRD", "MC/pr/pos/prm/pt/mismTRD", "MC/de/pos/prm/pt/mismTRD",
"MC/tr/pos/prm/pt/mismTRD", "MC/he/pos/prm/pt/mismTRD", "MC/al/pos/prm/pt/mismTRD",
"MC/el/neg/prm/pt/mismTRD", "MC/mu/neg/prm/pt/mismTRD", "MC/pi/neg/prm/pt/mismTRD",
"MC/ka/neg/prm/pt/mismTRD", "MC/pr/neg/prm/pt/mismTRD", "MC/de/neg/prm/pt/mismTRD",
"MC/tr/neg/prm/pt/mismTRD", "MC/he/neg/prm/pt/mismTRD", "MC/al/neg/prm/pt/mismTRD"};
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",
"MC/ka/pos/prm/pt/mismTOF", "MC/pr/pos/prm/pt/mismTOF", "MC/de/pos/prm/pt/mismTOF",
"MC/tr/pos/prm/pt/mismTOF", "MC/he/pos/prm/pt/mismTOF", "MC/al/pos/prm/pt/mismTOF",
"MC/el/neg/prm/pt/mismTOF", "MC/mu/neg/prm/pt/mismTOF", "MC/pi/neg/prm/pt/mismTOF",
"MC/ka/neg/prm/pt/mismTOF", "MC/pr/neg/prm/pt/mismTOF", "MC/de/neg/prm/pt/mismTOF",
"MC/tr/neg/prm/pt/mismTOF", "MC/he/neg/prm/pt/mismTOF", "MC/al/neg/prm/pt/mismTOF"};
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",
"MC/ka/pos/prm/pt/num", "MC/pr/pos/prm/pt/num", "MC/de/pos/prm/pt/num",
"MC/tr/pos/prm/pt/num", "MC/he/pos/prm/pt/num", "MC/al/pos/prm/pt/num",
Expand Down
109 changes: 97 additions & 12 deletions PWGLF/Tasks/Nuspex/spectraTOF.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "Common/DataModel/EventSelection.h"
#include "Common/DataModel/Centrality.h"
#include "Common/DataModel/Multiplicity.h"
#include "Common/DataModel/McCollisionExtra.h"
#include "Common/Core/TrackSelection.h"
#include "Framework/StaticFor.h"
#include "Common/Core/TrackSelectionDefaults.h"
Expand Down Expand Up @@ -487,24 +488,31 @@ struct tofSpectra {
histos.add(hpt_den_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
histos.add(hpt_den_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});

histos.add(hpt_den_prm_recoev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
histos.add(hpt_den_prm_evsel[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
histos.add(hpt_den_prm_goodev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
histos.add(hpt_den_prm_mcgoodev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
histos.add(hpt_den_prm_mcbadev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis});
//***************************************************************************************
} else {
histos.add(hpt_num_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_num_str[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_num_mat[i].data(), pTCharge[i], kTH1D, {ptAxis});

histos.add(hpt_numtof_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_numtof_str[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_numtof_mat[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_num_str[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_num_mat[i].data(), pTCharge[i], kTH1D, {ptAxis});

histos.add(hpt_den_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_den_str[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_den_mat[i].data(), pTCharge[i], kTH1D, {ptAxis});
}

histos.add(hpt_den_prm_recoev[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_den_prm_evsel[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_den_prm_goodev[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_den_prm_mcgoodev[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_den_prm_mcbadev[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_den_prm_recoev[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_den_prm_evsel[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_den_prm_goodev[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_den_prm_mcgoodev[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_den_prm_mcbadev[i].data(), pTCharge[i], kTH1D, {ptAxis});
}

histos.add(hdcaxyprm[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaXyAxis});
histos.add(hdcazprm[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaZAxis});
Expand All @@ -516,6 +524,12 @@ struct tofSpectra {
histos.add(hdcaxyprmgoodevs[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaXyAxis});
histos.add(hdcazprmgoodevs[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaZAxis});
}

// Mismatched info
histos.add(hpt_mism_its_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_mism_tpc_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_mism_trd_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
histos.add(hpt_mism_tof_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
}
}
// Print output histograms statistics
Expand Down Expand Up @@ -1017,6 +1031,46 @@ struct tofSpectra {
return true;
}

template <typename ParticleType>
bool isMismatchedTrack(const ParticleType& track, const int detector)
{
switch (detector) {
case 0: // ITS
for (int i = 0; i < 7; i++) {
if (track.mcMask() & 1 << i) {
return true;
}
}
return false;
break;
case 1: // TPC
for (int i = 7; i < 10; i++) {
if (track.mcMask() & 1 << i) {
return true;
}
}
break;
case 2: // TRD
if (track.mcMask() & 1 << 10) {
return true;
}
return false;
break;
case 3: // TOF
if (track.mcMask() & 1 << 11) {
return true;
}
return false;
break;
default: // All
if (track.mcMask() & 1 << 15) {
return true;
}
return false;
}
return false;
}

using CollisionCandidate = soa::Join<aod::Collisions, aod::EvSels, aod::TPCMults, aod::PVMults, aod::MultZeqs, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs>;
using TrackCandidates = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA,
aod::pidEvTimeFlags, aod::TrackSelection, aod::TOFSignal>;
Expand Down Expand Up @@ -1295,6 +1349,20 @@ struct tofSpectra {
histos.fill(HIST(hpt_numtof_prm[i]), track.pt());
}
}

// Filling mismatched info for primary tracks
if (isMismatchedTrack(track, 0)) {
histos.fill(HIST(hpt_mism_its_prm[i]), track.pt());
}
if (isMismatchedTrack(track, 1)) {
histos.fill(HIST(hpt_mism_tpc_prm[i]), track.pt());
}
if (isMismatchedTrack(track, 2)) {
histos.fill(HIST(hpt_mism_trd_prm[i]), track.pt());
}
if (isMismatchedTrack(track, 3)) {
histos.fill(HIST(hpt_mism_tof_prm[i]), track.pt());
}
}
}

Expand Down Expand Up @@ -1363,7 +1431,7 @@ struct tofSpectra {
return;
}

const float multiplicity = collision.centFT0C();
const float multiplicity = getMultiplicity(collision);
if (!mcParticle.isPhysicalPrimary()) {
if (mcParticle.getProcess() == 4) {
if (makeTHnSparseChoice) {
Expand Down Expand Up @@ -1452,15 +1520,29 @@ struct tofSpectra {
return;
}

const float multiplicity = getMultiplicity(collision);

if (mcParticle.isPhysicalPrimary()) {
if (collision.sel8()) {
if (abs(collision.posZ()) < cfgCutVertex) {
histos.fill(HIST(hpt_den_prm_goodev[i]), mcParticle.pt());
if (makeTHnSparseChoice) {
histos.fill(HIST(hpt_den_prm_goodev[i]), mcParticle.pt(), multiplicity, mcParticle.eta());
} else {
histos.fill(HIST(hpt_den_prm_goodev[i]), mcParticle.pt());
}
} else {
histos.fill(HIST(hpt_den_prm_evsel[i]), mcParticle.pt());
if (makeTHnSparseChoice) {
histos.fill(HIST(hpt_den_prm_evsel[i]), mcParticle.pt(), multiplicity, mcParticle.eta());
} else {
histos.fill(HIST(hpt_den_prm_evsel[i]), mcParticle.pt());
}
}
} else {
histos.fill(HIST(hpt_den_prm_recoev[i]), mcParticle.pt());
if (makeTHnSparseChoice) {
histos.fill(HIST(hpt_den_prm_recoev[i]), mcParticle.pt(), multiplicity, mcParticle.eta());
} else {
histos.fill(HIST(hpt_den_prm_recoev[i]), mcParticle.pt());
}
}
}
}
Expand Down Expand Up @@ -1565,6 +1647,9 @@ struct tofSpectra {
if (!track.collision_as<CollisionCandidateMC>().sel8()) {
continue;
}
if (removeTFBorder && !track.collision_as<CollisionCandidateMC>().selection_bit(aod::evsel::kNoTimeFrameBorder)) {
continue;
}
if (!passesCutWoDCA(track)) {
continue;
}
Expand Down