Skip to content

Commit 44ce417

Browse files
authored
Merge branch 'AliceO2Group:master' into master
2 parents 8d7943d + e832f6f commit 44ce417

9 files changed

Lines changed: 517 additions & 307 deletions

File tree

PWGCF/DataModel/FemtoDerived.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,8 @@ namespace fdhf
208208
enum CharmHadronMassHypo {
209209
wrongParticle = 0,
210210
lcToPKPi = 1,
211-
lcToPiKP = 2
211+
lcToPiKP = 2,
212+
dplusToPiKPi = 4
212213
};
213214
DECLARE_SOA_COLUMN(GIndexCol, gIndexCol, int); //! Global index for the collision
214215
DECLARE_SOA_COLUMN(TimeStamp, timeStamp, int64_t); //! Timestamp for the collision
@@ -227,7 +228,7 @@ DECLARE_SOA_COLUMN(Prong2Eta, prong2Eta, float); //! Track et
227228
DECLARE_SOA_COLUMN(Prong0Phi, prong0Phi, float); //! Track phi of charm hadron prong0
228229
DECLARE_SOA_COLUMN(Prong1Phi, prong1Phi, float); //! Track phi of charm hadron prong1
229230
DECLARE_SOA_COLUMN(Prong2Phi, prong2Phi, float); //! Track phi of charm hadron prong2
230-
DECLARE_SOA_COLUMN(CandidateSelFlag, candidateSelFlag, int8_t); //! Selection of mass hypothesis for charm hadron (1 for Lc -> pkpi, 2 for Lc -> pikp)
231+
DECLARE_SOA_COLUMN(CandidateSelFlag, candidateSelFlag, int8_t); //! Selection of mass hypothesis for charm hadron (1 for Lc -> pkpi, 2 for Lc -> pikp, 4 for D+ -> pikpi)
231232
DECLARE_SOA_COLUMN(BDTBkg, bdtBkg, float); //! Background score using Boosted Decision Tree for charm hadron
232233
DECLARE_SOA_COLUMN(BDTPrompt, bdtPrompt, float); //! Prompt signal score using Boosted Decision Tree for charm hadron
233234
DECLARE_SOA_COLUMN(BDTFD, bdtFD, float); //! Feed-down score using Boosted Decision Tree for charm hadron

