Skip to content

Commit f27d606

Browse files
[PWGLF] check the production vertex of nuclei from material (#16793)
1 parent 057d80d commit f27d606

3 files changed

Lines changed: 35 additions & 6 deletions

File tree

PWGLF/DataModel/LFSlimNucleiTables.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,11 @@ DECLARE_SOA_COLUMN(AbsoDecL, absoDecL, float);
5656
DECLARE_SOA_COLUMN(McProcess, mcProcess, uint64_t);
5757
DECLARE_SOA_COLUMN(gEventMask, genEventMask, uint8_t);
5858

59-
DECLARE_SOA_COLUMN(NsigmaTpc, nsigmaTpc, uint8_t);
60-
DECLARE_SOA_COLUMN(NsigmaTof, nsigmaTof, uint8_t);
59+
DECLARE_SOA_COLUMN(NsigmaTpc, nsigmaTpc, float);
60+
DECLARE_SOA_COLUMN(NsigmaTof, nsigmaTof, float);
61+
62+
DECLARE_SOA_COLUMN(Vx, vx, float);
63+
DECLARE_SOA_COLUMN(Vy, vy, float);
6164

6265
} // namespace NucleiTableNS
6366

@@ -245,6 +248,10 @@ DECLARE_SOA_TABLE(NucleiTableMCExtension, "AOD", "NUCTABLEMCSEL",
245248
DECLARE_SOA_TABLE(NucleiTableExt, "AOD", "NUCLEITABLEEXT",
246249
NucleiTableNS::NsigmaTpc,
247250
NucleiTableNS::NsigmaTof);
251+
// Extended table for studies on nuclei from material
252+
DECLARE_SOA_TABLE(NucleiTableMat, "AOD", "NUCLEITABLEMAT",
253+
NucleiTableNS::Vx,
254+
NucleiTableNS::Vy);
248255

249256
} // namespace o2::aod
250257

