Skip to content
Open
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
64 changes: 25 additions & 39 deletions PWGLF/TableProducer/Nuspex/deuteronInTriggeredEvents.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
///
/// \file deuteronInTriggeredEvents.cxx
///
/// \brief (Anti-)nuclei spectra analysis task in jet-triggered events
/// \brief (Anti-)nuclei spectra analysis task in MB and triggered events
/// \author Cristian Moscatelli (cristian.moscatelli@cern.ch)
///
/// Based on PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx
Expand Down Expand Up @@ -246,11 +246,6 @@
kGenIsJetTriggered = 1 << 1,
kGenHasRecoEv = 1 << 2
};

enum triggerListName {
fChJetLowPt = 0,
fChJetHighPt = 1
};
} // namespace nuclei

struct DeuteronInTriggeredEvents {
Expand Down Expand Up @@ -280,7 +275,6 @@
Configurable<bool> cfgCompensatePIDinTracking{"cfgCompensatePIDinTracking", false, "If true, divide tpcInnerParam by the electric charge"};

struct : o2::framework::ConfigurableGroup {
std::string prefix{"cfgTrackCut"};
Configurable<LabeledArray<double>> dcaMax{"dcaMax", {nuclei::DCAcutDefault[0], 5, 2, nuclei::names, nuclei::nDCAConfigName}, "Max DCAxy and DCAz for light nuclei"};
Configurable<float> etaMax{"etaMax", 0.8f, "Max Eta for tracks"};
Configurable<int> itsNClusMin{"itsNClusMin", 5, "Minimum number of ITS clusters"};
Expand Down Expand Up @@ -312,6 +306,7 @@

Configurable<double> cfgNsigmaTPCcutDCAhists{"cfgNsigmaTPCcutDCAhists", 3., "TPC nsigma cut for DCA hists"};
Configurable<double> cfgDeltaTOFmassCutDCAhists{"cfgDeltaTOFmassCutDCAhists", 0.2, "Delta TOF mass cut for DCA hists"};
Configurable<double> cfgNsigmaTPCcutTOFhists{"cfgNsigmaTPCcutTOFhists", 3., "TPC nsigma cut for TOF analysis"};
ConfigurableAxis cfgDCAxyBinsProtons{"cfgDCAxyBinsProtons", {1500, -1.5f, 1.5f}, "DCAxy binning for Protons"};
ConfigurableAxis cfgDCAxyBinsDeuterons{"cfgDCAxyBinsDeuterons", {1500, -1.5f, 1.5f}, "DCAxy binning for Deuterons"};
ConfigurableAxis cfgDCAxyBinsTritons{"cfgDCAxyBinsTritons", {1500, -1.5f, 1.5f}, "DCAxy binning for Tritons"};
Expand All @@ -335,7 +330,8 @@
// Configurable for working with skimmed data
Configurable<bool> cfgApplyMCEvSel{"cfgApplyMCEvSel", false, "If true, apply jet-trigger selection on gen events"};
Configurable<bool> cfgSkimmedProcessing{"cfgSkimmedProcessing", false, "Skimmed dataset processing"};
Configurable<int> cfgTriggerList{"cfgTriggerList", 0, "0 : Low jet-pT thr, 1 : High jet-pT thr"};
Configurable<std::string> cfgTriggerList{"cfgTriggerList", "fH2", "Trigger List"};
Configurable<bool> cfgSelectTrgEv{"cfgSelectTrgEv", false, "If true, select events with active trigger list"};

// Configurable for jet identification
Configurable<double> cfgRJet{"cfgRJet", 0.6, "R_jet"};
Expand Down Expand Up @@ -365,7 +361,7 @@
if (!particle.has_daughters())
return -1.f;

float mothVtx[3]{particle.vx(), particle.vy(), particle.vz()};
const float mothVtx[3]{particle.vx(), particle.vy(), particle.vz()};
float dauVtx[3]{0.f, 0.f, 0.f};
auto daughters = particle.daughters_as<aod::McParticles>();
for (const auto& dau : daughters) {
Expand Down Expand Up @@ -441,7 +437,7 @@

if (cfgSkimmedProcessing) {
bool isTriggered = zorro.isSelected(bc.globalBC()); /// Just let Zorro do the accounting
if (!isTriggered)
if (!isTriggered && cfgSelectTrgEv)
return false;
}

Expand All @@ -456,8 +452,7 @@
return;
}
if (cfgSkimmedProcessing) {
zorro.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), (cfgTriggerList.value == nuclei::fChJetLowPt) ? "fJetChLowPt" : (cfgTriggerList.value == nuclei::fChJetHighPt) ? "fJetChHighPt"
: throw std::runtime_error("Invalid TriggerList value"));
zorro.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), cfgTriggerList);
zorro.populateHistRegistry(spectra, bc.runNumber());
}
auto timestamp = bc.timestamp();
Expand Down Expand Up @@ -576,20 +571,17 @@
}

