Skip to content

Commit 9d72c0c

Browse files
EloviyoShirajum Monira
andauthored
[PWGCF] FemtoUniverse cascade task -- added process functions for track-cascade analysis (#8462)
Co-authored-by: Shirajum Monira <shirajum.monira@cernch>
1 parent 4c9abbb commit 9d72c0c

File tree

3 files changed

+225
-33
lines changed

3 files changed

+225
-33
lines changed

PWGCF/FemtoUniverse/Core/FemtoUniverseCascadeSelection.h

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
/// \author Luca Barioglio, TU München, luca.barioglio@cern.ch
1717
/// \author Zuzanna Chochulska, WUT Warsaw & CTU Prague, zchochul@cern.ch
1818
/// \author Barbara Chytla, WUT Warsaw, barbara.chytla@cern.ch
19+
/// \author Shirajum Monira, WUT Warsaw, shirajum.monira@cern.ch
1920

2021
#ifndef PWGCF_FEMTOUNIVERSE_CORE_FEMTOUNIVERSECASCADESELECTION_H_
2122
#define PWGCF_FEMTOUNIVERSE_CORE_FEMTOUNIVERSECASCADESELECTION_H_
@@ -87,13 +88,13 @@ class FemtoUniverseCascadeSelection
8788

8889
public:
8990
FemtoUniverseCascadeSelection()
90-
: nPtCascadeMinSel(0), nPtCascadeMaxSel(0), nEtaCascadeMaxSel(0), nDCAV0DaughMax(0), nCPAV0Min(0), nTranRadV0Min(0), nTranRadV0Max(0), nV0DecVtxMax(0), nDCACascadeDaughMax(0), nCPACascadeMin(0), nTranRadCascadeMin(0), nTranRadCascadeMax(0), nDecVtxMax(0), nDCAPosToPV(0), nDCANegToPV(0), nDCABachToPV(0), nDCAV0ToPV(0), pTCascadeMin(9999999.), pTCascadeMax(-9999999.), etaCascadeMax(-9999999.), DCAV0DaughMax(-9999999.), CPAV0Min(9999999.), TranRadV0Min(9999999.), TranRadV0Max(-9999999.), V0DecVtxMax(-9999999.), DCACascadeDaughMax(-9999999.), CPACascadeMin(9999999.), TranRadCascadeMin(9999999.), TranRadCascadeMax(-9999999.), DecVtxMax(-9999999.), DCAPosToPV(9999999.), DCANegToPV(9999999.), DCABachToPV(9999999.), DCAV0ToPV(9999999.), fV0InvMassLowLimit(1.05), fV0InvMassUpLimit(1.3), fInvMassLowLimit(1.25), fInvMassUpLimit(1.4), fRejectOmega(false), fInvMassOmegaLowLimit(1.5), fInvMassOmegaUpLimit(2.0) /*, nSigmaPIDOffsetTPC(0.)*/
91+
: nPtCascadeMinSel(0), nPtCascadeMaxSel(0), nEtaCascadeMaxSel(0), nDCAV0DaughMax(0), nCPAV0Min(0), nTranRadV0Min(0), nTranRadV0Max(0), nV0DecVtxMax(0), nDCACascadeDaughMax(0), nCPACascadeMin(0), nTranRadCascadeMin(0), nTranRadCascadeMax(0), nDecVtxMax(0), nDCAPosToPV(0), nDCANegToPV(0), nDCABachToPV(0), nDCAV0ToPV(0), pTCascadeMin(9999999.), pTCascadeMax(-9999999.), etaCascadeMax(-9999999.), DCAV0DaughMax(-9999999.), CPAV0Min(9999999.), TranRadV0Min(9999999.), TranRadV0Max(-9999999.), V0DecVtxMax(-9999999.), DCACascadeDaughMax(-9999999.), CPACascadeMin(9999999.), TranRadCascadeMin(9999999.), TranRadCascadeMax(-9999999.), DecVtxMax(-9999999.), DCAPosToPV(9999999.), DCANegToPV(9999999.), DCABachToPV(9999999.), DCAV0ToPV(9999999.), fV0InvMassLowLimit(1.05), fV0InvMassUpLimit(1.3), fInvMassLowLimit(1.25), fInvMassUpLimit(1.4), fRejectCompetingMass(false), fInvMassCompetingLowLimit(1.5), fInvMassCompetingUpLimit(2.0), isCascOmega(false) /*, nSigmaPIDOffsetTPC(0.)*/
9192
{
9293
}
9394

9495
/// Initializes histograms for the task
9596
template <o2::aod::femtouniverseparticle::ParticleType part, o2::aod::femtouniverseparticle::ParticleType daugh, o2::aod::femtouniverseparticle::ParticleType bach, typename cutContainerType>
96-
void init(HistogramRegistry* registry);
97+
void init(HistogramRegistry* registry, bool isSelectCascOmega = false);
9798

9899
template <typename Col, typename Casc, typename Track>
99100
bool isSelectedMinimal(Col const& col, Casc const& cascade, Track const& posTrack, Track const& negTrack, Track const& bachTrack);
@@ -168,11 +169,11 @@ class FemtoUniverseCascadeSelection
168169
/// Set limit for the omega rejection on the invariant mass
169170
/// \param lowLimit Lower limit for the invariant mass distribution
170171
/// \param upLimit Upper limit for the invariant mass distribution
171-
void setOmegaInvMassLimits(float lowLimit, float upLimit)
172+
void setCompetingInvMassLimits(float lowLimit, float upLimit)
172173
{
173-
fRejectOmega = true;
174-
fInvMassOmegaLowLimit = lowLimit;
175-
fInvMassOmegaUpLimit = upLimit;
174+
fRejectCompetingMass = true;
175+
fInvMassCompetingLowLimit = lowLimit;
176+
fInvMassCompetingUpLimit = upLimit;
176177
}
177178

178179
private:
@@ -217,9 +218,11 @@ class FemtoUniverseCascadeSelection
217218
float fInvMassLowLimit;
218219
float fInvMassUpLimit;
219220

220-
float fRejectOmega;
221-
float fInvMassOmegaLowLimit;
222-
float fInvMassOmegaUpLimit;
221+
float fRejectCompetingMass;
222+
float fInvMassCompetingLowLimit;
223+
float fInvMassCompetingUpLimit;
224+
225+
bool isCascOmega;
223226

224227
// float nSigmaPIDOffsetTPC;
225228

@@ -259,8 +262,8 @@ class FemtoUniverseCascadeSelection
259262
femtoUniverseSelection::kLowerLimit, // DCA v0 to PV max
260263
femtoUniverseSelection::kLowerLimit, // v0 mass min
261264
femtoUniverseSelection::kUpperLimit, // v0 mass max
262-
}; ///< Map to match a variable with
263-
///< its type
265+
}; ///< Map to match a variable with
266+
///< its type
264267

