Skip to content

Commit 92d2c74

Browse files
authored
[PWGLF] Update double hypernuclei tree (#9982)
1 parent 178f9c5 commit 92d2c74

File tree

2 files changed

+23
-19
lines changed

2 files changed

+23
-19
lines changed

PWGLF/TableProducer/Nuspex/hypKfRecoTask.cxx

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,7 @@ struct HypKfRecoTask {
475475
const AxisSpec axisdEdx{2000, 0, 2000, "d#it{E}/d#it{x}"};
476476
const AxisSpec axisInvMass{1000, 1, 6, "inv mass"};
477477
const AxisSpec axisCent{100, 0, 100, "centrality"};
478+
const AxisSpec axisOccupancy{5000, 0, 50000, "occupancy"};
478479
const AxisSpec axisVtxZ{100, -10, 10, "z"};
479480
// create histograms
480481
histos.add("histMagField", "histMagField", kTH1F, {axisMagField});
@@ -483,6 +484,7 @@ struct HypKfRecoTask {
483484
histos.add("histCentFT0A", "histCentFT0A", kTH1F, {axisCent});
484485
histos.add("histCentFT0C", "histCentFT0C", kTH1F, {axisCent});
485486
histos.add("histCentFT0M", "histCentFT0M", kTH1F, {axisCent});
487+
histos.add("histEvents", "histEvents", kTH2F, {axisCent, axisOccupancy});
486488
hDeDx.resize(2 * nDaughterParticles + 2);
487489
for (int i = 0; i < nDaughterParticles + 1; i++) {
488490
TString histName = i < nDaughterParticles ? daughterParticles[i].name : "all";
@@ -870,7 +872,7 @@ struct HypKfRecoTask {
870872
for (auto& hypCand : candidateVector->at(hyperNucIter)) { // o2-linter: disable=[const-ref-in-for-loop]
871873
if (!hypCand.isPrimaryCandidate && !hypCand.isUsedSecondary && !hypCand.isCascade())
872874
continue;
873-
if (saveOnlyMcTrue && !hypCand.mcTrue)
875+
if (saveOnlyMcTrue && !hypCand.mcTrue && !hypCand.isCascade())
874876
continue;
875877
hInvMass[vec * nHyperNuclei + hyperNucIter]->Fill(hypCand.mass);
876878
std::vector<int> vecDaugtherTracks, vecAddons, vecSubDaughters;
@@ -1107,14 +1109,15 @@ struct HypKfRecoTask {
11071109
histos.fill(HIST("histMagField"), dBz);
11081110
histos.fill(HIST("histNev"), 0.5);
11091111
collPassedEvSel = collision.sel8() && std::abs(collision.posZ()) < 10;
1112+
occupancy = collision.trackOccupancyInTimeRange();
11101113
if (collPassedEvSel) {
11111114
histos.fill(HIST("histNev"), 1.5);
11121115
histos.fill(HIST("histVtxZ"), collision.posZ());
11131116
histos.fill(HIST("histCentFT0A"), collision.centFT0A());
11141117
histos.fill(HIST("histCentFT0C"), collision.centFT0C());
11151118
histos.fill(HIST("histCentFT0M"), collision.centFT0M());
1119+
histos.fill(HIST("histEvents"), collision.centFT0C(), occupancy);
11161120
}
1117-
occupancy = collision.trackOccupancyInTimeRange();
11181121
kfPrimVtx = createKFPVertexFromCollision(collision);
11191122
primVtx.assign({collision.posX(), collision.posY(), collision.posZ()});
11201123
cents.assign({collision.centFT0A(), collision.centFT0C(), collision.centFT0M()});
@@ -1139,18 +1142,18 @@ struct HypKfRecoTask {
11391142
if (!track.hasTPC())
11401143
return -999;
11411144

1142-
if (particle.name == "pion" && cfgTrackPIDsettings->get("pion", "useBBparams") == 0)
1143-
return track.tpcNSigmaPi();
1144-
if (particle.name == "proton" && cfgTrackPIDsettings->get("proton", "useBBparams") == 0)
1145-
return track.tpcNSigmaPr();
1146-
if (particle.name == "deuteron" && cfgTrackPIDsettings->get("deuteron", "useBBparams") == 0)
1147-
return track.tpcNSigmaDe();
1148-
if (particle.name == "triton" && cfgTrackPIDsettings->get("triton", "useBBparams") == 0)
1149-
return track.tpcNSigmaTr();
1150-
if (particle.name == "helion" && cfgTrackPIDsettings->get("helion", "useBBparams") == 0)
1151-
return track.tpcNSigmaHe();
1152-
if (particle.name == "alpha" && cfgTrackPIDsettings->get("alpha", "useBBparams") == 0)
1153-
return track.tpcNSigmaAl();
1145+
if (particle.name == "pion" && cfgTrackPIDsettings->get("pion", "useBBparams") < 1)
1146+
return cfgTrackPIDsettings->get("pion", "useBBparams") == 0 ? track.tpcNSigmaPi() : 0;
1147+
if (particle.name == "proton" && cfgTrackPIDsettings->get("proton", "useBBparams") < 1)
1148+
return cfgTrackPIDsettings->get("proton", "useBBparams") == 0 ? track.tpcNSigmaPr() : 0;
1149+
if (particle.name == "deuteron" && cfgTrackPIDsettings->get("deuteron", "useBBparams") < 1)
1150+
return cfgTrackPIDsettings->get("deuteron", "useBBparams") == 0 ? track.tpcNSigmaDe() : 0;
1151+
if (particle.name == "triton" && cfgTrackPIDsettings->get("triton", "useBBparams") < 1)
1152+
return cfgTrackPIDsettings->get("triton", "useBBparams") == 0 ? track.tpcNSigmaTr() : 0;
1153+
if (particle.name == "helion" && cfgTrackPIDsettings->get("helion", "useBBparams") < 1)
1154+
return cfgTrackPIDsettings->get("helion", "useBBparams") == 0 ? track.tpcNSigmaHe() : 0;
1155+
if (particle.name == "alpha" && cfgTrackPIDsettings->get("alpha", "useBBparams") < 1)
1156+
return cfgTrackPIDsettings->get("alpha", "useBBparams") == 0 ? track.tpcNSigmaAl() : 0;
11541157

11551158
double expBethe{tpc::BetheBlochAleph(static_cast<double>(particle.charge * rigidity / particle.mass), particle.betheParams[0], particle.betheParams[1], particle.betheParams[2], particle.betheParams[3], particle.betheParams[4])};
11561159
double expSigma{expBethe * particle.resolution};

PWGLF/TableProducer/Nuspex/hypKfTreeCreator.cxx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ struct TrackProperties {
5656
};
5757

5858
struct HyperNucleus {
59-
HyperNucleus() : pdgCode(0), isReconstructed(0), globalIndex(0), species(0), isMatter(0), passedEvSel(0), isMatterMC(0), passedEvSelMC(0), isPhysicalPrimary(0), collisionMcTrue(0), mass(0), y(0), pt(0), ct(0), yGen(0), ptGen(0), ctGen(0), cpaPvGen(0), cpaPv(0), cpaSv(0), maxDcaTracks(0), maxDcaTracksSv(0), dcaToPvXY(0), dcaToPvZ(0), dcaToVtxXY(0), dcaToVtxZ(0), devToPvXY(0), chi2(0), pvx(0), pvy(0), pvz(0), svx(0), svy(0), svz(0), px(0), py(0), pz(0), pvxGen(0), pvyGen(0), pvzGen(0), svxGen(0), svyGen(0), svzGen(0), pxGen(0), pyGen(0), pzGen(0), nSingleDaughters(0), nCascadeDaughters(0), mcTrue(0), mcTrueVtx(0), mcPhysicalPrimary(0), hypNucDaughter(0) {}
59+
HyperNucleus() : pdgCode(0), isReconstructed(0), globalIndex(0), species(0), isPrimaryCandidate(0), isMatter(0), passedEvSel(0), isMatterMC(0), passedEvSelMC(0), isPhysicalPrimary(0), collisionMcTrue(0), mass(0), y(0), pt(0), ct(0), yGen(0), ptGen(0), ctGen(0), cpaPvGen(0), cpaPv(0), cpaSv(0), maxDcaTracks(0), maxDcaTracksSv(0), dcaToPvXY(0), dcaToPvZ(0), dcaToVtxXY(0), dcaToVtxZ(0), devToPvXY(0), chi2(0), pvx(0), pvy(0), pvz(0), svx(0), svy(0), svz(0), px(0), py(0), pz(0), pvxGen(0), pvyGen(0), pvzGen(0), svxGen(0), svyGen(0), svzGen(0), pxGen(0), pyGen(0), pzGen(0), nSingleDaughters(0), nCascadeDaughters(0), mcTrue(0), mcTrueVtx(0), mcPhysicalPrimary(0), hypNucDaughter(0) {}
6060
int pdgCode, isReconstructed, globalIndex;
6161
uint8_t species;
62-
bool isMatter, passedEvSel, isMatterMC, passedEvSelMC, isPhysicalPrimary, collisionMcTrue;
62+
bool isPrimaryCandidate, isMatter, passedEvSel, isMatterMC, passedEvSelMC, isPhysicalPrimary, collisionMcTrue;
6363
float mass, y, pt, ct, yGen, ptGen, ctGen, cpaPvGen, cpaPv, cpaSv, maxDcaTracks, maxDcaTracksSv;
6464
float dcaToPvXY, dcaToPvZ, dcaToVtxXY, dcaToVtxZ, devToPvXY, chi2;
6565
float pvx, pvy, pvz, svx, svy, svz, px, py, pz;
@@ -360,7 +360,7 @@ struct HypKfTreeCreator {
360360
void processData(aod::HypKfHypNucs const& hypNucs, aod::HypKfColls const& hypKfColls, aod::HypKfTracks const& hypKfTrks, aod::HypKfDaughtAdds const& hypKfDAdd, aod::HypKfSubDs const& hypKfDSub)
361361
{
362362
for (const auto& hypNuc : hypNucs) {
363-
if (std::abs(hypNuc.species()) != cfgSpecies)
363+
if (cfgSpecies && std::abs(hypNuc.species()) != cfgSpecies)
364364
continue;
365365
HyperNucleus candidate, hypNucDaughter;
366366
fillCandidatePrim(candidate, hypNuc, hypNucs, hypKfColls, hypKfTrks, hypKfDAdd, hypKfDSub);
@@ -409,7 +409,7 @@ struct HypKfTreeCreator {
409409
d2.x, d2.y, d2.z, d2.px, d2.py, d2.pz, d2.tpcNcls, d2.tpcChi2, d2.itsNcls, d2.itsChi2, d2.itsMeanClsSizeL,
410410
d2.rigidity, d2.tpcSignal, d2.tpcNsigma, d2.tpcNsigmaNhp, d2.tpcNsigmaNlp, d2.tofMass, d2.dcaXY, d2.dcaZ, d2.isPvContributor);
411411
}
412-
if (cfgNprimDaughters == 3 && cfgNsecDaughters == 0) {
412+
if (cand.isPrimaryCandidate && ((cfgNprimDaughters == 3 && cfgNsecDaughters == 0) || (cfgNsecDaughters == 3 && cfgSpecies == 0))) {
413413
const auto& d1 = cand.daughterTracks.at(0);
414414
const auto& d2 = cand.daughterTracks.at(1);
415415
const auto& d3 = cand.daughterTracks.at(2);
@@ -545,6 +545,7 @@ struct HypKfTreeCreator {
545545
auto addOns = hypNuc.hypKfDaughtAdd_as<aod::HypKfDaughtAdds>();
546546
auto posVec = posVector(addOns);
547547
cand.species = std::abs(hypNuc.species());
548+
cand.isPrimaryCandidate = hypNuc.primary();
548549
cand.isMatter = hypNuc.isMatter();
549550
cand.cent = coll.centFT0C();
550551
cand.occu = coll.occupancy();
@@ -619,7 +620,7 @@ struct HypKfTreeCreator {
619620
{
620621
isMC = true;
621622
for (const auto& mcHypNuc : mcHypNucs) {
622-
if (std::abs(mcHypNuc.species()) != cfgSpecies)
623+
if (cfgSpecies && std::abs(mcHypNuc.species()) != cfgSpecies)
623624
continue;
624625
auto mcColl = mcHypNuc.hypKfMcColl();
625626
const auto mcParticleIdx = mcHypNuc.globalIndex();

0 commit comments

Comments
 (0)