Skip to content

Commit 196a896

Browse files
authored
[PWGCF] Femto: Add optional pT-dependent CPA selection for cascades (#17431)
1 parent 6d29922 commit 196a896

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

PWGCF/Femto/Core/cascadeBuilder.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ struct ConfCascadeFilters : o2::framework::ConfigurableGroup {
6565
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
6666
#define CASCADE_DEFAULT_BITS \
6767
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"}; \
68+
o2::framework::Configurable<std::vector<std::string>> cascadeCpaMin{"cascadeCpaMin", {"0.95"}, "Minimum CPA as TFormula, x=pt"}; \
69+
o2::framework::Configurable<std::vector<std::string>> cascadePaMax{"cascadePaMax", {}, "Maximum pointing angle (rad) as TFormula, x=pt. Empty to disable"}; \
6970
o2::framework::Configurable<std::vector<float>> cascadeTransRadMin{"cascadeTransRadMin", {0.9f}, "Minimum transverse radius (cm)"}; \
7071
o2::framework::Configurable<std::vector<float>> cascadeDcaDauMax{"cascadeDcaDauMax", {0.25f}, "Maximum DCA between the daughters at decay vertex (cm)"}; \
7172
o2::framework::Configurable<std::vector<float>> lambdaCpaMin{"lambdaCpaMin", {0.78f}, "Minimum cosine of pointing angle"}; \
@@ -128,6 +129,7 @@ struct ConfOmegaSelection : o2::framework::ConfigurableGroup {
128129
enum CascadeSels {
129130
// selections for cascades
130131
kCascadeCpaMin, ///< Min. CPA (cosine pointing angle)
132+
kCascadePaMax, ///< Max. PA (pointing angle in rad); disabled by default
131133
kCascadeDcaDaughMax, ///< Max. DCA of the daughers at decay vertex
132134
kCascadeTransRadMin, ///< max. transverse radius
133135

@@ -162,6 +164,7 @@ constexpr char OmegaSelHistName[] = "hOmegaSelection";
162164
constexpr char CascadeSelsName[] = "Cascade Selection Object";
163165
const std::unordered_map<CascadeSels, std::string> cascadeSelectionNames = {
164166
{kCascadeCpaMin, "Cascade CPA Min"},
167+
{kCascadePaMax, "Cascade PA Max"},
165168
{kCascadeDcaDaughMax, "Cascade DCA Daughters Max"},
166169
{kCascadeTransRadMin, "Cascade Transverse Radius Min"},
167170

@@ -270,7 +273,8 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
270273
this->addSelection(kPosDauTof, cascadeSelectionNames.at(kPosDauTof), config.posDauTof.value, limits::kAbsUpperLimit, true, mRequireTof, false);
271274
this->addSelection(kNegDauTof, cascadeSelectionNames.at(kNegDauTof), config.negDauTof.value, limits::kAbsUpperLimit, true, mRequireTof, false);
272275

273-
this->addSelection(kCascadeCpaMin, cascadeSelectionNames.at(kCascadeCpaMin), config.cascadeCpaMin.value, limits::kLowerLimit, true, true, false);
276+
this->addSelection(kCascadeCpaMin, cascadeSelectionNames.at(kCascadeCpaMin), filter.ptMin.value, filter.ptMax.value, config.cascadeCpaMin.value, limits::kLowerFunctionLimit, true, true, false);
277+
this->addSelection(kCascadePaMax, cascadeSelectionNames.at(kCascadePaMax), filter.ptMin.value, filter.ptMax.value, config.cascadePaMax.value, limits::kUpperFunctionLimit, true, true, false);
274278
this->addSelection(kCascadeTransRadMin, cascadeSelectionNames.at(kCascadeTransRadMin), config.cascadeTransRadMin.value, limits::kLowerLimit, true, true, false);
275279
this->addSelection(kCascadeDcaDaughMax, cascadeSelectionNames.at(kCascadeDcaDaughMax), config.cascadeDcaDauMax.value, limits::kUpperLimit, true, true, false);
276280
this->addSelection(kLambdaCpaMin, cascadeSelectionNames.at(kLambdaCpaMin), config.lambdaCpaMin.value, limits::kLowerLimit, true, true, false);
@@ -307,7 +311,11 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
307311
{
308312
this->reset();
309313
// cascade selections
310-
this->evaluateObservable(kCascadeCpaMin, cascade.casccosPA(col.posX(), col.posY(), col.posZ()));
314+
const float cpa = cascade.casccosPA(col.posX(), col.posY(), col.posZ());
315+
this->updateLimits(kCascadeCpaMin, cascade.pt());
316+
this->evaluateObservable(kCascadeCpaMin, cpa);
317+
this->updateLimits(kCascadePaMax, cascade.pt());
318+
this->evaluateObservable(kCascadePaMax, std::acos(cpa));
311319
this->evaluateObservable(kCascadeDcaDaughMax, cascade.dcacascdaughters());
312320
this->evaluateObservable(kCascadeTransRadMin, cascade.cascradius());
313321

0 commit comments

Comments
 (0)