265268
static constexpr std::string_view mSelectionHelper[kNcascadeSelection] = {
266269
"Cascade particle sign (+1 or -1)",
@@ -288,7 +291,7 @@ class FemtoUniverseCascadeSelection
288291
}; // namespace femtoUniverse
289292

290293
template <o2::aod::femtouniverseparticle::ParticleType part, o2::aod::femtouniverseparticle::ParticleType daugh, o2::aod::femtouniverseparticle::ParticleType bach, typename cutContainerType>
291-
void FemtoUniverseCascadeSelection::init(HistogramRegistry* registry)
294+
void FemtoUniverseCascadeSelection::init(HistogramRegistry* registry, bool isSelectCascOmega)
292295
{
293296

294297
if (registry) {
@@ -297,7 +300,7 @@ void FemtoUniverseCascadeSelection::init(HistogramRegistry* registry)
297300
fillSelectionHistogram<daugh>(); // pos, neg
298301
fillSelectionHistogram<bach>(); // bach
299302

300-
AxisSpec massAxisCascade = {600, 1.25f, 1.4f, "m_{#Cascade} (GeV/#it{c}^{2})"};
303+
AxisSpec massAxisCascade = {2200, 1.25f, 1.8f, "m_{#Cascade} (GeV/#it{c}^{2})"};
301304
AxisSpec massAxisV0 = {600, 0.0f, 3.0f, "m_{#V0} (GeV/#it{c}^{2})"};
302305
AxisSpec DCADaughAxis = {1000, 0.0f, 2.0f, "DCA (cm)"};
303306
AxisSpec DCAToPVAxis = {1000, -10.0f, 10.0f, "DCA to PV (cm)"};
@@ -410,6 +413,8 @@ void FemtoUniverseCascadeSelection::init(HistogramRegistry* registry)
410413
femtoUniverseSelection::kLowerLimit);
411414
fV0InvMassUpLimit = getMinimalSelection(femtoUniverseCascadeSelection::kCascadeV0MassMax,
412415
femtoUniverseSelection::kUpperLimit);
416+
417+
isCascOmega = isSelectCascOmega;
413418
}
414419

