Skip to content

Commit aad3bfc

Browse files
authored
[PWGCF] : Flow Event Plane (#13550)
1 parent bf91e79 commit aad3bfc

File tree

1 file changed

+35
-17
lines changed

1 file changed

+35
-17
lines changed

PWGCF/Flow/Tasks/flowEventPlane.cxx

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,12 @@ struct FlowEventPlane {
112112
// Global objects
113113
float cent = 0., mult = 0.;
114114
float posX = 0., posY = 0., posZ = 0.;
115+
115116
std::array<float, 4> znaXWeigthEnergy = {1., 1., 1., 1.};
116117
std::array<float, 4> znaYWeigthEnergy = {1., 1., 1., 1.};
117118
std::array<float, 4> zncXWeigthEnergy = {1., 1., 1., 1.};
118119
std::array<float, 4> zncYWeigthEnergy = {1., 1., 1., 1.};
120+
119121
std::vector<std::vector<std::string>> vCoarseCorrHistNames = {
120122
{"hXZNAVsCentVxVyVz"},
121123
{"hYZNAVsCentVxVyVz"},
@@ -126,8 +128,18 @@ struct FlowEventPlane {
126128
{"hYZNAVsCent", "hYZNAVsVx", "hYZNAVsVy", "hYZNAVsVz"},
127129
{"hXZNCVsCent", "hXZNCVsVx", "hXZNCVsVy", "hXZNCVsVz"},
128130
{"hYZNCVsCent", "hYZNCVsVx", "hYZNCVsVy", "hYZNCVsVz"}};
131+
132+
// Map for Correction Type and Histogram Names
129133
std::map<CorrectionType, std::vector<std::vector<std::string>>> corrTypeHistNameMap = {{kFineCorr, vFineCorrHistNames}, {kCoarseCorr, vCoarseCorrHistNames}};
130134

135+
// Structure to hold CCDB objects
136+
struct CcdbObjects {
137+
TList* ccdbList;
138+
TObject* obj;
139+
TProfile* hp;
140+
THnSparseF* hn;
141+
} ccdbObjects;
142+
131143
void init(InitContext const&)
132144
{
133145
// Set CCDB url
@@ -181,14 +193,14 @@ struct FlowEventPlane {
181193
histos.add("QA/hZNCSignalSector2", "ZNC Signal Sector 2", kTH1F, {axisZDCEnergy});
182194
histos.add("QA/hZNCSignalSector3", "ZNC Signal Sector 3", kTH1F, {axisZDCEnergy});
183195
histos.add("QA/hZNCSignalSector4", "ZNC Signal Sector 4", kTH1F, {axisZDCEnergy});
184-
histos.add("CorrHist/hWtXZNA", "X^{ZNA}_{1}", kTHnF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
185-
histos.add("CorrHist/hWtYZNA", "Y^{ZNA}_{1}", kTHnF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
186-
histos.add("CorrHist/hWtXZNC", "X^{ZNC}_{1}", kTHnF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
187-
histos.add("CorrHist/hWtYZNC", "Y^{ZNC}_{1}", kTHnF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
188-
histos.add("CorrHist/hUWtXZNA", "X^{ZNA}_{1}", kTHnF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
189-
histos.add("CorrHist/hUWtYZNA", "Y^{ZNA}_{1}", kTHnF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
190-
histos.add("CorrHist/hUWtXZNC", "X^{ZNC}_{1}", kTHnF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
191-
histos.add("CorrHist/hUWtYZNC", "Y^{ZNC}_{1}", kTHnF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
196+
histos.add("CorrHist/hWtXZNA", "X^{ZNA}_{1}", kTHnSparseF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
197+
histos.add("CorrHist/hWtYZNA", "Y^{ZNA}_{1}", kTHnSparseF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
198+
histos.add("CorrHist/hWtXZNC", "X^{ZNC}_{1}", kTHnSparseF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
199+
histos.add("CorrHist/hWtYZNC", "Y^{ZNC}_{1}", kTHnSparseF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
200+
histos.add("CorrHist/hUWtXZNA", "X^{ZNA}_{1}", kTHnSparseF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
201+
histos.add("CorrHist/hUWtYZNA", "Y^{ZNA}_{1}", kTHnSparseF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
202+
histos.add("CorrHist/hUWtXZNC", "X^{ZNC}_{1}", kTHnSparseF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
203+
histos.add("CorrHist/hUWtYZNC", "Y^{ZNC}_{1}", kTHnSparseF, {axisCoarseCent, axisCoarseVx, axisCoarseVy, axisCoarseVz});
192204
histos.add("CorrHist/hXZNAVsCent", "X^{ZNA}_{1} Vs Cent", kTProfile, {axisFineCent});
193205
histos.add("CorrHist/hXZNAVsVx", "X^{ZNA}_{1} Vs V_{x}", kTProfile, {axisFineVx});
194206
histos.add("CorrHist/hXZNAVsVy", "X^{ZNA}_{1} Vs V_{y}", kTProfile, {axisFineVy});
@@ -214,6 +226,8 @@ struct FlowEventPlane {
214226
histos.add("TrackQA/hPtDcaXY", "DCA_{XY} vs p_{T}", kTH2F, {axisTrackPt, axisTrackDcaXY});
215227
histos.add("TrackQA/hPtDcaZ", "DCA_{Z} vs p_{T}", kTH2F, {axisTrackPt, axisTrackDcaZ});
216228
histos.add("DF/hQaQc", "X^{A}_{1}X^{C}_{1} + Y^{A}_{1}Y^{C}_{1}", kTProfile, {axisCent});
229+
histos.add("DF/hAQu", "u_{x}X^{A}_{1} + u_{y}Y^{A}_{1}", kTH3F, {axisCent, axisV1, axisTrackEta});
230+
histos.add("DF/hCQu", "u_{x}X^{C}_{1} + u_{y}Y^{C}_{1}", kTH3F, {axisCent, axisV1, axisTrackEta});
217231
histos.add("DF/hAQuPos", "u_{x}X^{A}_{1} + u_{y}Y^{A}_{1}", kTH3F, {axisCent, axisV1, axisTrackEta});
218232
histos.add("DF/hCQuPos", "u_{x}X^{C}_{1} + u_{y}Y^{C}_{1}", kTH3F, {axisCent, axisV1, axisTrackEta});
219233
histos.add("DF/hAQuNeg", "u_{x}X^{A}_{1} + u_{y}Y^{A}_{1}", kTH3F, {axisCent, axisV1, axisTrackEta});
@@ -303,16 +317,18 @@ struct FlowEventPlane {
303317
for (auto const& x : vHistNames) {
304318
int cntry = 0;
305319
for (auto const& y : x) {
306-
TObject* obj = reinterpret_cast<TObject*>(ccdbObject->FindObject(y.c_str()));
320+
ccdbObjects.obj = reinterpret_cast<TObject*>(ccdbObject->FindObject(y.c_str()));
307321
if (corrType == kFineCorr) {
308-
TProfile* hp = reinterpret_cast<TProfile*>(obj->Clone());
309-
vAvgOutput[cntrx] += hp->GetBinContent(hp->GetXaxis()->FindBin(vCollParam[cntry]));
322+
ccdbObjects.hp = reinterpret_cast<TProfile*>(ccdbObjects.obj->Clone());
323+
vAvgOutput[cntrx] += ccdbObjects.hp->GetBinContent(ccdbObjects.hp->GetXaxis()->FindBin(vCollParam[cntry]));
324+
delete ccdbObjects.hp;
310325
} else {
311-
THnF* hn = reinterpret_cast<THnF*>(obj->Clone());
326+
ccdbObjects.hn = reinterpret_cast<THnSparseF*>(ccdbObjects.obj->Clone());
312327
for (int i = 0; i < static_cast<int>(vHistNames.size()); ++i) {
313-
binarray[i] = hn->GetAxis(i)->FindBin(vCollParam[i]);
328+
binarray[i] = ccdbObjects.hn->GetAxis(i)->FindBin(vCollParam[i]);
314329
}
315-
vAvgOutput[cntrx] += hn->GetBinContent(hn->GetBin(binarray));
330+
vAvgOutput[cntrx] += ccdbObjects.hn->GetBinContent(ccdbObjects.hn->GetBin(binarray));
331+
delete ccdbObjects.hn;
316332
}
317333
++cntry;
318334
}
@@ -345,16 +361,16 @@ struct FlowEventPlane {
345361
ccdbPath = static_cast<std::string>(cCcdbPath) + "/CorrItr_" + std::to_string(i + 1) + "/Run" + std::to_string(runNumber);
346362

347363
// Get object from CCDB
348-
auto ccdbObj = ccdbService->getForTimeStamp<TList>(ccdbPath, -1);
364+
ccdbObjects.ccdbList = ccdbService->getForTimeStamp<TList>(ccdbPath, -1);
349365

350366
// Check CCDB Object
351-
if (!ccdbObj) {
367+
if (!ccdbObjects.ccdbList) {
352368
LOGF(warning, "CCDB OBJECT NOT FOUND");
353369
return;
354370
}
355371

356372
// Get averages
357-
std::vector<float> vAvg = getAvgCorrFactors(ccdbObj, corrType, inputParam);
373+
std::vector<float> vAvg = getAvgCorrFactors(ccdbObjects.ccdbList, corrType, inputParam);
358374

359375
// Apply correction
360376
outputParam[kXa] -= vAvg[kXa];
@@ -514,6 +530,8 @@ struct FlowEventPlane {
514530
v1c = ux * vSP[kXc] + uy * vSP[kYc];
515531

516532
// Fill histogram
533+
histos.fill(HIST("DF/hAQu"), cent, v1a, track.eta());
534+
histos.fill(HIST("DF/hCQu"), cent, v1c, track.eta());
517535
if (track.sign() > 0) {
518536
histos.fill(HIST("DF/hAQuPos"), cent, v1a, track.eta());
519537
histos.fill(HIST("DF/hCQuPos"), cent, v1c, track.eta());

0 commit comments

Comments
 (0)