Skip to content

Commit 9ea81c0

Browse files
author
Cristian Moscatelli
committed
Change Gen Event selection
1 parent 5295754 commit 9ea81c0

File tree

1 file changed

+56
-4
lines changed

1 file changed

+56
-4
lines changed

PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx

Lines changed: 56 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@
5555
#include <TMCProcess.h>
5656
#include <TPDGCode.h> // for PDG codes
5757
#include <TRandom3.h>
58+
#include <TDatabasePDG.h>
59+
#include <TParticlePDG.h>
5860

5961
#include <algorithm>
6062
#include <cmath>
@@ -334,6 +336,7 @@ struct nucleiSpectra {
334336
ConfigurableAxis cfgNTPCClusBins{"cfgNTPCClusBins", {3, 89.5, 159.5}, "N TPC clusters binning"};
335337

336338
Configurable<bool> cfgSkimmedProcessing{"cfgSkimmedProcessing", false, "Skimmed dataset processing"};
339+
Configurable<std::string> cfgTriggerList{"cfgTriggerList", "fHe", "Trigger List"};
337340

338341
// running variables for track tuner
339342
o2::dataformats::DCA mDcaInfoCov;
@@ -453,7 +456,7 @@ struct nucleiSpectra {
453456
return;
454457
}
455458
if (cfgSkimmedProcessing) {
456-
zorro.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), "fHe");
459+
zorro.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), cfgTriggerList);
457460
zorro.populateHistRegistry(spectra, bc.runNumber());
458461
}
459462
auto timestamp = bc.timestamp();
@@ -911,21 +914,70 @@ struct nucleiSpectra {
911914
PROCESS_SWITCH(nucleiSpectra, processDataFlowAlternative, "Data analysis with flow - alternative framework", false);
912915

913916
Preslice<TrackCandidates> tracksPerCollisions = aod::track::collisionId;
917+
Preslice<aod::McParticles> particlesPerMcCollision = aod::mcparticle::mcCollisionId;
914918
void processMC(soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels> const& collisions, aod::McCollisions const& mcCollisions, soa::Join<TrackCandidates, aod::McTrackLabels> const& tracks, aod::McParticles const& particlesMC, aod::BCsWithTimestamps const&)
915919
{
916920
nuclei::candidates.clear();
921+
922+
bool selectINELgt0 = cfgEventSelections->get(nuclei::evSel::kINELgt0);
923+
std::vector<bool> goodCollisions(mcCollisions.size(), false);
924+
925+
auto *pdgDB = TDatabasePDG::Instance(); // Useful for evaluating the particle charge
926+
917927
for (const auto& c : mcCollisions) {
918-
spectra.fill(HIST("hGenVtxZ"), c.posZ());
928+
929+
// Apply the |z| < 10 cm condition
930+
if (std::abs(c.posZ()) > 10.f)
931+
continue;
932+
933+
const auto& slicedParticles = particlesMC.sliceBy(particlesPerMcCollision, c.globalIndex());
934+
935+
bool hasHitFT0A(false);
936+
bool hasHitFT0C(false);
937+
bool acceptEvent = !selectINELgt0;
938+
939+
for (const auto& p : slicedParticles) {
940+
if (!p.isPhysicalPrimary())
941+
continue;
942+
943+
// Apply the TVX trigger condition
944+
if (p.eta() > 3.5f && p.eta() < 4.9f)
945+
hasHitFT0A = true;
946+
else if (p.eta() > -3.3f && p.eta() < -2.1f)
947+
hasHitFT0C = true;
948+
949+
// Apply the INEL>0 selection (only in case of active configurable)
950+
if (selectINELgt0 && !acceptEvent) {
951+
if (std::abs(p.eta()) < 1.0f) {
952+
auto* pdg = pdgDB->GetParticle(p.pdgCode());
953+
if (pdg && pdg->Charge()!= 0)
954+
acceptEvent = true;
955+
}
956+
}
957+
958+
if (hasHitFT0A && hasHitFT0C && acceptEvent)
959+
break;
960+
}
961+
962+
if (hasHitFT0A && hasHitFT0C && acceptEvent) {
963+
goodCollisions[c.globalIndex()] = true;
964+
spectra.fill(HIST("hGenVtxZ"), c.posZ());
965+
}
919966
}
920-
std::vector<bool> goodCollisions(mcCollisions.size(), false);
967+
921968
for (const auto& collision : collisions) {
922969
if (!eventSelectionWithHisto(collision)) {
923970
continue;
924971
}
925-
goodCollisions[collision.mcCollisionId()] = true;
972+
973+
int mcId = collision.mcCollisionId();
974+
if (mcId < 0) continue;
975+
if(!goodCollisions[mcId]) continue;
976+
926977
const auto& slicedTracks = tracks.sliceBy(tracksPerCollisions, collision.globalIndex());
927978
fillDataInfo(collision, slicedTracks);
928979
}
980+
929981
std::vector<bool> isReconstructed(particlesMC.size(), false);
930982
for (auto& c : nuclei::candidates) {
931983
auto label = tracks.iteratorAt(c.globalIndex);

0 commit comments

Comments
 (0)