Skip to content

Commit b74729a

Browse files
authored
[PWGCF] Add eta gap scan for cascades flow (#16014)
1 parent 83ba53c commit b74729a

1 file changed

Lines changed: 69 additions & 36 deletions

File tree

PWGCF/Flow/Tasks/flowGfwOmegaXi.cxx

Lines changed: 69 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ struct FlowGfwOmegaXi {
118118
O2_DEFINE_CONFIGURABLE(cfgv0_ArmPodocut, float, 0.2f, "Armenteros Podolski cut for K0")
119119
O2_DEFINE_CONFIGURABLE(cfgv0_compmassrejLambda, float, 0.01f, "competing mass rejection of lambda")
120120
O2_DEFINE_CONFIGURABLE(cfgv0_compmassrejK0s, float, 0.005f, "competing mass rejection of K0s")
121+
O2_DEFINE_CONFIGURABLE(cfgv0_ctauK0s, float, 20, "Max ctau cut of K0s")
122+
O2_DEFINE_CONFIGURABLE(cfgv0_ctauLambda, float, 30, "Max ctau cut of Lambda")
121123
} v0BuilderOpts;
122124

123125
struct : ConfigurableGroup {
@@ -158,7 +160,8 @@ struct FlowGfwOmegaXi {
158160
O2_DEFINE_CONFIGURABLE(cfgCutPtPIDbachMin, float, 0.15f, "Minimal pT for daughter PID")
159161
O2_DEFINE_CONFIGURABLE(cfgCutPtPIDdauLaPrMin, float, 0.15f, "Minimal pT for daughter PID")
160162
O2_DEFINE_CONFIGURABLE(cfgCutPtPIDdauLaPiMin, float, 0.15f, "Minimal pT for daughter PID")
161-
O2_DEFINE_CONFIGURABLE(cfgCutDCAz, float, 2.0f, "Minimal pT for daughter PID")
163+
O2_DEFINE_CONFIGURABLE(cfgCutDCAz, float, 2.0f, "Maximal DCAz for tracks")
164+
O2_DEFINE_CONFIGURABLE(cfgCutDCAxy, float, 0.1f, "Maximal DCAxy for tracks")
162165
// track quality selections for daughter track
163166
O2_DEFINE_CONFIGURABLE(cfgITSNCls, int, 3, "check minimum number of ITS clusters")
164167
O2_DEFINE_CONFIGURABLE(cfgChITSNCls, int, 5, "check minimum number of ITS clusters")
@@ -194,6 +197,7 @@ struct FlowGfwOmegaXi {
194197
O2_DEFINE_CONFIGURABLE(cfgLocDenParaK0s, std::vector<double>, (std::vector<double>{-0.00043057, -3.2435, -0.000385085, -2.97687, -0.000350298, -2.81502, -0.000326159, -2.71091, -0.000299563, -2.65448, -0.000294284, -2.60865, -0.000277938, -2.589, -0.000277091, -2.56983, -0.000272783, -2.56825, -0.000252706, -2.58996, -0.000247834, -2.63158, -0.00024379, -2.76976, -0.000286468, -2.92484, -0.000310149, -3.27746}), "Local density efficiency function parameter for K0s, exp(Ax + B)")
195198
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)")
196199
O2_DEFINE_CONFIGURABLE(cfgRunNumbers, std::vector<int>, (std::vector<int>{544095, 544098, 544116, 544121, 544122, 544123, 544124}), "Preconfigured run numbers")
200+
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])")
197201
// switch
198202
O2_DEFINE_CONFIGURABLE(cfgDoAccEffCorr, bool, false, "do acc and eff corr")
199203
O2_DEFINE_CONFIGURABLE(cfgDoLocDenCorr, bool, false, "do local density corr")
@@ -225,7 +229,7 @@ struct FlowGfwOmegaXi {
225229
AxisSpec axisMultiplicity{{0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90}, "Centrality (%)"};
226230

227231
Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
228-
Filter trackFilter = (nabs(aod::track::eta) < trkQualityOpts.cfgCutEta.value) && (aod::track::pt > trkQualityOpts.cfgCutPtPOIMin.value) && (aod::track::pt < trkQualityOpts.cfgCutPtPOIMax.value) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t)true)) && (aod::track::tpcChi2NCl < cfgCutChi2prTPCcls) && (nabs(aod::track::dcaZ) < trkQualityOpts.cfgCutDCAz.value);
232+
Filter trackFilter = (nabs(aod::track::eta) < trkQualityOpts.cfgCutEta.value) && (aod::track::pt > trkQualityOpts.cfgCutPtPOIMin.value) && (aod::track::pt < trkQualityOpts.cfgCutPtPOIMax.value) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t)true)) && (aod::track::tpcChi2NCl < cfgCutChi2prTPCcls) && (nabs(aod::track::dcaZ) < trkQualityOpts.cfgCutDCAz.value) && (nabs(aod::track::dcaXY) < trkQualityOpts.cfgCutDCAxy.value);
229233

