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
86 changes: 45 additions & 41 deletions PWGCF/GenericFramework/Tasks/flowGenericFramework.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -855,7 +855,7 @@ struct FlowGenericFramework {
}
LOGF(info, "Loaded efficiency histogram from %s (%p)", cfgEfficiency.value.c_str(), (void*)cfg.mEfficiency);
} else {
std::vector<std::string> species = {"ch", "pi", "ka", "pr", "k0", "lambda"};
std::vector<std::string> species = {"ch", "pi", "ka", "pr"};
for (const auto& sp : species) {
cfg.mPIDEfficiencies.push_back(ccdb->getForTimeStamp<TH1D>(cfgEfficiency.value + "/" + sp, timestamp));
if (cfg.mPIDEfficiencies.back() == nullptr)
Expand Down Expand Up @@ -1248,7 +1248,7 @@ struct FlowGenericFramework {

float total = chtotal;
if (cfgUsePIDTotal)
(pidcounter) ? acceptedtracks.pidtotal[pidcounter] : chtotal;
total = (pidcounter) ? acceptedtracks.pidtotal[pidcounter] : chtotal;

if (total == 0.) {
++pidcounter;
Expand Down Expand Up @@ -1353,11 +1353,11 @@ struct FlowGenericFramework {
int ptBinIndex = fPtAxis->FindBin(v0.pt()) - 1;
if (!(ptBinIndex < 0 || ptBinIndex >= static_cast<int>(o2::analysis::gfw::ptbinning.size()))) {
if (v0.mK0Short() < cfgPIDCuts.cfgK0SignalMin)
npt_resonances[0][ptBinIndex] += getEfficiency(v0);
npt_resonances[0][ptBinIndex]++;
else if (v0.mK0Short() > cfgPIDCuts.cfgK0SignalMax)
npt_resonances[2][ptBinIndex] += getEfficiency(v0);
npt_resonances[2][ptBinIndex]++;
else
npt_resonances[1][ptBinIndex] += getEfficiency(v0);
npt_resonances[1][ptBinIndex]++;
registry.fill(HIST("K0/hK0s"), 1);
}
}
Expand All @@ -1368,11 +1368,11 @@ struct FlowGenericFramework {
int ptBinIndex = fPtAxis->FindBin(v0.pt()) - 1;
if (!(ptBinIndex < 0 || ptBinIndex >= static_cast<int>(o2::analysis::gfw::ptbinning.size()))) {
if (v0.mLambda() < cfgPIDCuts.cfgLambdaSignalMin)
npt_resonances[3][ptBinIndex] += getEfficiency(v0);
npt_resonances[3][ptBinIndex]++;
else if (v0.mLambda() > cfgPIDCuts.cfgLambdaSignalMax)
npt_resonances[5][ptBinIndex] += getEfficiency(v0);
npt_resonances[5][ptBinIndex]++;
else
npt_resonances[4][ptBinIndex] += getEfficiency(v0);
npt_resonances[4][ptBinIndex]++;
registry.fill(HIST("Lambda/hLambdas"), 1);
}
}
Expand All @@ -1385,7 +1385,7 @@ struct FlowGenericFramework {
for (const auto& vec : fractions_resonances) {
float total = chtotal;
if (cfgUsePIDTotal)
(pidcounter) ? std::accumulate(vec.begin(), vec.end(), 0) : chtotal;
total = (pidcounter) ? std::accumulate(vec.begin(), vec.end(), 0) : chtotal;

if (total == 0.) {
++pidcounter;
Expand Down Expand Up @@ -1458,8 +1458,10 @@ struct FlowGenericFramework {
if (!nchSelected(track))
return;

double weffCh = getEfficiency(track, 0);
if (std::abs(track.eta()) < cfgEtaNch) {
acceptedTracks.total += getEfficiency(track, 0);
if (weffCh > 0)
acceptedTracks.total += weffCh;
++acceptedTracks.total_uncorr;
}

Expand All @@ -1477,18 +1479,21 @@ struct FlowGenericFramework {
}

if (std::abs(track.eta()) < cfgEtaNch) {
if (pidIndex)
acceptedTracks.pidtotal[pidIndex - 1] += getEfficiency(track, pidIndex);
double weff = getEfficiency(track, pidIndex);

if (pidIndex && weff > 0)
acceptedTracks.pidtotal[pidIndex - 1] += weff;

int ptBinIndex = fPtAxis->FindBin(track.pt()) - 1;
if (!(ptBinIndex < 0 || ptBinIndex >= static_cast<int>(o2::analysis::gfw::ptbinning.size()))) {
acceptedTracks.nch[ptBinIndex] += (cfgUseNchCorrection) ? getEfficiency(track, 0) : 1.0;
if (pidIndex == 1)
acceptedTracks.npi[ptBinIndex] += (cfgUseNchCorrection) ? getEfficiency(track, pidIndex) : 1.0;
if (pidIndex == 2)
acceptedTracks.nka[ptBinIndex] += (cfgUseNchCorrection) ? getEfficiency(track, pidIndex) : 1.0;
if (pidIndex == 3)
acceptedTracks.npr[ptBinIndex] += (cfgUseNchCorrection) ? getEfficiency(track, pidIndex) : 1.0;
if (weffCh > 0)
acceptedTracks.nch[ptBinIndex] += (cfgUseNchCorrection) ? weffCh : 1.0;
if (pidIndex == 1 && weff > 0)
acceptedTracks.npi[ptBinIndex] += (cfgUseNchCorrection) ? weff : 1.0;
if (pidIndex == 2 && weff > 0)
acceptedTracks.nka[ptBinIndex] += (cfgUseNchCorrection) ? weff : 1.0;
if (pidIndex == 3 && weff > 0)
acceptedTracks.npr[ptBinIndex] += (cfgUseNchCorrection) ? weff : 1.0;
}
}

Expand Down Expand Up @@ -1557,8 +1562,10 @@ struct FlowGenericFramework {
if (!nchSelected(track))
return;

double weffCh = getEfficiency(track, 0);
if (std::abs(track.eta()) < cfgEtaNch) {
acceptedTracks.total += getEfficiency(track, 0);
if (weffCh > 0)
acceptedTracks.total += weffCh;
++acceptedTracks.total_uncorr;
}

Expand All @@ -1569,23 +1576,23 @@ struct FlowGenericFramework {
int pidIndex = getNsigmaPID(track);

if (std::abs(track.eta()) < cfgEtaNch) {
if (pidIndex)
acceptedTracks.pidtotal[pidIndex - 1] += getEfficiency(track, pidIndex);
double weff = getEfficiency(track, pidIndex);
if (pidIndex && weff > 0)
acceptedTracks.pidtotal[pidIndex - 1] += weff;

if (pidIndex)
acceptedTracks.pidtotal[pidIndex - 1] += getEfficiency(track);
int ptBinIndex = fPtAxis->FindBin(track.pt()) - 1;

if (!(ptBinIndex < 0 || ptBinIndex >= static_cast<int>(o2::analysis::gfw::ptbinning.size()))) {
acceptedTracks.nch[ptBinIndex] += (cfgUseNchCorrection) ? getEfficiency(track, 0) : 1.0;
if (pidIndex == 1) {
acceptedTracks.npi[ptBinIndex] += (cfgUseNchCorrection) ? getEfficiency(track, pidIndex) : 1.0;
if (weffCh > 0)
acceptedTracks.nch[ptBinIndex] += (cfgUseNchCorrection) ? weffCh : 1.0;
if (pidIndex == 1 && weff > 0) {
acceptedTracks.npi[ptBinIndex] += (cfgUseNchCorrection) ? weff : 1.0;
}
if (pidIndex == 2) {
acceptedTracks.nka[ptBinIndex] += (cfgUseNchCorrection) ? getEfficiency(track, pidIndex) : 1.0;
if (pidIndex == 2 && weff > 0) {
acceptedTracks.nka[ptBinIndex] += (cfgUseNchCorrection) ? weff : 1.0;
}
if (pidIndex == 3) {
acceptedTracks.npr[ptBinIndex] += (cfgUseNchCorrection) ? getEfficiency(track, pidIndex) : 1.0;
if (pidIndex == 3 && weff > 0) {
acceptedTracks.npr[ptBinIndex] += (cfgUseNchCorrection) ? weff : 1.0;
}
}
}
Expand Down Expand Up @@ -1808,25 +1815,22 @@ struct FlowGenericFramework {
bool withinPtNch = (track.pt() > ptmins[0] && track.pt() < ptmaxs[0]);
if (!withinPtPOI && !withinPtRef)
return;
double weff = (dt == kGen) ? 1. : getEfficiency(track, pid_index);
double weffInclusive = (dt == kGen) ? 1. : getEfficiency(track, 0);
if (weff < 0)
return;

double waccRef = (dt == kGen) ? 1. : getAcceptance(track, vtxz, 0);
double waccPOI = (dt == kGen) ? 1. : withinPtPOI ? getAcceptance(track, vtxz, pid_index + 1)
: getAcceptance(track, vtxz, 0); //
if (withinPtRef && withinPtPOI && pid_index)
waccRef = waccPOI; // if particle is both (then it's overlap), override ref with POI
if (withinPtRef)
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), waccRef * weffInclusive, 1);
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), waccRef, 1);
if (withinPtPOI && pid_index)
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), waccPOI * weff, (1 << (pid_index + 1)));
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), waccPOI, (1 << (pid_index + 1)));
if (withinPtNch)
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), waccPOI * weff * weffInclusive, 2);
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), waccPOI, 2);
if (withinPtPOI && withinPtRef && pid_index)
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), waccPOI * weff, (1 << (pid_index + 5)));
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), waccPOI, (1 << (pid_index + 5)));
if (withinPtNch && withinPtRef)
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), waccPOI * weff * weffInclusive, 32);
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), waccPOI, 32);
} else { // Analysing only integrated flow
bool withinPtRef = (track.pt() > o2::analysis::gfw::ptreflow && track.pt() < o2::analysis::gfw::ptrefup);
bool withinPtPOI = (track.pt() > o2::analysis::gfw::ptpoilow && track.pt() < o2::analysis::gfw::ptpoiup);
Expand Down Expand Up @@ -1919,7 +1923,7 @@ struct FlowGenericFramework {
}

o2::framework::expressions::Filter collisionFilter = nabs(aod::collision::posZ) < cfgVtxZ;
o2::framework::expressions::Filter trackFilter = nabs(aod::track::eta) < cfgEta && aod::track::pt > cfgPtmin&& aod::track::pt < cfgPtmax && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true)) && (aod::track::itsChi2NCl < cfgTrackCuts.cfgChi2PrITSCls) && (aod::track::tpcChi2NCl < cfgTrackCuts.cfgChi2PrTPCCls) && nabs(aod::track::dcaZ) < cfgTrackCuts.cfgDCAz;
o2::framework::expressions::Filter trackFilter = nabs(aod::track::eta) < cfgEta && aod::track::pt > cfgPtmin&& aod::track::pt < cfgPtmax && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t)true)) && (aod::track::itsChi2NCl < cfgTrackCuts.cfgChi2PrITSCls) && (aod::track::tpcChi2NCl < cfgTrackCuts.cfgChi2PrTPCCls) && nabs(aod::track::dcaZ) < cfgTrackCuts.cfgDCAz;

using GFWCollisions = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Cs, aod::CentFT0CVariant1s, aod::CentFT0Ms, aod::CentFV0As, aod::CentNTPVs, aod::CentNGlobals, aod::CentMFTs>>;
// using GFWTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::TracksDCA, aod::pidTOFPi, aod::pidTPCPi, aod::pidTOFKa, aod::pidTPCKa, aod::pidTOFPr, aod::pidTPCPr>>;
Expand Down
Loading