Skip to content

Commit fa25b6c

Browse files
authored
adding pT-dependent DCA cut (#6206)
* adding pT-dependent DCA cut * Update femto3dPairTaskMC.cxx adjust DCA binning for template fits * Update femto3dQA.cxx * Update femto3dPairTaskMC.cxx
1 parent 3903f47 commit fa25b6c

File tree

3 files changed

+33
-25
lines changed

3 files changed

+33
-25
lines changed

PWGCF/Femto3D/Tasks/femto3dPairTask.cxx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ struct FemtoCorrelations {
5555
Configurable<float> _min_P{"min_P", 0.0, "lower mometum limit"};
5656
Configurable<float> _max_P{"max_P", 100.0, "upper mometum limit"};
5757
Configurable<float> _eta{"eta", 100.0, "abs eta value limit"};
58-
Configurable<float> _dcaXY{"dcaXY", 10.0, "abs dcaXY value limit"};
59-
Configurable<float> _dcaZ{"dcaZ", 10.0, "abs dcaZ value limit"};
58+
Configurable<std::vector<float>> _dcaXY{"dcaXY", std::vector<float>{0.3f, 0.0f, 0.0f}, "abs dcaXY value limit; formula: [0] + [1]*pT^[2]"};
59+
Configurable<std::vector<float>> _dcaZ{"dcaZ", std::vector<float>{0.3f, 0.0f, 0.0f}, "abs dcaZ value limit; formula: [0] + [1]*pT^[2]"};
6060
Configurable<int16_t> _tpcNClsFound{"minTpcNClsFound", 0, "minimum allowed number of TPC clasters"};
6161
Configurable<float> _tpcChi2NCl{"tpcChi2NCl", 100.0, "upper limit for chi2 value of a fit over TPC clasters"};
6262
Configurable<float> _tpcCrossedRowsOverFindableCls{"tpcCrossedRowsOverFindableCls", 0, "lower limit of TPC CrossedRows/FindableCls value"};
@@ -131,9 +131,6 @@ struct FemtoCorrelations {
131131
o2::aod::singletrackselector::unPack<singletrackselector::binning::chi2>(o2::aod::singletrackselector::storedTpcChi2NCl) < _tpcChi2NCl &&
132132
o2::aod::singletrackselector::unPack<singletrackselector::binning::rowsOverFindable>(o2::aod::singletrackselector::storedTpcCrossedRowsOverFindableCls) > _tpcCrossedRowsOverFindableCls;
133133

134-
Filter dcaFilter = nabs(o2::aod::singletrackselector::unPack<singletrackselector::binning::dca>(o2::aod::singletrackselector::storedDcaXY)) < _dcaXY &&
135-
nabs(o2::aod::singletrackselector::unPack<singletrackselector::binning::dca>(o2::aod::singletrackselector::storedDcaZ)) < _dcaZ;
136-
137134
Filter itsTrkFilter = o2::aod::singletrackselector::unPack<singletrackselector::binning::chi2>(o2::aod::singletrackselector::storedItsChi2NCl) < _itsChi2NCl;
138135

139136
Filter vertexFilter = nabs(o2::aod::singletrackselector::posZ) < _vertexZ;
@@ -389,6 +386,8 @@ struct FemtoCorrelations {
389386
continue;
390387
if (track.template singleCollSel_as<soa::Filtered<FilteredCollisions>>().hadronicRate() < _IRcut.value.first || track.template singleCollSel_as<soa::Filtered<FilteredCollisions>>().hadronicRate() >= _IRcut.value.second)
391388
continue;
389+
if (abs(track.dcaXY()) > _dcaXY.value[0] + _dcaXY.value[1] * std::pow(track.pt(), _dcaXY.value[2]) || abs(track.dcaZ()) > _dcaZ.value[0] + _dcaZ.value[1] * std::pow(track.pt(), _dcaZ.value[2]))
390+
continue;
392391

393392
if (track.sign() == _sign_1 && (track.p() < _PIDtrshld_1 ? o2::aod::singletrackselector::TPCselection(track, TPCcuts_1) : o2::aod::singletrackselector::TOFselection(track, TOFcuts_1, _tpcNSigmaResidual_1.value))) { // filling the map: eventID <-> selected particles1
394393
selectedtracks_1[track.singleCollSelId()].push_back(std::make_shared<decltype(track)>(track));

PWGCF/Femto3D/Tasks/femto3dPairTaskMC.cxx

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,15 @@ struct FemtoCorrelationsMC {
4343
/// Construct a registry object with direct declaration
4444
HistogramRegistry registry{"registry", {}, OutputObjHandlingPolicy::AnalysisObject};
4545

46+
Configurable<bool> _removeSameBunchPileup{"removeSameBunchPileup", false, ""};
47+
Configurable<bool> _requestGoodZvtxFT0vsPV{"requestGoodZvtxFT0vsPV", false, ""};
48+
Configurable<bool> _requestVertexITSTPC{"requestVertexITSTPC", false, ""};
49+
4650
Configurable<float> _min_P{"min_P", 0.0, "lower mometum limit"};
4751
Configurable<float> _max_P{"max_P", 100.0, "upper mometum limit"};
4852
Configurable<float> _eta{"eta", 100.0, "abs eta value limit"};
49-
Configurable<float> _dcaXY{"dcaXY", 10.0, "abs dcaXY value limit"};
50-
Configurable<float> _dcaZ{"dcaZ", 10.0, "abs dcaZ value limit"};
53+
Configurable<std::vector<float>> _dcaXY{"dcaXY", std::vector<float>{0.3f, 0.0f, 0.0f}, "abs dcaXY value limit; formula: [0] + [1]*pT^[2]"};
54+
Configurable<std::vector<float>> _dcaZ{"dcaZ", std::vector<float>{0.3f, 0.0f, 0.0f}, "abs dcaZ value limit; formula: [0] + [1]*pT^[2]"};
5155
Configurable<int16_t> _tpcNClsFound{"minTpcNClsFound", 0, "minimum allowed number of TPC clasters"};
5256
Configurable<float> _tpcChi2NCl{"tpcChi2NCl", 100.0, "upper limit for chi2 value of a fit over TPC clasters"};
5357
Configurable<float> _tpcCrossedRowsOverFindableCls{"tpcCrossedRowsOverFindableCls", 0, "lower limit of TPC CrossedRows/FindableCls value"};
@@ -89,7 +93,7 @@ struct FemtoCorrelationsMC {
8993
std::pair<int, std::vector<float>> TPCcuts_2;
9094
std::pair<int, std::vector<float>> TOFcuts_2;
9195

92-
using FilteredCollisions = aod::SingleCollSels;
96+
using FilteredCollisions = soa::Join<aod::SingleCollSels, aod::SingleCollExtras>;
9397
using FilteredTracks = soa::Join<aod::SingleTrackSels, aod::SingleTrkMCs>;
9498

9599
typedef std::shared_ptr<soa::Filtered<FilteredTracks>::iterator> trkType;
@@ -140,9 +144,9 @@ struct FemtoCorrelationsMC {
140144
for (unsigned int i = 0; i < _centBins.value.size() - 1; i++) {
141145

142146
std::map<int, std::shared_ptr<TH3>> DCA_histos_1_perMult;
143-
DCA_histos_1_perMult[0] = registry.add<TH3>(Form("Cent%i/FirstParticle/dcaxyz_vs_pt_primary", i), "dcaxyz_vs_pt_primary", kTH3F, {{100, 0., 5., "pt"}, {250, -1., 1., "DCA_XY(pt) primary"}, {250, -1., 1., "DCA_Z(pt) primary"}});
144-
DCA_histos_1_perMult[1] = registry.add<TH3>(Form("Cent%i/FirstParticle/dcaxyz_vs_pt_weakdecay", i), "dcaxyz_vs_pt_weakdecay", kTH3F, {{100, 0., 5., "pt"}, {250, -1., 1., "DCA_XY(pt) weakdecay"}, {250, -1., 1., "DCA_Z(pt) weakdecay"}});
145-
DCA_histos_1_perMult[2] = registry.add<TH3>(Form("Cent%i/FirstParticle/dcaxyz_vs_pt_material", i), "dcaxyz_vs_pt_material", kTH3F, {{100, 0., 5., "pt"}, {250, -1., 1., "DCA_XY(pt) material"}, {250, -1., 1., "DCA_Z(pt) material"}});
147+
DCA_histos_1_perMult[0] = registry.add<TH3>(Form("Cent%i/FirstParticle/dcaxyz_vs_pt_primary", i), "dcaxyz_vs_pt_primary", kTH3F, {{100, 0., 5., "pt"}, {500, -0.5, 0.5, "DCA_XY(pt) primary"}, {500, -0.5, 0.5, "DCA_Z(pt) primary"}});
148+
DCA_histos_1_perMult[1] = registry.add<TH3>(Form("Cent%i/FirstParticle/dcaxyz_vs_pt_weakdecay", i), "dcaxyz_vs_pt_weakdecay", kTH3F, {{100, 0., 5., "pt"}, {500, -0.5, 0.5, "DCA_XY(pt) weakdecay"}, {500, -0.5, 0.5, "DCA_Z(pt) weakdecay"}});
149+
DCA_histos_1_perMult[2] = registry.add<TH3>(Form("Cent%i/FirstParticle/dcaxyz_vs_pt_material", i), "dcaxyz_vs_pt_material", kTH3F, {{100, 0., 5., "pt"}, {500, -0.5, 0.5, "DCA_XY(pt) material"}, {500, -0.5, 0.5, "DCA_Z(pt) material"}});
146150

147151
std::map<int, std::shared_ptr<TH1>> Purity_histos_1_perMult;
148152
Purity_histos_1_perMult[11] = registry.add<TH1>(Form("Cent%i/FirstParticle/pSpectraEl", i), "pSpectraEl", kTH1F, {{100, 0., 5., "p"}});
@@ -158,9 +162,9 @@ struct FemtoCorrelationsMC {
158162

159163
if (!IsIdentical) {
160164
std::map<int, std::shared_ptr<TH3>> DCA_histos_2_perMult;
161-
DCA_histos_2_perMult[0] = registry.add<TH3>(Form("Cent%i/SecondParticle/dcaxyz_vs_pt_primary", i), "dcaxyz_vs_pt_primary", kTH3F, {{100, 0., 5., "pt"}, {200, -1., 1., "DCA_XY(pt) primary"}, {200, -1., 1., "DCA_Z(pt) primary"}});
162-
DCA_histos_2_perMult[1] = registry.add<TH3>(Form("Cent%i/SecondParticle/dcaxyz_vs_pt_weakdecay", i), "dcaxyz_vs_pt_weakdecay", kTH3F, {{100, 0., 5., "pt"}, {200, -1., 1., "DCA_XY(pt) weakdecay"}, {200, -1., 1., "DCA_Z(pt) weakdecay"}});
163-
DCA_histos_2_perMult[2] = registry.add<TH3>(Form("Cent%i/SecondParticle/dcaxyz_vs_pt_material", i), "dcaxyz_vs_pt_material", kTH3F, {{100, 0., 5., "pt"}, {200, -1., 1., "DCA_XY(pt) material"}, {200, -1., 1., "DCA_Z(pt) material"}});
165+
DCA_histos_2_perMult[0] = registry.add<TH3>(Form("Cent%i/SecondParticle/dcaxyz_vs_pt_primary", i), "dcaxyz_vs_pt_primary", kTH3F, {{100, 0., 5., "pt"}, {500, -0.5, 0.5, "DCA_XY(pt) primary"}, {500, -0.5, -0.5, "DCA_Z(pt) primary"}});
166+
DCA_histos_2_perMult[1] = registry.add<TH3>(Form("Cent%i/SecondParticle/dcaxyz_vs_pt_weakdecay", i), "dcaxyz_vs_pt_weakdecay", kTH3F, {{100, 0., 5., "pt"}, {500, -0.5, 0.5, "DCA_XY(pt) weakdecay"}, {500, -0.5, 0.5, "DCA_Z(pt) weakdecay"}});
167+
DCA_histos_2_perMult[2] = registry.add<TH3>(Form("Cent%i/SecondParticle/dcaxyz_vs_pt_material", i), "dcaxyz_vs_pt_material", kTH3F, {{100, 0., 5., "pt"}, {500, -0.5, 0.5, "DCA_XY(pt) material"}, {500, -0.5, 0.5, "DCA_Z(pt) material"}});
164168

165169
std::map<int, std::shared_ptr<TH1>> Purity_histos_2_perMult;
166170
Purity_histos_2_perMult[11] = registry.add<TH1>(Form("Cent%i/SecondParticle/pSpectraEl", i), "pSpectraEl", kTH1F, {{100, 0., 5., "p"}});
@@ -285,6 +289,12 @@ struct FemtoCorrelationsMC {
285289
continue;
286290
if (track.template singleCollSel_as<soa::Filtered<FilteredCollisions>>().multPerc() < *_centBins.value.begin() || track.template singleCollSel_as<soa::Filtered<FilteredCollisions>>().multPerc() >= *(_centBins.value.end() - 1))
287291
continue;
292+
if (_removeSameBunchPileup && !track.template singleCollSel_as<soa::Filtered<FilteredCollisions>>().isNoSameBunchPileup())
293+
continue;
294+
if (_requestGoodZvtxFT0vsPV && !track.template singleCollSel_as<soa::Filtered<FilteredCollisions>>().isGoodZvtxFT0vsPV())
295+
continue;
296+
if (_requestVertexITSTPC && !track.template singleCollSel_as<soa::Filtered<FilteredCollisions>>().isVertexITSTPC())
297+
continue;
288298

289299
unsigned int centBin = o2::aod::singletrackselector::getBinIndex<unsigned int>(track.template singleCollSel_as<soa::Filtered<FilteredCollisions>>().multPerc(), _centBins);
290300

@@ -295,7 +305,7 @@ struct FemtoCorrelationsMC {
295305
if (trackOrigin > -1 && trackOrigin < 3)
296306
DCA_histos_1[centBin][track.origin()]->Fill(track.pt(), track.dcaXY(), track.dcaZ());
297307

298-
if (abs(track.dcaXY()) > _dcaXY || abs(track.dcaZ()) > _dcaZ)
308+
if (abs(track.dcaXY()) > _dcaXY.value[0] + _dcaXY.value[1] * std::pow(track.pt(), _dcaXY.value[2]) || abs(track.dcaZ()) > _dcaZ.value[0] + _dcaZ.value[1] * std::pow(track.pt(), _dcaZ.value[2]))
299309
continue;
300310

301311
trackPDG = abs(track.pdgCode());
@@ -316,7 +326,7 @@ struct FemtoCorrelationsMC {
316326
if (trackOrigin > -1 && trackOrigin < 3)
317327
DCA_histos_2[centBin][track.origin()]->Fill(track.pt(), track.dcaXY(), track.dcaZ());
318328

319-
if (abs(track.dcaXY()) > _dcaXY || abs(track.dcaZ()) > _dcaZ)
329+
if (abs(track.dcaXY()) > _dcaXY.value[0] + _dcaXY.value[1] * std::pow(track.pt(), _dcaXY.value[2]) || abs(track.dcaZ()) > _dcaZ.value[0] + _dcaZ.value[1] * std::pow(track.pt(), _dcaZ.value[2]))
320330
continue;
321331

322332
trackPDG = abs(track.pdgCode());

PWGCF/Femto3D/Tasks/femto3dQA.cxx

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ struct QAHistograms {
5050
Configurable<float> _min_P{"min_P", 0.0, "lower mometum limit"};
5151
Configurable<float> _max_P{"max_P", 100.0, "upper mometum limit"};
5252
Configurable<float> _eta{"eta", 100.0, "abs eta value limit"};
53-
Configurable<float> _dcaXY{"dcaXY", 10.0, "abs dcaXY value limit"};
54-
Configurable<float> _dcaZ{"dcaZ", 10.0, "abs dcaZ value limit"};
53+
Configurable<std::vector<float>> _dcaXY{"dcaXY", std::vector<float>{0.3f, 0.0f, 0.0f}, "abs dcaXY value limit; formula: [0] + [1]*pT^[2]"};
54+
Configurable<std::vector<float>> _dcaZ{"dcaZ", std::vector<float>{0.3f, 0.0f, 0.0f}, "abs dcaZ value limit; formula: [0] + [1]*pT^[2]"};
5555
Configurable<int16_t> _tpcNClsFound{"minTpcNClsFound", 0, "minimum allowed number of TPC clasters"};
5656
Configurable<float> _tpcChi2NCl{"tpcChi2NCl", 100.0, "upper limit for chi2 value of a fit over TPC clasters"};
5757
Configurable<float> _tpcCrossedRowsOverFindableCls{"tpcCrossedRowsOverFindableCls", 0, "lower limit of TPC CrossedRows/FindableCls value"};
@@ -80,9 +80,6 @@ struct QAHistograms {
8080
o2::aod::singletrackselector::unPack<singletrackselector::binning::chi2>(o2::aod::singletrackselector::storedTpcChi2NCl) < _tpcChi2NCl &&
8181
o2::aod::singletrackselector::unPack<singletrackselector::binning::rowsOverFindable>(o2::aod::singletrackselector::storedTpcCrossedRowsOverFindableCls) > _tpcCrossedRowsOverFindableCls;
8282

83-
Filter dcaFilter = nabs(o2::aod::singletrackselector::unPack<singletrackselector::binning::dca>(o2::aod::singletrackselector::storedDcaXY)) < _dcaXY &&
84-
nabs(o2::aod::singletrackselector::unPack<singletrackselector::binning::dca>(o2::aod::singletrackselector::storedDcaZ)) < _dcaZ;
85-
8683
Filter itsTrkFilter = o2::aod::singletrackselector::unPack<singletrackselector::binning::chi2>(o2::aod::singletrackselector::storedItsChi2NCl) < _itsChi2NCl;
8784

8885
Filter vertexFilter = nabs(o2::aod::singletrackselector::posZ) < _vertexZ;
@@ -103,10 +100,10 @@ struct QAHistograms {
103100
registry.add("p", "p", kTH1F, {{100, 0., 5., "p"}});
104101
registry.add("pt", "pt", kTH1F, {{100, 0., 5., "pt"}});
105102
registry.add("sign", "sign", kTH1F, {{3, -1.5, 1.5, "sign"}});
106-
registry.add("dcaxy_to_p", "dcaxy_to_p", kTH2F, {{100, 0., 5.0, "p"}, {200, -1., 1., "dcaxy"}});
107-
registry.add("dcaxy_to_pt", "dcaxy_to_pt", kTH2F, {{100, 0., 5., "pt"}, {200, -1., 1., "dcaxy"}});
108-
registry.add("dcaz_to_p", "dcaz_to_p", kTH2F, {{100, 0., 5., "p"}, {200, -1., 1., "dcaz"}});
109-
registry.add("dcaz_to_pt", "dcaz_to_pt", kTH2F, {{100, 0., 5., "pt"}, {200, -1., 1., "dcaz"}});
103+
registry.add("dcaxy_to_p", "dcaxy_to_p", kTH2F, {{100, 0., 5.0, "p"}, {500, -0.5, 0.5, "dcaxy"}});
104+
registry.add("dcaxy_to_pt", "dcaxy_to_pt", kTH2F, {{100, 0., 5., "pt"}, {500, -0.5, 0.5, "dcaxy"}});
105+
registry.add("dcaz_to_p", "dcaz_to_p", kTH2F, {{100, 0., 5., "p"}, {500, -0.5, 0.5, "dcaz"}});
106+
registry.add("dcaz_to_pt", "dcaz_to_pt", kTH2F, {{100, 0., 5., "pt"}, {500, -0.5, 0.5, "dcaz"}});
110107
registry.add("TPCClusters", "TPCClusters", kTH1F, {{163, -0.5, 162.5, "NTPCClust"}});
111108
registry.add("TPCCrossedRowsOverFindableCls", "TPCCrossedRowsOverFindableCls", kTH1F, {{100, 0.0, 10.0, "NcrossedRowsOverFindable"}});
112109
registry.add("TPCFractionSharedCls", "TPCFractionSharedCls", kTH1F, {{100, 0.0, 1.0, "TPCsharedFraction"}});
@@ -182,6 +179,8 @@ struct QAHistograms {
182179
continue;
183180
if ((track.tpcFractionSharedCls()) > _tpcFractionSharedCls || (track.itsNCls()) < _itsNCls)
184181
continue;
182+
if (abs(track.dcaXY()) > _dcaXY.value[0] + _dcaXY.value[1] * std::pow(track.pt(), _dcaXY.value[2]) || abs(track.dcaZ()) > _dcaZ.value[0] + _dcaZ.value[1] * std::pow(track.pt(), _dcaZ.value[2]))
183+
continue;
185184

186185
if constexpr (FillExtra) {
187186
registry.fill(HIST("TPCSignal_nocuts"), track.tpcInnerParam(), track.tpcSignal());

0 commit comments

Comments
 (0)