Skip to content

Commit ae9f021

Browse files
authored
[PWGCF] flow: add supicious Runs removal, DCAz pt dependent cut, DCAxy ppPass3 cut … (AliceO2Group#8253)
1 parent 0da7b08 commit ae9f021

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

PWGCF/Flow/Tasks/FlowRunbyRun.cxx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
#include <cmath>
1818
#include <vector>
1919
#include <map>
20+
#include <string>
21+
#include <memory>
22+
#include <utility>
2023
#include "Framework/runDataProcessing.h"
2124
#include "Framework/AnalysisTask.h"
2225
#include "Framework/ASoAHelpers.h"
@@ -106,8 +109,7 @@ struct FlowRunbyRun {
106109
ccdb->setCreatedNotAfter(nolaterthan.value);
107110

108111
// Add output histograms to the registry
109-
std::vector<int> temp = cfgRunNumbers;
110-
RunNumbers = temp;
112+
RunNumbers = cfgRunNumbers;
111113
for (auto& runNumber : RunNumbers) {
112114
CreateOutputObjectsForRun(runNumber);
113115
}

PWGCF/Flow/Tasks/FlowTask.cxx

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
#include <DataFormatsParameters/GRPMagField.h>
1717
#include <cmath>
1818
#include <vector>
19+
#include <unordered_map>
20+
#include <string>
21+
#include <memory>
1922
#include "Framework/runDataProcessing.h"
2023
#include "Framework/AnalysisTask.h"
2124
#include "Framework/ASoAHelpers.h"
@@ -59,6 +62,8 @@ struct FlowTask {
5962
O2_DEFINE_CONFIGURABLE(cfgCutChi2prTPCcls, float, 2.5f, "max chi2 per TPC clusters")
6063
O2_DEFINE_CONFIGURABLE(cfgCutTPCclu, float, 70.0f, "minimum TPC clusters")
6164
O2_DEFINE_CONFIGURABLE(cfgCutDCAz, float, 2.0f, "max DCA to vertex z")
65+
O2_DEFINE_CONFIGURABLE(cfgCutDCAxyppPass3Enabled, bool, false, "switch of ppPass3 DCAxy pt dependent cut")
66+
O2_DEFINE_CONFIGURABLE(cfgCutDCAzPtDepEnabled, bool, false, "switch of DCAz pt dependent cut")
6267
O2_DEFINE_CONFIGURABLE(cfgTrkSelSwitch, bool, false, "switch for self-defined track selection")
6368
O2_DEFINE_CONFIGURABLE(cfgTrkSelRun3ITSMatch, bool, false, "GlobalTrackRun3ITSMatching::Run3ITSall7Layers selection")
6469
O2_DEFINE_CONFIGURABLE(cfgRejectionTPCsectorOverlap, bool, true, "rejection for TPC sector overlap")
@@ -84,6 +89,7 @@ struct FlowTask {
8489
O2_DEFINE_CONFIGURABLE(cfgUseSmallMemory, bool, false, "Use small memory mode")
8590
Configurable<std::vector<std::string>> cfgUserDefineGFWCorr{"cfgUserDefineGFWCorr", std::vector<std::string>{"refN02 {2} refP02 {-2}", "refN12 {2} refP12 {-2}"}, "User defined GFW CorrelatorConfig"};
8691
Configurable<std::vector<std::string>> cfgUserDefineGFWName{"cfgUserDefineGFWName", std::vector<std::string>{"Ch02Gap22", "Ch12Gap22"}, "User defined GFW Name"};
92+
Configurable<std::vector<int>> cfgRunRemoveList{"cfgRunRemoveList", std::vector<int>{-1}, "excluded run numbers"};
8793

8894
ConfigurableAxis axisVertex{"axisVertex", {40, -20, 20}, "vertex axis for histograms"};
8995
ConfigurableAxis axisPhi{"axisPhi", {60, 0.0, constants::math::TwoPI}, "phi axis for histograms"};
@@ -168,7 +174,7 @@ struct FlowTask {
168174
registry.add("hEventCount", "Number of Event;; Count", {HistType::kTH1D, {{5, 0, 5}}});
169175
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(1, "Filtered event");
170176
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(2, "after sel8");
171-
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(3, "after strict Pile-up cut");
177+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(3, "after supicious Runs removal");
172178
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(4, "after additional event cut");
173179
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(5, "after correction loads");
174180
registry.add("hVtxZ", "Vexter Z distribution", {HistType::kTH1D, {axisVertex}});
@@ -310,6 +316,8 @@ struct FlowTask {
310316
fGFW->AddRegion("refP10", 0.5, 0.8, 1, 1);
311317
fGFW->AddRegion("refN12", -0.8, -0.6, 1, 1);
312318
fGFW->AddRegion("refP12", 0.6, 0.8, 1, 1);
319+
fGFW->AddRegion("refN14", -0.8, -0.7, 1, 1);
320+
fGFW->AddRegion("refP14", 0.7, 0.8, 1, 1);
313321
fGFW->AddRegion("refN", -0.8, -0.4, 1, 1);
314322
fGFW->AddRegion("refP", 0.4, 0.8, 1, 1);
315323
fGFW->AddRegion("refM", -0.4, 0.4, 1, 1);
@@ -398,6 +406,8 @@ struct FlowTask {
398406
myTrackSel = getGlobalTrackSelectionRun3ITSMatch(TrackSelection::GlobalTrackRun3ITSMatching::Run3ITSibAny, TrackSelection::GlobalTrackRun3DCAxyCut::Default);
399407
}
400408
myTrackSel.SetMinNClustersTPC(cfgCutTPCclu);
409+
if (cfgCutDCAxyppPass3Enabled)
410+
myTrackSel.SetMaxDcaXYPtDep([](float pt) { return 0.004f + 0.013f / pt; }); // Tuned on the LHC22f anchored MC LHC23d1d on primary pions. 7 Sigmas of the resolution
401411
}
402412

403413
template <char... chars>
@@ -582,6 +592,9 @@ struct FlowTask {
582592
template <typename TTrack>
583593
bool trackSelected(TTrack track)
584594
{
595+
if (cfgCutDCAzPtDepEnabled && (track.dcaZ() > (0.004f + 0.013f / track.pt())))
596+
return false;
597+
585598
if (cfgTrkSelSwitch) {
586599
return myTrackSel.IsSelected(track);
587600
} else {
@@ -633,6 +646,15 @@ struct FlowTask {
633646
return;
634647
if (tracks.size() < 1)
635648
return;
649+
registry.fill(HIST("hEventCount"), 1.5);
650+
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
651+
int currentRunNumber = bc.runNumber();
652+
for (auto& ExcludedRun : cfgRunRemoveList.value) {
653+
if (currentRunNumber == ExcludedRun) {
654+
return;
655+
}
656+
}
657+
registry.fill(HIST("hEventCount"), 2.5);
636658
if (!cfgUseSmallMemory) {
637659
registry.fill(HIST("BeforeCut_globalTracks_centT0C"), collision.centFT0C(), tracks.size());
638660
registry.fill(HIST("BeforeCut_PVTracks_centT0C"), collision.centFT0C(), collision.multNTracksPV());
@@ -642,9 +664,6 @@ struct FlowTask {
642664
registry.fill(HIST("BeforeCut_multV0A_multT0A"), collision.multFT0A(), collision.multFV0A());
643665
registry.fill(HIST("BeforeCut_multT0C_centT0C"), collision.centFT0C(), collision.multFT0C());
644666
}
645-
registry.fill(HIST("hEventCount"), 1.5);
646-
// place holder for pile-up rejection
647-
registry.fill(HIST("hEventCount"), 2.5);
648667
const auto cent = collision.centFT0C();
649668
if (cfgUseAdditionalEventCut && !eventSelected(collision, tracks.size(), cent))
650669
return;
@@ -655,7 +674,6 @@ struct FlowTask {
655674
registry.fill(HIST("hMult"), tracks.size());
656675
registry.fill(HIST("hCent"), collision.centFT0C());
657676
fGFW->Clear();
658-
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
659677
if (cfgGetInteractionRate) {
660678
initHadronicRate(bc);
661679
double hadronicRate = mRateFetcher.fetch(ccdb.service, bc.timestamp(), mRunNumber, "ZNC hadronic") * 1.e-3; //

0 commit comments

Comments
 (0)