Skip to content

Commit ef1cf22

Browse files
authored
Fix bug
1 parent f021050 commit ef1cf22

File tree

1 file changed

+58
-12
lines changed

1 file changed

+58
-12
lines changed

PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx

Lines changed: 58 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ struct FemtoUniverseProducerTask {
188188
Configurable<std::vector<float>> confTrkDCAzMax{FemtoUniverseTrackSelection::getSelectionName(femto_universe_track_selection::kDCAzMax, "ConfTrk"), std::vector<float>{0.2f}, FemtoUniverseTrackSelection::getSelectionHelper(femto_universe_track_selection::kDCAzMax, "Track selection: ")}; /// \todo Reintegrate PID to the general selection container
189189
Configurable<std::vector<float>> confTrkPIDnSigmaMax{FemtoUniverseTrackSelection::getSelectionName(femto_universe_track_selection::kPIDnSigmaMax, "ConfTrk"), std::vector<float>{3.5f, 3.f, 2.5f}, FemtoUniverseTrackSelection::getSelectionHelper(femto_universe_track_selection::kPIDnSigmaMax, "Track selection: ")};
190190
Configurable<std::vector<int>> confTrkPIDspecies{"confTrkPIDspecies", std::vector<int>{o2::track::PID::Pion, o2::track::PID::Kaon, o2::track::PID::Proton, o2::track::PID::Deuteron}, "Trk sel: Particles species for PID (Pion=2, Kaon=3, Proton=4, Deuteron=5)"};
191+
Configurable<bool> confIsOnlyMCTrack{"confIsOnlyMCTrack", false, "Enable filling of only MC Tracks"};
191192
// Numbers from ~/alice/O2/DataFormats/Reconstruction/include/ReconstructionDataFormats/PID.h //static constexpr ID Pion = 2; static constexpr ID Kaon = 3; static constexpr ID Proton = 4; static constexpr ID Deuteron = 5;
192193
} ConfTrkSelection;
193194

