Skip to content

Commit 9c8d91e

Browse files
authored
[PWGLF] adding info for centrality cloures (#17267)
1 parent 7372216 commit 9c8d91e

2 files changed

Lines changed: 53 additions & 15 deletions

File tree

PWGLF/DataModel/LFNonPromptCascadeTables.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,10 @@ DECLARE_SOA_COLUMN(NoSameBunchPileup, noSameBunchPileup, bool);
128128
DECLARE_SOA_COLUMN(GlobalBC, globalBC, uint64_t);
129129
DECLARE_SOA_COLUMN(PtGen, ptGen, float);
130130
DECLARE_SOA_COLUMN(PtRec, ptRec, float);
131+
DECLARE_SOA_COLUMN(EtaGen, etaGen, float);
132+
DECLARE_SOA_COLUMN(EtaRec, etaRec, float);
131133
DECLARE_SOA_COLUMN(MultGen, multGen, int);
134+
DECLARE_SOA_COLUMN(MultGenFT0, multGenFT0, int);
132135

133136
} // namespace NPCascadeTable
134137
DECLARE_SOA_TABLE(NPCascTable, "AOD", "NPCASCTABLE",
@@ -455,8 +458,11 @@ DECLARE_SOA_TABLE(NPCascTableGen, "AOD", "NPCASCTABLEGen",
455458
DECLARE_SOA_TABLE(NPMCChargedTable, "AOD", "NPMCChargedTABLE",
456459
NPCascadeTable::PtGen,
457460
NPCascadeTable::PtRec,
461+
NPCascadeTable::EtaGen,
462+
NPCascadeTable::EtaRec,
458463
NPCascadeTable::MultNTracksNP,
459-
NPCascadeTable::MultGen);
464+
NPCascadeTable::MultGen,
465+
NPCascadeTable::MultGenFT0);
460466
DECLARE_SOA_TABLE(NPCollisionTable, "AOD", "NPCollisionTABLE",
461467
NPCascadeTable::RunNumber,
462468
NPCascadeTable::GlobalBC,
@@ -469,7 +475,8 @@ DECLARE_SOA_TABLE(NPCollisionTable, "AOD", "NPCollisionTABLE",
469475
DECLARE_SOA_INDEX_COLUMN_FULL(NPCollision, npCollision, int32_t, NPCollisionTable, "");
470476
DECLARE_SOA_TABLE(NPRecoChargedCand, "AOD", "NPRecoChargedCand",
471477
NPCollisionId,
472-
NPCascadeTable::PtRec);
478+
NPCascadeTable::PtRec,
479+
NPCascadeTable::EtaRec);
473480
} // namespace o2::aod
474481

475482
#endif // PWGLF_DATAMODEL_LFNONPROMPTCASCADETABLES_H_

PWGLF/Tasks/Strangeness/nonPromptCascade.cxx

Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,6 @@ struct NonPromptCascadeTask {
305305
AxisSpec nTracksAxis = {100, 0., 100., "NTracksGlobal"};
306306
AxisSpec nTracksAxisMC = {100, 0., 100., "NTracksMC"};
307307
std::vector<double> centBinning;
308-
std::vector<double> multBinning;
309308
std::vector<double> trackBinning;
310309
std::vector<double> runsBinning;
311310
double cent = -0.0;
@@ -841,6 +840,29 @@ struct NonPromptCascadeTask {
841840
return q != 0;
842841
};
843842

843+
static constexpr float MinEtaFT0A = 3.5f;
844+
static constexpr float MaxEtaFT0A = 4.9f;
845+
static constexpr float MinEtaFT0C = -3.3f;
846+
static constexpr float MaxEtaFT0C = -2.1f;
847+
static constexpr float InvalidEta = -999.f;
848+
849+
auto isAcceptedMCParticleFT0 = [&](auto const& mcp) {
850+
if (!mcp.isPhysicalPrimary()) {
851+
return false;
852+
}
853+
854+
const float eta = mcp.eta();
855+
if (!((eta > MinEtaFT0A && eta < MaxEtaFT0A) || (eta > MinEtaFT0C && eta < MaxEtaFT0C))) {
856+
return false;
857+
}
858+
859+
int q = 0;
860+
if (auto pdg = pdgDB->GetParticle(mcp.pdgCode())) {
861+
q = static_cast<int>(std::round(pdg->Charge() / 3.0));
862+
}
863+
return q != 0;
864+
};
865+
844866
// ------------------------------------------------------------
845867
// Helper: accepted reconstructed track
846868
// Use same cuts as data.
@@ -866,6 +888,7 @@ struct NonPromptCascadeTask {
866888
// mcid: mc collision row of mc particle
867889
// ------------------------------------------------------------
868890
std::vector<int> mcMult(mcCollisions.size(), 0);
891+
std::vector<int> mcMultFT0(mcCollisions.size(), 0);
869892
// std::cout << "mcCollisions size:" << mcCollisions.size() << std::endl;
870893
for (auto const& mcp : mcParticles) {
871894
const int mcid = mcp.mcCollisionId();
@@ -874,10 +897,12 @@ struct NonPromptCascadeTask {
874897
LOG(info) << "0 This should never happen ?";
875898
continue;
876899
}
877-
if (!isAcceptedMCParticle(mcp)) {
878-
continue;
900+
if (isAcceptedMCParticle(mcp)) {
901+
++mcMult[mcid];
902+
}
903+
if (isAcceptedMCParticleFT0(mcp)) {
904+
++mcMultFT0[mcid];
879905
}
880-
++mcMult[mcid];
881906
}
882907

883908
// ------------------------------------------------------------
@@ -990,11 +1015,12 @@ struct NonPromptCascadeTask {
9901015
const int mcCollId = col.mcCollisionId();
9911016
const float multReco = recoMultDense[dIdx];
9921017
const float ptReco = trk.pt();
1018+
const float etaReco = trk.eta();
9931019

9941020
if (mcCollId < 0 || static_cast<int64_t>(mcCollId) >= mcCollisions.size()) {
9951021
if (writeRecoCollision[dIdx]) {
9961022
// Fake: accepted reco track whose reconstructed collision has no valid MC collision label.
997-
NPMCNTable(-1.f, ptReco, multReco, -1.f);
1023+
NPMCNTable(-1.f, ptReco, InvalidEta, etaReco, multReco, -1.f, -1.f);
9981024
}
9991025
continue;
10001026
}
@@ -1003,7 +1029,7 @@ struct NonPromptCascadeTask {
10031029
if (mcPid < 0 || static_cast<int64_t>(mcPid) >= mcParticles.size()) {
10041030
if (writeMcCollision[mcCollId]) {
10051031
// Fake: accepted reco track with invalid or missing MC particle label.
1006-
NPMCNTable(-2.f, ptReco, multReco, -2.f);
1032+
NPMCNTable(-2.f, ptReco, InvalidEta, etaReco, multReco, -2.f, mcMultFT0[mcCollId]);
10071033
}
10081034
continue;
10091035
}
@@ -1014,15 +1040,15 @@ struct NonPromptCascadeTask {
10141040
if (mcParCollId != mcCollId) {
10151041
if (writeMcCollision[mcCollId]) {
10161042
// Fake: reco collision and particle label point to different MC collisions.
1017-
NPMCNTable(-3.f, ptReco, multReco, -3.f);
1043+
NPMCNTable(-3.f, ptReco, InvalidEta, etaReco, multReco, -3.f, mcMultFT0[mcCollId]);
10181044
}
10191045
continue;
10201046
}
10211047

10221048
if (!isAcceptedMCParticle(mcPar)) {
10231049
if (writeMcCollision[mcCollId]) {
10241050
// Feed-in: accepted reco track matched to truth outside fiducial phase space.
1025-
NPMCNTable(-4.f, ptReco, multReco, -4.f);
1051+
NPMCNTable(-4.f, ptReco, mcPar.eta(), etaReco, multReco, -4.f, mcMultFT0[mcCollId]);
10261052
}
10271053
continue;
10281054
}
@@ -1031,6 +1057,7 @@ struct NonPromptCascadeTask {
10311057

10321058
const float multMC = mcMult[mcCollId];
10331059
const float ptMC = mcPar.pt();
1060+
const float etaMC = mcPar.eta();
10341061

10351062
mRegistrydNdeta.fill(HIST("hdNdetaRM/hdNdetaRM"),
10361063
multMC,
@@ -1040,7 +1067,7 @@ struct NonPromptCascadeTask {
10401067

10411068
if (writeMcCollision[mcCollId]) {
10421069
// Matched: accepted truth particle reconstructed inside the fiducial reco phase space.
1043-
NPMCNTable(ptMC, ptReco, multReco, multMC);
1070+
NPMCNTable(ptMC, ptReco, etaMC, etaReco, multReco, multMC, mcMultFT0[mcCollId]);
10441071
}
10451072
}
10461073

@@ -1069,14 +1096,15 @@ struct NonPromptCascadeTask {
10691096
}
10701097

10711098
const float multMC = mcMult[mcid];
1099+
const float multMCFT0 = mcMultFT0[mcid];
10721100

10731101
mRegistrydNdeta.fill(HIST("hdNdetaRM/hdNdetaRMNotInRecoTrk"),
10741102
multMC,
10751103
mcp.pt());
10761104

10771105
if (writeMcCollision[mcid]) {
10781106
// Missed track: accepted truth particle in a reconstructed MC collision, but no accepted reco track.
1079-
NPMCNTable(mcp.pt(), -1.f, -1.f, multMC);
1107+
NPMCNTable(mcp.pt(), -1.f, mcp.eta(), InvalidEta, -1.f, multMC, multMCFT0);
10801108
}
10811109
}
10821110

@@ -1089,6 +1117,7 @@ struct NonPromptCascadeTask {
10891117
}
10901118

10911119
const float multMC = mcMult[mcid];
1120+
const float multMCFT0 = mcMultFT0[mcid];
10921121

10931122
for (auto const& mcp : mcParticles) {
10941123
if (mcp.mcCollisionId() != mcid) {
@@ -1105,7 +1134,7 @@ struct NonPromptCascadeTask {
11051134

11061135
if (writeMcCollision[mcid]) {
11071136
// Missed collision: accepted truth particle from an MC collision with no reconstructed collision.
1108-
NPMCNTable(mcp.pt(), -2.f, -2.f, multMC);
1137+
NPMCNTable(mcp.pt(), -2.f, mcp.eta(), InvalidEta, -2.f, multMC, multMCFT0);
11091138
}
11101139
}
11111140
}
@@ -1134,13 +1163,15 @@ struct NonPromptCascadeTask {
11341163
auto tracksThisColl = tracks.sliceBy(perCollisionSel, coll.globalIndex());
11351164
int multreco = 0;
11361165
std::vector<float> recoPts;
1166+
std::vector<float> recoEtas;
11371167
// std::cout << "tracks:" << tracksThisColl.size() << std::endl;
11381168
for (auto const& track : tracksThisColl) {
11391169
// std::cout << track.pt() << " tracks " << track.isGlobalTrack() << std::endl;
11401170
if (std::fabs(track.eta()) < cfgEtaCutdNdeta && track.tpcNClsFound() >= 80 && track.tpcNClsCrossedRows() >= 100) {
11411171
if (track.isGlobalTrack()) {
11421172
multreco++;
11431173
recoPts.push_back(track.pt());
1174+
recoEtas.push_back(track.eta());
11441175
}
11451176
}
11461177
}
@@ -1158,8 +1189,8 @@ struct NonPromptCascadeTask {
11581189
coll.multFT0M(),
11591190
coll.selection_bit(aod::evsel::kNoSameBunchPileup));
11601191
auto collIdx = NPCollsTable.lastIndex();
1161-
for (auto const& pt : recoPts) {
1162-
NPRecoCandTable(collIdx, pt);
1192+
for (size_t i = 0; i < recoPts.size(); ++i) {
1193+
NPRecoCandTable(collIdx, recoPts[i], recoEtas[i]);
11631194
}
11641195
}
11651196
}

0 commit comments

Comments
 (0)