Skip to content

Commit 293c329

Browse files
committed
[PWGCF]Add files for v2 check
1 parent d6c9874 commit 293c329

File tree

1 file changed

+75
-42
lines changed

1 file changed

+75
-42
lines changed

PWGCF/Flow/Tasks/flowEseTask.cxx

Lines changed: 75 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "PWGLF/DataModel/LFStrangenessTables.h"
1919
#include "PWGMM/Mult/DataModel/Index.h" // for Particles2Tracks table
2020

21+
#include "Common/Core/EventPlaneHelper.h"
2122
#include "Common/Core/RecoDecay.h"
2223
#include "Common/Core/TrackSelection.h"
2324
#include "Common/Core/trackUtilities.h"
@@ -68,7 +69,7 @@ using namespace o2::constants::physics;
6869
struct FlowEseTask {
6970
// using EventCandidates = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::FV0Mults, aod::TPCMults, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0Cs, aod::CentFT0As, aod::Mults>>;
7071
using EventCandidates = soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::FV0Mults, aod::TPCMults, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0Cs, aod::CentFT0As, aod::Mults, aod::Qvectors, aod::QvectorFT0CVecs>;
71-
using TrackCandidates = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection, aod::pidTPCFullPi, aod::pidTPCFullPr>;
72+
using TrackCandidates = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::TrackSelectionExtension>;
7273
using V0TrackCandidate = aod::V0Datas;
7374

7475
HistogramRegistry histos{
@@ -104,6 +105,9 @@ struct FlowEseTask {
104105
Configurable<float> cfgV0EtaMax{"cfgV0EtaMax", 0.5, "maximum rapidity"};
105106
Configurable<float> cfgV0LifeTime{"cfgV0LifeTime", 30., "maximum lambda lifetime"};
106107

108+
Configurable<float> cfgMinPt{"cfgMinPt", 0.15, "Minimum transverse momentum for track"};
109+
Configurable<float> cfgMaxEta{"cfgMaxEta", 0.8, "Maximum pseudorapidiy for charged track"};
110+
107111
Configurable<bool> cfgQAv0{"cfgQAv0", false, "QA plot"};
108112

109113
Configurable<int> cfgDaughTPCnclsMin{"cfgDaughTPCnclsMin", 70, "minimum fired crossed rows"};
@@ -143,13 +147,14 @@ struct FlowEseTask {
143147

144148
ConfigurableAxis massAxis{"massAxis", {30, 1.1, 1.13}, "Invariant mass axis"};
145149
ConfigurableAxis ptAxis{"ptAxis", {VARIABLE_WIDTH, 0.2, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.5, 8.0, 10.0, 100.0}, "Transverse momentum bins"};
150+
ConfigurableAxis ptFullAxis{"ptFullAxis", {VARIABLE_WIDTH, -5.0, -4.0, -3.0, -2.5, -2.0, -1.5, -1.0, -0.5, -0.2, 0, 0.2, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0}, "Transverse momentum bins"};
146151
ConfigurableAxis centAxis{"centAxis", {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 100}, "Centrality interval"};
147152
ConfigurableAxis cosAxis{"cosAxis", {110, -1.05, 1.05}, "Cosine axis"};
148153
ConfigurableAxis rapAxis{"rapAxis", {10, -0.5, 0.5}, "Rapidity axis"};
149154
ConfigurableAxis qqAxis{"qqAxis", {100, -0.1, 0.1}, "qq axis"};
150155
ConfigurableAxis lowerQAxis{"lowerQAxis", {800, 0, 800}, "result of q2"};
151156
ConfigurableAxis multNumAxis{"multNumAxis", {300, 0, 2700}, "mult num"};
152-
ConfigurableAxis qvecAxis{"qvecAxis", {300, -1, 1}, "range of Qvector"};
157+
ConfigurableAxis qvecAxis{"qvecAxis", {300, -1, 1}, "range of Qvector component"};
153158
ConfigurableAxis qvec2Axis{"qvec2Axis", {600, 0, 600}, "range of Qvector Module"};
154159

155160
static constexpr float kMinAmplitudeThreshold = 1e-5f;
@@ -158,11 +163,11 @@ struct FlowEseTask {
158163
static constexpr std::array<int, 4> kCorrLevel = {2, 3, 4, 1};
159164
static constexpr std::array<float, 10> kCentBoundaries = {0.0f, 3.49f, 4.93f, 6.98f, 8.55f, 9.87f, 11.0f, 12.1f, 13.1f, 14.0f};
160165
static constexpr std::array<float, 9> kCentValues = {2.5f, 7.5f, 15.0f, 25.0f, 35.0f, 45.0f, 55.0f, 65.0f, 75.0f};
161-
static constexpr std::array<float, 9> kCentrality = {0, 10, 20, 30, 40, 50, 60, 70, 80};
162166
static constexpr std::array<std::array<double, 2>, 8> kLowQvec = {{{121, 196}, {110, 172}, {93, 143}, {74, 117}, {58, 92}, {43, 70}, {31, 50}, {21, 34}}};
163167
static constexpr float kEtaAcceptance = 0.8f;
164168
static constexpr float kCentUpperLimit = 80.0f;
165-
static constexpr int kCentNum = 8;
169+
170+
EventPlaneHelper helperEP;
166171

167172
TF1* fMultPVCutLow = nullptr;
168173
TF1* fMultPVCutHigh = nullptr;
@@ -219,17 +224,21 @@ struct FlowEseTask {
219224
AxisSpec epQaAxis = {100, -1.0 * o2::constants::math::PI, o2::constants::math::PI};
220225

221226
AxisSpec pidAxis = {100, -10, 10};
227+
AxisSpec vertexAxis = {100, -20, 20};
222228

223229
AxisSpec shiftAxis = {10, 0, 10, "shift"};
224230
AxisSpec basisAxis = {20, 0, 20, "basis"};
225231

226232
histos.add(Form("histQvecV2"), "", {HistType::kTH3F, {qvecAxis, qvecAxis, centAxis}});
227233
histos.add(Form("histMult_Cent"), "", {HistType::kTH2F, {multNumAxis, centAxis}});
228234
histos.add(Form("histQvecCent"), "", {HistType::kTH2F, {lowerQAxis, centAxis}});
229-
histos.add(Form("histPrPtCent"), "", {HistType::kTHnSparseF, {ptAxis, ptAxis, ptAxis, centAxis}});
230-
histos.add(Form("histPiPtCent"), "", {HistType::kTHnSparseF, {ptAxis, ptAxis, ptAxis, centAxis}});
231-
histos.add(Form("histPrBoostedPtCent"), "", {HistType::kTHnSparseF, {ptAxis, ptAxis, ptAxis, centAxis}});
232-
235+
histos.add(Form("histPrPtCent"), "", {HistType::kTHnSparseF, {ptFullAxis, ptFullAxis, ptFullAxis, centAxis}});
236+
histos.add(Form("histPiPtCent"), "", {HistType::kTHnSparseF, {ptFullAxis, ptFullAxis, ptFullAxis, centAxis}});
237+
histos.add(Form("histPrBoostedPtCent"), "", {HistType::kTHnSparseF, {ptFullAxis, ptFullAxis, ptFullAxis, centAxis}});
238+
histos.add(Form("histVertex"), "", {HistType::kTHnSparseF, {vertexAxis, vertexAxis, vertexAxis, centAxis}});
239+
histos.add(Form("histV2"), "", {HistType::kTHnSparseF, {centAxis, ptAxis, cosAxis, qvec2Axis}});
240+
histos.add(Form("histV2_lambda"), "", {HistType::kTHnSparseF, {centAxis, ptAxis, cosAxis, qvec2Axis, massAxis}});
241+
histos.add(Form("histV2_alambda"), "", {HistType::kTHnSparseF, {centAxis, ptAxis, cosAxis, qvec2Axis, massAxis}});
233242
for (auto i = 2; i < cfgnMods + 2; i++) {
234243
histos.add(Form("psi%d/h_lambda_cos", i), "", {HistType::kTHnSparseF, {massAxis, ptAxis, cosAxis, centAxis, epAxis}});
235244
histos.add(Form("psi%d/h_alambda_cos", i), "", {HistType::kTHnSparseF, {massAxis, ptAxis, cosAxis, centAxis, epAxis}});
@@ -238,20 +247,13 @@ struct FlowEseTask {
238247
histos.add(Form("psi%d/h_lambda_cos2_q2", i), "", {HistType::kTH3F, {centAxis, qvec2Axis, cosAxis}});
239248
histos.add(Form("psi%d/h_alambda_cos2_q2", i), "", {HistType::kTH3F, {centAxis, qvec2Axis, cosAxis}});
240249

241-
histos.add(Form("psi%d/h_lambda_cos2_left", i), "", {HistType::kTH2F, {centAxis, cosAxis}});
242-
histos.add(Form("psi%d/h_lambda_cos2_mid", i), "", {HistType::kTH2F, {centAxis, cosAxis}});
243-
histos.add(Form("psi%d/h_lambda_cos2_right", i), "", {HistType::kTH2F, {centAxis, cosAxis}});
244-
245250
if (cfgRapidityDep) {
246251
histos.add(Form("psi%d/h_lambda_cos2_rap", i), "", {HistType::kTHnSparseF, {massAxis, ptAxis, cosAxis, centAxis, rapAxis}});
247252
histos.add(Form("psi%d/h_alambda_cos2_rap", i), "", {HistType::kTHnSparseF, {massAxis, ptAxis, cosAxis, centAxis, rapAxis}});
248253
}
249254

250255
histos.add(Form("psi%d/h_lambda_cossin", i), "", {HistType::kTHnSparseF, {massAxis, ptAxis, cosAxis, centAxis}});
251256
histos.add(Form("psi%d/h_alambda_cossin", i), "", {HistType::kTHnSparseF, {massAxis, ptAxis, cosAxis, centAxis}});
252-
histos.add(Form("psi%d/h_lambda_cossin_left", i), "", {HistType::kTH2F, {centAxis, cosAxis}});
253-
histos.add(Form("psi%d/h_lambda_cossin_mid", i), "", {HistType::kTH2F, {centAxis, cosAxis}});
254-
histos.add(Form("psi%d/h_lambda_cossin_right", i), "", {HistType::kTH2F, {centAxis, cosAxis}});
255257

256258
histos.add(Form("psi%d/h_lambda_cossin_q2", i), "", {HistType::kTH3F, {centAxis, qvec2Axis, cosAxis}});
257259
histos.add(Form("psi%d/h_alambda_cossin_q2", i), "", {HistType::kTH3F, {centAxis, qvec2Axis, cosAxis}});
@@ -526,6 +528,31 @@ struct FlowEseTask {
526528
return -o2::constants::math::PIHalf;
527529
}
528530

531+
template <typename TrackType>
532+
bool selectionTrack(TrackType const& track)
533+
{
534+
if (track.pt() < cfgMinPt)
535+
return false;
536+
if (std::abs(track.eta()) > cfgMaxEta)
537+
return false;
538+
if (!track.passedITSNCls())
539+
return false;
540+
if (!track.passedITSChi2NDF())
541+
return false;
542+
if (!track.passedITSHits())
543+
return false;
544+
if (!track.passedTPCCrossedRowsOverNCls())
545+
return false;
546+
if (!track.passedTPCChi2NDF())
547+
return false;
548+
if (!track.passedDCAxy())
549+
return false;
550+
if (!track.passedDCAz())
551+
return false;
552+
553+
return true;
554+
}
555+
529556
template <typename TCollision>
530557
void fillShiftCorrection(TCollision const& collision, int nmode)
531558
{
@@ -676,13 +703,29 @@ struct FlowEseTask {
676703
}
677704
}
678705

679-
template <typename TCollision, typename V0>
680-
void fillHistograms(TCollision const& collision, V0 const& V0s, int nmode)
706+
template <typename TCollision, typename V0, typename TrackType>
707+
void fillHistograms(TCollision const& collision, V0 const& V0s, TrackType const& track, int nmode)
681708
{
682709
qvecDetInd = detId * 4 + 3 + (nmode - 2) * cfgNQvec * 4;
683710
qvecRefAInd = refAId * 4 + 3 + (nmode - 2) * cfgNQvec * 4;
684711
qvecRefBInd = refBId * 4 + 3 + (nmode - 2) * cfgNQvec * 4;
685712

713+
for (const auto& trk : track) {
714+
if (!selectionTrack(trk)) {
715+
continue;
716+
}
717+
if (nmode == kCorrLevel[0]) {
718+
histos.fill(HIST("histV2"), collision.centFT0C(), trk.pt(),
719+
std::cos(static_cast<float>(nmode) * (trk.phi() - helperEP.GetEventPlane(collision.qvecFT0CReVec()[0], collision.qvecFT0CImVec()[0], nmode))),
720+
std::sqrt(collision.qvecFT0CReVec()[0] * collision.qvecFT0CReVec()[0] + collision.qvecFT0CImVec()[0] * collision.qvecFT0CImVec()[0]) * std::sqrt(collision.sumAmplFT0C()));
721+
}
722+
}
723+
724+
histos.fill(HIST("histQvecCent"), std::sqrt(collision.qvecFT0CReVec()[0] * collision.qvecFT0CReVec()[0] + collision.qvecFT0CImVec()[0] * collision.qvecFT0CImVec()[0]) * std::sqrt(collision.sumAmplFT0C()), centrality);
725+
histos.fill(HIST("histQvecV2"), collision.qvecFT0CReVec()[0], collision.qvecFT0CImVec()[0], collision.centFT0C());
726+
histos.fill(HIST("histMult_Cent"), collision.sumAmplFT0C(), collision.centFT0C());
727+
histos.fill(HIST("histVertex"), collision.posX(), collision.posY(), collision.posZ(), collision.centFT0C());
728+
686729
for (const auto& v0 : V0s) {
687730
auto postrack = v0.template posTrack_as<TrackCandidates>();
688731
auto negtrack = v0.template negTrack_as<TrackCandidates>();
@@ -720,10 +763,18 @@ struct FlowEseTask {
720763
if (lambdaTag) {
721764
protonVec = ROOT::Math::PxPyPzMVector(v0.pxpos(), v0.pypos(), v0.pzpos(), massPr);
722765
pionVec = ROOT::Math::PxPyPzMVector(v0.pxneg(), v0.pyneg(), v0.pzneg(), massPi);
766+
histos.fill(HIST("histV2_lambda"), collision.centFT0C(), v0.pt(),
767+
std::cos(static_cast<float>(nmode) * (v0.phi() - helperEP.GetEventPlane(collision.qvecFT0CReVec()[0], collision.qvecFT0CImVec()[0], nmode))),
768+
std::sqrt(collision.qvecFT0CReVec()[0] * collision.qvecFT0CReVec()[0] + collision.qvecFT0CImVec()[0] * collision.qvecFT0CImVec()[0]) * std::sqrt(collision.sumAmplFT0C()),
769+
v0.mLambda());
723770
}
724771
if (aLambdaTag) {
725772
protonVec = ROOT::Math::PxPyPzMVector(v0.pxneg(), v0.pyneg(), v0.pzneg(), massPr);
726773
pionVec = ROOT::Math::PxPyPzMVector(v0.pxpos(), v0.pypos(), v0.pzpos(), massPi);
774+
histos.fill(HIST("histV2_alambda"), collision.centFT0C(), v0.pt(),
775+
std::cos(static_cast<float>(nmode) * (v0.phi() - helperEP.GetEventPlane(collision.qvecFT0CReVec()[0], collision.qvecFT0CImVec()[0], nmode))),
776+
std::sqrt(collision.qvecFT0CReVec()[0] * collision.qvecFT0CReVec()[0] + collision.qvecFT0CImVec()[0] * collision.qvecFT0CImVec()[0]) * std::sqrt(collision.sumAmplFT0C()),
777+
v0.mAntiLambda());
727778
}
728779
LambdaVec = protonVec + pionVec;
729780
LambdaVec.SetM(massLambda);
@@ -790,37 +841,19 @@ struct FlowEseTask {
790841
qvecMag *= std::sqrt(std::pow(collision.qvecIm()[3 + (nmode - 2) * 28], 2) + std::pow(collision.qvecRe()[3 + (nmode - 2) * 28], 2));
791842

792843
if (nmode == kCorrLevel[0]) { ////////////
844+
double q2 = std::sqrt(collision.qvecFT0CReVec()[0] * collision.qvecFT0CReVec()[0] + collision.qvecFT0CImVec()[0] * collision.qvecFT0CImVec()[0]) * std::sqrt(collision.sumAmplFT0C());
793845
if (lambdaTag) {
794-
double q2 = std::sqrt(collision.qvecFT0CReVec()[0] * collision.qvecFT0CReVec()[0] + collision.qvecFT0CImVec()[0] * collision.qvecFT0CImVec()[0]) * std::sqrt(collision.sumAmplFT0C());
795846
histos.fill(HIST("psi2/h_lambda_cos"), v0.mLambda(), v0.pt(), angle * weight, centrality, relphi);
796847
histos.fill(HIST("psi2/h_lambda_cos2"), v0.mLambda(), v0.pt(), angle * angle, centrality, relphi);
797848
histos.fill(HIST("psi2/h_lambda_cossin"), v0.mLambda(), v0.pt(), angle * std::sin(relphi) * weight, centrality);
798849
histos.fill(HIST("psi2/h_lambda_vncos"), v0.mLambda(), v0.pt(), qvecMag * std::cos(relphi) * weight, centrality);
799850
histos.fill(HIST("psi2/h_lambda_vnsin"), v0.mLambda(), v0.pt(), std::sin(relphi), centrality);
800851

801-
histos.fill(HIST("psi2/h_lambda_cos2_q2"), centrality, std::sqrt(collision.qvecFT0CReVec()[0] * collision.qvecFT0CReVec()[0] + collision.qvecFT0CImVec()[0] * collision.qvecFT0CImVec()[0]) * std::sqrt(collision.sumAmplFT0C()), angle * angle);
802-
histos.fill(HIST("psi2/h_lambda_cossin_q2"), centrality, std::sqrt(collision.qvecFT0CReVec()[0] * collision.qvecFT0CReVec()[0] + collision.qvecFT0CImVec()[0] * collision.qvecFT0CImVec()[0]) * std::sqrt(collision.sumAmplFT0C()), angle * std::sin(relphi) * weight);
852+
histos.fill(HIST("psi2/h_lambda_cos2_q2"), centrality, q2, angle * angle);
853+
histos.fill(HIST("psi2/h_lambda_cossin_q2"), centrality, q2, angle * std::sin(relphi) * weight);
803854

804855
histos.fill(HIST("psi2/h_lambda_cossin_cov"), v0.pt(), angle * angle * angle * std::sin(relphi) * weight, centrality);
805856

806-
histos.fill(HIST("histQvecCent"), std::sqrt(collision.qvecFT0CReVec()[0] * collision.qvecFT0CReVec()[0] + collision.qvecFT0CImVec()[0] * collision.qvecFT0CImVec()[0]) * std::sqrt(collision.sumAmplFT0C()), centrality);
807-
histos.fill(HIST("histQvecV2"), collision.qvecFT0CReVec()[0], collision.qvecFT0CImVec()[0], collision.centFT0C());
808-
histos.fill(HIST("histMult_Cent"), collision.sumAmplFT0C(), collision.centFT0C());
809-
810-
for (int i = 0; i < kCentNum; i++) {
811-
if (centrality >= kCentrality[i] && centrality < kCentrality[i + 1]) {
812-
if (q2 < kLowQvec[i][0]) {
813-
histos.fill(HIST("psi2/h_lambda_cos2_left"), centrality, angle * angle);
814-
histos.fill(HIST("psi2/h_lambda_cossin_left"), centrality, angle * std::sin(relphi) * weight);
815-
} else if (q2 >= kLowQvec[i][1]) {
816-
histos.fill(HIST("psi2/h_lambda_cos2_right"), centrality, angle * angle);
817-
histos.fill(HIST("psi2/h_lambda_cossin_right"), centrality, angle * std::sin(relphi) * weight);
818-
} else {
819-
histos.fill(HIST("psi2/h_lambda_cos2_mid"), centrality, angle * angle);
820-
histos.fill(HIST("psi2/h_lambda_cossin_mid"), centrality, angle * std::sin(relphi) * weight);
821-
}
822-
}
823-
}
824857
if (cfgRapidityDep) {
825858
histos.fill(HIST("psi2/h_lambda_cos2_rap"), v0.mLambda(), v0.pt(), angle * angle, centrality, v0.yLambda(), weight);
826859
}
@@ -870,8 +903,8 @@ struct FlowEseTask {
870903
histos.fill(HIST("psi2/h_alambda_vncos"), v0.mAntiLambda(), v0.pt(), qvecMag * std::cos(relphi) * weight, centrality);
871904
histos.fill(HIST("psi2/h_alambda_vnsin"), v0.mAntiLambda(), v0.pt(), std::sin(relphi), centrality);
872905

873-
histos.fill(HIST("psi2/h_alambda_cos2_q2"), centrality, std::sqrt(collision.qvecFT0CReVec()[0] * collision.qvecFT0CReVec()[0] + collision.qvecFT0CImVec()[0] * collision.qvecFT0CImVec()[0]) * std::sqrt(collision.sumAmplFT0C()), angle * angle);
874-
histos.fill(HIST("psi2/h_alambda_cossin_q2"), centrality, std::sqrt(collision.qvecFT0CReVec()[0] * collision.qvecFT0CReVec()[0] + collision.qvecFT0CImVec()[0] * collision.qvecFT0CImVec()[0]) * std::sqrt(collision.sumAmplFT0C()), angle * std::sin(relphi) * weight);
906+
histos.fill(HIST("psi2/h_alambda_cos2_q2"), centrality, q2, angle * angle);
907+
histos.fill(HIST("psi2/h_alambda_cossin_q2"), centrality, q2, angle * std::sin(relphi) * weight);
875908

876909
histos.fill(HIST("psi2/h_alambda_cossin_cov"), v0.pt(), angle * angle * angle * std::sin(relphi) * weight, centrality);
877910
if (cfgRapidityDep) {
@@ -983,7 +1016,7 @@ struct FlowEseTask {
9831016
}
9841017

9851018
void processData(EventCandidates::iterator const& collision,
986-
TrackCandidates const& /*tracks*/, aod::V0Datas const& V0s,
1019+
TrackCandidates const& tracks, aod::V0Datas const& V0s,
9871020
aod::BCsWithTimestamps const&)
9881021
{
9891022
if (cfgCentEst == kCorrLevel[3]) {
@@ -1024,7 +1057,7 @@ struct FlowEseTask {
10241057
if (cfgQAv0) {
10251058
fillEPQA(collision, i);
10261059
}
1027-
fillHistograms(collision, V0s, i);
1060+
fillHistograms(collision, V0s, tracks, i);
10281061
} // FIXME: need to fill different histograms for different harmonic
10291062
}
10301063
PROCESS_SWITCH(FlowEseTask, processData, "Process Event for data", true);

0 commit comments

Comments
 (0)