415420
template <typename Col, typename Casc, typename Track>
@@ -429,18 +434,18 @@ bool FemtoUniverseCascadeSelection::isSelectedMinimal(Col const& col, Casc const
429434
const float cpaCasc = cascade.casccosPA(col.posX(), col.posY(), col.posZ());
430435
const float dcav0topv = cascade.dcav0topv(col.posX(), col.posY(), col.posZ());
431436
const float invMassLambda = cascade.mLambda();
432-
const float invMassXi = cascade.mXi();
437+
const float invMass = isCascOmega ? cascade.mOmega() : cascade.mXi();
433438

434439
if (invMassLambda < fV0InvMassLowLimit || invMassLambda > fV0InvMassUpLimit) {
435440
return false;
436441
}
437-
if (invMassXi < fInvMassLowLimit || invMassXi > fInvMassUpLimit) {
442+
if (invMass < fInvMassLowLimit || invMass > fInvMassUpLimit) {
438443
return false;
439444
}
440-
if (fRejectOmega) {
441-
const float invMassOmega = cascade.mOmega();
442-
if (invMassOmega > fInvMassOmegaLowLimit &&
443-
invMassOmega < fInvMassOmegaUpLimit) {
445+
if (fRejectCompetingMass) {
446+
const float invMassCompeting = isCascOmega ? cascade.mXi() : cascade.mOmega();
447+
if (invMassCompeting > fInvMassCompetingLowLimit &&
448+
invMassCompeting < fInvMassCompetingUpLimit) {
444449
return false;
445450
}
446451
}
@@ -539,10 +544,10 @@ void FemtoUniverseCascadeSelection::fillCascadeQA(Col const& col, Casc const& ca
539544
const float dcav0topv = cascade.dcav0topv(col.posX(), col.posY(), col.posZ());
540545

541546
const float invMassLambda = cascade.mLambda();
542-
const float invMassXi = cascade.mXi();
547+
const float invMass = isCascOmega ? cascade.mOmega() : cascade.mXi();
543548

544549
mHistogramRegistry->fill(HIST("CascadeQA/hInvMassV0Cut"), invMassLambda);
545-
mHistogramRegistry->fill(HIST("CascadeQA/hInvMassCascadeCut"), invMassXi);
550+
mHistogramRegistry->fill(HIST("CascadeQA/hInvMassCascadeCut"), invMass);
546551
mHistogramRegistry->fill(HIST("CascadeQA/hCascadePt"), cascade.pt());
547552
mHistogramRegistry->fill(HIST("CascadeQA/hCascadeEta"), cascade.eta());
548553
mHistogramRegistry->fill(HIST("CascadeQA/hCascadePhi"), cascade.phi());

PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ struct femtoUniverseProducerTask {
128128
Configurable<bool> ConfIsActivateV0{"ConfIsActivateV0", false, "Activate filling of V0 into femtouniverse tables"};
129129
Configurable<bool> ConfActivateSecondaries{"ConfActivateSecondaries", false, "Fill secondary MC gen particles that were reconstructed"};
130130
Configurable<bool> ConfIsActivateCascade{"ConfIsActivateCascade", false, "Activate filling of Cascade into femtouniverse tables"};
131+
Configurable<bool> ConfIsSelectCascOmega{"ConfIsSelectCascOmega", false, "Select Omegas for cascade analysis"};
131132
Configurable<bool> ConfIsActivatePhi{"ConfIsActivatePhi", false, "Activate filling of Phi into femtouniverse tables"};
132133
Configurable<bool> ConfMCTruthAnalysisWithPID{"ConfMCTruthAnalysisWithPID", true, "1: take only particles with specified PDG, 0: all particles (for MC Truth)"};
133134
Configurable<std::vector<int>> ConfMCTruthPDGCodes{"ConfMCTruthPDGCodes", std::vector<int>{211, -211, 2212, -2212, 333}, "PDG of particles to be stored"};
@@ -251,14 +252,14 @@ struct femtoUniverseProducerTask {
251252
Configurable<std::vector<float>> ConfCascChildTPCnClsMin{"ConfCascChildTPCnClsMin", std::vector<float>{80.f, 70.f, 60.f}, "Cascade Child sel: Min. nCls TPC"};
252253
// Configurable<std::vector<float>> ConfCascChildDCAMin{"ConfCascChildDCAMin", std::vector<float>{0.05f, 0.06f}, "Cascade Child sel: Max. DCA Daugh to PV (cm)"};
253254
Configurable<std::vector<float>> ConfCascChildPIDnSigmaMax{"ConfCascChildPIDnSigmaMax", std::vector<float>{3.f, 4.f}, "Cascade Child sel: Max. PID nSigma TPC"};
254-
Configurable<std::vector<int>> ConfCascChildPIDspecies{"ConfCascChildPIDspecies", std::vector<int>{o2::track::PID::Pion, o2::track::PID::Proton}, "V0 Child sel: Particles species for PID"};
255+
Configurable<std::vector<int>> ConfCascChildPIDspecies{"ConfCascChildPIDspecies", std::vector<int>{o2::track::PID::Pion, o2::track::PID::Proton}, "Cascade Child sel: particle species for PID"};
255256

256-
Configurable<float> ConfCascInvMassLowLimit{"ConfCascInvMassLowLimit", 1.25, "Lower limit of the V0 invariant mass"};
257-
Configurable<float> ConfCascInvMassUpLimit{"ConfCascInvMassUpLimit", 1.40, "Upper limit of the V0 invariant mass"};
257+
Configurable<float> ConfCascInvMassLowLimit{"ConfCascInvMassLowLimit", 1.25, "Lower limit of the cascade invariant mass"};
258+
Configurable<float> ConfCascInvMassUpLimit{"ConfCascInvMassUpLimit", 1.40, "Upper limit of the cascade invariant mass"};
258259

259-
Configurable<bool> ConfCascRejectOmegas{"ConfCascRejectOmegas", false, "Switch on to reject Omegas (for Xi) or Xis (for Omega)"};
260-
Configurable<float> ConfCascInvOmegaMassLowLimit{"ConfCascInvOmegaMassLowLimit", 1.66, "Lower limit of the cascade invariant mass for Omega rejection"};
261-
Configurable<float> ConfCascInvOmegaMassUpLimit{"ConfCascInvOmegaMassUpLimit", 1.68, "Upper limit of the cascade invariant mass for Omega rejection"};
260+
Configurable<bool> ConfCascRejectCompetingMass{"ConfCascRejectCompetingMass", false, "Switch on to reject Omegas (for Xi) or Xis (for Omegas)"};
261+
Configurable<float> ConfCascInvCompetingMassLowLimit{"ConfCascInvCompetingMassLowLimit", 1.66, "Lower limit of the cascade invariant mass for competing mass rejection"};
262+
Configurable<float> ConfCascInvCompetingMassUpLimit{"ConfCascInvCompetingMassUpLimit", 1.68, "Upper limit of the cascade invariant mass for competing mass rejection"};
262263
} ConfCascadeSelection;
263264

264265
// PHI
@@ -559,15 +560,15 @@ struct femtoUniverseProducerTask {
559560
// TODO
560561
cascadeCuts.setChildPIDSpecies(femtoUniverseCascadeSelection::kPosTrack, ConfV0Selection.ConfChildPIDspecies);
561562
cascadeCuts.setChildPIDSpecies(femtoUniverseCascadeSelection::kNegTrack, ConfV0Selection.ConfChildPIDspecies);
562-
cascadeCuts.setChildPIDSpecies(femtoUniverseCascadeSelection::kBachTrack, ConfV0Selection.ConfChildPIDspecies);
563+
cascadeCuts.setChildPIDSpecies(femtoUniverseCascadeSelection::kBachTrack, ConfCascadeSelection.ConfCascChildPIDspecies);
563564

564565
// check if works correctly for bachelor track
565-
cascadeCuts.init<aod::femtouniverseparticle::ParticleType::kCascade, aod::femtouniverseparticle::ParticleType::kV0Child, aod::femtouniverseparticle::ParticleType::kCascadeBachelor, aod::femtouniverseparticle::cutContainerType>(&cascadeQaRegistry);
566+
cascadeCuts.init<aod::femtouniverseparticle::ParticleType::kCascade, aod::femtouniverseparticle::ParticleType::kV0Child, aod::femtouniverseparticle::ParticleType::kCascadeBachelor, aod::femtouniverseparticle::cutContainerType>(&cascadeQaRegistry, ConfIsSelectCascOmega);
566567
// invmass cuts
567568
cascadeCuts.setInvMassLimits(ConfCascadeSelection.ConfCascInvMassLowLimit, ConfCascadeSelection.ConfCascInvMassUpLimit);
568569

569-
if (ConfCascadeSelection.ConfCascRejectOmegas) {
570-
cascadeCuts.setOmegaInvMassLimits(ConfCascadeSelection.ConfCascInvOmegaMassLowLimit, ConfCascadeSelection.ConfCascInvOmegaMassUpLimit);
570+
if (ConfCascadeSelection.ConfCascRejectCompetingMass) {
571+
cascadeCuts.setCompetingInvMassLimits(ConfCascadeSelection.ConfCascInvCompetingMassLowLimit, ConfCascadeSelection.ConfCascInvCompetingMassUpLimit);
571572
}
572573
}
573574

@@ -1137,8 +1138,8 @@ struct femtoUniverseProducerTask {
11371138
0,
11381139
0,
11391140
indexCascChildID,
1140-
casc.mXi(),
1141-
casc.mXi(),
1141+
ConfIsSelectCascOmega ? casc.mOmega() : casc.mXi(),
1142+
ConfIsSelectCascOmega ? casc.mOmega() : casc.mXi(),
11421143
casc.dcaV0daughters(),
11431144
casc.v0cosPA(col.posX(), col.posY(), col.posZ()),
11441145
casc.v0radius(),

0 commit comments

Comments
 (0)