Skip to content

Commit dee81c6

Browse files
committed
dev: response matrix for negatives
1 parent 216f647 commit dee81c6

File tree

2 files changed

+88
-24
lines changed

2 files changed

+88
-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: 78 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
#include <memory>
4242
#include <string>
4343
#include <vector>
44+
#include "TDatabasePDG.h"
45+
#include "TParticlePDG.h"
4446
// #include "PWGHF/Core/PDG.h"
4547
#include "PWGLF/DataModel/LFNonPromptCascadeTables.h"
4648
#include "PWGLF/DataModel/LFStrangenessTables.h"
@@ -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,10 @@ 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>;
188+
185189

186190
Preslice<TracksExtData> perCollision = aod::track::collisionId;
187191
Preslice<TracksExtMC> perCollisionMC = aod::track::collisionId;
@@ -205,9 +209,10 @@ struct NonPromptCascadeTask {
205209
Configurable<LabeledArray<float>> cfgCutsPID{"particlesCutsPID", {cutsPID[0], nParticles, nCutsPID, particlesNames, cutsNames}, "Nuclei PID selections"};
206210
Configurable<bool> cfgSkimmedProcessing{"cfgSkimmedProcessing", true, "Skimmed dataset processing"};
207211

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

210214
Configurable<float> cfgMaxMult{"cfgMaxMult", 8000.f, "Upper range of multiplicty histo"};
215+
Configurable<float> cfgMaxMultFV0{"cfgMaxMultFV0", 10000.f, "Upper range of multiplicty FV0 histo"};
211216
Configurable<float> cfgMinMult{"cfgMinMult", 3000.f, "Lower range of FT0M histo in zoomed histo"};
212217
Configurable<float> cfgMaxCent{"cfgMaxCent", 8.0025f, "Upper range of FT0M histo"};
213218

@@ -227,13 +232,18 @@ struct NonPromptCascadeTask {
227232
std::unordered_map<std::string, std::shared_ptr<TH2>> mHistsPerRunNtracktVsCentZoom;
228233

229234
int nBinsMult = cfgMaxMult;
235+
int nBinsMultFV0 = cfgMaxMultFV0;
230236
int nBinsMultZoom = cfgMaxMult - cfgMinMult;
231237
int nBinsCentZoom = (cfgMaxCent + 0.0025) / 0.005;
238+
232239
AxisSpec multAxis = {nBinsMult, 0, cfgMaxMult, "Multiplicity FT0M"};
240+
AxisSpec multAxisFV0 = {nBinsMultFV0, 0, cfgMaxMultFV0, "Multiplicity FT0M"};
233241
AxisSpec centAxis = {101, -0.025, 101.025, "Centrality"};
234242
AxisSpec centAxisZoom = {nBinsCentZoom, -0.0025, cfgMaxCent, "Centrality"};
235243
AxisSpec multAxisZoom = {nBinsMultZoom, cfgMinMult, cfgMaxMult, "Multiplicity FT0M"};
236244
AxisSpec nTracksAxis = {100, 0., 100., "NTracksGlobal"};
245+
AxisSpec nTracksAxisMC = {100, 0., 100., "NTracksMC"};
246+
237247

238248
void initCCDB(aod::BCsWithTimestamps::iterator const& bc)
239249
{
@@ -279,7 +289,10 @@ struct NonPromptCascadeTask {
279289
mRegistry.add("hMultVsCentZoom", "hMultVsCentZoom", HistType::kTH2F, {centAxisZoom, multAxisZoom});
280290
mRegistry.add("hNTracksVsCent", "hNTracksVsCent", HistType::kTH2F, {centAxis, nTracksAxis});
281291
mRegistry.add("hNTracksVsCentZoom", "hNTracksVsCentZoom", HistType::kTH2F, {centAxisZoom, nTracksAxis});
282-
292+
mRegistry.add("hMultFV0VshNTracks", "hMultFV0VshNTracks", HistType::kTH2F, {nTracksAxis, multAxisFV0});
293+
mRegistry.add("hNTracksVsCentFV0A", "hNTracksVsCentFV0A", HistType::kTH2F, {nTracksAxis, centAxis});
294+
mRegistry.add("hNTracksMCVsTracksReco", "hNTracksMCVsTracksReco", HistType::kTH2F, {nTracksAxisMC, nTracksAxis});
295+
mRegistry.add("hNTracksMCNotInReco","hNTracksMCNotInReco", HistType::kTH1F, {nTracksAxisMC});
283296
for (size_t iBin{0}; iBin < cutsNames.size(); ++iBin) {
284297
cutsOmega->GetYaxis()->SetBinLabel(iBin + 1, cutsNames[iBin].c_str());
285298
cutsXi->GetYaxis()->SetBinLabel(iBin + 1, cutsNames[iBin].c_str());
@@ -345,7 +358,8 @@ struct NonPromptCascadeTask {
345358
}
346359
}
347360
}
348-
void fillMultHistos(const auto& collisions)
361+
template <typename CollisionType>
362+
void fillMultHistos(CollisionType const& collisions)
349363
{
350364
// std::cout << "Filling mult histos" << std::endl;
351365
for (const auto& coll : collisions) {
@@ -368,6 +382,8 @@ struct NonPromptCascadeTask {
368382
mRegistry.fill(HIST("hMultVsCentZoom"), coll.centFT0M(), coll.multFT0M());
369383
mRegistry.fill(HIST("hNTracksVsCent"), coll.centFT0M(), (float)coll.multNTracksGlobal());
370384
mRegistry.fill(HIST("hNTracksVsCentZoom"), coll.centFT0M(), coll.multNTracksGlobal());
385+
mRegistry.fill(HIST("hMultFV0VshNTracks"), coll.multNTracksGlobal(), coll.multFV0A());
386+
mRegistry.fill(HIST("hNTracksVsCentFV0A"), coll.multNTracksGlobal(), coll.centFV0A());
371387
}
372388
};
373389

@@ -590,7 +606,7 @@ struct NonPromptCascadeTask {
590606
cascITSclusters, protonTrack.itsNCls(), pionTrack.itsNCls(), bachelor.itsNCls(), protonTrack.tpcNClsFound(), pionTrack.tpcNClsFound(), bachelor.tpcNClsFound(),
591607
protonTrack.tpcNSigmaPr(), pionTrack.tpcNSigmaPi(), bachelor.tpcNSigmaKa(), bachelor.tpcNSigmaPi(),
592608
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)});
609+
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)});
594610
}
595611
}
596612