PWGLF/TableProducer/QC/nucleiQC.cxx

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ struct nucleiQC {
162162
std::array<bool, nuclei::Species::kNspecies> mFillSpecies{false};
163163
Produces<aod::NucleiTableRed> mNucleiTableRed;
164164
Produces<aod::NucleiTableExt> mNucleiTableExt;
165+
Produces<aod::NucleiTableMat> mNucleiTableMat;
165166

166167
std::vector<nuclei::SlimCandidate> mNucleiCandidates;
167168
std::vector<int> mFilledMcParticleIds;
@@ -209,6 +210,7 @@ struct nucleiQC {
209210

210211
nuclei::createHistogramRegistryNucleus<kSpeciesCt>(mHistograms);
211212
mHistograms.add(fmt::format("{}/hTrackQuality", nuclei::cNames[kSpeciesRt]).c_str(), (fmt::format("{} track quality;", nuclei::cNames[kSpeciesRt]) + std::string("#it{p}_{T} / #it{Z} (GeV/#it{c}); Selection step; Counts")).c_str(), o2::framework::HistType::kTH2D, {{400, -10.0f, 10.0f}, {trackQuality::kNtrackQuality, -0.5f, static_cast<float>(trackQuality::kNtrackQuality) - 0.5f}});
213+
mHistograms.add(fmt::format("{}/h2Productionvertex", nuclei::cNames[kSpeciesRt]).c_str(), (fmt::format("{} production vertex;", nuclei::cNames[kSpeciesRt]) + std::string("#it{x} (cm); #it{y} (cm); Counts")).c_str(), o2::framework::HistType::kTH2D, {{400, -100.0f, 100.0f}, {400, -100.0f, 100.0f}});
212214
for (size_t iSel = 0; iSel < trackQuality::kNtrackQuality; iSel++) {
213215
mHistograms.get<TH2>(HIST(nuclei::cNames[kSpeciesRt]) + HIST("/hTrackQuality"))->GetYaxis()->SetBinLabel(iSel + 1, trackQualityLabels[iSel].c_str());
214216
}
@@ -352,7 +354,7 @@ struct nucleiQC {
352354
return true;
353355
}
354356

355-
template <typename Tparticle>
357+
template <int iSpecies, typename Tparticle>
356358
void fillNucleusFlagsPdgsMc(const Tparticle& particle, nuclei::SlimCandidate& candidate)
357359
{
358360
candidate.pdgCode = particle.pdgCode();
@@ -383,6 +385,9 @@ struct nucleiQC {
383385
candidate.flags |= nuclei::QcFlags::kQcIsSecondaryFromWeakDecay;
384386
} else {
385387
candidate.flags |= nuclei::QcFlags::kQcIsSecondaryFromMaterial;
388+
mHistograms.fill(HIST(nuclei::cNames[iSpecies]) + HIST("/h2Productionvertex"), particle.vx(), particle.vy());
389+
candidate.vx = particle.vx();
390+
candidate.vy = particle.vy();
386391
}
387392
}
388393

@@ -443,15 +448,22 @@ struct nucleiQC {
443448
.centrality = nuclei::getCentrality(collision, cfgCentralityEstimator, mHistFailCentrality),
444449
.mcProcess = TMCProcess::kPNoProcess,
445450
.nsigmaTpc = mPidManagers[iSpecies].getNSigmaTPC(track),
446-
.nsigmaTof = mPidManagers[iSpecies].getNSigmaTOF(track)};
451+
.nsigmaTof = mPidManagers[iSpecies].getNSigmaTOF(track),
452+
.vx = -999.f,
453+
.vy = -999.f};
447454

448455
fillNucleusFlagsPdgs(collision, track, candidate);
449456

450457
if constexpr (isMc) {
451458
if (track.has_mcParticle()) {
452459

453460
const auto& particle = track.mcParticle();
454-
fillNucleusFlagsPdgsMc(particle, candidate);
461+
static_for<0, nuclei::kNspecies - 1>([&](auto iSpeciesCtV) {
462+
constexpr int kSpeciesCt = decltype(iSpeciesCtV)::value;
463+
if (std::abs(particle.pdgCode()) == nuclei::pdgCodes[kSpeciesCt]) {
464+
fillNucleusFlagsPdgsMc<kSpeciesCt>(particle, candidate);
465+
}
466+
});
455467
fillNucleusGeneratedVariables(particle, candidate);
456468
}
457469
}
@@ -527,6 +539,9 @@ struct nucleiQC {
527539
mNucleiTableExt(
528540
candidate.nsigmaTpc,
529541
candidate.nsigmaTof);
542+
mNucleiTableMat(
543+
candidate.vx,
544+
candidate.vy);
530545
}
531546

532547
void processMc(const Collisions& collisions, const TrackCandidatesMC& tracks, const aod::BCsWithTimestamps&, const aod::McParticles& mcParticles, const aod::McCollisions& /*mcCollisions*/)
@@ -647,7 +662,12 @@ struct nucleiQC {
647662
const auto& centralityIt = mcCollisionIdToCentrality.find(particle.mcCollisionId());
648663
candidate.centrality = centralityIt != mcCollisionIdToCentrality.end() ? centralityIt->second : -1.f;
649664
fillCollisionFlag(particle, candidate, reconstructedCollisions);
650-
fillNucleusFlagsPdgsMc(particle, candidate);
665+
static_for<0, nuclei::kNspecies - 1>([&](auto iSpeciesCtV) {
666+
constexpr int kSpeciesCt = decltype(iSpeciesCtV)::value;
667+
if (std::abs(particle.pdgCode()) == nuclei::pdgCodes[kSpeciesCt]) {
668+
fillNucleusFlagsPdgsMc<kSpeciesCt>(particle, candidate);
669+
}
670+
});
651671
fillNucleusGeneratedVariables(particle, candidate);
652672

653673
writeCandidate(candidate);

PWGLF/Utils/nucleiUtils.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ struct SlimCandidate {
122122
uint64_t mcProcess = TMCProcess::kPNoProcess;
123123
float nsigmaTpc = -999.f;
124124
float nsigmaTof = -999.f;
125+
float vx = -999.f; // production vertex x coordinate
126+
float vy = -999.f;
125127
};
126128

127129
enum Species {

0 commit comments

Comments
 (0)