Skip to content

Commit 39842da

Browse files
EmilGormalibuild
andauthored
[PWGCF] Add additional event sel flags, configurable dcaxy pt-dependence (#11949)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 9690a59 commit 39842da

File tree

1 file changed

+55
-11
lines changed

1 file changed

+55
-11
lines changed

PWGCF/GenericFramework/Tasks/flowGfwLightIons.cxx

Lines changed: 55 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ struct FlowGfwLightIons {
9797
O2_DEFINE_CONFIGURABLE(cfgEfficiency, std::string, "", "CCDB path to efficiency object")
9898
O2_DEFINE_CONFIGURABLE(cfgAcceptance, std::string, "", "CCDB path to acceptance object")
9999
O2_DEFINE_CONFIGURABLE(cfgDCAxyNSigma, float, 7, "Cut on number of sigma deviations from expected DCA in the transverse direction");
100+
O2_DEFINE_CONFIGURABLE(cfgDCAxy, std::string, "(0.0026+0.005/(x^1.01))", "Functional form of pt-dependent DCAxy cut");
100101
O2_DEFINE_CONFIGURABLE(cfgDCAz, float, 2, "Cut on DCA in the longitudinal direction (cm)");
101102
O2_DEFINE_CONFIGURABLE(cfgNTPCCls, float, 50, "Cut on number of TPC clusters found");
102103
O2_DEFINE_CONFIGURABLE(cfgNTPCXrows, float, 70, "Cut on number of TPC crossed rows");
@@ -111,6 +112,8 @@ struct FlowGfwLightIons {
111112
O2_DEFINE_CONFIGURABLE(cfgOccupancySelection, int, 2000, "Max occupancy selection, -999 to disable");
112113
O2_DEFINE_CONFIGURABLE(cfgNoSameBunchPileupCut, bool, true, "kNoSameBunchPileupCut");
113114
O2_DEFINE_CONFIGURABLE(cfgIsGoodZvtxFT0vsPV, bool, true, "kIsGoodZvtxFT0vsPV");
115+
O2_DEFINE_CONFIGURABLE(cfgNoITSROFBorder, bool, true, "kNoITSROFFrameBorder");
116+
O2_DEFINE_CONFIGURABLE(cfgNoTimeFrameBorder, bool, true, "kNoTimeFrameBorder");
114117
O2_DEFINE_CONFIGURABLE(cfgIsGoodITSLayersAll, bool, true, "kIsGoodITSLayersAll");
115118
O2_DEFINE_CONFIGURABLE(cfgNoCollInTimeRangeStandard, bool, true, "kNoCollInTimeRangeStandard");
116119
O2_DEFINE_CONFIGURABLE(cfgDoOccupancySel, bool, true, "Bool for event selection on detector occupancy");
@@ -208,6 +211,8 @@ struct FlowGfwLightIons {
208211
TF1* fMultCutLow = nullptr;
209212
TF1* fMultCutHigh = nullptr;
210213

214+
TF1* fPtDepDCAxy = nullptr;
215+
211216
o2::framework::expressions::Filter collisionFilter = nabs(aod::collision::posZ) < cfgVtxZ;
212217
o2::framework::expressions::Filter trackFilter = nabs(aod::track::eta) < cfgEta && aod::track::pt > cfgPtmin&& aod::track::pt < cfgPtmax && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true)) && (aod::track::itsChi2NCl < cfgChi2PrITSCls) && (aod::track::tpcChi2NCl < cfgChi2PrTPCCls) && nabs(aod::track::dcaZ) < cfgDCAz;
213218

@@ -307,7 +312,7 @@ struct FlowGfwLightIons {
307312
AxisSpec v0aAxis = {200, 0, 200, "N_{ch} (V0A)"};
308313
AxisSpec multpvAxis = {4000, 0, 4000, "N_{ch} (PV)"};
309314
AxisSpec dcaZAXis = {200, -2, 2, "DCA_{z} (cm)"};
310-
AxisSpec dcaXYAXis = {200, -1, 1, "DCA_{xy} (cm)"};
315+
AxisSpec dcaXYAXis = {200, -0.5, 0.5, "DCA_{xy} (cm)"};
311316
std::vector<double> timebinning(289);
312317
std::generate(timebinning.begin(), timebinning.end(), [n = -24 / 288., step = 24 / 288.]() mutable {
313318
n += step;
@@ -375,7 +380,7 @@ struct FlowGfwLightIons {
375380
}
376381

377382
registry.addClone("eventQA/before/", "eventQA/after/");
378-
registry.add("eventQA/eventSel", "Number of Events;; Counts", {HistType::kTH1D, {{11, 0, 11}}});
383+
registry.add("eventQA/eventSel", "Number of Events;; Counts", {HistType::kTH1D, {{13, 0, 13}}});
379384
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(1, "Filtered event");
380385
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(2, "sel8");
381386
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(3, "occupancy");
@@ -385,8 +390,10 @@ struct FlowGfwLightIons {
385390
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(7, "kNoCollInTimeRangeStandard");
386391
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(8, "kIsVertexITSTPC");
387392
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(9, "kIsGoodITSLayersAll");
388-
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(10, "after Mult cuts");
389-
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(11, "has track + within cent");
393+
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(10, "kNoITSROFBorder");
394+
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(11, "kNoTimeFrameBorder");
395+
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(12, "after Mult cuts");
396+
registry.get<TH1>(HIST("eventQA/eventSel"))->GetXaxis()->SetBinLabel(13, "has track + within cent");
390397

391398
if (!cfgRunByRun && cfgFillWeights) {
392399
registry.add<TH3>("phi_eta_vtxz_ref", "", {HistType::kTH3D, {phiAxis, etaAxis, vtxAxis}});
@@ -423,6 +430,11 @@ struct FlowGfwLightIons {
423430
fFCptgen->setUseCentralMoments(cfgUseCentralMoments);
424431
fFCptgen->setUseGapMethod(true);
425432
fFCptgen->initialise(multAxis, cfgMpar, o2::analysis::gfw::configs, cfgNbootstrap);
433+
434+
fPtDepDCAxy = new TF1("ptDepDCAxy", Form("[0]*%s", cfgDCAxy->c_str()), 0.001, 100);
435+
fPtDepDCAxy->SetParameter(0, cfgDCAxyNSigma);
436+
LOGF(info, "DCAxy pt-dependence function: %s", Form("[0]*%s", cfgDCAxy->c_str()));
437+
426438
if (cfgUseAdditionalEventCut) {
427439
fMultPVCutLow = new TF1("fMultPVCutLow", cfgMultCorrLowCutFunction->c_str(), 0, 100);
428440
fMultPVCutLow->SetParameters(&(o2::analysis::gfw::multPVCorrCutPars[0]));
@@ -592,6 +604,24 @@ struct FlowGfwLightIons {
592604
if (cfgRunByRun)
593605
th1sList[run][hEventSel]->Fill(8.5);
594606
}
607+
608+
if (cfgNoITSROFBorder) {
609+
if (!collision.selection_bit(o2::aod::evsel::kNoITSROFrameBorder)) {
610+
return 0;
611+
}
612+
registry.fill(HIST("eventQA/eventSel"), 9.5);
613+
if (cfgRunByRun)
614+
th1sList[run][hEventSel]->Fill(9.5);
615+
}
616+
617+
if (cfgNoTimeFrameBorder) {
618+
if (!collision.selection_bit(o2::aod::evsel::kNoTimeFrameBorder)) {
619+
return 0;
620+
}
621+
registry.fill(HIST("eventQA/eventSel"), 10.5);
622+
if (cfgRunByRun)
623+
th1sList[run][hEventSel]->Fill(10.5);
624+
}
595625
float vtxz = -999;
596626
if (collision.numContrib() > 1) {
597627
vtxz = collision.posZ();
@@ -615,17 +645,17 @@ struct FlowGfwLightIons {
615645
return 0;
616646
if (multTrk > fMultCutHigh->Eval(centrality))
617647
return 0;
618-
registry.fill(HIST("eventQA/eventSel"), 9.5);
648+
registry.fill(HIST("eventQA/eventSel"), 11.5);
619649
if (cfgRunByRun)
620-
th1sList[run][hEventSel]->Fill(9.5);
650+
th1sList[run][hEventSel]->Fill(11.5);
621651
}
622652
return 1;
623653
}
624654

625655
template <typename TTrack>
626656
bool trackSelected(TTrack track)
627657
{
628-
if (cfgDCAxyNSigma && (std::fabs(track.dcaXY()) > cfgDCAxyNSigma / 7. * (0.0105f + 0.0035f / track.pt())))
658+
if (cfgDCAxyNSigma && (std::fabs(track.dcaXY()) > fPtDepDCAxy->Eval(track.pt())))
629659
return false;
630660
return ((track.tpcNClsCrossedRows() >= cfgNTPCXrows) && (track.tpcNClsFound() >= cfgNTPCCls) && (track.itsNCls() >= cfgMinNITSCls));
631661
}
@@ -668,8 +698,10 @@ struct FlowGfwLightIons {
668698
histos[hEventSel]->GetXaxis()->SetBinLabel(7, "kNoCollInTimeRangeStandard");
669699
histos[hEventSel]->GetXaxis()->SetBinLabel(8, "kIsVertexITSTPC");
670700
histos[hEventSel]->GetXaxis()->SetBinLabel(9, "kIsGoodITSLayersAll");
671-
histos[hEventSel]->GetXaxis()->SetBinLabel(10, "after Mult cuts");
672-
histos[hEventSel]->GetXaxis()->SetBinLabel(11, "has track + within cent");
701+
histos[hEventSel]->GetXaxis()->SetBinLabel(10, "kNoITSROFBorder");
702+
histos[hEventSel]->GetXaxis()->SetBinLabel(11, "kNoTimeFrameBorder");
703+
histos[hEventSel]->GetXaxis()->SetBinLabel(12, "after Mult cuts");
704+
histos[hEventSel]->GetXaxis()->SetBinLabel(13, "has track + within cent");
673705
th1sList.insert(std::make_pair(run, histos));
674706
std::vector<std::shared_ptr<TH3>> histos3d(kCount_TH3Names);
675707
histos3d[hNUAref] = registry.add<TH3>(Form("%d/phi_eta_vtxz_ref", run), "", {HistType::kTH3D, {phiAxis, etaAxis, vtxAxis}});
@@ -721,9 +753,9 @@ struct FlowGfwLightIons {
721753
if (dt != kGen && xaxis.centrality >= 0 && (xaxis.centrality < o2::analysis::gfw::centbinning.front() || xaxis.centrality > o2::analysis::gfw::centbinning.back()))
722754
return;
723755
if (dt != kGen) {
724-
registry.fill(HIST("eventQA/eventSel"), 10.5);
756+
registry.fill(HIST("eventQA/eventSel"), 12.5);
725757
if (cfgRunByRun)
726-
th1sList[run][hEventSel]->Fill(10.5);
758+
th1sList[run][hEventSel]->Fill(12.5);
727759
}
728760
float vtxz = collision.posZ();
729761
if (dt != kGen && cfgRunByRun) {
@@ -1201,6 +1233,18 @@ struct FlowGfwLightIons {
12011233
}
12021234
registry.fill(HIST("eventQA/eventSel"), 8.5);
12031235
}
1236+
if (cfgNoITSROFBorder) {
1237+
if (!collision.selection_bit(o2::aod::evsel::kNoITSROFrameBorder)) {
1238+
return;
1239+
}
1240+
registry.fill(HIST("eventQA/eventSel"), 9.5);
1241+
}
1242+
if (cfgNoTimeFrameBorder) {
1243+
if (!collision.selection_bit(o2::aod::evsel::kNoTimeFrameBorder)) {
1244+
return;
1245+
}
1246+
registry.fill(HIST("eventQA/eventSel"), 10.5);
1247+
}
12041248
float vtxz = -999;
12051249
if (collision.numContrib() > 1) {
12061250
vtxz = collision.posZ();

0 commit comments

Comments
 (0)