Skip to content

Commit a39145a

Browse files
[PWGCF] Fix DCA selections of daughter tracks (#17240)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent eb1043c commit a39145a

2 files changed

Lines changed: 31 additions & 33 deletions

File tree

PWGCF/Femto/Core/cascadeBuilder.h

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,19 @@ struct ConfCascadeFilters : o2::framework::ConfigurableGroup {
6363
};
6464

6565
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
66-
#define CASCADE_DEFAULT_BITS \
67-
o2::framework::Configurable<bool> passThrough{"passThrough", false, "If true, all Cascades are passed through. Bits for all selections are stored."}; \
68-
o2::framework::Configurable<std::vector<float>> cascadeCpaMin{"cascadeCpaMin", {0.95f}, "Minimum cosine of pointing angle"}; \
69-
o2::framework::Configurable<std::vector<float>> cascadeTransRadMin{"cascadeTransRadMin", {0.9f}, "Minimum transverse radius (cm)"}; \
70-
o2::framework::Configurable<std::vector<float>> cascadeDcaDauMax{"cascadeDcaDauMax", {0.25f}, "Maximum DCA between the daughters at decay vertex (cm)"}; \
71-
o2::framework::Configurable<std::vector<float>> lambdaCpaMin{"lambdaCpaMin", {0.78f}, "Minimum cosine of pointing angle"}; \
72-
o2::framework::Configurable<std::vector<float>> lambdaTransRadMin{"lambdaTransRadMin", {0.9f}, "Minimum transverse radius (cm)"}; \
73-
o2::framework::Configurable<std::vector<float>> lambdaDcaDauMax{"lambdaDcaDauMax", {0.5f}, "Maximum DCA between the daughters at decay vertex (cm)"}; \
74-
o2::framework::Configurable<std::vector<float>> lambdaDcaToPvMin{"lambdaDcaToPvMin", {0.3f}, "Minimum DCA between the lambda and primary vertex"}; \
75-
o2::framework::Configurable<std::vector<float>> dauAbsEtaMax{"dauAbsEtaMax", {0.8f}, "Maximum |eta| of all daughters"}; \
76-
o2::framework::Configurable<std::vector<float>> dauDcaMin{"dauDcaMin", {0.05f}, "Minimum DCA of the daughters from primary vertex (cm)"}; \
77-
o2::framework::Configurable<std::vector<float>> dauTpcClustersMin{"dauTpcClustersMin", {80.f}, "Minimum number of TPC clusters for daughter tracks"}; \
78-
o2::framework::Configurable<std::vector<float>> posDauTpc{"posDauTpc", {5.f}, "Maximum |nsimga_Pion/Proton| TPC for positive daughter tracks"}; \
66+
#define CASCADE_DEFAULT_BITS \
67+
o2::framework::Configurable<bool> passThrough{"passThrough", false, "If true, all Cascades are passed through. Bits for all selections are stored."}; \
68+
o2::framework::Configurable<std::vector<float>> cascadeCpaMin{"cascadeCpaMin", {0.95f}, "Minimum cosine of pointing angle"}; \
69+
o2::framework::Configurable<std::vector<float>> cascadeTransRadMin{"cascadeTransRadMin", {0.9f}, "Minimum transverse radius (cm)"}; \
70+
o2::framework::Configurable<std::vector<float>> cascadeDcaDauMax{"cascadeDcaDauMax", {0.25f}, "Maximum DCA between the daughters at decay vertex (cm)"}; \
71+
o2::framework::Configurable<std::vector<float>> lambdaCpaMin{"lambdaCpaMin", {0.78f}, "Minimum cosine of pointing angle"}; \
72+
o2::framework::Configurable<std::vector<float>> lambdaTransRadMin{"lambdaTransRadMin", {0.9f}, "Minimum transverse radius (cm)"}; \
73+
o2::framework::Configurable<std::vector<float>> lambdaDcaDauMax{"lambdaDcaDauMax", {0.5f}, "Maximum DCA between the daughters at decay vertex (cm)"}; \
74+
o2::framework::Configurable<std::vector<float>> lambdaDcaToPvMin{"lambdaDcaToPvMin", {0.3f}, "Minimum DCA between the lambda and primary vertex"}; \
75+
o2::framework::Configurable<std::vector<float>> dauAbsEtaMax{"dauAbsEtaMax", {0.8f}, "Maximum |eta| of all daughters"}; \
76+
o2::framework::Configurable<std::vector<float>> dauAbsDcaxyMin{"dauAbsDcaxyMin", {0.05f}, "Minimum |DCAxy| of the daughters and bachelor from primary vertex (cm)"}; \
77+
o2::framework::Configurable<std::vector<float>> dauTpcClustersMin{"dauTpcClustersMin", {80.f}, "Minimum number of TPC clusters for daughter tracks"}; \
78+
o2::framework::Configurable<std::vector<float>> posDauTpc{"posDauTpc", {5.f}, "Maximum |nsimga_Pion/Proton| TPC for positive daughter tracks"}; \
7979
o2::framework::Configurable<std::vector<float>> negDauTpc{"negDauTpc", {5.f}, "Maximum |nsimga_Pion/Proton| TPC for negative daughter tracks"};
8080

8181
struct ConfXiBits : o2::framework::ConfigurableGroup {
@@ -132,9 +132,9 @@ enum CascadeSels {
132132
kLambdaDcaToPvMin, ///< Min. DCA to primary vertex of daughter lambda
133133

134134
// selection for bachelor/daugthers
135-
kDauAbsEtaMax, ///< Min. DCA of the daughers/bachelor at primary vertex
136-
kDauTpcClsMin, ///< Min. number of TPC clusters of daughters/bachelor
137-
kDauDcaMin, ///< TPC Pion PID for negative daughter
135+
kDauAbsEtaMax, ///< Max. |eta| of daughter tracks
136+
kDauTpcClsMin, ///< Min. number of TPC clusters of daughters/bachelor
137+
kDauAbsDcaxyMin, ///< Min. |DCAxy| of the daughers and bachelor from primary vertex
138138

139139
// PID selection for cascade bachelor
140140
kBachelorTpcPion, ///< TPC Pion PID for bachelor
@@ -162,7 +162,7 @@ const std::unordered_map<CascadeSels, std::string> cascadeSelectionNames = {
162162

163163
{kDauAbsEtaMax, "Daughter Abs Eta Max"},
164164
{kDauTpcClsMin, "Daughter TPC Clusters Min"},
165-
{kDauDcaMin, "Daughter DCA Min"},
165+
{kDauAbsDcaxyMin, "Daughter |DCAxy| Min"},
166166

167167
{kBachelorTpcPion, "Bachelor TPC Pion PID"},
168168
{kBachelorTpcKaon, "Bachelor TPC Kaon PID"},
@@ -261,7 +261,7 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
261261
this->addSelection(kLambdaDcaDauMax, cascadeSelectionNames.at(kLambdaDcaDauMax), config.lambdaDcaDauMax.value, limits::kUpperLimit, true, true, false);
262262
this->addSelection(kLambdaDcaToPvMin, cascadeSelectionNames.at(kLambdaDcaToPvMin), config.lambdaDcaToPvMin.value, limits::kLowerLimit, true, true, false);
263263
this->addSelection(kDauAbsEtaMax, cascadeSelectionNames.at(kDauAbsEtaMax), config.dauAbsEtaMax.value, limits::kAbsUpperLimit, true, true, false);
264-
this->addSelection(kDauDcaMin, cascadeSelectionNames.at(kDauDcaMin), config.dauDcaMin.value, limits::kAbsLowerLimit, true, true, false);
264+
this->addSelection(kDauAbsDcaxyMin, cascadeSelectionNames.at(kDauAbsDcaxyMin), config.dauAbsDcaxyMin.value, limits::kAbsLowerLimit, true, true, false);
265265
this->addSelection(kDauTpcClsMin, cascadeSelectionNames.at(kDauTpcClsMin), config.dauTpcClustersMin.value, limits::kLowerLimit, true, true, false);
266266

267267
this->setupSelectionHistogram<SelectionHistName>(registry);
@@ -308,10 +308,8 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
308308
std::array<float, 3> etaDaughters = {std::fabs(bachelor.eta()), std::fabs(posDaughter.eta()), std::fabs(negDaughter.eta())};
309309
this->evaluateObservable(kDauAbsEtaMax, *std::max_element(etaDaughters.begin(), etaDaughters.end()));
310310

311-
std::array<float, 3> dcaDaughters = {std::hypot(bachelor.dcaXY(), bachelor.dcaZ()),
312-
std::hypot(posDaughter.dcaXY(), posDaughter.dcaZ()),
313-
std::hypot(negDaughter.dcaXY(), negDaughter.dcaZ())};
314-
this->evaluateObservable(kDauDcaMin, *std::min_element(dcaDaughters.begin(), dcaDaughters.end()));
311+
std::array<float, 3> dcaDaughters = {std::fabs(bachelor.dcaXY()), std::fabs(posDaughter.dcaXY()), std::fabs(negDaughter.dcaXY())};
312+
this->evaluateObservable(kDauAbsDcaxyMin, *std::min_element(dcaDaughters.begin(), dcaDaughters.end()));
315313

316314
std::array<float, 3> clustersDaughters = {1.f * bachelor.tpcNClsFound(), 1.f * posDaughter.tpcNClsFound(), 1.f * negDaughter.tpcNClsFound()};
317315
this->evaluateObservable(kDauTpcClsMin, *std::min_element(clustersDaughters.begin(), clustersDaughters.end()));

PWGCF/Femto/Core/v0Builder.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,13 @@ struct ConfV0Filters : o2::framework::ConfigurableGroup {
6464
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
6565
#define V0_DEFAULT_BITS \
6666
o2::framework::Configurable<bool> passThrough{"passThrough", false, "If true, all V0s are passed through. Bits for all selections are stored."}; \
67-
o2::framework::Configurable<std::vector<float>> dcaDauMax{"dcaDauMax", {1.5f}, "Maximum DCA between the daughters at decay vertex (cm)"}; \
67+
o2::framework::Configurable<std::vector<float>> dcaDauMax{"dcaDauMax", {1.5f}, "Maximum DCA between the daughters at V0 decay vertex (cm)"}; \
6868
o2::framework::Configurable<std::vector<float>> cpaMin{"cpaMin", {0.99f}, "Minimum cosine of pointing angle"}; \
6969
o2::framework::Configurable<std::vector<float>> transRadMin{"transRadMin", {0.2f}, "Minimum transverse radius (cm)"}; \
7070
o2::framework::Configurable<std::vector<float>> transRadMax{"transRadMax", {100.f}, "Maximum transverse radius (cm)"}; \
7171
o2::framework::Configurable<std::vector<float>> decayVtxMax{"decayVtxMax", {100.f}, "Maximum distance in x,y,z of the decay vertex from primary vertex (cm)"}; \
7272
o2::framework::Configurable<std::vector<float>> dauAbsEtaMax{"dauAbsEtaMax", {0.8f}, "Maximum |eta| for daughter tracks"}; \
73-
o2::framework::Configurable<std::vector<float>> dauDcaMin{"dauDcaMin", {0.05f}, "Minimum DCA of the daughters from primary vertex (cm)"}; \
73+
o2::framework::Configurable<std::vector<float>> dauAbsDcaxyMin{"dauAbsDcaxyMin", {0.05f}, "Minimum DCAxy of the daughters from primary vertex (cm)"}; \
7474
o2::framework::Configurable<std::vector<float>> dauTpcClustersMin{"dauTpcClustersMin", {80.f}, "Minimum number of TPC clusters for daughter tracks"};
7575

7676
// derived selection bits for lambda
@@ -144,9 +144,9 @@ enum V0Sels {
144144
kTransRadMax, ///< max. transverse radius
145145

146146
// selection for daughter
147-
kDauAbsEtaMax, ///< Max. absolute pseudo rapidity
148-
kDauDcaMin, ///< Min. DCA of the daughters at primary vertex
149-
kDauTpcClsMin, ///< Min. number of TPC clusters of daughter
147+
kDauAbsEtaMax, ///< Max. absolute pseudo rapidity
148+
kDauAbsDcaxyMin, ///< Min. |DCAxy| of the daughters from primary vertex
149+
kDauTpcClsMin, ///< Min. number of TPC clusters of daughter
150150

151151
// pid selection for daughters
152152
kPosDaughTpcPion, ///< TPC Pion PID for positive daughter
@@ -169,7 +169,7 @@ const std::unordered_map<V0Sels, std::string> v0SelectionNames = {
169169
{kTransRadMax, "Max. transverse radius"},
170170

171171
{kDauAbsEtaMax, "Max. absolute pseudo rapidity of daughters"},
172-
{kDauDcaMin, "Min. DCA of the daughters at primary vertex"},
172+
{kDauAbsDcaxyMin, "Min. |DCAxy| of the daughters from primary vertex"},
173173
{kDauTpcClsMin, "Min. number of TPC clusters of daughters"},
174174

175175
{kPosDaughTpcPion, "TPC Pion PID for positive daughter"},
@@ -265,7 +265,7 @@ class V0Selection : public baseselection::BaseSelection<float, datatypes::V0Mask
265265
this->addSelection(kTransRadMin, v0SelectionNames.at(kTransRadMin), config.transRadMin.value, limits::kLowerLimit, true, true, false);
266266
this->addSelection(kTransRadMax, v0SelectionNames.at(kTransRadMax), config.transRadMax.value, limits::kUpperLimit, true, true, false);
267267
this->addSelection(kDauAbsEtaMax, v0SelectionNames.at(kDauAbsEtaMax), config.dauAbsEtaMax.value, limits::kAbsUpperLimit, true, true, false);
268-
this->addSelection(kDauDcaMin, v0SelectionNames.at(kDauDcaMin), config.dauDcaMin.value, limits::kAbsLowerLimit, true, true, false);
268+
this->addSelection(kDauAbsDcaxyMin, v0SelectionNames.at(kDauAbsDcaxyMin), config.dauAbsDcaxyMin.value, limits::kAbsLowerLimit, true, true, false);
269269
this->addSelection(kDauTpcClsMin, v0SelectionNames.at(kDauTpcClsMin), config.dauTpcClustersMin.value, limits::kLowerLimit, true, true, false);
270270

271271
this->setupSelectionHistogram<SelectionHistName>(registry);
@@ -307,11 +307,11 @@ class V0Selection : public baseselection::BaseSelection<float, datatypes::V0Mask
307307
auto posDaughter = v0candidate.template posTrack_as<T2>();
308308
auto negDaughter = v0candidate.template negTrack_as<T2>();
309309

310-
std::array<float, 2> etaDaughters = {std::fabs(posDaughter.eta()), std::fabs(negDaughter.eta())};
311-
this->evaluateObservable(kDauAbsEtaMax, *std::max_element(etaDaughters.begin(), etaDaughters.end()));
310+
std::array<float, 2> etaAbsDaughters = {std::fabs(posDaughter.eta()), std::fabs(negDaughter.eta())};
311+
this->evaluateObservable(kDauAbsEtaMax, *std::max_element(etaAbsDaughters.begin(), etaAbsDaughters.end()));
312312

313-
std::array<float, 2> dcaDaughters = {std::hypot(posDaughter.dcaXY(), posDaughter.dcaZ()), std::hypot(negDaughter.dcaXY(), negDaughter.dcaZ())};
314-
this->evaluateObservable(kDauDcaMin, *std::min_element(dcaDaughters.begin(), dcaDaughters.end()));
313+
std::array<float, 2> dcaxyAbsDaughters = {std::fabs(posDaughter.dcaXY()), std::fabs(negDaughter.dcaXY())};
314+
this->evaluateObservable(kDauAbsDcaxyMin, *std::min_element(dcaxyAbsDaughters.begin(), dcaxyAbsDaughters.end()));
315315

316316
std::array<float, 2> clustersDaughters = {1.f * posDaughter.tpcNClsFound(), 1.f * negDaughter.tpcNClsFound()};
317317
this->evaluateObservable(kDauTpcClsMin, *std::min_element(clustersDaughters.begin(), clustersDaughters.end()));

0 commit comments

Comments
 (0)