Skip to content

Commit cdfcc63

Browse files
authored
[PWGCF] Add phi-invmass histo for V0 and casc NUA (#16347)
1 parent 19aa0a0 commit cdfcc63

1 file changed

Lines changed: 92 additions & 46 deletions

File tree

PWGCF/Flow/Tasks/flowGfwOmegaXi.cxx

Lines changed: 92 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,11 @@ struct FlowGfwOmegaXi {
110110
std::string prefix = "v0BuilderOpts";
111111
// topological cut for V0
112112
O2_DEFINE_CONFIGURABLE(cfgv0_radius, float, 5.0f, "minimum decay radius")
113+
O2_DEFINE_CONFIGURABLE(cfgv0_radiusmax, float, 100.0f, "maximum decay radius")
113114
O2_DEFINE_CONFIGURABLE(cfgv0_v0cospa, float, 0.995f, "minimum cosine of pointing angle")
114-
O2_DEFINE_CONFIGURABLE(cfgv0_dcadautopv, float, 0.1f, "minimum daughter DCA to PV")
115+
O2_DEFINE_CONFIGURABLE(cfgv0_dcak0daupitopv, float, 0.01f, "minimum daughter pion DCA to PV")
116+
O2_DEFINE_CONFIGURABLE(cfgv0_dcadaupitopv, float, 0.01f, "minimum daughter pion DCA to PV")
117+
O2_DEFINE_CONFIGURABLE(cfgv0_dcadauprtopv, float, 0.1f, "minimum daughter proton DCA to PV")
115118
O2_DEFINE_CONFIGURABLE(cfgv0_dcav0dau, float, 0.5f, "maximum DCA among V0 daughters")
116119
O2_DEFINE_CONFIGURABLE(cfgv0_mk0swindow, float, 0.1f, "Invariant mass window of K0s")
117120
O2_DEFINE_CONFIGURABLE(cfgv0_mlambdawindow, float, 0.04f, "Invariant mass window of lambda")
@@ -198,6 +201,7 @@ struct FlowGfwOmegaXi {
198201
O2_DEFINE_CONFIGURABLE(cfgLocDenParaLambda, std::vector<double>, (std::vector<double>{-0.000510948, -4.4846, -0.000460629, -4.14465, -0.000433729, -3.94173, -0.000412751, -3.81839, -0.000411211, -3.72502, -0.000401511, -3.68426, -0.000407461, -3.67005, -0.000379371, -3.71153, -0.000392828, -3.73214, -0.000403996, -3.80717, -0.000403376, -3.90917, -0.000354624, -4.34629, -0.000477606, -4.66307, -0.000541139, -4.61364}), "Local density efficiency function parameter for Lambda, exp(Ax + B)")
199202
O2_DEFINE_CONFIGURABLE(cfgRunNumbers, std::vector<int>, (std::vector<int>{544095, 544098, 544116, 544121, 544122, 544123, 544124}), "Preconfigured run numbers")
200203
O2_DEFINE_CONFIGURABLE(cfgEtagapEdge, std::vector<double>, (std::vector<double>{-0.8, -0.4, 0.4, 0.8}), "sub-event eta range A: ([0], [1]) and C: ([2], [3])")
204+
O2_DEFINE_CONFIGURABLE(cfgEtagapEdgeREF, std::vector<double>, (std::vector<double>{-0.8, -0.4, 0.4, 0.8}), "sub-event eta range for REF. A: ([0], [1]) and C: ([2], [3])")
201205
// switch
202206
O2_DEFINE_CONFIGURABLE(cfgDoAccEffCorr, bool, false, "do acc and eff corr")
203207
O2_DEFINE_CONFIGURABLE(cfgDoLocDenCorr, bool, false, "do local density corr")
@@ -259,7 +263,8 @@ struct FlowGfwOmegaXi {
259263
std::vector<float> cfgMultPVCutPara;
260264
std::vector<int> cfgmassbins;
261265
std::vector<int> runNumbers;
262-
std::vector<double> EtagapEdge;
266+
std::vector<double> etagapEdge;
267+
std::vector<double> etagapEdgeREF;
263268
std::map<int, std::vector<std::shared_ptr<TH1>>> th1sList;
264269
std::map<int, std::vector<std::shared_ptr<TH3>>> th3sList;
265270
enum OutputTH1Names {
@@ -332,7 +337,8 @@ struct FlowGfwOmegaXi {
332337
cfgNSigma = cfgNSigmapid;
333338
cfgmassbins = cfgMassBins;
334339
cfgMultPVCutPara = evtSeleOpts.cfgMultPVCut;
335-
EtagapEdge = cfgEtagapEdge;
340+
etagapEdge = cfgEtagapEdge;
341+
etagapEdgeREF = cfgEtagapEdgeREF;
336342

337343
// Set the pt, mult and phi Axis;
338344
o2::framework::AxisSpec axisPt = cfgaxisPt;
@@ -367,6 +373,11 @@ struct FlowGfwOmegaXi {
367373

368374
fLambdaMass = new TAxis(cfgmassbins[1], 1.08, 1.16);
369375

376+
AxisSpec axisOmegaMass = {80, 1.63f, 1.71f, "Inv. Mass (GeV)"};
377+
AxisSpec axisXiMass = {80, 1.29f, 1.37f, "Inv. Mass (GeV)"};
378+
AxisSpec axisK0sMass = {400, 0.4f, 0.6f, "Inv. Mass (GeV)"};
379+
AxisSpec axisLambdaMass = {160, 1.08f, 1.16f, "Inv. Mass (GeV)"};
380+
370381
// Add some output objects to the histogram registry
371382
registry.add("hPhi", "", {HistType::kTH1D, {cfgaxisPhi}});
372383
registry.add("hPhicorr", "", {HistType::kTH1D, {cfgaxisPhi}});
@@ -418,6 +429,10 @@ struct FlowGfwOmegaXi {
418429
registry.get<THnSparse>(HIST("correction/hRunNumberPhiEtaVertexXi"))->GetAxis(0)->SetBinLabel(idx, std::to_string(runNumbers[idx - 1]).c_str());
419430
registry.get<THnSparse>(HIST("correction/hRunNumberPhiEtaVertexOmega"))->GetAxis(0)->SetBinLabel(idx, std::to_string(runNumbers[idx - 1]).c_str());
420431
}
432+
registry.add("correction/hPhiEtaInvmassK0s", "", {HistType::kTH3D, {cfgaxisPhi, cfgaxisEta, axisK0sMass}});
433+
registry.add("correction/hPhiEtaInvmassLambda", "", {HistType::kTH3D, {cfgaxisPhi, cfgaxisEta, axisLambdaMass}});
434+
registry.add("correction/hPhiEtaInvmassXi", "", {HistType::kTH3D, {cfgaxisPhi, cfgaxisEta, axisXiMass}});
435+
registry.add("correction/hPhiEtaInvmassOmega", "", {HistType::kTH3D, {cfgaxisPhi, cfgaxisEta, axisOmegaMass}});
421436
}
422437

423438
registry.add("hEventCount", "", {HistType::kTH1D, {{14, 0, 14}}});
@@ -591,10 +606,6 @@ struct FlowGfwOmegaXi {
591606
registry.add("MC/Lambdac22dptMC", ";pt ; C_{2}{2} ", {HistType::kTProfile2D, {cfgaxisPtLambda, axisMultiplicity}});
592607
}
593608
// InvMass(GeV) of casc and v0
594-
AxisSpec axisOmegaMass = {80, 1.63f, 1.71f, "Inv. Mass (GeV)"};
595-
AxisSpec axisXiMass = {80, 1.29f, 1.37f, "Inv. Mass (GeV)"};
596-
AxisSpec axisK0sMass = {400, 0.4f, 0.6f, "Inv. Mass (GeV)"};
597-
AxisSpec axisLambdaMass = {160, 1.08f, 1.16f, "Inv. Mass (GeV)"};
598609
if (cfgOutputCasc) {
599610
registry.add("InvMassXi_all", "", {HistType::kTHnSparseF, {cfgaxisPtXi, axisXiMass, cfgaxisEta, axisMultiplicity}});
600611
registry.add("InvMassOmega_all", "", {HistType::kTHnSparseF, {cfgaxisPtOmega, axisOmegaMass, cfgaxisEta, axisMultiplicity}});
@@ -631,46 +642,46 @@ struct FlowGfwOmegaXi {
631642
}
632643

633644
// Data
634-
fGFW->AddRegion("reffull", EtagapEdge[0], EtagapEdge[3], 1, 1); // ("name", etamin, etamax, ptbinnum, bitmask)eta region -0.8 to 0.8
645+
fGFW->AddRegion("reffull", etagapEdgeREF[0], etagapEdgeREF[3], 1, 1); // ("name", etamin, etamax, ptbinnum, bitmask)eta region -0.8 to 0.8
635646
int nK0sptMassBins = nK0sPtBins * cfgmassbins[0];
636647
int nLambdaptMassBins = nLambdaPtBins * cfgmassbins[1];
637648
int nXiptMassBins = nXiPtBins * cfgmassbins[2];
638649
int nOmegaptMassBins = nXiPtBins * cfgmassbins[3];
639650

640-
fGFW->AddRegion("refN10", EtagapEdge[0], EtagapEdge[1], 1, 1);
641-
fGFW->AddRegion("refP10", EtagapEdge[2], EtagapEdge[3], 1, 1);
651+
fGFW->AddRegion("refN10", etagapEdgeREF[0], etagapEdgeREF[1], 1, 1);
652+
fGFW->AddRegion("refP10", etagapEdgeREF[2], etagapEdgeREF[3], 1, 1);
642653

643-
fGFW->AddRegion("poiN10dpt", EtagapEdge[0], EtagapEdge[1], nPtBins, 32);
644-
fGFW->AddRegion("poiP10dpt", EtagapEdge[2], EtagapEdge[3], nPtBins, 32);
645-
fGFW->AddRegion("poifulldpt", EtagapEdge[0], EtagapEdge[3], nPtBins, 32);
646-
fGFW->AddRegion("poioldpt", EtagapEdge[0], EtagapEdge[3], nPtBins, 1);
654+
fGFW->AddRegion("poiN10dpt", etagapEdge[0], etagapEdge[1], nPtBins + 1, 32);
655+
fGFW->AddRegion("poiP10dpt", etagapEdge[2], etagapEdge[3], nPtBins + 1, 32);
656+
fGFW->AddRegion("poifulldpt", etagapEdge[0], etagapEdge[3], nPtBins + 1, 32);
657+
fGFW->AddRegion("poioldpt", etagapEdge[0], etagapEdge[3], nPtBins + 1, 1);
647658

648-
fGFW->AddRegion("poiXiPdpt", EtagapEdge[2], EtagapEdge[3], nXiptMassBins, 2);
649-
fGFW->AddRegion("poiXiNdpt", EtagapEdge[0], EtagapEdge[1], nXiptMassBins, 2);
650-
fGFW->AddRegion("poiXifulldpt", EtagapEdge[0], EtagapEdge[3], nXiptMassBins, 2);
659+
fGFW->AddRegion("poiXiPdpt", etagapEdge[2], etagapEdge[3], nXiptMassBins + 1, 2);
660+
fGFW->AddRegion("poiXiNdpt", etagapEdge[0], etagapEdge[1], nXiptMassBins + 1, 2);
661+
fGFW->AddRegion("poiXifulldpt", etagapEdge[0], etagapEdge[3], nXiptMassBins + 1, 2);
651662

652-
fGFW->AddRegion("poiOmegaPdpt", EtagapEdge[2], EtagapEdge[3], nOmegaptMassBins, 4);
653-
fGFW->AddRegion("poiOmegaNdpt", EtagapEdge[0], EtagapEdge[1], nOmegaptMassBins, 4);
654-
fGFW->AddRegion("poiOmegafulldpt", EtagapEdge[0], EtagapEdge[3], nOmegaptMassBins, 4);
663+
fGFW->AddRegion("poiOmegaPdpt", etagapEdge[2], etagapEdge[3], nOmegaptMassBins + 1, 4);
664+
fGFW->AddRegion("poiOmegaNdpt", etagapEdge[0], etagapEdge[1], nOmegaptMassBins + 1, 4);
665+
fGFW->AddRegion("poiOmegafulldpt", etagapEdge[0], etagapEdge[3], nOmegaptMassBins + 1, 4);
655666

656-
fGFW->AddRegion("poiK0sPdpt", EtagapEdge[2], EtagapEdge[3], nK0sptMassBins, 8);
657-
fGFW->AddRegion("poiK0sNdpt", EtagapEdge[0], EtagapEdge[1], nK0sptMassBins, 8);
658-
fGFW->AddRegion("poiK0sfulldpt", EtagapEdge[0], EtagapEdge[3], nK0sptMassBins, 8);
667+
fGFW->AddRegion("poiK0sPdpt", etagapEdge[2], etagapEdge[3], nK0sptMassBins + 1, 8);
668+
fGFW->AddRegion("poiK0sNdpt", etagapEdge[0], etagapEdge[1], nK0sptMassBins + 1, 8);
669+
fGFW->AddRegion("poiK0sfulldpt", etagapEdge[0], etagapEdge[3], nK0sptMassBins + 1, 8);
659670

660-
fGFW->AddRegion("poiLambdaPdpt", EtagapEdge[2], EtagapEdge[3], nLambdaptMassBins, 16);
661-
fGFW->AddRegion("poiLambdaNdpt", EtagapEdge[0], EtagapEdge[1], nLambdaptMassBins, 16);
662-
fGFW->AddRegion("poiLambdafulldpt", EtagapEdge[0], EtagapEdge[3], nLambdaptMassBins, 16);
671+
fGFW->AddRegion("poiLambdaPdpt", etagapEdge[2], etagapEdge[3], nLambdaptMassBins + 1, 16);
672+
fGFW->AddRegion("poiLambdaNdpt", etagapEdge[0], etagapEdge[1], nLambdaptMassBins + 1, 16);
673+
fGFW->AddRegion("poiLambdafulldpt", etagapEdge[0], etagapEdge[3], nLambdaptMassBins + 1, 16);
663674
// MC
664-
fGFW->AddRegion("refN10MC", EtagapEdge[0], EtagapEdge[1], 1, 64);
665-
fGFW->AddRegion("refP10MC", EtagapEdge[2], EtagapEdge[3], 1, 64);
666-
fGFW->AddRegion("poiXiPdptMC", EtagapEdge[2], EtagapEdge[3], nXiptMassBins, 128);
667-
fGFW->AddRegion("poiXiNdptMC", EtagapEdge[0], EtagapEdge[1], nXiptMassBins, 128);
668-
fGFW->AddRegion("poiOmegaPdptMC", EtagapEdge[2], EtagapEdge[3], nOmegaptMassBins, 256);
669-
fGFW->AddRegion("poiOmegaNdptMC", EtagapEdge[0], EtagapEdge[1], nOmegaptMassBins, 256);
670-
fGFW->AddRegion("poiK0sPdptMC", EtagapEdge[2], EtagapEdge[3], nK0sptMassBins, 512);
671-
fGFW->AddRegion("poiK0sNdptMC", EtagapEdge[0], EtagapEdge[1], nK0sptMassBins, 512);
672-
fGFW->AddRegion("poiLambdaPdptMC", EtagapEdge[2], EtagapEdge[3], nLambdaptMassBins, 1024);
673-
fGFW->AddRegion("poiLambdaNdptMC", EtagapEdge[0], EtagapEdge[1], nLambdaptMassBins, 1024);
675+
fGFW->AddRegion("refN10MC", etagapEdgeREF[0], etagapEdgeREF[1], 1, 64);
676+
fGFW->AddRegion("refP10MC", etagapEdgeREF[2], etagapEdgeREF[3], 1, 64);
677+
fGFW->AddRegion("poiXiPdptMC", etagapEdge[2], etagapEdge[3], nXiptMassBins, 128);
678+
fGFW->AddRegion("poiXiNdptMC", etagapEdge[0], etagapEdge[1], nXiptMassBins, 128);
679+
fGFW->AddRegion("poiOmegaPdptMC", etagapEdge[2], etagapEdge[3], nOmegaptMassBins, 256);
680+
fGFW->AddRegion("poiOmegaNdptMC", etagapEdge[0], etagapEdge[1], nOmegaptMassBins, 256);
681+
fGFW->AddRegion("poiK0sPdptMC", etagapEdge[2], etagapEdge[3], nK0sptMassBins, 512);
682+
fGFW->AddRegion("poiK0sNdptMC", etagapEdge[0], etagapEdge[1], nK0sptMassBins, 512);
683+
fGFW->AddRegion("poiLambdaPdptMC", etagapEdge[2], etagapEdge[3], nLambdaptMassBins, 1024);
684+
fGFW->AddRegion("poiLambdaNdptMC", etagapEdge[0], etagapEdge[1], nLambdaptMassBins, 1024);
674685
// pushback
675686
// Data
676687
// v2
@@ -1255,27 +1266,40 @@ struct FlowGfwOmegaXi {
12551266
float ctau = 0;
12561267
if (isK0s) {
12571268
ctau = v0.distovertotmom(collision.posX(), collision.posY(), collision.posZ()) * o2::constants::physics::MassK0Short;
1258-
if (ctau < v0BuilderOpts.cfgv0_ctauK0s.value)
1269+
if (ctau > v0BuilderOpts.cfgv0_ctauK0s.value)
12591270
isK0s = false;
1271+
if (std::fabs(v0.dcapostopv()) < v0BuilderOpts.cfgv0_dcak0daupitopv.value)
1272+
continue;
1273+
if (std::fabs(v0.dcanegtopv()) < v0BuilderOpts.cfgv0_dcak0daupitopv.value)
1274+
continue;
12601275
}
12611276
if (isLambda || isALambda) {
12621277
ctau = v0.distovertotmom(collision.posX(), collision.posY(), collision.posZ()) * o2::constants::physics::MassLambda0;
1263-
if (ctau < v0BuilderOpts.cfgv0_ctauLambda.value) {
1278+
if (ctau > v0BuilderOpts.cfgv0_ctauLambda.value) {
12641279
isLambda = false;
12651280
isALambda = false;
12661281
}
1282+
if (isLambda) {
1283+
if (std::fabs(v0.dcapostopv()) < v0BuilderOpts.cfgv0_dcadauprtopv.value)
1284+
continue;
1285+
if (std::fabs(v0.dcanegtopv()) < v0BuilderOpts.cfgv0_dcadaupitopv.value)
1286+
continue;
1287+
} else {
1288+
if (std::fabs(v0.dcapostopv()) < v0BuilderOpts.cfgv0_dcadaupitopv.value)
1289+
continue;
1290+
if (std::fabs(v0.dcanegtopv()) < v0BuilderOpts.cfgv0_dcadauprtopv.value)
1291+
continue;
1292+
}
12671293
}
12681294
// // topological cut
12691295
if (v0.v0radius() < v0BuilderOpts.cfgv0_radius.value)
12701296
continue;
1297+
if (v0.v0radius() > v0BuilderOpts.cfgv0_radiusmax.value)
1298+
continue;
12711299
if (v0.v0cosPA() < v0BuilderOpts.cfgv0_v0cospa.value)
12721300
continue;
12731301
if (v0.dcaV0daughters() > v0BuilderOpts.cfgv0_dcav0dau.value)
12741302
continue;
1275-
if (std::fabs(v0.dcapostopv()) < v0BuilderOpts.cfgv0_dcadautopv.value)
1276-
continue;
1277-
if (std::fabs(v0.dcanegtopv()) < v0BuilderOpts.cfgv0_dcadautopv.value)
1278-
continue;
12791303
if (isK0s && std::fabs(v0.mLambda() - o2::constants::physics::MassLambda0) < v0BuilderOpts.cfgv0_compmassrejLambda.value)
12801304
isK0s = false;
12811305
if (isK0s && std::fabs(v0.mAntiLambda() - o2::constants::physics::MassLambda0) < v0BuilderOpts.cfgv0_compmassrejLambda.value)
@@ -1340,6 +1364,7 @@ struct FlowGfwOmegaXi {
13401364
th1sList[runNumber][hPhiK0scorr]->Fill(v0.phi(), wacc);
13411365
}
13421366
registry.fill(HIST("correction/hRunNumberPhiEtaVertexK0s"), matchedPosition, v0.phi(), v0.eta(), vtxz);
1367+
registry.fill(HIST("correction/hPhiEtaInvmassK0s"), v0.phi(), v0.eta(), v0.mK0Short());
13431368
}
13441369
}
13451370
if (isLambda || isALambda) {
@@ -1373,6 +1398,10 @@ struct FlowGfwOmegaXi {
13731398
th1sList[runNumber][hPhiLambdacorr]->Fill(v0.phi(), wacc);
13741399
}
13751400
registry.fill(HIST("correction/hRunNumberPhiEtaVertexLambda"), matchedPosition, v0.phi(), v0.eta(), vtxz);
1401+
if (isLambda)
1402+
registry.fill(HIST("correction/hPhiEtaInvmassLambda"), matchedPosition, v0.phi(), v0.eta(), v0.mLambda());
1403+
if (isALambda)
1404+
registry.fill(HIST("correction/hPhiEtaInvmassLambda"), matchedPosition, v0.phi(), v0.eta(), v0.mAntiLambda());
13761405
}
13771406
}
13781407
}
@@ -1607,6 +1636,7 @@ struct FlowGfwOmegaXi {
16071636
th1sList[runNumber][hPhiOmegacorr]->Fill(casc.phi(), wacc);
16081637
}
16091638
registry.fill(HIST("correction/hRunNumberPhiEtaVertexOmega"), matchedPosition, casc.phi(), casc.eta(), vtxz);
1639+
registry.fill(HIST("correction/hPhiEtaInvmassOmega"), casc.phi(), casc.eta(), casc.mOmega());
16101640
}
16111641
}
16121642
if (isXi) {
@@ -1636,6 +1666,7 @@ struct FlowGfwOmegaXi {
16361666
th1sList[runNumber][hPhiXicorr]->Fill(casc.phi(), wacc);
16371667
}
16381668
registry.fill(HIST("correction/hRunNumberPhiEtaVertexXi"), matchedPosition, casc.phi(), casc.eta(), vtxz);
1669+
registry.fill(HIST("correction/hPhiEtaInvmassXi"), casc.phi(), casc.eta(), casc.mXi());
16391670
}
16401671
}
16411672
}
@@ -2163,10 +2194,25 @@ struct FlowGfwOmegaXi {
21632194
continue;
21642195
if (v0.dcaV0daughters() > v0BuilderOpts.cfgv0_dcav0dau.value)
21652196
continue;
2166-
if (std::fabs(v0.dcapostopv()) < v0BuilderOpts.cfgv0_dcadautopv.value)
2167-
continue;
2168-
if (std::fabs(v0.dcanegtopv()) < v0BuilderOpts.cfgv0_dcadautopv.value)
2169-
continue;
2197+
if (pdgCode == kK0Short) {
2198+
if (std::fabs(v0.dcapostopv()) < v0BuilderOpts.cfgv0_dcak0daupitopv.value)
2199+
continue;
2200+
if (std::fabs(v0.dcanegtopv()) < v0BuilderOpts.cfgv0_dcak0daupitopv.value)
2201+
continue;
2202+
}
2203+
if (pdgCode == kLambda0 || pdgCode == kLambda0Bar) {
2204+
if (pdgCode == kLambda0) {
2205+
if (std::fabs(v0.dcapostopv()) < v0BuilderOpts.cfgv0_dcadauprtopv.value)
2206+
continue;
2207+
if (std::fabs(v0.dcanegtopv()) < v0BuilderOpts.cfgv0_dcadaupitopv.value)
2208+
continue;
2209+
} else {
2210+
if (std::fabs(v0.dcapostopv()) < v0BuilderOpts.cfgv0_dcadaupitopv.value)
2211+
continue;
2212+
if (std::fabs(v0.dcanegtopv()) < v0BuilderOpts.cfgv0_dcadauprtopv.value)
2213+
continue;
2214+
}
2215+
}
21702216
// fill QA after cut
21712217
if (cfgOutputQA) {
21722218
if (pdgCode == kK0Short) {

0 commit comments

Comments
 (0)