Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
e650303
Added the disableITSROFCut condition as part of the ITSROFBorderMarg…
mapalhares Sep 23, 2025
4e58bfb
Please consider the following formatting changes
alibuild Sep 23, 2025
2cc6404
Merge pull request #49 from alibuild/alibot-cleanup-13098
mapalhares Sep 24, 2025
fb19dbd
Removed disableITSROF condition, while the ITSFOFrameBorder was kept …
mapalhares Oct 20, 2025
bcfe19e
Add kNoTISROFrameBorder condition to study margin effects in the matc…
mapalhares Oct 21, 2025
e913e19
Merge branch 'master' of github.com:mapalhares/O2Physics
mapalhares Oct 21, 2025
45bc889
Rewrite event selection to study the margin region effects of the noI…
mapalhares Oct 21, 2025
b01ba05
Please consider the following formatting changes
alibuild Oct 21, 2025
3d55636
Merge pull request #51 from alibuild/alibot-cleanup-13482
mapalhares Oct 21, 2025
c1d98be
[PWGLF] Fixed the data reconstruction part of KstarInOO.cxx (#13475)
JimunLee Oct 21, 2025
37c99c6
[PWGLF] Strangeness tof: implement BC start time shift (#13472)
ddobrigk Oct 21, 2025
3922157
[PWGHF] Add ML to Xic0ToXiPi DCA Filter analysis (#12758)
Tao-Fang Oct 21, 2025
407c823
[PWGCF] FemtoUniverse: adding histos in D0 task (#13478)
kgwizdzi Oct 22, 2025
e3e2c38
[PWGDQ] Turning off the PR #13393 to verify large memory consumption …
sahilupadhyaya92 Oct 22, 2025
3e02194
[PWGEM] Fix includes (#13476)
Steffimro Oct 22, 2025
490678d
[PWGEM/Dilepton] add a task to evaluate pair acc. in MC (#13477)
dsekihat Oct 22, 2025
cd6da64
[PWGLF] NucleiTask - Fix bugged hosts (#13474)
giovannimalfattore Oct 22, 2025
00dd6e8
[PWGCF] add mT axis configurable (#13480)
blacwovie Oct 22, 2025
c43a156
[PWGLF] added configurable to select physical primaries, tracks are n…
GiorgioAlbertoLucia Oct 22, 2025
c358029
[PWGCF] add PID selection (#13481)
Luzhiyongg Oct 22, 2025
3e4a441
[PWGHF,Trigger] Fix vertexer configuration in HF filters (#13489)
fgrosa Oct 22, 2025
6063cee
[PWGHF] Fix a bug in the charm femto producer (#13486)
zhangbiao-phy Oct 22, 2025
2970e12
[PWGLF] Fixing MC functions in cascadeAnalysisLightIonsDerivedData.cx…
spucillo Oct 22, 2025
4aa494b
[PWGJE] add relative pThat track histograms (#13469)
jaimenorman Oct 22, 2025
56b22c6
[PWGJE] HadronPhotonCorrelation Task: Small bug fixes (#13471)
pestratm Oct 22, 2025
324672e
[Common] adding shift correction inputs (#13413)
jikim1290 Oct 22, 2025
967df96
[PWGEM/Dilepton] remove sign check of HFll in MC (#13494)
dsekihat Oct 22, 2025
d47fd1b
[PWGLF] Stratof / fix minor typos in QA histogram filling (#13495)
ddobrigk Oct 22, 2025
d1e97b0
[PWGHF,Common] Add Cd to deKpi candidates reconstruction workflow int…
zhangbiao-phy Oct 22, 2025
8792e4b
[PWGHF] IWYU (#13500)
vkucera Oct 22, 2025
5fda8ae
[PWGLF] Fix Tracked cascade datalink filling (#13498)
romainschotter Oct 22, 2025
e3379fd
[PWGHF] [PWGHF]adjust the bining of the QA plot for FIT signal amplit…
zhangbiao-phy Oct 23, 2025
512760c
[DPG] tune histograms, fixing issues (#13483)
altsybee Oct 23, 2025
5a66048
[PWGEM] phosElId.cxx fixed DCA calls (#13491)
yhambard Oct 23, 2025
1798748
Fix bug sayPrim
mapalhares Oct 23, 2025
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
69 changes: 44 additions & 25 deletions Common/Core/TrackSelectorPID.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#ifndef COMMON_CORE_TRACKSELECTORPID_H_
#define COMMON_CORE_TRACKSELECTORPID_H_

#include <CommonConstants/PhysicsConstants.h>
#include <Framework/Logger.h>
#include <ReconstructionDataFormats/PID.h>

Expand All @@ -43,6 +44,9 @@ class TrackSelectorPidBase
/// Default constructor
TrackSelectorPidBase() = default;

static constexpr float NSigmaMinDefault{-999.f};
static constexpr float NSigmaMaxDefault{999.f};

/// Conversion operator
template <uint64_t pdgNew>
operator TrackSelectorPidBase<pdgNew>() const
Expand Down Expand Up @@ -108,10 +112,10 @@ class TrackSelectorPidBase
/// \param tpcNSigmaCustom custom TPC nσ value to be used for the selection, in case the desired value cannot be taken from the track table
/// \return true if track satisfies TPC PID hypothesis for given TPC nσ range
template <typename T>
bool isSelectedByTpc(const T& track, bool& conditionalTof, float tpcNSigmaCustom = -999.f)
bool isSelectedByTpc(const T& track, bool& conditionalTof, float tpcNSigmaCustom = NSigmaMinDefault)
{
// Accept if selection is disabled via large values.
if (mNSigmaTpcMin < -999. && mNSigmaTpcMax > 999.) {
if (mNSigmaTpcMin < NSigmaMinDefault && mNSigmaTpcMax > NSigmaMaxDefault) {
return true;
}

Expand All @@ -127,16 +131,18 @@ class TrackSelectorPidBase
nSigma = track.tpcNSigmaKa();
} else if constexpr (pdg == kProton) {
nSigma = track.tpcNSigmaPr();
} else if constexpr (pdg == o2::constants::physics::Pdg::kDeuteron) {
nSigma = track.tpcNSigmaDe();
} else {
errorPdg();
}

/// use custom TPC nσ, if a valid value is provided
if (tpcNSigmaCustom > -999.f) {
if (tpcNSigmaCustom > NSigmaMinDefault) {
nSigma = tpcNSigmaCustom;
}

if (mNSigmaTpcMinCondTof < -999. && mNSigmaTpcMaxCondTof > 999.) {
if (mNSigmaTpcMinCondTof < NSigmaMinDefault && mNSigmaTpcMaxCondTof > NSigmaMaxDefault) {
conditionalTof = true;
} else {
conditionalTof = mNSigmaTpcMinCondTof <= nSigma && nSigma <= mNSigmaTpcMaxCondTof;
Expand All @@ -148,7 +154,7 @@ class TrackSelectorPidBase
/// \param track track
/// \return TPC selection status (see TrackSelectorPID::Status)
template <typename T>
TrackSelectorPID::Status statusTpc(const T& track, float tpcNSigmaCustom = -999.f)
TrackSelectorPID::Status statusTpc(const T& track, float tpcNSigmaCustom = NSigmaMinDefault)
{
if (!isValidForTpc(track)) {
return TrackSelectorPID::NotApplicable;
Expand Down Expand Up @@ -202,10 +208,10 @@ class TrackSelectorPidBase
/// \param tofNSigmaCustom custom TOF nσ value to be used for the selection, in case the desired value cannot be taken from the track table
/// \return true if track satisfies TOF PID hypothesis for given TOF nσ range
template <typename T>
bool isSelectedByTof(const T& track, bool& conditionalTpc, float tofNSigmaCustom = -999.f)
bool isSelectedByTof(const T& track, bool& conditionalTpc, float tofNSigmaCustom = NSigmaMinDefault)
{
// Accept if selection is disabled via large values.
if (mNSigmaTofMin < -999. && mNSigmaTofMax > 999.) {
if (mNSigmaTofMin < NSigmaMinDefault && mNSigmaTofMax > NSigmaMaxDefault) {
return true;
}

Expand All @@ -221,16 +227,18 @@ class TrackSelectorPidBase
nSigma = track.tofNSigmaKa();
} else if constexpr (pdg == kProton) {
nSigma = track.tofNSigmaPr();
} else if constexpr (pdg == o2::constants::physics::Pdg::kDeuteron) {
nSigma = track.tofNSigmaDe();
} else {
errorPdg();
}

/// use custom TOF nσ, if a valid value is provided
if (tofNSigmaCustom > -999.f) {
if (tofNSigmaCustom > NSigmaMinDefault) {
nSigma = tofNSigmaCustom;
}

if (mNSigmaTofMinCondTpc < -999. && mNSigmaTofMaxCondTpc > 999.) {
if (mNSigmaTofMinCondTpc < NSigmaMinDefault && mNSigmaTofMaxCondTpc > NSigmaMaxDefault) {
conditionalTpc = true;
} else {
conditionalTpc = mNSigmaTofMinCondTpc <= nSigma && nSigma <= mNSigmaTofMaxCondTpc;
Expand All @@ -242,7 +250,7 @@ class TrackSelectorPidBase
/// \param track track
/// \return TOF selection status (see TrackSelectorPID::Status)
template <typename T>
TrackSelectorPID::Status statusTof(const T& track, float tofNSigmaCustom = -999.f)
TrackSelectorPID::Status statusTof(const T& track, float tofNSigmaCustom = NSigmaMinDefault)
{
if (!isValidForTof(track)) {
return TrackSelectorPID::NotApplicable;
Expand Down Expand Up @@ -301,7 +309,7 @@ class TrackSelectorPidBase
bool isSelectedByRich(const T& track, bool& conditionalTof)
{
// Accept if selection is disabled via large values.
if (mNSigmaRichMin < -999. && mNSigmaRichMax > 999.) {
if (mNSigmaRichMin < NSigmaMinDefault && mNSigmaRichMax > NSigmaMaxDefault) {
return true;
}

Expand All @@ -321,7 +329,7 @@ class TrackSelectorPidBase
errorPdg();
}

if (mNSigmaRichMinCondTof < -999. && mNSigmaRichMaxCondTof > 999.) {
if (mNSigmaRichMinCondTof < NSigmaMinDefault && mNSigmaRichMaxCondTof > NSigmaMaxDefault) {
conditionalTof = true;
} else {
conditionalTof = mNSigmaRichMinCondTof <= nSigma && nSigma <= mNSigmaRichMaxCondTof;
Expand Down Expand Up @@ -405,7 +413,7 @@ class TrackSelectorPidBase
/// \param track track
/// \return status of combined PID (TPC or TOF) (see TrackSelectorPID::Status)
template <typename T>
TrackSelectorPID::Status statusTpcOrTof(const T& track, float tpcNSigmaCustom = -999.f, float tofNSigmaCustom = -999.f)
TrackSelectorPID::Status statusTpcOrTof(const T& track, float tpcNSigmaCustom = NSigmaMinDefault, float tofNSigmaCustom = NSigmaMinDefault)
{
int pidTpc = statusTpc(track, tpcNSigmaCustom);
int pidTof = statusTof(track, tofNSigmaCustom);
Expand All @@ -426,7 +434,7 @@ class TrackSelectorPidBase
/// \param track track
/// \return status of combined PID (TPC and TOF) (see TrackSelectorPID::Status)
template <typename T>
TrackSelectorPID::Status statusTpcAndTof(const T& track, float tpcNSigmaCustom = -999.f, float tofNSigmaCustom = -999.f)
TrackSelectorPID::Status statusTpcAndTof(const T& track, float tpcNSigmaCustom = NSigmaMinDefault, float tofNSigmaCustom = NSigmaMinDefault)
{
int pidTpc = TrackSelectorPID::NotApplicable;
if (track.hasTPC()) {
Expand Down Expand Up @@ -464,23 +472,29 @@ class TrackSelectorPidBase
template <typename T>
bool isElectronAndNotPion(const T& track, bool useTof = true, bool useRich = true)
{
constexpr float NSigmaInvalid{-1000.f};
constexpr float PTofRichTElectronMin{0.4f};
constexpr float PTofRichTElectronMax{0.6f};
constexpr float PRichPionBandMin{1.0f};
constexpr float PRichPionBandMax{2.0f};

bool isSelTof = false;
bool isSelRich = false;
bool hasRich = track.richId() > -1;
bool hasTof = isValidForTof(track);
auto nSigmaTofEl = track.tofNSigmaEl();
auto nSigmaTofPi = track.tofNSigmaPi();
auto nSigmaRichEl = hasRich ? track.rich().richNsigmaEl() : -1000.;
auto nSigmaRichPi = hasRich ? track.rich().richNsigmaPi() : -1000.;
auto nSigmaRichEl = hasRich ? track.rich().richNsigmaEl() : NSigmaInvalid;
auto nSigmaRichPi = hasRich ? track.rich().richNsigmaPi() : NSigmaInvalid;
auto p = track.p();

// TOF
if (useTof && hasTof && (p < 0.6)) {
if (p > 0.4 && hasRich) {
if (useTof && hasTof && (p < PTofRichTElectronMax)) {
if (p > PTofRichTElectronMin && hasRich) {
if ((std::abs(nSigmaTofEl) < mNSigmaTofMax) && (std::abs(nSigmaRichEl) < mNSigmaRichMax)) {
isSelTof = true; // is selected as electron by TOF and RICH
}
} else if (p <= 0.4) {
} else if (p <= PTofRichTElectronMin) {
if (std::abs(nSigmaTofEl) < mNSigmaTofMax) {
isSelTof = true; // is selected as electron by TOF
}
Expand All @@ -499,7 +513,7 @@ class TrackSelectorPidBase
if (std::abs(nSigmaRichEl) < mNSigmaRichMax) {
isSelRich = true; // is selected as electron by RICH
}
if ((std::abs(nSigmaRichPi) < mNSigmaRichMax) && (p > 1.0) && (p < 2.0)) {
if ((std::abs(nSigmaRichPi) < mNSigmaRichMax) && (p > PRichPionBandMin) && (p < PRichPionBandMax)) {
isSelRich = false; // is selected as pion by RICH
}
} else {
Expand Down Expand Up @@ -551,6 +565,8 @@ class TrackSelectorPidBase
return track.bayesID() == o2::track::PID::Kaon;
} else if constexpr (pdg == kProton) {
return track.bayesID() == o2::track::PID::Proton;
} else if constexpr (pdg == o2::constants::physics::Pdg::kDeuteron) {
return track.bayesID() == o2::track::PID::Deuteron;
} else {
errorPdg();
return false;
Expand Down Expand Up @@ -579,6 +595,8 @@ class TrackSelectorPidBase
prob = track.bayesKa();
} else if constexpr (pdg == kProton) {
prob = track.bayesPr();
} else if constexpr (pdg == o2::constants::physics::Pdg::kDeuteron) {
prob = track.bayesDe();
} else {
errorPdg();
}
Expand Down Expand Up @@ -656,10 +674,11 @@ class TrackSelectorPidBase
};

// Predefined types
using TrackSelectorEl = TrackSelectorPidBase<kElectron>; // El
using TrackSelectorMu = TrackSelectorPidBase<kMuonMinus>; // Mu
using TrackSelectorPi = TrackSelectorPidBase<kPiPlus>; // Pi
using TrackSelectorKa = TrackSelectorPidBase<kKPlus>; // Ka
using TrackSelectorPr = TrackSelectorPidBase<kProton>; // Pr
using TrackSelectorEl = TrackSelectorPidBase<kElectron>; // El
using TrackSelectorMu = TrackSelectorPidBase<kMuonMinus>; // Mu
using TrackSelectorPi = TrackSelectorPidBase<kPiPlus>; // Pi
using TrackSelectorKa = TrackSelectorPidBase<kKPlus>; // Ka
using TrackSelectorPr = TrackSelectorPidBase<kProton>; // Pr
using TrackSelectorDe = TrackSelectorPidBase<o2::constants::physics::Pdg::kDeuteron>; // De

#endif // COMMON_CORE_TRACKSELECTORPID_H_
60 changes: 58 additions & 2 deletions Common/Tasks/qVectorsCorrection.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ struct qVectorsCorrection {
Configurable<bool> cfgQAFlowStudy{"cfgQAFlowStudy", false, "configurable for flow study"};
Configurable<bool> cfgQAOccupancyStudy{"cfgQAOccupancyStudy", false, "configurable for occupancy study"};
Configurable<bool> cfgAddEvtSelPileup{"cfgAddEvtSelPileup", false, "configurable for pileup selection"};
Configurable<bool> cfgShiftCor{"cfgShiftCor", false, "configurable for shift correction"};
Configurable<bool> cfgShiftCorPrep{"cfgShiftCorPrep", false, "configurable for shift correction"};

Configurable<float> cfgMinPt{"cfgMinPt", 0.15, "Minimum transverse momentum for charged track"};
Configurable<float> cfgMaxEta{"cfgMaxEta", 0.8, "Maximum pseudorapidiy for charged track"};
Expand Down Expand Up @@ -178,6 +178,9 @@ struct qVectorsCorrection {
AxisSpec axisAzimuth{cfgaxisAzimuth, "relative azimuthal angle"};
AxisSpec axisOccupancy{cfgaxisOccupancy, "Occupancy"};

AxisSpec axisShift = {10, 0, 10, "shift"};
AxisSpec axisBasis = {20, 0, 20, "basis"};

histosQA.add("histCentFull", "Centrality distribution for valid events",
HistType::kTH1F, {axisCent});

Expand All @@ -201,6 +204,10 @@ struct qVectorsCorrection {
histosQA.add(Form("histQvecRefAFinalV%d", cfgnMods->at(i)), "", {HistType::kTH3F, {axisQvec, axisQvec, axisCent}});
histosQA.add(Form("histQvecRefBFinalV%d", cfgnMods->at(i)), "", {HistType::kTH3F, {axisQvec, axisQvec, axisCent}});

if (cfgShiftCorPrep) {
histosQA.add(Form("histShiftV%d", cfgnMods->at(i)), "", {HistType::kTProfile3D, {axisCent, axisBasis, axisShift}});
}

if (cfgQAOccupancyStudy) {
histosQA.add(Form("histQvecOccFinalV%d", cfgnMods->at(i)), "", {HistType::kTHnSparseF, {axisQvecF, axisQvecF, axisCent, axisOccupancy}});
histosQA.add(Form("histQvecRefAOccFinalV%d", cfgnMods->at(i)), "", {HistType::kTHnSparseF, {axisQvecF, axisQvecF, axisCent, axisOccupancy}});
Expand Down Expand Up @@ -254,6 +261,49 @@ struct qVectorsCorrection {
}
} // End void init(InitContext const&)

template <typename T>
void fillHistosShiftCor(const T& vec, int nmode)
{
int DetInd = DetId * 4 + cfgnTotalSystem * 4 * (nmode - 2) + 3;
int RefAInd = RefAId * 4 + cfgnTotalSystem * 4 * (nmode - 2) + 3;
int RefBInd = RefBId * 4 + cfgnTotalSystem * 4 * (nmode - 2) + 3;

if (nmode == 2) {
for (int ishift = 1; ishift <= 10; ishift++) {
histosQA.fill(HIST("histShiftV2"), vec.cent(), 2.0 * DetId + 0.5, ishift - 0.5, TMath::Sin(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[DetInd], vec.qvecRe()[DetInd]) / static_cast<float>(nmode)));
histosQA.fill(HIST("histShiftV2"), vec.cent(), 2.0 * DetId + 1.5, ishift - 0.5, TMath::Cos(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[DetInd], vec.qvecRe()[DetInd]) / static_cast<float>(nmode)));

histosQA.fill(HIST("histShiftV2"), vec.cent(), 2.0 * RefAId + 0.5, ishift - 0.5, TMath::Sin(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefAInd], vec.qvecRe()[RefAInd]) / static_cast<float>(nmode)));
histosQA.fill(HIST("histShiftV2"), vec.cent(), 2.0 * RefAId + 1.5, ishift - 0.5, TMath::Cos(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefAInd], vec.qvecRe()[RefAInd]) / static_cast<float>(nmode)));

histosQA.fill(HIST("histShiftV2"), vec.cent(), 2.0 * RefBId + 0.5, ishift - 0.5, TMath::Sin(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefBInd], vec.qvecRe()[RefBInd]) / static_cast<float>(nmode)));
histosQA.fill(HIST("histShiftV2"), vec.cent(), 2.0 * RefBId + 1.5, ishift - 0.5, TMath::Cos(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefBInd], vec.qvecRe()[RefBInd]) / static_cast<float>(nmode)));
}
} else if (nmode == 3) {
for (int ishift = 1; ishift <= 10; ishift++) {
histosQA.fill(HIST("histShiftV3"), vec.cent(), 2.0 * DetId + 0.5, ishift - 0.5, TMath::Sin(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[DetInd], vec.qvecRe()[DetInd]) / static_cast<float>(nmode)));
histosQA.fill(HIST("histShiftV3"), vec.cent(), 2.0 * DetId + 1.5, ishift - 0.5, TMath::Cos(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[DetInd], vec.qvecRe()[DetInd]) / static_cast<float>(nmode)));

histosQA.fill(HIST("histShiftV3"), vec.cent(), 2.0 * RefAId + 0.5, ishift - 0.5, TMath::Sin(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefAInd], vec.qvecRe()[RefAInd]) / static_cast<float>(nmode)));
histosQA.fill(HIST("histShiftV3"), vec.cent(), 2.0 * RefAId + 1.5, ishift - 0.5, TMath::Cos(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefAInd], vec.qvecRe()[RefAInd]) / static_cast<float>(nmode)));

histosQA.fill(HIST("histShiftV3"), vec.cent(), 2.0 * RefBId + 0.5, ishift - 0.5, TMath::Sin(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefBInd], vec.qvecRe()[RefBInd]) / static_cast<float>(nmode)));
histosQA.fill(HIST("histShiftV3"), vec.cent(), 2.0 * RefBId + 1.5, ishift - 0.5, TMath::Cos(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefBInd], vec.qvecRe()[RefBInd]) / static_cast<float>(nmode)));
}
} else if (nmode == 4) {
for (int ishift = 1; ishift <= 10; ishift++) {
histosQA.fill(HIST("histShiftV4"), vec.cent(), 2.0 * DetId + 0.5, ishift - 0.5, TMath::Sin(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[DetInd], vec.qvecRe()[DetInd]) / static_cast<float>(nmode)));
histosQA.fill(HIST("histShiftV4"), vec.cent(), 2.0 * DetId + 1.5, ishift - 0.5, TMath::Cos(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[DetInd], vec.qvecRe()[DetInd]) / static_cast<float>(nmode)));

histosQA.fill(HIST("histShiftV4"), vec.cent(), 2.0 * RefAId + 0.5, ishift - 0.5, TMath::Sin(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefAInd], vec.qvecRe()[RefAInd]) / static_cast<float>(nmode)));
histosQA.fill(HIST("histShiftV4"), vec.cent(), 2.0 * RefAId + 1.5, ishift - 0.5, TMath::Cos(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefAInd], vec.qvecRe()[RefAInd]) / static_cast<float>(nmode)));

histosQA.fill(HIST("histShiftV4"), vec.cent(), 2.0 * RefBId + 0.5, ishift - 0.5, TMath::Sin(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefBInd], vec.qvecRe()[RefBInd]) / static_cast<float>(nmode)));
histosQA.fill(HIST("histShiftV4"), vec.cent(), 2.0 * RefBId + 1.5, ishift - 0.5, TMath::Cos(ishift * static_cast<float>(nmode) * TMath::ATan2(vec.qvecIm()[RefBInd], vec.qvecRe()[RefBInd]) / static_cast<float>(nmode)));
}
}
}

template <typename CollType, typename TrackType>
void fillHistosFlowWithSC(const CollType& coll, const TrackType& track, int nmode)
{
Expand Down Expand Up @@ -674,6 +724,12 @@ struct qVectorsCorrection {
return;
}

if (cfgShiftCorPrep) {
for (uint i = 0; i < cfgnMods->size(); i++) {
fillHistosShiftCor(qVec, cfgnMods->at(i));
}
}

for (uint i = 0; i < cfgnMods->size(); i++) {
fillHistosQvec(qVec, cfgnMods->at(i));
if (cfgQAFinal && cfgQAFlowStudy) {
Expand Down Expand Up @@ -715,7 +771,7 @@ struct qVectorsCorrection {

for (uint i = 0; i < cfgnMods->size(); i++) {
fillHistosQvecWithSC(qVec, cfgnMods->at(i));
if (cfgQAFlowStudy) {
if (cfgQAFinal && cfgQAFlowStudy) {
fillHistosFlowWithSC(qVec, tracks, cfgnMods->at(i));
}
}
Expand Down
Loading
Loading