230234
using TracksPID = soa::Join<aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr, aod::pidTOFPi, aod::pidTOFKa, aod::pidTOFPr>;
231235
using AodTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TrackSelection, o2::aod::TrackSelectionExtension, aod::TracksExtra, TracksPID, aod::TracksIU, aod::TracksDCA>>; // tracks filter
@@ -255,6 +259,7 @@ struct FlowGfwOmegaXi {
255259
std::vector<float> cfgMultPVCutPara;
256260
std::vector<int> cfgmassbins;
257261
std::vector<int> runNumbers;
262+
std::vector<double> EtagapEdge;
258263
std::map<int, std::vector<std::shared_ptr<TH1>>> th1sList;
259264
std::map<int, std::vector<std::shared_ptr<TH3>>> th3sList;
260265
enum OutputTH1Names {
@@ -327,6 +332,7 @@ struct FlowGfwOmegaXi {
327332
cfgNSigma = cfgNSigmapid;
328333
cfgmassbins = cfgMassBins;
329334
cfgMultPVCutPara = evtSeleOpts.cfgMultPVCut;
335+
EtagapEdge = cfgEtagapEdge;
330336

331337
// Set the pt, mult and phi Axis;
332338
o2::framework::AxisSpec axisPt = cfgaxisPt;
@@ -541,7 +547,7 @@ struct FlowGfwOmegaXi {
541547
registry.add("K0sc22dpt", ";pt ; C_{2}{2} ", {HistType::kTProfile3D, {cfgaxisPtK0s, cfgaxisK0sMassforflow, axisMultiplicity}});
542548
registry.add("Lambdac22dpt", ";pt ; C_{2}{2} ", {HistType::kTProfile3D, {cfgaxisPtLambda, cfgaxisLambdaMassforflow, axisMultiplicity}});
543549
registry.add("K0sc24dpt", ";pt ; C_{2}{4} ", {HistType::kTProfile3D, {cfgaxisPtK0s, cfgaxisK0sMassforflow, axisMultiplicity}});
544-
registry.add("Lambdac24dpt", ";pt ; C_{2}{4} ", {HistType::kTProfile3D, {cfgaxisPtK0s, cfgaxisLambdaMassforflow, axisMultiplicity}});
550+
registry.add("Lambdac24dpt", ";pt ; C_{2}{4} ", {HistType::kTProfile3D, {cfgaxisPtLambda, cfgaxisLambdaMassforflow, axisMultiplicity}});
545551
registry.add("K0sc22Fulldpt", ";pt ; C_{2}{2} ", {HistType::kTProfile3D, {cfgaxisPtK0s, cfgaxisK0sMassforflow, axisMultiplicity}});
546552
registry.add("Lambdac22Fulldpt", ";pt ; C_{2}{2} ", {HistType::kTProfile3D, {cfgaxisPtLambda, cfgaxisLambdaMassforflow, axisMultiplicity}});
547553
// v3
@@ -625,42 +631,46 @@ struct FlowGfwOmegaXi {
625631
}
626632

627633
// Data
628-
fGFW->AddRegion("reffull", -0.8, 0.8, 1, 1); // ("name", etamin, etamax, ptbinnum, bitmask)eta region -0.8 to 0.8
629-
fGFW->AddRegion("refN10", -0.8, -0.4, 1, 1);
630-
fGFW->AddRegion("refP10", 0.4, 0.8, 1, 1);
631-
// POI
632-
fGFW->AddRegion("poiN10dpt", -0.8, -0.4, nPtBins, 32);
633-
fGFW->AddRegion("poiP10dpt", 0.4, 0.8, nPtBins, 32);
634-
fGFW->AddRegion("poifulldpt", -0.8, 0.8, nPtBins, 32);
635-
fGFW->AddRegion("poioldpt", -0.8, 0.8, nPtBins, 1);
636-
637-
int nXiptMassBins = nXiPtBins * cfgmassbins[2];
638-
fGFW->AddRegion("poiXiPdpt", 0.4, 0.8, nXiptMassBins, 2);
639-
fGFW->AddRegion("poiXiNdpt", -0.8, -0.4, nXiptMassBins, 2);
640-
fGFW->AddRegion("poiXifulldpt", -0.8, 0.8, nXiptMassBins, 2);
641-
int nOmegaptMassBins = nXiPtBins * cfgmassbins[3];
642-
fGFW->AddRegion("poiOmegaPdpt", 0.4, 0.8, nOmegaptMassBins, 4);
643-
fGFW->AddRegion("poiOmegaNdpt", -0.8, -0.4, nOmegaptMassBins, 4);
644-
fGFW->AddRegion("poiOmegafulldpt", -0.8, 0.8, nOmegaptMassBins, 4);
634+
fGFW->AddRegion("reffull", EtagapEdge[0], EtagapEdge[3], 1, 1); // ("name", etamin, etamax, ptbinnum, bitmask)eta region -0.8 to 0.8
645635
int nK0sptMassBins = nK0sPtBins * cfgmassbins[0];
646-
fGFW->AddRegion("poiK0sPdpt", 0.4, 0.8, nK0sptMassBins, 8);
647-
fGFW->AddRegion("poiK0sNdpt", -0.8, -0.4, nK0sptMassBins, 8);
648-
fGFW->AddRegion("poiK0sfulldpt", -0.8, 0.8, nK0sptMassBins, 8);
649636
int nLambdaptMassBins = nLambdaPtBins * cfgmassbins[1];
650-
fGFW->AddRegion("poiLambdaPdpt", 0.4, 0.8, nLambdaptMassBins, 16);
651-
fGFW->AddRegion("poiLambdaNdpt", -0.8, -0.4, nLambdaptMassBins, 16);
652-
fGFW->AddRegion("poiLambdafulldpt", -0.8, 0.8, nLambdaptMassBins, 16);
637+
int nXiptMassBins = nXiPtBins * cfgmassbins[2];
638+
int nOmegaptMassBins = nXiPtBins * cfgmassbins[3];
639+
640+
fGFW->AddRegion("refN10", EtagapEdge[0], EtagapEdge[1], 1, 1);
641+
fGFW->AddRegion("refP10", EtagapEdge[2], EtagapEdge[3], 1, 1);
642+
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);
647+
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);
651+
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);
655+
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);
659+
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);
653663
// MC
654-
fGFW->AddRegion("refN10MC", -0.8, -0.4, 1, 64);
655-
fGFW->AddRegion("refP10MC", 0.4, 0.8, 1, 64);
656-
fGFW->AddRegion("poiXiPdptMC", 0.4, 0.8, nXiptMassBins, 128);
657-
fGFW->AddRegion("poiXiNdptMC", -0.8, -0.4, nXiptMassBins, 128);
658-
fGFW->AddRegion("poiOmegaPdptMC", 0.4, 0.8, nOmegaptMassBins, 256);
659-
fGFW->AddRegion("poiOmegaNdptMC", -0.8, -0.4, nOmegaptMassBins, 256);
660-
fGFW->AddRegion("poiK0sPdptMC", 0.4, 0.8, nK0sptMassBins, 512);
661-
fGFW->AddRegion("poiK0sNdptMC", -0.8, -0.4, nK0sptMassBins, 512);
662-
fGFW->AddRegion("poiLambdaPdptMC", 0.4, 0.8, nLambdaptMassBins, 1024);
663-
fGFW->AddRegion("poiLambdaNdptMC", -0.8, -0.4, nLambdaptMassBins, 1024);
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);
664674
// pushback
665675
// Data
666676
// v2
@@ -1156,6 +1166,10 @@ struct FlowGfwOmegaXi {
11561166
continue;
11571167
if (v0negdau.pt() < trkQualityOpts.cfgCutPtDauMin.value || v0negdau.pt() > trkQualityOpts.cfgCutPtDauMax.value)
11581168
continue;
1169+
if (v0posdau.eta() < trkQualityOpts.cfgCutEta.value || v0posdau.eta() > trkQualityOpts.cfgCutEta.value)
1170+
continue;
1171+
if (v0negdau.eta() < trkQualityOpts.cfgCutEta.value || v0negdau.eta() > trkQualityOpts.cfgCutEta.value)
1172+
continue;
11591173

11601174
// fill QA
11611175
if (cfgOutputQA) {
@@ -1238,6 +1252,19 @@ struct FlowGfwOmegaXi {
12381252
if (!v0negdau.hasTPC() || !v0negdau.hasITS())
12391253
continue;
12401254
}
1255+
float ctau = 0;
1256+
if (isK0s) {
1257+
ctau = v0.distovertotmom(collision.posX(), collision.posY(), collision.posZ()) * o2::constants::physics::MassK0Short;
1258+
if (ctau < v0BuilderOpts.cfgv0_ctauK0s.value)
1259+
isK0s = false;
1260+
}
1261+
if (isLambda || isALambda) {
1262+
ctau = v0.distovertotmom(collision.posX(), collision.posY(), collision.posZ()) * o2::constants::physics::MassLambda0;
1263+
if (ctau < v0BuilderOpts.cfgv0_ctauLambda.value) {
1264+
isLambda = false;
1265+
isALambda = false;
1266+
}
1267+
}
12411268
// // topological cut
12421269
if (v0.v0radius() < v0BuilderOpts.cfgv0_radius.value)
12431270
continue;
@@ -1367,6 +1394,12 @@ struct FlowGfwOmegaXi {
13671394
continue;
13681395
if (negdau.pt() < trkQualityOpts.cfgCutPtDauMin.value || negdau.pt() > trkQualityOpts.cfgCutPtDauMax.value)
13691396
continue;
1397+
if (std::fabs(bachelor.eta()) < trkQualityOpts.cfgCutEta.value)
1398+
continue;
1399+
if (std::fabs(posdau.eta()) < trkQualityOpts.cfgCutEta.value)
1400+
continue;
1401+
if (std::fabs(negdau.eta()) < trkQualityOpts.cfgCutEta.value)
1402+
continue;
13701403

13711404
// Omega and antiOmega
13721405
if (casc.pt() > trkQualityOpts.cfgCutPtOmegaMin.value && casc.pt() < trkQualityOpts.cfgCutPtOmegaMax.value) {

0 commit comments

Comments
 (0)