Skip to content

Commit 6ceaf85

Browse files
Luca610alibuild
andauthored
PWGHF: Added parametrized pT differential cut in Dplus candidate selector (#7333)
* Added parametrized invariant mass cut to Dplus candidate selector to analyse triggered data * Please consider the following formatting changes * Update utilsAnalysis.h * Please consider the following formatting changes --------- Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 643bc8e commit 6ceaf85

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

PWGHF/TableProducer/candidateSelectorDplusToPiKPi.cxx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "PWGHF/Core/HfMlResponseDplusToPiKPi.h"
2626
#include "PWGHF/DataModel/CandidateReconstructionTables.h"
2727
#include "PWGHF/DataModel/CandidateSelectionTables.h"
28+
#include "PWGHF/Utils/utilsAnalysis.h"
2829

2930
using namespace o2;
3031
using namespace o2::analysis;
@@ -72,6 +73,8 @@ struct HfCandidateSelectorDplusToPiKPi {
7273
Configurable<std::vector<std::string>> onnxFileNames{"onnxFileNames", std::vector<std::string>{"ModelHandler_onnx_DPlusToKPiPi.onnx"}, "ONNX file names for each pT bin (if not from CCDB full path)"};
7374
Configurable<int64_t> timestampCCDB{"timestampCCDB", -1, "timestamp of the ONNX file for ML model used to query in CCDB"};
7475
Configurable<bool> loadModelsFromCCDB{"loadModelsFromCCDB", false, "Flag to enable or disable the loading of models from CCDB"};
76+
// Mass Cut for trigger analysis
77+
Configurable<bool> useTriggerMassCut{"useTriggerMassCut", false, "Flag to enable parametrize pT differential mass cut for triggered data"};
7578

7679
o2::analysis::HfMlResponseDplusToPiKPi<float> hfMlResponse;
7780
std::vector<float> outputMlNotPreselected = {};
@@ -80,6 +83,7 @@ struct HfCandidateSelectorDplusToPiKPi {
8083
TrackSelectorPi selectorPion;
8184
TrackSelectorKa selectorKaon;
8285
HfHelper hfHelper;
86+
o2::analysis::HfTriggerCuts hfTriggerCuts;
8387

8488
using TracksSel = soa::Join<aod::TracksWExtra, aod::TracksPidPi, aod::PidTpcTofFullPi, aod::TracksPidKa, aod::PidTpcTofFullKa>;
8589

@@ -149,6 +153,9 @@ struct HfCandidateSelectorDplusToPiKPi {
149153
if (std::abs(hfHelper.invMassDplusToPiKPi(candidate) - o2::constants::physics::MassDPlus) > cuts->get(pTBin, "deltaM")) {
150154
return false;
151155
}
156+
if (useTriggerMassCut && !hfTriggerCuts.isSelectedDplusInMassRange(hfHelper.invMassDplusToPiKPi(candidate), candpT)) {
157+
return false;
158+
}
152159
if (candidate.decayLength() < cuts->get(pTBin, "decay length")) {
153160
return false;
154161
}

PWGHF/Utils/utilsAnalysis.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
#include <algorithm> // std::upper_bound
1919
#include <iterator> // std::distance
20+
#include <string> //std::string
21+
#include "Common/Core/RecoDecay.h"
22+
#include "CommonConstants/PhysicsConstants.h"
2023

2124
namespace o2::analysis
2225
{
@@ -108,6 +111,34 @@ bool isSelectedTrackTpcQuality(T const& track, const int tpcNClustersFoundMin, c
108111
return true;
109112
}
110113

114+
struct HfTriggerCuts : o2::framework::ConfigurableGroup {
115+
std::string prefix = "hfMassCut"; // JSON group name
116+
117+
static constexpr float defaultDeltaMassPars3Prong[1][2] = {{-0.0025f, 0.0001f}};
118+
static constexpr float defaultSigmaPars3Prong[1][2] = {{0.00796f, 0.00176f}};
119+
o2::framework::Configurable<float> nSigma{"nSigma", 2.5, "Number of Sigmas for pT differential mass cut"};
120+
o2::framework::Configurable<float> pTMaxDeltaMass{"pTMaxDeltaMass", 10., "Max pT to apply delta mass shift to PDG mass value"};
121+
o2::framework::Configurable<float> pTMaxMassCut{"pTMaxMassCut", 8., "Max pT to apply pT differential cut"};
122+
o2::framework::Configurable<o2::framework::LabeledArray<float>> deltaMassPars3Prong{"deltaMassPars3Prong", {defaultDeltaMassPars3Prong[0], 2, {"constant", "linear"}}, "delta mass parameters for HF 3 prong trigger mass cut"};
123+
o2::framework::Configurable<o2::framework::LabeledArray<float>> sigmaPars3Prong{"sigmaPars3Prong", {defaultSigmaPars3Prong[0], 2, {"constant", "linear"}}, "sigma parameters for HF 3 prong trigger mass cut"};
124+
125+
/// Mass selection of D+ candidates to build B0 candidates
126+
/// \param pTrackSameChargeFirst is the first same-charge track momentum
127+
/// \param pTrackSameChargeFirst is the second same-charge track momentum
128+
/// \param pTrackSameChargeFirst is the opposite charge track momentum
129+
/// \param ptD is the pt of the D+ meson candidate
130+
/// \return true if D+ passes selection
131+
bool isSelectedDplusInMassRange(const float& invMassDplus, const float& ptD)
132+
{
133+
float peakMean = (ptD < pTMaxDeltaMass) ? ((o2::constants::physics::MassDPlus + deltaMassPars3Prong->get("constant")) + deltaMassPars3Prong->get("linear") * ptD) : o2::constants::physics::MassDPlus;
134+
float peakWidth = sigmaPars3Prong->get("constant") + sigmaPars3Prong->get("linear") * ptD;
135+
136+
if (std::fabs(invMassDplus - peakMean) > nSigma * peakWidth && ptD < pTMaxMassCut) {
137+
return false;
138+
}
139+
return true;
140+
}
141+
};
111142
} // namespace o2::analysis
112143

113144
#endif // PWGHF_UTILS_UTILSANALYSIS_H_

0 commit comments

Comments
 (0)