Skip to content

Commit c6de465

Browse files
[PWGLF] rapidity check added in the mc particle processing (#13598)
1 parent 1c80af5 commit c6de465

File tree

1 file changed

+33
-23
lines changed

1 file changed

+33
-23
lines changed

PWGLF/TableProducer/QC/nucleiQC.cxx

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,10 @@
99
// granted to it by virtue of its status as an Intergovernmental Organization
1010
// or submit itself to any jurisdiction.
1111
//
12-
// Nuclei spectra analysis task
13-
// ========================
14-
//
15-
// Executable + dependencies:
16-
//
17-
// Data (run3):
18-
// o2-analysis-lf-nuclei-spectra, o2-analysis-timestamp
19-
// o2-analysis-pid-tof-base, o2-analysis-multiplicity-table, o2-analysis-event-selection
20-
// (to add flow: o2-analysis-qvector-table, o2-analysis-centrality-table)
12+
/// \brief TableProducer/Task for nuclei QC. The produced table can be disabled with a configurable.
13+
///
14+
/// \author Giorgio Alberto Lucia (giorgio.alberto.lucia@cern.ch)
15+
///
2116

2217
#include "PWGLF/DataModel/EPCalibrationTables.h"
2318
#include "PWGLF/DataModel/LFSlimNucleiTables.h"
@@ -250,19 +245,33 @@ struct nucleiQC {
250245
} else {
251246
candidate.flags |= nuclei::Flags::kIsSecondaryFromMaterial;
252247
}
253-
254-
mFilledMcParticleIds.emplace_back(particle.globalIndex());
255248
}
256249

257250
template <typename Tcollision, typename Ttrack>
258251
void fillNucleusFlagsPdgs(const int iSpecies, const Tcollision& collision, const Ttrack& track, nuclei::SlimCandidate& candidate)
259252
{
260253
candidate.flags = static_cast<uint16_t>((track.pidForTracking() & 0xF) << 12);
261-
candidate.flags |= iSpecies == nuclei::Species::kPr ? nuclei::Flags::kProton : iSpecies == nuclei::Species::kDe ? nuclei::Flags::kDeuteron
262-
: iSpecies == nuclei::Species::kTr ? nuclei::Flags::kTriton
263-
: iSpecies == nuclei::Species::kHe ? nuclei::Flags::kHe3
264-
: iSpecies == nuclei::Species::kAl ? nuclei::Flags::kHe4
265-
: 0;
254+
255+
switch (iSpecies) {
256+
case nuclei::Species::kPr:
257+
candidate.flags |= nuclei::Flags::kProton;
258+
break;
259+
case nuclei::Species::kDe:
260+
candidate.flags |= nuclei::Flags::kDeuteron;
261+
break;
262+
case nuclei::Species::kTr:
263+
candidate.flags |= nuclei::Flags::kTriton;
264+
break;
265+
case nuclei::Species::kHe:
266+
candidate.flags |= nuclei::Flags::kHe3;
267+
break;
268+
case nuclei::Species::kAl:
269+
candidate.flags |= nuclei::Flags::kHe4;
270+
break;
271+
default:
272+
candidate.flags |= 0;
273+
break;
274+
}
266275

267276
if (track.hasTOF())
268277
candidate.flags |= nuclei::Flags::kHasTOF;
@@ -414,11 +423,6 @@ struct nucleiQC {
414423
if (cfgFillOnlyPhysicalPrimaries && !particle.isPhysicalPrimary())
415424
return;
416425

417-
nuclei::SlimCandidate candidate;
418-
candidate = fillCandidate</*isMc*/ true>(kSpeciesCt, collision, track);
419-
if ((candidate.flags >> 10) & 0b1)
420-
LOG(info) << "track from material before track selection";
421-
422426
mHistograms.fill(HIST(nuclei::cNames[kSpeciesCt]) + HIST("/hTrackSelections"), nuclei::trackSelection::kNoCuts);
423427
if (!trackSelection(track))
424428
return;
@@ -428,10 +432,11 @@ struct nucleiQC {
428432
return;
429433
mHistograms.fill(HIST(nuclei::cNames[kSpeciesCt]) + HIST("/hTrackSelections"), nuclei::trackSelection::kPidCuts);
430434

431-
// nuclei::SlimCandidate candidate;
432-
// candidate = fillCandidate</*isMc*/ true>(kSpeciesCt, collision, track);
435+
nuclei::SlimCandidate candidate;
436+
candidate = fillCandidate</*isMc*/ true>(kSpeciesCt, collision, track);
433437

434438
mNucleiCandidates.emplace_back(candidate);
439+
mFilledMcParticleIds.emplace_back(particle.globalIndex());
435440
dispatchFillHistograms</*isGenerated*/ true>(kSpeciesRt, candidate);
436441
dispatchFillHistograms</*isGenerated*/ false>(kSpeciesRt, candidate);
437442
});
@@ -442,12 +447,16 @@ struct nucleiQC {
442447
mcParticlesThisCollision.bindExternalIndices(&mcParticles);
443448

444449
for (const auto& particle : mcParticlesThisCollision) {
450+
445451
if (std::find(mFilledMcParticleIds.begin(), mFilledMcParticleIds.end(), particle.globalIndex()) != mFilledMcParticleIds.end())
446452
continue;
447453

448454
if (cfgFillOnlyPhysicalPrimaries && !particle.isPhysicalPrimary())
449455
continue;
450456

457+
if ((particle.y() - cfgRapidityCenterMass) < cfgRapidityMin || (particle.y() - cfgRapidityCenterMass) > cfgRapidityMax)
458+
continue;
459+
451460
int iSpecies = nuclei::getSpeciesFromPdg(particle.pdgCode());
452461
if (std::find(mSpeciesToProcess.begin(), mSpeciesToProcess.end(), iSpecies) == mSpeciesToProcess.end())
453462
continue;
@@ -457,6 +466,7 @@ struct nucleiQC {
457466
fillNucleusGeneratedVariables(particle, candidate);
458467

459468
mNucleiCandidates.emplace_back(candidate);
469+
mFilledMcParticleIds.emplace_back(particle.globalIndex());
460470
dispatchFillHistograms</*isGenerated*/ true>(iSpecies, candidate);
461471
}
462472

0 commit comments

Comments
 (0)