template <typename Ttrks>
bool isJetTriggered(Ttrks const& tracks, nuclei::triggerListName triggerCondition)
bool isJetTriggered(Ttrks const& tracks)
{
// Defining trigger condition
double jetPtThreshold(0.0);

switch (triggerCondition) {
case nuclei::fChJetLowPt:
jetPtThreshold = 30.0;
break;
case nuclei::fChJetHighPt:
jetPtThreshold = 55.0;
break;
default:
return false; // Non-valid trigger
if (cfgTriggerList.value == "fChJetLowPt") {
jetPtThreshold = 30.0;
} else if (cfgTriggerList.value == "fChJetHighPt") {
jetPtThreshold = 55.0;
} else {
return false;
}

// Loop over tracks
Expand Down Expand Up @@ -635,20 +627,17 @@
}

template <typename McParts>
bool isMCJetTriggered(McParts const& McParticles, aod::McParticles const& particlesMC, nuclei::triggerListName triggerCondition)
bool isMCJetTriggered(McParts const& McParticles, aod::McParticles const& particlesMC)
{
// Defining trigger condition
double jetPtThreshold(0.0);

switch (triggerCondition) {
case nuclei::fChJetLowPt:
jetPtThreshold = 30.0;
break;
case nuclei::fChJetHighPt:
jetPtThreshold = 55.0;
break;
default:
return false; // Non-valid trigger
if (cfgTriggerList.value == "fChJetLowPt") {
jetPtThreshold = 30.0;
} else if (cfgTriggerList.value == "fChJetHighPt") {
jetPtThreshold = 55.0;
} else {
return false;
}

std::vector<fastjet::PseudoJet> fjParticles;
Expand Down Expand Up @@ -883,7 +872,7 @@
nuclei::hNsigma[iPID][iS][iC]->Fill(fvector.pt(), nSigma[iPID][iS]);
nuclei::hNsigmaEta[iPID][iS][iC]->Fill(fvector.eta(), fvector.pt(), nSigma[iPID][iS]);
}
if (iPID) {
if (iPID && std::abs(nSigma[iPID][iS]) < cfgNsigmaTPCcutTOFhists) {
nuclei::hTOFmass[iS][iC]->Fill(fvector.pt(), tofMasses[iS]);
nuclei::hTOFmassEta[iS][iC]->Fill(fvector.eta(), fvector.pt(), tofMasses[iS]);
}
Expand Down Expand Up @@ -959,9 +948,6 @@
std::vector<bool> goodCollisions(mcCollisions.size(), false);
std::vector<uint8_t> eventMask(mcCollisions.size(), 0);

// Jet trigger condition
auto trigger = static_cast<nuclei::triggerListName>(cfgTriggerList.value);

for (const auto& c : mcCollisions) {

spectra.fill(HIST("hGenVtxZ"), c.posZ());
Expand All @@ -972,7 +958,7 @@
if (o2::pwglf::isINELgt0mc(mcParticlesPerColl, pdgDB))
mask |= nuclei::kGenIsINELgt0;

if (isMCJetTriggered(mcParticlesPerColl, particlesMC, trigger))
if (isMCJetTriggered(mcParticlesPerColl, particlesMC))
mask |= nuclei::kGenIsJetTriggered;
}

Expand All @@ -992,7 +978,7 @@
const auto& slicedTracks = tracks.sliceBy(tracksPerCollisions, collision.globalIndex());

if (cfgApplyMCEvSel) {
if (!isJetTriggered(slicedTracks, trigger))
if (!isJetTriggered(slicedTracks))
continue;
}

Expand All @@ -1008,7 +994,7 @@
}

std::vector<bool> isReconstructed(particlesMC.size(), false);
for (auto& c : nuclei::candidates) {

Check failure on line 997 in PWGLF/TableProducer/Nuspex/deuteronInTriggeredEvents.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
auto label = tracks.iteratorAt(c.globalIndex);
if (label.mcParticleId() < -1 || label.mcParticleId() >= particlesMC.size()) {
continue;
Expand Down Expand Up @@ -1056,7 +1042,7 @@
}
}
}
} else if (particle.has_mothers()) {
} else if (particle.getProcess() == TMCProcess::kPDecay) {
c.flags |= kIsSecondaryFromWeakDecay;
for (const auto& motherparticle : particle.mothers_as<aod::McParticles>()) {
motherPdgCode = motherparticle.pdgCode();
Expand Down
Loading