Skip to content

Commit bb22c27

Browse files
authored
[PWGLF] Omegahm (#13926)
1 parent 4261565 commit bb22c27

File tree

2 files changed

+85
-24
lines changed

2 files changed

+85
-24
lines changed

PWGLF/DataModel/LFNonPromptCascadeTables.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,10 @@ DECLARE_SOA_COLUMN(MotherDecayDaughters, motherDecayDaughters, int8_t);
114114

115115
DECLARE_SOA_COLUMN(Sel8, sel8, bool);
116116
DECLARE_SOA_COLUMN(MultFT0C, multFT0C, float);
117-
DECLARE_SOA_COLUMN(MultFT0A, multFT0A, float);
117+
DECLARE_SOA_COLUMN(MultFV0A, multFV0A, float);
118118
DECLARE_SOA_COLUMN(MultFT0M, multFT0M, float);
119119
DECLARE_SOA_COLUMN(CentFT0C, centFT0C, float);
120-
DECLARE_SOA_COLUMN(CentFT0A, centFT0A, float);
120+
DECLARE_SOA_COLUMN(CentFV0A, centFV0A, float);
121121
DECLARE_SOA_COLUMN(CentFT0M, centFT0M, float);
122122
DECLARE_SOA_COLUMN(MultNTracksGlobal, multNTracksGlobal, int);
123123
DECLARE_SOA_COLUMN(ToiMask, toiMask, uint32_t);
@@ -184,10 +184,10 @@ DECLARE_SOA_TABLE(NPCascTable, "AOD", "NPCASCTABLE",
184184
NPCascadeTable::BachPionTOFNSigma,
185185
NPCascadeTable::Sel8,
186186
NPCascadeTable::MultFT0C,
187-
NPCascadeTable::MultFT0A,
187+
NPCascadeTable::MultFV0A,
188188
NPCascadeTable::MultFT0M,
189189
NPCascadeTable::CentFT0C,
190-
NPCascadeTable::CentFT0A,
190+
NPCascadeTable::CentFV0A,
191191
NPCascadeTable::CentFT0M,
192192
NPCascadeTable::MultNTracksGlobal,
193193
NPCascadeTable::ToiMask,
@@ -252,10 +252,10 @@ DECLARE_SOA_TABLE(NPCascTableNT, "AOD", "NPCASCTABLENT",
252252
NPCascadeTable::BachPionTOFNSigma,
253253
NPCascadeTable::Sel8,
254254
NPCascadeTable::MultFT0C,
255-
NPCascadeTable::MultFT0A,
255+
NPCascadeTable::MultFV0A,
256256
NPCascadeTable::MultFT0M,
257257
NPCascadeTable::CentFT0C,
258-
NPCascadeTable::CentFT0A,
258+
NPCascadeTable::CentFV0A,
259259
NPCascadeTable::CentFT0M,
260260
NPCascadeTable::MultNTracksGlobal,
261261
NPCascadeTable::ToiMask,
@@ -326,10 +326,10 @@ DECLARE_SOA_TABLE(NPCascTableMC, "AOD", "NPCASCTABLEMC",
326326
NPCascadeTable::BachPionTOFNSigma,
327327
NPCascadeTable::Sel8,
328328
NPCascadeTable::MultFT0C,
329-
NPCascadeTable::MultFT0A,
329+
NPCascadeTable::MultFV0A,
330330
NPCascadeTable::MultFT0M,
331331
NPCascadeTable::CentFT0C,
332-
NPCascadeTable::CentFT0A,
332+
NPCascadeTable::CentFV0A,
333333
NPCascadeTable::CentFT0M,
334334
NPCascadeTable::gPt,
335335
NPCascadeTable::gEta,
@@ -413,10 +413,10 @@ DECLARE_SOA_TABLE(NPCascTableMCNT, "AOD", "NPCASCTABLEMCNT",
413413
NPCascadeTable::BachPionTOFNSigma,
414414
NPCascadeTable::Sel8,
415415
NPCascadeTable::MultFT0C,
416-
NPCascadeTable::MultFT0A,
416+
NPCascadeTable::MultFV0A,
417417
NPCascadeTable::MultFT0M,
418418
NPCascadeTable::CentFT0C,
419-
NPCascadeTable::CentFT0A,
419+
NPCascadeTable::CentFV0A,
420420
NPCascadeTable::CentFT0M,
421421
NPCascadeTable::gPt,
422422
NPCascadeTable::gEta,

PWGLF/Tasks/Strangeness/nonPromptCascade.cxx

Lines changed: 75 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
#include "ReconstructionDataFormats/Vertex.h"
3737

3838
#include "Math/Vector4D.h"
39+
#include "TDatabasePDG.h"
40+
#include "TParticlePDG.h"
3941

4042
#include <cmath>
4143
#include <memory>
@@ -124,10 +126,10 @@ struct NPCascCandidate {
124126
float bachPionTOFNSigma;
125127
bool sel8;
126128
float multFT0C;
127-
float multFT0A;
129+
float multFV0A;
128130
float multFT0M;
129131
float centFT0C;
130-
float centFT0A;
132+
float centFV0A;
131133
float centFT0M;
132134
int multNTracksGlobal;
133135
uint32_t toiMask;
@@ -180,8 +182,9 @@ struct NonPromptCascadeTask {
180182

181183
using TracksExtData = soa::Join<aod::TracksIU, aod::TracksCovIU, aod::TracksExtra, aod::pidTPCFullKa, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTOFFullKa, aod::pidTOFFullPi, aod::pidTOFFullPr>;
182184
using TracksExtMC = soa::Join<aod::TracksIU, aod::TracksCovIU, aod::TracksExtra, aod::McTrackLabels, aod::pidTPCFullKa, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTOFFullKa, aod::pidTOFFullPi, aod::pidTOFFullPr>;
183-
using CollisionCandidatesRun3 = soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::CentFT0Cs, aod::CentFT0As, aod::CentFT0Ms, aod::MultsGlobal>;
184-
using CollisionCandidatesRun3MC = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::FT0Mults, aod::CentFT0Cs, aod::CentFT0As, aod::CentFT0Ms, aod::MultsGlobal>;
185+
using CollisionCandidatesRun3 = soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::FV0Mults, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0Ms, aod::MultsGlobal>;
186+
using CollisionCandidatesRun3MC = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::FT0Mults, aod::FV0Mults, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0Ms, aod::MultsGlobal>;
187+
using CollisionsWithLabel = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::MultsGlobal>;
185188

186189
Preslice<TracksExtData> perCollision = aod::track::collisionId;
187190
Preslice<TracksExtMC> perCollisionMC = aod::track::collisionId;
@@ -205,9 +208,10 @@ struct NonPromptCascadeTask {
205208
Configurable<LabeledArray<float>> cfgCutsPID{"particlesCutsPID", {cutsPID[0], nParticles, nCutsPID, particlesNames, cutsNames}, "Nuclei PID selections"};
206209
Configurable<bool> cfgSkimmedProcessing{"cfgSkimmedProcessing", true, "Skimmed dataset processing"};
207210

208-
Configurable<std::string> cfgTriggersOfInterest{"cfgTriggersOfInterest", "fTrackedOmega,fOmegaHighMult", "Triggers of interest, comma separated for Zorro"};
211+
Configurable<std::string> cfgTriggersOfInterest{"cfgTriggersOfInterest", "fTrackedOmega,fOmegaHighMult,fHighFt0Mult", "Triggers of interest, comma separated for Zorro"};
209212

210213
Configurable<float> cfgMaxMult{"cfgMaxMult", 8000.f, "Upper range of multiplicty histo"};
214+
Configurable<float> cfgMaxMultFV0{"cfgMaxMultFV0", 10000.f, "Upper range of multiplicty FV0 histo"};
211215
Configurable<float> cfgMinMult{"cfgMinMult", 3000.f, "Lower range of FT0M histo in zoomed histo"};
212216
Configurable<float> cfgMaxCent{"cfgMaxCent", 8.0025f, "Upper range of FT0M histo"};
213217

@@ -227,13 +231,17 @@ struct NonPromptCascadeTask {
227231
std::unordered_map<std::string, std::shared_ptr<TH2>> mHistsPerRunNtracktVsCentZoom;
228232

229233
int nBinsMult = cfgMaxMult;
234+
int nBinsMultFV0 = cfgMaxMultFV0;
230235
int nBinsMultZoom = cfgMaxMult - cfgMinMult;
231236
int nBinsCentZoom = (cfgMaxCent + 0.0025) / 0.005;
237+
232238
AxisSpec multAxis = {nBinsMult, 0, cfgMaxMult, "Multiplicity FT0M"};
239+
AxisSpec multAxisFV0 = {nBinsMultFV0, 0, cfgMaxMultFV0, "Multiplicity FT0M"};
233240
AxisSpec centAxis = {101, -0.025, 101.025, "Centrality"};
234241
AxisSpec centAxisZoom = {nBinsCentZoom, -0.0025, cfgMaxCent, "Centrality"};
235242
AxisSpec multAxisZoom = {nBinsMultZoom, cfgMinMult, cfgMaxMult, "Multiplicity FT0M"};
236243
AxisSpec nTracksAxis = {100, 0., 100., "NTracksGlobal"};
244+
AxisSpec nTracksAxisMC = {100, 0., 100., "NTracksMC"};
237245

238246
void initCCDB(aod::BCsWithTimestamps::iterator const& bc)
239247
{
@@ -279,7 +287,10 @@ struct NonPromptCascadeTask {
279287
mRegistry.add("hMultVsCentZoom", "hMultVsCentZoom", HistType::kTH2F, {centAxisZoom, multAxisZoom});
280288
mRegistry.add("hNTracksVsCent", "hNTracksVsCent", HistType::kTH2F, {centAxis, nTracksAxis});
281289
mRegistry.add("hNTracksVsCentZoom", "hNTracksVsCentZoom", HistType::kTH2F, {centAxisZoom, nTracksAxis});
282-
290+
mRegistry.add("hMultFV0VshNTracks", "hMultFV0VshNTracks", HistType::kTH2F, {nTracksAxis, multAxisFV0});
291+
mRegistry.add("hNTracksVsCentFV0A", "hNTracksVsCentFV0A", HistType::kTH2F, {nTracksAxis, centAxis});
292+
mRegistry.add("hNTracksMCVsTracksReco", "hNTracksMCVsTracksReco", HistType::kTH2F, {nTracksAxisMC, nTracksAxis});
293+
mRegistry.add("hNTracksMCNotInReco", "hNTracksMCNotInReco", HistType::kTH1F, {nTracksAxisMC});
283294
for (size_t iBin{0}; iBin < cutsNames.size(); ++iBin) {
284295
cutsOmega->GetYaxis()->SetBinLabel(iBin + 1, cutsNames[iBin].c_str());
285296
cutsXi->GetYaxis()->SetBinLabel(iBin + 1, cutsNames[iBin].c_str());
@@ -345,7 +356,8 @@ struct NonPromptCascadeTask {
345356
}
346357
}
347358
}
348-
void fillMultHistos(const auto& collisions)
359+
template <typename CollisionType>
360+
void fillMultHistos(CollisionType const& collisions)
349361
{
350362
// std::cout << "Filling mult histos" << std::endl;
351363
for (const auto& coll : collisions) {
@@ -368,6 +380,8 @@ struct NonPromptCascadeTask {
368380
mRegistry.fill(HIST("hMultVsCentZoom"), coll.centFT0M(), coll.multFT0M());
369381
mRegistry.fill(HIST("hNTracksVsCent"), coll.centFT0M(), (float)coll.multNTracksGlobal());
370382
mRegistry.fill(HIST("hNTracksVsCentZoom"), coll.centFT0M(), coll.multNTracksGlobal());
383+
mRegistry.fill(HIST("hMultFV0VshNTracks"), coll.multNTracksGlobal(), coll.multFV0A());
384+
mRegistry.fill(HIST("hNTracksVsCentFV0A"), coll.multNTracksGlobal(), coll.centFV0A());
371385
}
372386
};
373387

@@ -590,7 +604,7 @@ struct NonPromptCascadeTask {
590604
cascITSclusters, protonTrack.itsNCls(), pionTrack.itsNCls(), bachelor.itsNCls(), protonTrack.tpcNClsFound(), pionTrack.tpcNClsFound(), bachelor.tpcNClsFound(),
591605
protonTrack.tpcNSigmaPr(), pionTrack.tpcNSigmaPi(), bachelor.tpcNSigmaKa(), bachelor.tpcNSigmaPi(),
592606
protonTrack.hasTOF(), pionTrack.hasTOF(), bachelor.hasTOF(),
593-
protonTrack.tofNSigmaPr(), pionTrack.tofNSigmaPi(), bachelor.tofNSigmaKa(), bachelor.tofNSigmaPi(), collision.sel8(), collision.multFT0C(), collision.multFT0A(), collision.multFT0M(), collision.centFT0C(), collision.centFT0A(), collision.centFT0M(), collision.multNTracksGlobal(), toiMask, collision.selection_bit(aod::evsel::kNoSameBunchPileup)});
607+
protonTrack.tofNSigmaPr(), pionTrack.tofNSigmaPi(), bachelor.tofNSigmaKa(), bachelor.tofNSigmaPi(), collision.sel8(), collision.multFT0C(), collision.multFV0A(), collision.multFT0M(), collision.centFT0C(), collision.centFV0A(), collision.centFT0M(), collision.multNTracksGlobal(), toiMask, collision.selection_bit(aod::evsel::kNoSameBunchPileup)});
594608
}
595609
}
596610

@@ -610,7 +624,7 @@ struct NonPromptCascadeTask {
610624
c.protonTPCNSigma, c.pionTPCNSigma, c.bachKaonTPCNSigma, c.bachPionTPCNSigma,
611625
c.protonHasTOF, c.pionHasTOF, c.bachHasTOF,
612626
c.protonTOFNSigma, c.pionTOFNSigma, c.bachKaonTOFNSigma, c.bachPionTOFNSigma,
613-
c.sel8, c.multFT0C, c.multFT0A, c.multFT0M, c.centFT0C, c.centFT0A, c.centFT0M, c.multNTracksGlobal, c.toiMask, c.noSameBunchPileup);
627+
c.sel8, c.multFT0C, c.multFV0A, c.multFT0M, c.centFT0C, c.centFV0A, c.centFT0M, c.multNTracksGlobal, c.toiMask, c.noSameBunchPileup);
614628
}
615629
}
616630

@@ -646,7 +660,7 @@ struct NonPromptCascadeTask {
646660
c.cascNClusITS, c.protonNClusITS, c.pionNClusITS, c.bachNClusITS, c.protonNClusTPC, c.pionNClusTPC, c.bachNClusTPC, c.protonTPCNSigma,
647661
c.pionTPCNSigma, c.bachKaonTPCNSigma, c.bachPionTPCNSigma, c.protonHasTOF, c.pionHasTOF, c.bachHasTOF,
648662
c.protonTOFNSigma, c.pionTOFNSigma, c.bachKaonTOFNSigma, c.bachPionTOFNSigma,
649-
c.sel8, c.multFT0C, c.multFT0A, c.multFT0M, c.centFT0C, c.centFT0A, c.centFT0M,
663+
c.sel8, c.multFT0C, c.multFV0A, c.multFT0M, c.centFT0C, c.centFV0A, c.centFT0M,
650664
particle.pt(), particle.eta(), particle.phi(), mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(),
651665
particle.pdgCode(), mcCollision.posX() - particle.vx(), mcCollision.posY() - particle.vy(),
652666
mcCollision.posZ() - particle.vz(), mcCollision.globalIndex() == recCollision.mcCollisionId(), c.hasFakeReassociation, motherDecayDaughters, c.multNTracksGlobal, c.toiMask, c.noSameBunchPileup);
@@ -689,10 +703,11 @@ struct NonPromptCascadeTask {
689703
{
690704
fillCandidatesVector<TracksExtMC>(collisions, tracks, cascades, gCandidatesNT);
691705
fillMCtable<aod::Cascades>(mcParticles, collisions, gCandidatesNT);
706+
fillMultHistos<CollisionCandidatesRun3MC>(collisions);
692707
}
693708
PROCESS_SWITCH(NonPromptCascadeTask, processCascadesMC, "process cascades: MC analysis", false);
694709

695-
void processGenParticles(aod::McParticles const& mcParticles, aod::McCollisions const&)
710+
void processGenParticles(aod::McParticles const& mcParticles)
696711
{
697712
for (const auto& p : mcParticles) {
698713
auto absCode = std::abs(p.pdgCode());
@@ -702,7 +717,6 @@ struct NonPromptCascadeTask {
702717
auto fromHF = isFromHF(p);
703718
int pdgCodeMom = p.has_mothers() ? p.template mothers_as<aod::McParticles>()[0].pdgCode() : 0;
704719
auto mcCollision = p.template mcCollision_as<aod::McCollisions>();
705-
706720
int motherDecayDaughters{0};
707721
if (fromHF[0] || fromHF[1]) {
708722
auto mom = p.template mothers_as<aod::McParticles>()[0];
@@ -715,7 +729,6 @@ struct NonPromptCascadeTask {
715729
}
716730
}
717731
}
718-
719732
NPCTableGen(p.pt(), p.eta(), p.phi(), p.pdgCode(), pdgCodeMom, mcCollision.posX() - p.vx(), mcCollision.posY() - p.vy(), mcCollision.posZ() - p.vz(), fromHF[0], fromHF[1], motherDecayDaughters);
720733
}
721734
}
@@ -741,9 +754,57 @@ struct NonPromptCascadeTask {
741754
zorroAccounting(collisions);
742755
fillCandidatesVector<TracksExtData>(collisions, tracks, cascades, gCandidatesNT);
743756
fillDataTable<aod::Cascades>(gCandidatesNT);
744-
fillMultHistos(collisions);
757+
fillMultHistos<CollisionCandidatesRun3>(collisions);
745758
}
746759
PROCESS_SWITCH(NonPromptCascadeTask, processCascadesData, "process cascades: Data analysis", false);
760+
761+
int getMCMult(aod::McParticles const& mcParticles, int mcCollId)
762+
{
763+
int mult = 0;
764+
for (auto const& mcp : mcParticles) {
765+
if (mcp.mcCollisionId() == mcCollId) {
766+
// multiplicity definition:
767+
bool accept = mcp.isPhysicalPrimary();
768+
accept = accept && (mcp.eta() < 0.5) && (mcp.eta() > -0.5);
769+
int q = 0;
770+
auto pdgEntry = TDatabasePDG::Instance()->GetParticle(mcp.pdgCode());
771+
if (pdgEntry) {
772+
q = int(std::round(pdgEntry->Charge() / 3.0));
773+
} else {
774+
// LOG(warn) << "No pdg assuming neutral";
775+
}
776+
accept = accept && (q != 0);
777+
if (accept) {
778+
++mult;
779+
}
780+
}
781+
}
782+
return mult;
783+
}
784+
void processNegMC(CollisionsWithLabel const& colls, aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
785+
{
786+
// std::cout << "ProcNegMC" << std::endl;
787+
std::vector<int> mcReconstructed(mcCollisions.size(), 0);
788+
for (auto const& col : colls) {
789+
int mcCollId = col.mcCollisionId(); // col.template mcCollision_as<aod::McCollisions>();
790+
// auto mc = col.mcCollision();
791+
// int mcId = mc.globalIndex();
792+
// std::cout << "globalIndex:" << mcId << " colID:" << mcCollId << std::endl;
793+
int mult = getMCMult(mcParticles, mcCollId);
794+
mcReconstructed[mcCollId] = 1;
795+
mRegistry.fill(HIST("hNTracksMCVsTracksReco"), mult, col.multNTracksGlobal());
796+
}
797+
for (auto const& mc : mcCollisions) {
798+
int gindex = mc.globalIndex();
799+
// std::cout << "mc globalIndex:" << gindex << std::endl;
800+
if (!mcReconstructed[gindex]) {
801+
int mult = getMCMult(mcParticles, gindex);
802+
// std::cout << "===> unreconstructed:" << mult << std::endl;
803+
mRegistry.fill(HIST("hNTracksMCNotInReco"), mult);
804+
}
805+
}
806+
}
807+
PROCESS_SWITCH(NonPromptCascadeTask, processNegMC, "process mc", false);
747808
};
748809

749810
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)