@@ -610,7 +626,7 @@ struct NonPromptCascadeTask {
610626
c.protonTPCNSigma, c.pionTPCNSigma, c.bachKaonTPCNSigma, c.bachPionTPCNSigma,
611627
c.protonHasTOF, c.pionHasTOF, c.bachHasTOF,
612628
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);
629+
c.sel8, c.multFT0C, c.multFV0A, c.multFT0M, c.centFT0C, c.centFV0A, c.centFT0M, c.multNTracksGlobal, c.toiMask, c.noSameBunchPileup);
614630
}
615631
}
616632

@@ -646,7 +662,7 @@ struct NonPromptCascadeTask {
646662
c.cascNClusITS, c.protonNClusITS, c.pionNClusITS, c.bachNClusITS, c.protonNClusTPC, c.pionNClusTPC, c.bachNClusTPC, c.protonTPCNSigma,
647663
c.pionTPCNSigma, c.bachKaonTPCNSigma, c.bachPionTPCNSigma, c.protonHasTOF, c.pionHasTOF, c.bachHasTOF,
648664
c.protonTOFNSigma, c.pionTOFNSigma, c.bachKaonTOFNSigma, c.bachPionTOFNSigma,
649-
c.sel8, c.multFT0C, c.multFT0A, c.multFT0M, c.centFT0C, c.centFT0A, c.centFT0M,
665+
c.sel8, c.multFT0C, c.multFV0A, c.multFT0M, c.centFT0C, c.centFV0A, c.centFT0M,
650666
particle.pt(), particle.eta(), particle.phi(), mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(),
651667
particle.pdgCode(), mcCollision.posX() - particle.vx(), mcCollision.posY() - particle.vy(),
652668
mcCollision.posZ() - particle.vz(), mcCollision.globalIndex() == recCollision.mcCollisionId(), c.hasFakeReassociation, motherDecayDaughters, c.multNTracksGlobal, c.toiMask, c.noSameBunchPileup);
@@ -689,11 +705,13 @@ struct NonPromptCascadeTask {
689705
{
690706
fillCandidatesVector<TracksExtMC>(collisions, tracks, cascades, gCandidatesNT);
691707
fillMCtable<aod::Cascades>(mcParticles, collisions, gCandidatesNT);
708+
fillMultHistos<CollisionCandidatesRun3MC>(collisions);
692709
}
693710
PROCESS_SWITCH(NonPromptCascadeTask, processCascadesMC, "process cascades: MC analysis", false);
694711

695-
void processGenParticles(aod::McParticles const& mcParticles, aod::McCollisions const&)
712+
void processGenParticles(aod::McParticles const& mcParticles, aod::McCollisions const& collisions)
696713
{
714+
//fillMultHistos<aod::McCollisions>(collisions)
697715
for (const auto& p : mcParticles) {
698716
auto absCode = std::abs(p.pdgCode());
699717
if (absCode != 3312 && absCode != 3334) {
@@ -702,7 +720,6 @@ struct NonPromptCascadeTask {
702720
auto fromHF = isFromHF(p);
703721
int pdgCodeMom = p.has_mothers() ? p.template mothers_as<aod::McParticles>()[0].pdgCode() : 0;
704722
auto mcCollision = p.template mcCollision_as<aod::McCollisions>();
705-
706723
int motherDecayDaughters{0};
707724
if (fromHF[0] || fromHF[1]) {
708725
auto mom = p.template mothers_as<aod::McParticles>()[0];
@@ -715,7 +732,6 @@ struct NonPromptCascadeTask {
715732
}
716733
}
717734
}
718-
719735
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);
720736
}
721737
}
@@ -741,9 +757,57 @@ struct NonPromptCascadeTask {
741757
zorroAccounting(collisions);
742758
fillCandidatesVector<TracksExtData>(collisions, tracks, cascades, gCandidatesNT);
743759
fillDataTable<aod::Cascades>(gCandidatesNT);
744-
fillMultHistos(collisions);
760+
fillMultHistos<CollisionCandidatesRun3>(collisions);
745761
}
746762
PROCESS_SWITCH(NonPromptCascadeTask, processCascadesData, "process cascades: Data analysis", false);
763+
764+
int getMCMult(aod::McParticles const& mcParticles, int mcCollId )
765+
{
766+
int mult = 0;
767+
for (auto const& mcp : mcParticles) {
768+
if (mcp.mcCollisionId() == mcCollId) {
769+
// multiplicity definition:
770+
bool accept = mcp.isPhysicalPrimary();
771+
accept *= (mcp.eta() < 0.5) && (mcp.eta() > -0.5);
772+
int q = 0;
773+
auto pdgEntry = TDatabasePDG::Instance()->GetParticle(mcp.pdgCode());
774+
if(pdgEntry){
775+
q = int(std::round(pdgEntry->Charge() / 3.0));
776+
} else {
777+
//LOG(warn) << "No pdg assuming neutral";
778+
}
779+
accept *= (q != 0);
780+
if (accept) {
781+
++mult;
782+
}
783+
}
784+
}
785+
return mult;
786+
}
787+
void processNegMC(CollisionsWithLabel const& colls, aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles )
788+
{
789+
//std::cout << "ProcNegMC" << std::endl;
790+
std::vector<int> mcReconstructed(mcCollisions.size(),0);
791+
for(auto const& col: colls){
792+
int mcCollId = col.mcCollisionId(); // col.template mcCollision_as<aod::McCollisions>();
793+
//auto mc = col.mcCollision();
794+
//int mcId = mc.globalIndex();
795+
//std::cout << "globalIndex:" << mcId << " colID:" << mcCollId << std::endl;
796+
int mult = getMCMult(mcParticles, mcCollId);
797+
mcReconstructed[mcCollId] = 1;
798+
mRegistry.fill(HIST("hNTracksMCVsTracksReco"), mult, col.multNTracksGlobal());
799+
}
800+
for(auto const& mc: mcCollisions){
801+
int gindex = mc.globalIndex();
802+
//std::cout << "mc globalIndex:" << gindex << std::endl;
803+
if(!mcReconstructed[gindex]){
804+
int mult = getMCMult(mcParticles, gindex);
805+
//std::cout << "===> unreconstructed:" << mult << std::endl;
806+
mRegistry.fill(HIST( "hNTracksMCNotInReco"), mult);
807+
}
808+
}
809+
}
810+
PROCESS_SWITCH(NonPromptCascadeTask, processNegMC, "process mc", false);
747811
};
748812

749813
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)