Skip to content

Commit 2e7cd35

Browse files
gmantzarGeorgios Mantzaridis
andauthored
[PWGCF] Competing Mass rejection for V0 selection (#14385)
Co-authored-by: Georgios Mantzaridis <ga27bor@nidoqueen.ktas.ph.tum.de>
1 parent 51db1b8 commit 2e7cd35

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

PWGCF/FemtoDream/Core/femtoDreamMath.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,18 @@ class FemtoDreamMath
140140
return std::sqrt(std::pow(getkT(part1, mass1, part2, mass2), 2.) + std::pow(0.5 * (mass1 + mass2), 2.));
141141
}
142142

143+
template <typename T1>
144+
static float calcInvMassV0(const T1& trackpos, const float masspos, const T1& trackneg, const float massneg)
145+
{
146+
// calculate the invariant mass
147+
const ROOT::Math::PtEtaPhiMVector posDaug(trackpos.pt(), trackpos.eta(), trackpos.phi(), masspos);
148+
const ROOT::Math::PtEtaPhiMVector negDaug(trackneg.pt(), trackneg.eta(), trackneg.phi(), massneg);
149+
// const ROOT::Math::PxPyPzMVector v0 = negDaug + posDaug;
150+
const ROOT::Math::PtEtaPhiMVector v0 = negDaug + posDaug;
151+
152+
return v0.M();
153+
}
154+
143155
template <typename T1>
144156
static float getInvMassCascade(const T1& trackpos, const float masspos, const T1& trackneg, const float massneg, const T1& trackbach, const float massbach, const float massv0)
145157
{

PWGCF/FemtoDream/Tasks/femtoDreamDebugV0.cxx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515

1616
#include "PWGCF/DataModel/FemtoDerived.h"
1717
#include "PWGCF/FemtoDream/Core/femtoDreamEventHisto.h"
18+
#include "PWGCF/FemtoDream/Core/femtoDreamMath.h"
1819
#include "PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h"
20+
#include "PWGCF/FemtoDream/Core/femtoDreamUtils.h"
1921

2022
#include "DataFormatsParameters/GRPObject.h"
2123
#include "Framework/ASoAHelpers.h"
@@ -68,6 +70,11 @@ struct femtoDreamDebugV0 {
6870
ConfigurableAxis ConfChildTempFitVarBins{"ConfChildTempFitVarBins", {300, -0.15, 0.15}, "V0 child: binning of the TempFitVar in the pT vs. TempFitVar plot"};
6971
ConfigurableAxis ConfChildTempFitVarpTBins{"ConfChildTempFitVarpTBins", {20, 0.5, 4.05}, "V0 child: pT binning of the pT vs. TempFitVar plot"};
7072

73+
Configurable<bool> ConfIsLambda{"ConfIsLambda", false, "Set to true if V0 is Lambda, false if K0s"};
74+
Configurable<bool> ConfRejectCompetingMass{"ConfRejectCompetingMass", false, "Reject the competing Cascade Mass (use only for debugging. More efficient to exclude it already at the producer level)"};
75+
Configurable<float> ConfCompetingV0MassLowLimit{"ConfCompetingV0MassLowLimit", 0., "Lower Limit of the invariant mass window within which to reject the V0"};
76+
Configurable<float> ConfCompetingV0MassUpLimit{"ConfCompetingV0MassUpLimit", 0., "Upper Limit of the invariant mass window within which to reject the V0"};
77+
7178
using FemtoFullParticles = soa::Join<aod::FDParticles, aod::FDExtParticles>;
7279
Partition<FemtoFullParticles> partsV0 = (aod::femtodreamparticle::partType == uint8_t(aod::femtodreamparticle::ParticleType::kV0)) && (ncheckbit(aod::femtodreamparticle::cut, ConfV01_CutBit));
7380
Preslice<FemtoFullParticles> perCol = aod::femtodreamparticle::fdCollisionId;
@@ -84,13 +91,21 @@ struct femtoDreamDebugV0 {
8491
HistogramRegistry EventRegistry{"Event", {}, OutputObjHandlingPolicy::AnalysisObject};
8592
HistogramRegistry V0Registry{"FullV0QA", {}, OutputObjHandlingPolicy::AnalysisObject};
8693

94+
float massProton;
95+
float massPion;
96+
8797
void init(InitContext&)
8898
{
8999
eventHisto.init(&EventRegistry, false);
90100
posChildHistos.init(&V0Registry, ConfBinmult, ConfDummy, ConfV0ChildTempFitVarMomentumBins, ConfDummy, ConfDummy, ConfChildTempFitVarBins, ConfV0ChildNsigmaTPCBins, ConfV0ChildNsigmaTOFBins, ConfV0ChildNsigmaTPCTOFBins, ConfV0ChildNsigmaITSBins, ConfV0InvMassBins, ConfDummy, false, ConfV01_ChildPos_PDGCode.value, true);
91101
negChildHistos.init(&V0Registry, ConfBinmult, ConfDummy, ConfV0ChildTempFitVarMomentumBins, ConfDummy, ConfDummy, ConfChildTempFitVarBins, ConfV0ChildNsigmaTPCBins, ConfV0ChildNsigmaTOFBins, ConfV0ChildNsigmaTPCTOFBins, ConfV0ChildNsigmaITSBins, ConfV0InvMassBins, ConfDummy, false, ConfV01_ChildNeg_PDGCode, true);
92102
motherHistos.init(&V0Registry, ConfBinmult, ConfDummy, ConfV0TempFitVarMomentumBins, ConfDummy, ConfDummy, ConfV0TempFitVarBins, ConfV0ChildNsigmaTPCBins, ConfV0ChildNsigmaTOFBins, ConfV0ChildNsigmaTPCTOFBins, ConfV0ChildNsigmaITSBins, ConfV0InvMassBins, ConfDummy, false, ConfV01_PDGCode.value, true);
93103
V0Registry.add("hArmenterosPodolanski/hArmenterosPodolanskiPlot", "; #alpha; p_{T} (MeV/#it{c})", kTH2F, {{100, -1, 1}, {500, -0.3, 2}});
104+
105+
massProton = o2::analysis::femtoDream::getMass(2212);
106+
massPion = o2::analysis::femtoDream::getMass(211);
107+
// massProton = getMass(2212);
108+
// massPion = getMass(211);
94109
}
95110

96111
/// Porduce QA plots for V0 selection in FemtoDream framework
@@ -132,6 +147,24 @@ struct femtoDreamDebugV0 {
132147
TVector3 p_perp = p_plus - (p_parent * (pL_plus / p_parent.Mag()));
133148
double qtarm = p_perp.Mag();
134149

150+
// Competing mass rejection
151+
if (ConfRejectCompetingMass) {
152+
float invMassCompetingV0;
153+
if (ConfIsLambda) {
154+
if (part.sign() < 0) {
155+
invMassCompetingV0 = FemtoDreamMath::calcInvMassV0(posChild, massPion, negChild, massProton);
156+
} else {
157+
invMassCompetingV0 = FemtoDreamMath::calcInvMassV0(posChild, massProton, negChild, massPion);
158+
}
159+
} else {
160+
invMassCompetingV0 = FemtoDreamMath::calcInvMassV0(posChild, massPion, negChild, massPion);
161+
}
162+
if (invMassCompetingV0 > ConfCompetingV0MassLowLimit.value &&
163+
invMassCompetingV0 < ConfCompetingV0MassUpLimit.value) {
164+
continue;
165+
}
166+
}
167+
135168
V0Registry.fill(HIST("hArmenterosPodolanski/hArmenterosPodolanskiPlot"), alpha, qtarm);
136169

137170
motherHistos.fillQA<false, true>(part, static_cast<aod::femtodreamparticle::MomentumType>(ConfV0TempFitVarMomentum.value), col.multNtr(), col.multV0M());

0 commit comments

Comments
 (0)