Skip to content

Commit 3f97017

Browse files
committed
added two new variables for ML use
1 parent d7617af commit 3f97017

3 files changed

Lines changed: 35 additions & 15 deletions

File tree

‎PWGLF/Tasks/Resonances/k892hadronphotonBkg.cxx‎

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,8 @@ struct k892hadronphotonBkg {
341341
histos.add("BDT/h2dPhotonQt", "h2dPhotonQt", kTH2D, {axisConfig.mlProb, axisConfig.axisV0APQt});
342342
histos.add("BDT/h2dPhotonRadius", "h2dPhotonRadius", kTH2D, {axisConfig.mlProb, axisConfig.axisV0Radius});
343343
histos.add("BDT/h2dOPAngle", "h2dOPAngle", kTH2D, {axisConfig.mlProb, axisConfig.axisOPAngle});
344+
histos.add("BDT/h2dAPAlpha", "h2dAPAlpha", kTH2D, {axisConfig.mlProb, axisConfig.axisAPAlpha});
345+
histos.add("BDT/h2dAPQt", "h2dAPQt", kTH2D, {axisConfig.mlProb, axisConfig.axisAPQt});
344346
}
345347

346348
histos.add("hEventCentrality", "hEventCentrality", kTH1D, {axisConfig.axisCentrality});
@@ -894,7 +896,7 @@ struct k892hadronphotonBkg {
894896
//_______________________________________________
895897
// Fill BDT performance QA
896898
template <typename TV0Object>
897-
void fillBDTPerformance(TV0Object const& lambda, TV0Object const& photon, float openAngle, float score, float pt, float mass)
899+
void fillBDTPerformance(TV0Object const& lambda, TV0Object const& photon, float openAngle, float apAlpha, float apQt, float score, float pt, float mass)
898900
{
899901
float bkgScore = 1.0f - score;
900902

@@ -924,24 +926,26 @@ struct k892hadronphotonBkg {
924926
histos.fill(HIST("BDT/h2dPhotonQt"), score, photon.qtarm());
925927
histos.fill(HIST("BDT/h2dPhotonRadius"), score, photon.v0radius());
926928
histos.fill(HIST("BDT/h2dOPAngle"), score, openAngle);
929+
histos.fill(HIST("BDT/h2dAPAlpha"), score, apAlpha);
930+
histos.fill(HIST("BDT/h2dAPQt"), score, apQt);
927931
}
928932

929933
//_______________________________________________
930934
// BDT selection of a Lambda + photon pair
931935
template <typename TV0Object>
932936
bool selectML(TV0Object const& lambda, TV0Object const& photon,
933-
float openAngle, float pt, float mass)
937+
float openAngle, float apAlpha, float apQt, float pt, float mass)
934938
{
935939
// No model outside the bdt.ptBinEdges range
936940
if (pt < bdt.ptBinEdges.value.front() || pt >= bdt.ptBinEdges.value.back())
937941
return false;
938942

939943
// Features in the order of bdt.namesInputFeatures
940-
auto inputFeatures = mlResponse.getInputFeatures(lambda, photon, openAngle);
944+
auto inputFeatures = mlResponse.getInputFeatures(lambda, photon, openAngle, apAlpha, apQt);
941945
std::vector<float> outputMl;
942946
const bool isSelected = mlResponse.isSelectedMl(inputFeatures, pt, outputMl); // model and cut of the pT bin
943947

944-
fillBDTPerformance(lambda, photon, openAngle, outputMl[1], pt, mass);
948+
fillBDTPerformance(lambda, photon, openAngle, apAlpha, apQt, outputMl[1], pt, mass);
945949

946950
return isSelected;
947951
}
@@ -1103,20 +1107,20 @@ struct k892hadronphotonBkg {
11031107
if (std::abs(rapidity) > maxRap)
11041108
continue;
11051109

1110+
// Armenteros-Podolanski of the mixed pair
1111+
const std::array<float, 3> gammaMom{photon.px(), photon.py(), photon.pz()};
1112+
const std::array<float, 3> hadronMom{hadron.px(), hadron.py(), hadron.pz()};
1113+
const float apAlpha = armenterosAlpha(gammaMom, hadronMom);
1114+
const float apQt = armenterosQt(gammaMom, hadronMom);
1115+
11061116
// BDT selection (Lambda(1520) only)
11071117
if constexpr (resonance == kResoLambdaStar) {
11081118
if (bdt.enableML) {
1109-
if (!selectML(hadron, photon, openAngle, pt, mass))
1119+
if (!selectML(hadron, photon, openAngle, apAlpha, apQt, pt, mass))
11101120
continue;
11111121
}
11121122
}
11131123

1114-
// Armenteros-Podolanski of the mixed pair
1115-
const std::array<float, 3> gammaMom{photon.px(), photon.py(), photon.pz()};
1116-
const std::array<float, 3> hadronMom{hadron.px(), hadron.py(), hadron.pz()};
1117-
const float apAlpha = armenterosAlpha(gammaMom, hadronMom);
1118-
const float apQt = armenterosQt(gammaMom, hadronMom);
1119-
11201124
if constexpr (resonance == kResoKStar) {
11211125
histos.fill(HIST("KStarBkg/h2dMixedKStarMassVsPt"), mass, pt);
11221126
histos.fill(HIST("KStarBkg/h3dMixedKStarMassVsPt"), centrality, pt, mass);

‎PWGLF/Tasks/Strangeness/sigmaanalysis.cxx‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,8 @@ struct sigmaanalysis {
398398
histos.add("BDT/h2dPhotonQt", "h2dPhotonQt", kTH2D, {mlProb, axisAPQt});
399399
histos.add("BDT/h2dPhotonRadius", "h2dPhotonRadius", kTH2D, {mlProb, axisV0Radius});
400400
histos.add("BDT/h2dOPAngle", "h2dOPAngle", kTH2D, {mlProb, axisOPAngle});
401+
histos.add("BDT/h2dAPAlpha", "h2dAPAlpha", kTH2D, {mlProb, axisAPAlpha});
402+
histos.add("BDT/h2dAPQt", "h2dAPQt", kTH2D, {mlProb, axisAPQt});
401403

402404
// MC-truth-based score
403405
if (doprocessMonteCarlo) {
@@ -1773,6 +1775,8 @@ struct sigmaanalysis {
17731775
histos.fill(HIST("BDT/h2dPhotonQt"), score, cand.photonQt());
17741776
histos.fill(HIST("BDT/h2dPhotonRadius"), score, cand.photonRadius());
17751777
histos.fill(HIST("BDT/h2dOPAngle"), score, cand.opAngle());
1778+
histos.fill(HIST("BDT/h2dAPAlpha"), score, cand.lStarAlpha());
1779+
histos.fill(HIST("BDT/h2dAPQt"), score, cand.lStarQtarm());
17761780

17771781
// MC-truth-based separation (signal = particle + antiparticle)
17781782
if constexpr (requires { cand.isSigma0(); cand.isLambdaStar(); }) {
@@ -1796,7 +1800,7 @@ struct sigmaanalysis {
17961800
return false;
17971801

17981802
// Features in the order of bdt.namesInputFeatures
1799-
auto inputFeatures = mlResponse.getInputFeatures(cand, cand, cand.opAngle());
1803+
auto inputFeatures = mlResponse.getInputFeatures(cand, cand, cand.opAngle(), cand.lStarAlpha(), cand.lStarQtarm());
18001804
std::vector<float> outputMl; // [background, signal]
18011805
const bool isSelected = mlResponse.isSelectedMl(inputFeatures, pt, outputMl); // model and cut of the pT bin
18021806

‎PWGLF/Utils/ResonanceMlResponse.h‎

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ enum class InputFeaturesResonance : uint8_t {
6060
photonPosTPCNSigmaEl,
6161
photonNegTPCNSigmaEl,
6262
// Photon-Lambda pair
63-
opAngle
63+
opAngle,
64+
apAlpha,
65+
apQt
6466
};
6567

6668
template <typename TypeOutputScore = float>
@@ -72,7 +74,7 @@ class ResonanceMlResponse : public MlResponse<TypeOutputScore>
7274

7375
/// Input features of a photon-Lambda pair
7476
template <typename TDauTracks = o2::soa::Join<o2::aod::DauTrackExtras, o2::aod::DauTrackTPCPIDs>, typename TLambda, typename TPhoton>
75-
std::vector<float> getInputFeatures(TLambda const& lambda, TPhoton const& photon, float opAngle)
77+
std::vector<float> getInputFeatures(TLambda const& lambda, TPhoton const& photon, float opAngle, float apAlpha, float apQt)
7678
{
7779
// sigma0builder candidates carry prefixed columns (lambdaQt(), photonQt(), ...), derived V0s the plain V0 getters
7880
constexpr bool LambdaFromSigma0 = requires(TLambda const& cand) { cand.lambdaQt(); };
@@ -271,6 +273,14 @@ class ResonanceMlResponse : public MlResponse<TypeOutputScore>
271273
case InputFeaturesResonance::opAngle:
272274
inputFeatures.emplace_back(opAngle);
273275
break;
276+
277+
case InputFeaturesResonance::apAlpha:
278+
inputFeatures.emplace_back(apAlpha);
279+
break;
280+
281+
case InputFeaturesResonance::apQt:
282+
inputFeatures.emplace_back(apQt);
283+
break;
274284
}
275285
}
276286
return inputFeatures;
@@ -307,7 +317,9 @@ class ResonanceMlResponse : public MlResponse<TypeOutputScore>
307317
{"photonNegEta", static_cast<uint8_t>(InputFeaturesResonance::photonNegEta)},
308318
{"photonPosTPCNSigmaEl", static_cast<uint8_t>(InputFeaturesResonance::photonPosTPCNSigmaEl)},
309319
{"photonNegTPCNSigmaEl", static_cast<uint8_t>(InputFeaturesResonance::photonNegTPCNSigmaEl)},
310-
{"opAngle", static_cast<uint8_t>(InputFeaturesResonance::opAngle)}};
320+
{"opAngle", static_cast<uint8_t>(InputFeaturesResonance::opAngle)},
321+
{"apAlpha", static_cast<uint8_t>(InputFeaturesResonance::apAlpha)},
322+
{"apQt", static_cast<uint8_t>(InputFeaturesResonance::apQt)}};
311323
}
312324
};
313325

0 commit comments

Comments
 (0)