PWGCF/FemtoDream/Core/femtoDreamContainer.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,12 @@ class FemtoDreamContainer
202202
{
203203
const float kT = FemtoDreamMath::getkT(part1, mMassOne, part2, mMassTwo);
204204
if constexpr (isHF) {
205-
float mP2;
206-
if (part2.candidateSelFlag() == o2::aod::fdhf::lcToPKPi) {
205+
float mP2 = 0.0;
206+
if (part2.candidateSelFlag() == o2::aod::fdhf::dplusToPiKPi) {
207+
mP2 = part2.m(std::array{o2::constants::physics::MassPiPlus, o2::constants::physics::MassKPlus, o2::constants::physics::MassPiPlus});
208+
} else if (part2.candidateSelFlag() == o2::aod::fdhf::lcToPKPi) {
207209
mP2 = part2.m(std::array{o2::constants::physics::MassProton, o2::constants::physics::MassKPlus, o2::constants::physics::MassPiPlus});
208-
} else {
210+
} else if (part2.candidateSelFlag() == o2::aod::fdhf::lcToPiKP) {
209211
mP2 = part2.m(std::array{o2::constants::physics::MassPiPlus, o2::constants::physics::MassKPlus, o2::constants::physics::MassProton});
210212
}
211213
mHistogramRegistry->fill(HIST(mFolderSuffix[mEventType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/relPairkstarmP2"), femtoObs, mP2);

PWGCF/FemtoDream/Core/femtoDreamUtils.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ inline float getMass(int pdgCode)
5252
case o2::constants::physics::Pdg::kPhi:
5353
mass = o2::constants::physics::MassPhi;
5454
break;
55+
case o2::constants::physics::Pdg::kDPlus:
56+
mass = o2::constants::physics::MassDPlus;
57+
break;
5558
case o2::constants::physics::Pdg::kLambdaCPlus:
5659
mass = o2::constants::physics::MassLambdaCPlus;
5760
break;

PWGHF/HFC/TableProducer/femtoDreamProducer.cxx

Lines changed: 180 additions & 64 deletions
Large diffs are not rendered by default.

PWGHF/HFC/Tasks/taskCharmHadronsFemtoDream.cxx

Lines changed: 119 additions & 92 deletions
Large diffs are not rendered by default.

PWGLF/Tasks/Resonances/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,12 +229,12 @@ o2physics_add_dpl_workflow(double-resonance-scan
229229
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
230230
COMPONENT_NAME Analysis)
231231

232-
o2physics_add_dpl_workflow(kstar-in-oo
232+
o2physics_add_dpl_workflow(kstarinoo
233233
SOURCES kstarInOO.cxx
234234
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
235235
COMPONENT_NAME Analysis)
236236

237237
o2physics_add_dpl_workflow(phioo
238238
SOURCES phiOO.cxx
239239
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
240-
COMPONENT_NAME Analysis)
240+
COMPONENT_NAME Analysis)

PWGLF/Tasks/Resonances/kstarInOO.cxx

Lines changed: 160 additions & 130 deletions
Large diffs are not rendered by default.

PWGLF/Tasks/Strangeness/derivedcascadeanalysis.cxx

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ struct Derivedcascadeanalysis {
7676
ConfigurableAxis axisIR{"axisIR", {510, -1, 50}, "Binning for the interaction rate (kHz)"};
7777

7878
Configurable<bool> isXi{"isXi", 1, "Apply cuts for Xi identification"};
79+
Configurable<bool> ispO{"ispO", 0, "Analyse p--O collisions"};
7980
Configurable<bool> useCentralityFT0M{"useCentralityFT0M", 0, "If true, use centFT0M"};
8081
Configurable<bool> useCentralityFT0A{"useCentralityFT0A", 0, "If true, use centFT0A"};
8182
Configurable<bool> useCentralityFT0Cvar1{"useCentralityFT0Cvar1", 0, "If true, use centFT0FT0Cvar1"};
@@ -119,6 +120,18 @@ struct Derivedcascadeanalysis {
119120
Configurable<int> maxOccupancy{"maxOccupancy", -1, "Maximal occupancy"};
120121
Configurable<float> minOccupancyFT0{"minOccupancyFT0", -1, "Minimal occupancy"};
121122
Configurable<float> maxOccupancyFT0{"maxOccupancyFT0", -1, "Maximal occupancy"};
123+
Configurable<float> globalTracksCorrelpar0Low{"globalTracksCorrelpar0Low", 81, "[0]*exp([1]*centrality)+[2], mean minus 3*sigma"};
124+
Configurable<float> globalTracksCorrelpar1Low{"globalTracksCorrelpar1Low", -0.0431016, "[0]*exp([1]*centrality)+[2], mean minus 3*sigma"};
125+
Configurable<float> globalTracksCorrelpar2Low{"globalTracksCorrelpar2Low", -6, "[0]*exp([1]*centrality)+[2], mean minus 3*sigma"};
126+
Configurable<float> globalTracksCorrelpar0High{"globalTracksCorrelpar0High", 226, "[0]*exp([1]*centrality)+[2], mean minus 3*sigma"};
127+
Configurable<float> globalTracksCorrelpar1High{"globalTracksCorrelpar1High", -0.0181686, "[0]*exp([1]*centrality)+[2], mean plus 3*sigma"};
128+
Configurable<float> globalTracksCorrelpar2High{"globalTracksCorrelpar2High", -22, "[0]*exp([1]*centrality)+[2], mean plus 3*sigma"};
129+
Configurable<float> pvContribCorrelpar0Low{"pvContribCorrelpar0Low", 152, "[0]*exp([1]*centrality)+[2], mean minus 3*sigma"};
130+
Configurable<float> pvContribCorrelpar1Low{"pvContribCorrelpar1Low", -0.0431016, "[0]*exp([1]*centrality)+[2], mean minus 3*sigma"};
131+
Configurable<float> pvContribCorrelpar2Low{"pvContribCorrelpar2Low", -15.3776, "[0]*exp([1]*centrality)+[2], mean minus 3*sigma"};
132+
Configurable<float> pvContribCorrelpar0High{"pvContribCorrelpar0High", 384.861, "[0]*exp([1]*centrality)+[2], mean minus 3*sigma"};
133+
Configurable<float> pvContribCorrelpar1High{"pvContribCorrelpar1High", -0.0181686, "[0]*exp([1]*centrality)+[2], mean plus 3*sigma"};
134+
Configurable<float> pvContribCorrelpar2High{"pvContribCorrelpar2High", -39, "[0]*exp([1]*centrality)+[2], mean plus 3*sigma"};
122135
} eventSelectionRun3Flags;
123136

124137
struct : ConfigurableGroup {
@@ -219,6 +232,8 @@ struct Derivedcascadeanalysis {
219232
Configurable<float> rejcomp{"rejcomp", 0.008, "Competing Cascade rejection"};
220233
Configurable<float> masswin{"masswin", 0.05, "Mass window limit"};
221234
Configurable<float> rapCut{"rapCut", 0.5, "Rapidity acceptance"};
235+
Configurable<float> minRapCut{"minRapCut", -0.845, "minimal rapidity acceptance in case of p--o"};
236+
Configurable<float> maxRapCut{"maxRapCut", 0.155, "maximal rapidity acceptance in case of p--o"};
222237
Configurable<float> etaDauCut{"etaDauCut", 0.8, "Pseudorapidity acceptance of the cascade daughters"};
223238
Configurable<int> minITSclusters{"minITSclusters", 3, "minimal number of ITS hits for the daughter tracks"};
224239
} candidateSelectionValues;
@@ -302,6 +317,10 @@ struct Derivedcascadeanalysis {
302317
histos.add("hNCrossedRowsPositive", "", kTH1F, {{400, -200, 200}});
303318
histos.add("hNCrossedRowsBachelor", "", kTH1F, {{400, -200, 200}});
304319

320+
histos.add("hPseudorapPosDaughter", "", kTH1F, {{50, -1, 1}});
321+
histos.add("hPseudorapNegDaughter", "", kTH1F, {{50, -1, 1}});
322+
histos.add("hPseudorapBachelor", "", kTH1F, {{50, -1, 1}});
323+
305324
histos.add("hEventNchCorrelationAfCuts", "hEventNchCorrelationAfCuts", kTH2F, {{5000, 0, 5000}, {5000, 0, 2500}});
306325
histos.add("hEventPVcontributorsVsCentrality", "hEventPVcontributorsVsCentrality", kTH2F, {{100, 0, 100}, {5000, 0, 5000}});
307326
histos.add("hEventGlobalTracksVsCentrality", "hEventGlobalTracksVsCentrality", kTH2F, {{100, 0, 100}, {2500, 0, 2500}});
@@ -660,9 +679,9 @@ struct Derivedcascadeanalysis {
660679
histos.fill(HIST("hEventSelection"), 11.5 /* Not at TF border */);
661680

662681
if (eventSelectionRun3Flags.doMultiplicityCorrCut) {
663-
if (coll.multNTracksGlobal() < (1343.3 * std::exp(-0.0443259 * centrality) - 50) || coll.multNTracksGlobal() > (2098.9 * std::exp(-0.0332444 * centrality)))
682+
if (coll.multNTracksGlobal() < (eventSelectionRun3Flags.globalTracksCorrelpar0Low * std::exp(eventSelectionRun3Flags.globalTracksCorrelpar1Low * centrality) + eventSelectionRun3Flags.globalTracksCorrelpar2Low) || coll.multNTracksGlobal() > (eventSelectionRun3Flags.globalTracksCorrelpar0High * std::exp(eventSelectionRun3Flags.globalTracksCorrelpar1High * centrality) + eventSelectionRun3Flags.globalTracksCorrelpar2High))
664683
return false;
665-
if (coll.multNTracksPVeta1() < (3703 * std::exp(-0.0455483 * centrality) - 150) || coll.multNTracksPVeta1() > (4937.33 * std::exp(-0.0372668 * centrality) + 20))
684+
if (coll.multNTracksPVeta1() < (eventSelectionRun3Flags.pvContribCorrelpar0Low * std::exp(eventSelectionRun3Flags.pvContribCorrelpar1Low * centrality) + eventSelectionRun3Flags.pvContribCorrelpar2Low) || coll.multNTracksPVeta1() > (eventSelectionRun3Flags.pvContribCorrelpar0High * std::exp(eventSelectionRun3Flags.pvContribCorrelpar1High * centrality) + eventSelectionRun3Flags.pvContribCorrelpar2High))
666685
return false;
667686
}
668687
if (fillHists)
@@ -826,21 +845,27 @@ struct Derivedcascadeanalysis {
826845
float cut = candidateSelectionValues.masswin;
827846
histos.fill(HIST("hCutValue"), 1, cut);
828847
cut = candidateSelectionValues.rapCut;
848+
if (ispO)
849+
cut = candidateSelectionValues.maxRapCut;
829850
histos.fill(HIST("hCutValue"), 2, cut);
830851
if (isXi) {
831852
if (std::abs(casc.mXi() - o2::constants::physics::MassXiMinus) > candidateSelectionValues.masswin) {
832853
return false;
833854
}
834855
histos.fill(HIST("hCandidate"), ++counter);
835-
if (std::abs(casc.yXi()) > candidateSelectionValues.rapCut)
856+
if (ispO && (casc.yXi() < candidateSelectionValues.minRapCut || casc.yXi() > candidateSelectionValues.maxRapCut))
857+
return false;
858+
else if (std::abs(casc.yXi()) > candidateSelectionValues.rapCut)
836859
return false;
837860
histos.fill(HIST("hCandidate"), ++counter);
838861
} else {
839862
if (std::abs(casc.mOmega() - o2::constants::physics::MassOmegaMinus) > candidateSelectionValues.masswin) {
840863
return false;
841864
}
842865
histos.fill(HIST("hCandidate"), ++counter);
843-
if (std::abs(casc.yOmega()) > candidateSelectionValues.rapCut)
866+
if (ispO && (casc.yOmega() < candidateSelectionValues.minRapCut || casc.yOmega() > candidateSelectionValues.maxRapCut))
867+
return false;
868+
else if (std::abs(casc.yOmega()) > candidateSelectionValues.rapCut)
844869
return false;
845870
histos.fill(HIST("hCandidate"), ++counter);
846871
}
@@ -1120,11 +1145,11 @@ struct Derivedcascadeanalysis {
11201145
auto cascMC = casc.template cascMCCore_as<soa::Join<aod::CascMCCores, aod::CascMCCollRefs>>();
11211146
ptmc = RecoDecay::sqrtSumOfSquares(cascMC.pxMC(), cascMC.pyMC());
11221147

1123-
if (cascMC.isPhysicalPrimary() && ((isXi && std::abs(cascMC.pdgCode()) == 3312) || (!isXi && std::abs(cascMC.pdgCode()) == 3334)))
1148+
if (cascMC.isPhysicalPrimary() && ((isXi && std::abs(cascMC.pdgCode()) == PDG_t::kXiMinus) || (!isXi && std::abs(cascMC.pdgCode()) == PDG_t::kOmegaMinus)))
11241149
isTrueMCCascade = true;
1125-
if (isTrueMCCascade && ((isPositive && cascMC.pdgCodePositive() == 211 && cascMC.pdgCodeNegative() == -2212) || (isNegative && cascMC.pdgCodePositive() == 2212 && cascMC.pdgCodeNegative() == -211)))
1150+
if (isTrueMCCascade && ((isPositive && cascMC.pdgCodePositive() == PDG_t::kPiPlus && cascMC.pdgCodeNegative() == PDG_t::kProtonBar) || (isNegative && cascMC.pdgCodePositive() == PDG_t::kProton && cascMC.pdgCodeNegative() == PDG_t::kPiMinus)))
11261151
isCorrectLambdaDecay = true;
1127-
if (isTrueMCCascade && isCorrectLambdaDecay && ((isXi && std::abs(cascMC.pdgCodeBachelor()) == 211) || (!isXi && std::abs(cascMC.pdgCodeBachelor()) == 321)))
1152+
if (isTrueMCCascade && isCorrectLambdaDecay && ((isXi && std::abs(cascMC.pdgCodeBachelor()) == PDG_t::kPiPlus) || (!isXi && std::abs(cascMC.pdgCodeBachelor()) == PDG_t::kKPlus)))
11281153
isTrueMCCascadeDecay = true;
11291154

11301155
if (qaFlags.doBefSelCheck && isTrueMCCascade) {
@@ -1161,6 +1186,10 @@ struct Derivedcascadeanalysis {
11611186
continue;
11621187
histos.fill(HIST("hCandidate"), ++counter);
11631188

1189+
histos.fill(HIST("hPseudorapPosDaughter"), poseta);
1190+
histos.fill(HIST("hPseudorapNegDaughter"), negeta);
1191+
histos.fill(HIST("hPseudorapBachelor"), bacheta);
1192+
11641193
if (candidateSelectionFlags.doCascadeCosPaCut) {
11651194
if (!isCosPAAccepted(casc, coll.posX(), coll.posY(), coll.posZ(), candidateSelectionFlags.doPtDepCosPaCut, true))
11661195
continue;
@@ -1429,12 +1458,14 @@ struct Derivedcascadeanalysis {
14291458

14301459
float ptmc = RecoDecay::sqrtSumOfSquares(cascMC.pxMC(), cascMC.pyMC());
14311460
float ymc = 1e3;
1432-
if (std::abs(cascMC.pdgCode()) == 3312)
1461+
if (std::abs(cascMC.pdgCode()) == PDG_t::kXiMinus)
14331462
ymc = RecoDecay::y(std::array{cascMC.pxMC(), cascMC.pyMC(), cascMC.pzMC()}, o2::constants::physics::MassXiMinus);
1434-
else if (std::abs(cascMC.pdgCode()) == 3334)
1463+
else if (std::abs(cascMC.pdgCode()) == PDG_t::kOmegaMinus)
14351464
ymc = RecoDecay::y(std::array{cascMC.pxMC(), cascMC.pyMC(), cascMC.pzMC()}, o2::constants::physics::MassOmegaMinus);
14361465

1437-
if (std::abs(ymc) > candidateSelectionValues.rapCut)
1466+
if (ispO && (ymc > candidateSelectionValues.maxRapCut || ymc < candidateSelectionValues.minRapCut))
1467+
continue;
1468+
else if (std::abs(ymc) > candidateSelectionValues.rapCut)
14381469
continue;
14391470

14401471
auto mcCollision = cascMC.template straMCCollision_as<soa::Join<aod::StraMCCollisions, aod::StraMCCollMults>>();
@@ -1471,7 +1502,7 @@ struct Derivedcascadeanalysis {
14711502
nChEta1 = collision.multNTracksPVeta1();
14721503
}
14731504

1474-
if (cascMC.pdgCode() == 3312 && isXi) {
1505+
if (cascMC.pdgCode() == PDG_t::kXiMinus && isXi) {
14751506
histos.fill(HIST("h2dGenXiMinus"), centrality, ptmc);
14761507
histos.fill(HIST("h2dGenXiMinusVsNch"), nChEta1, ptmc);
14771508
histos.fill(HIST("h2dGenXiMinusEta"), RecoDecay::eta(std::array{cascMC.pxMC(), cascMC.pyMC(), cascMC.pzMC()}));
@@ -1484,7 +1515,7 @@ struct Derivedcascadeanalysis {
14841515
histos.fill(HIST("h2dGenXiMinusVsCentIR"), ptmc, centrality, intRate);
14851516
histos.fill(HIST("h2dGenXiMinusVsNchVsOccupancy"), ptmc, nChEta1, occupancy);
14861517
}
1487-
if (cascMC.pdgCode() == -3312 && isXi) {
1518+
if (cascMC.pdgCode() == PDG_t::kXiPlusBar && isXi) {
14881519
histos.fill(HIST("h2dGenXiPlus"), centrality, ptmc);
14891520
histos.fill(HIST("h2dGenXiPlusVsNch"), nChEta1, ptmc);
14901521
histos.fill(HIST("h2dGenXiPlusVsMultMCVsCentrality"), mcCollision.multMCNParticlesEta05(), centrality, ptmc);
@@ -1493,7 +1524,7 @@ struct Derivedcascadeanalysis {
14931524
histos.fill(HIST("h2dGenXiPlusVsNchVsOccupancy"), ptmc, nChEta1, occupancy);
14941525
histos.fill(HIST("h2dGenXiPlusVsCentIR"), ptmc, centrality, intRate);
14951526
}
1496-
if (cascMC.pdgCode() == 3334 && !isXi) {
1527+
if (cascMC.pdgCode() == PDG_t::kOmegaMinus && !isXi) {
14971528
histos.fill(HIST("h2dGenOmegaMinus"), centrality, ptmc);
14981529
histos.fill(HIST("h2dGenOmegaMinusVsNch"), nChEta1, ptmc);
14991530
histos.fill(HIST("h2dGenOmegaMinusEta"), RecoDecay::eta(std::array{cascMC.pxMC(), cascMC.pyMC(), cascMC.pzMC()}));
@@ -1506,7 +1537,7 @@ struct Derivedcascadeanalysis {
15061537
histos.fill(HIST("h2dGenOmegaMinusVsNchVsOccupancy"), ptmc, nChEta1, occupancy);
15071538
histos.fill(HIST("h2dGenOmegaMinusVsCentIR"), ptmc, centrality, intRate);
15081539
}
1509-
if (cascMC.pdgCode() == -3334 && !isXi) {
1540+
if (cascMC.pdgCode() == PDG_t::kOmegaPlusBar && !isXi) {
15101541
histos.fill(HIST("h2dGenOmegaPlus"), centrality, ptmc);
15111542
histos.fill(HIST("h2dGenOmegaPlusVsNch"), nChEta1, ptmc);
15121543
histos.fill(HIST("h2dGenOmegaPlusVsMultMCVsCentrality"), mcCollision.multMCNParticlesEta05(), centrality, ptmc);

git

Whitespace-only changes.

0 commit comments

Comments
 (0)