@@ -323,9 +324,12 @@ struct FemtoUniverseProducerTask {
323324

324325
// D0/D0bar mesons
325326
struct : o2::framework::ConfigurableGroup {
326-
Configurable<float> confD0D0barCandEtaCut{"confD0D0barCandEtaCut", 0.8, "max. cand. pseudorapidity"};
327+
Configurable<float> trackD0CandEtaMax{"trackD0CandEtaMax", 0.8, "max. track/D0 cand. pseudorapidity"};
328+
Configurable<double> yD0CandGenMax{"yD0CandGenMax", 0.5, "max. gen. D0 cand. rapidity"};
329+
Configurable<double> yD0CandMax{"yD0CandMax", 0.8, "max. D0 cand. rapidity"};
327330
Configurable<float> trackD0pTGenMin{"trackD0pTGenMin", 0.0, "MC Truth, min. pT for tracks and D0/D0bar cand."};
328331
Configurable<float> trackD0pTGenMax{"trackD0pTGenMax", 24.0, "MC Truth, max. pT for tracks and D0/D0bar cand."};
332+
Configurable<bool> useYCutD0Cand{"useYCutD0Cand", true, "True - apply cut on y of D0 cand./false - apply cut on eta"};
329333
Configurable<bool> storeD0D0barDoubleMassHypo{"storeD0D0barDoubleMassHypo", false, "Store D0/D0bar cand. which pass selection criteria for both, D0 and D0bar"};
330334
Configurable<std::vector<int>> classMlD0D0bar{"classMlD0D0bar", {0, 1, 2}, "Indexes of ML scores to be stored. Three indexes max."};
331335
} ConfD0Selection;
@@ -1136,9 +1140,6 @@ struct FemtoUniverseProducerTask {
11361140
{
11371141
const auto occupancy = col.trackOccupancyInTimeRange();
11381142
outputCollExtra(irrate, occupancy);
1139-
if (occupancy > ConfGeneral.confTPCOccupancyMax) {
1140-
std::cout << "occupancy" << occupancy << std::endl;
1141-
}
11421143
}
11431144

11441145
template <bool isMC, typename TrackType>
@@ -1349,6 +1350,27 @@ struct FemtoUniverseProducerTask {
13491350
}
13501351
}
13511352

1353+
template <typename MCParticlesType>
1354+
void fillTracksMCTruth(MCParticlesType const& mcParticles)
1355+
{
1356+
for (const auto& mc : mcParticles) { // Loop over all MC Truth particles
1357+
1358+
std::vector<int> childIDs = {0, 0};
1359+
outputParts(outputCollision.lastIndex(),
1360+
mc.pt(),
1361+
mc.eta(),
1362+
mc.phi(),
1363+
aod::femtouniverseparticle::ParticleType::kMCTruthTrack,
1364+
0,
1365+
0,
1366+
mc.pdgCode(),
1367+
childIDs,
1368+
0,
1369+
0);
1370+
fillMCTruthParticle(mc, aod::femtouniverseparticle::ParticleType::kMCTruthTrack);
1371+
}
1372+
}
1373+
13521374
template <bool isMC, typename CollisionType, typename CascadeType, typename TrackType>
13531375
void fillCascade(CollisionType const& col, CascadeType const& fullCascades, TrackType const&)
13541376
{
@@ -1487,7 +1509,11 @@ struct FemtoUniverseProducerTask {
14871509
continue;
14881510
}
14891511

1490-
if (std::abs(hfCand.eta()) > ConfD0Selection.confD0D0barCandEtaCut) {
1512+
if (ConfD0Selection.useYCutD0Cand && std::abs(hfHelper.yD0(hfCand)) > ConfD0Selection.yD0CandMax) {
1513+
continue;
1514+
}
1515+
1516+
if (!(ConfD0Selection.useYCutD0Cand) && std::abs(hfCand.eta()) > ConfD0Selection.trackD0CandEtaMax) {
14911517
continue;
14921518
}
14931519

@@ -1606,7 +1632,11 @@ struct FemtoUniverseProducerTask {
16061632
continue;
16071633
}
16081634

1609-
if (std::abs(hfCand.eta()) > ConfD0Selection.confD0D0barCandEtaCut) {
1635+
if (ConfD0Selection.useYCutD0Cand && std::abs(hfHelper.yD0(hfCand)) > ConfD0Selection.yD0CandMax) {
1636+
continue;
1637+
}
1638+
1639+
if (!(ConfD0Selection.useYCutD0Cand) && std::abs(hfCand.eta()) > ConfD0Selection.trackD0CandEtaMax) {
16101640
continue;
16111641
}
16121642

@@ -1732,7 +1762,11 @@ struct FemtoUniverseProducerTask {
17321762
continue;
17331763
}
17341764

1735-
if (std::abs(hfCand.eta()) > ConfD0Selection.confD0D0barCandEtaCut) {
1765+
if (ConfD0Selection.useYCutD0Cand && std::abs(hfHelper.yD0(hfCand)) > ConfD0Selection.yD0CandMax) {
1766+
continue;
1767+
}
1768+
1769+
if (!(ConfD0Selection.useYCutD0Cand) && std::abs(hfCand.eta()) > ConfD0Selection.trackD0CandEtaMax) {
17361770
continue;
17371771
}
17381772

@@ -2121,8 +2155,7 @@ struct FemtoUniverseProducerTask {
21212155
std::vector<int> tmpIDtrack;
21222156

21232157
for (const auto& particle : mcParts) {
2124-
if (particle.eta() < -ConfFilterCuts.confEtaFilterCut || particle.eta() > ConfFilterCuts.confEtaFilterCut)
2125-
continue;
2158+
21262159
if (particle.pt() < ConfD0Selection.trackD0pTGenMin || particle.pt() > ConfD0Selection.trackD0pTGenMax)
21272160
continue;
21282161

@@ -2155,9 +2188,18 @@ struct FemtoUniverseProducerTask {
21552188
/// check if we have D0(bar) → π± K∓
21562189
continue;
21572190
}
2191+
21582192
if (std::abs(particle.pdgCode()) == Pdg::kD0) {
2159-
origin = RecoDecay::getCharmHadronOrigin(mcParts, particle);
2160-
mcGenFlag = particle.flagMcMatchGen();
2193+
if (std::abs(particle.y()) > ConfD0Selection.yD0CandGenMax) {
2194+
continue;
2195+
} else {
2196+
origin = RecoDecay::getCharmHadronOrigin(mcParts, particle);
2197+
mcGenFlag = particle.flagMcMatchGen();
2198+
}
2199+
} else {
2200+
if (std::abs(particle.eta()) > ConfD0Selection.trackD0CandEtaMax) {
2201+
continue;
2202+
}
21612203
}
21622204

21632205
outputParts(outputCollision.lastIndex(),
@@ -2514,7 +2556,11 @@ struct FemtoUniverseProducerTask {
25142556
if (colcheck) {
25152557
auto groupedMCParticles = mcParticles.sliceBy(perMCCollision, mccol.globalIndex());
25162558
outputCollExtra(1.0, 1.0);
2517-
fillParticles<decltype(groupedMCParticles), true, true>(groupedMCParticles, recoMcIds); // fills mc particles
2559+
if (!ConfTrkSelection.confIsOnlyMCTrack) {
2560+
fillParticles<decltype(groupedMCParticles), true, true>(groupedMCParticles, recoMcIds); // fills mc particles
2561+
} else {
2562+
fillTracksMCTruth(groupedMCParticles);
2563+
}
25182564
}
25192565
}
25202566
}

0 commit comments

Comments
 (0)