Skip to content

Commit 43c367f

Browse files
added rapidity check in mc particle processing, moved to a switch-case logic for flag particle setting
1 parent 8215385 commit 43c367f

File tree

1 file changed

+28
-23
lines changed

1 file changed

+28
-23
lines changed

PWGLF/TableProducer/QC/nucleiQC.cxx

Lines changed: 28 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,20 +245,28 @@ 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;
266254

255+
switch (iSpecies) {
256+
case nuclei::Species::kPr:
257+
candidate.flags |= nuclei::Flags::kProton;
258+
case nuclei::Species::kDe:
259+
candidate.flags |= nuclei::Flags::kDeuteron;
260+
case nuclei::Species::kTr:
261+
candidate.flags |= nuclei::Flags::kTriton;
262+
case nuclei::Species::kHe:
263+
candidate.flags |= nuclei::Flags::kHe3;
264+
case nuclei::Species::kAl:
265+
candidate.flags |= nuclei::Flags::kHe4;
266+
default:
267+
candidate.flags |= 0;
268+
}
269+
267270
if (track.hasTOF())
268271
candidate.flags |= nuclei::Flags::kHasTOF;
269272

@@ -414,11 +417,6 @@ struct nucleiQC {
414417
if (cfgFillOnlyPhysicalPrimaries && !particle.isPhysicalPrimary())
415418
return;
416419

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-
422420
mHistograms.fill(HIST(nuclei::cNames[kSpeciesCt]) + HIST("/hTrackSelections"), nuclei::trackSelection::kNoCuts);
423421
if (!trackSelection(track))
424422
return;
@@ -428,10 +426,11 @@ struct nucleiQC {
428426
return;
429427
mHistograms.fill(HIST(nuclei::cNames[kSpeciesCt]) + HIST("/hTrackSelections"), nuclei::trackSelection::kPidCuts);
430428

431-
// nuclei::SlimCandidate candidate;
432-
// candidate = fillCandidate</*isMc*/ true>(kSpeciesCt, collision, track);
429+
nuclei::SlimCandidate candidate;
430+
candidate = fillCandidate</*isMc*/ true>(kSpeciesCt, collision, track);
433431

434432
mNucleiCandidates.emplace_back(candidate);
433+
mFilledMcParticleIds.emplace_back(particle.globalIndex());
435434
dispatchFillHistograms</*isGenerated*/ true>(kSpeciesRt, candidate);
436435
dispatchFillHistograms</*isGenerated*/ false>(kSpeciesRt, candidate);
437436
});
@@ -442,12 +441,16 @@ struct nucleiQC {
442441
mcParticlesThisCollision.bindExternalIndices(&mcParticles);
443442

444443
for (const auto& particle : mcParticlesThisCollision) {
444+
445445
if (std::find(mFilledMcParticleIds.begin(), mFilledMcParticleIds.end(), particle.globalIndex()) != mFilledMcParticleIds.end())
446446
continue;
447447

448448
if (cfgFillOnlyPhysicalPrimaries && !particle.isPhysicalPrimary())
449449
continue;
450450

451+
if ((particle.y() - cfgRapidityCenterMass) < cfgRapidityMin || (particle.y() - cfgRapidityCenterMass) > cfgRapidityMax)
452+
continue;
453+
451454
int iSpecies = nuclei::getSpeciesFromPdg(particle.pdgCode());
452455
if (std::find(mSpeciesToProcess.begin(), mSpeciesToProcess.end(), iSpecies) == mSpeciesToProcess.end())
453456
continue;
@@ -457,6 +460,7 @@ struct nucleiQC {
457460
fillNucleusGeneratedVariables(particle, candidate);
458461

459462
mNucleiCandidates.emplace_back(candidate);
463+
mFilledMcParticleIds.emplace_back(particle.globalIndex());
460464
dispatchFillHistograms</*isGenerated*/ true>(iSpecies, candidate);
461465
}
462466

@@ -480,6 +484,7 @@ struct nucleiQC {
480484
}
481485
}
482486
PROCESS_SWITCH(nucleiQC, processMc, "Mc analysis", false);
487+
483488
};
484489

485490
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)