Skip to content

Commit 44e31ff

Browse files
[PWGJE] Add missing event selection to processReco in jetShape task (#14280)
1 parent d29a139 commit 44e31ff

File tree

1 file changed

+101
-37
lines changed

1 file changed

+101
-37
lines changed

PWGJE/Tasks/jetShape.cxx

Lines changed: 101 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ using namespace o2::framework::expressions;
4343

4444
struct JetShapeTask {
4545

46-
Configurable<int> nBinsNSigma{"nBinsNSigma", 101, "Number of nsigma bins"};
47-
Configurable<float> nSigmaMin{"nSigmaMin", -10.1f, "Min value of nsigma"};
48-
Configurable<float> nSigmaMax{"nSigmaMax", 10.1f, "Max value of nsigma"};
46+
Configurable<int> nBinsNSigma{"nBinsNSigma", 100, "Number of nsigma bins"};
47+
Configurable<float> nSigmaMin{"nSigmaMin", -10.0f, "Min value of nsigma"};
48+
Configurable<float> nSigmaMax{"nSigmaMax", 10.0f, "Max value of nsigma"};
4949
Configurable<int> nBinsPForDedx{"nBinsPForDedx", 700, "Number of p bins"};
5050
Configurable<int> nBinsPForBeta{"nBinsPForBeta", 500, "Number of pT bins"};
5151
Configurable<int> nBinsTpcDedx{"nBinsTpcDedx", 500, "Number of DEdx bins"};
@@ -62,7 +62,7 @@ struct JetShapeTask {
6262
Configurable<int> nBinsPt{"nBinsPt", 60, "Number of pT bins"};
6363
Configurable<int> nBinsJetPt{"nBinsJetPt", 10, "Number of jet pT bins"};
6464
Configurable<int> nBinsPForCut{"nBinsPForCut", 30, "Number of p track bins"};
65-
Configurable<int> nBinsCentrality{"nBinsCentrality", 20, "Number of centrality bins"};
65+
Configurable<int> nBinsCentrality{"nBinsCentrality", 10, "Number of centrality bins"};
6666
Configurable<int> nBinsDistance{"nBinsDistance", 7, "Number of distance bins"};
6767
Configurable<float> distanceMax{"distanceMax", 0.7f, "Max value of distance"};
6868
Configurable<float> nSigmaTofCut{"nSigmaTofCut", 2.0f, "Number of sigma cut for TOF PID"};
@@ -79,11 +79,10 @@ struct JetShapeTask {
7979
{"tofPi", "tofPi", {HistType::kTH2F, {{nBinsPt, 0, ptMax}, {nBinsNSigma, nSigmaMin, nSigmaMax}}}},
8080
{"tpcPr", "tpcPr", {HistType::kTH2F, {{nBinsP, 0, pMax}, {nBinsNSigma, nSigmaMin, nSigmaMax}}}},
8181
{"tofPr", "tofPr", {HistType::kTH2F, {{nBinsPt, 0, ptMax}, {nBinsNSigma, nSigmaMin, nSigmaMax}}}},
82-
{"tpcDedx", "tpcDedx", {HistType::kTHnSparseD, {{nBinsPForDedx, 0, pMax}, {nBinsTpcDedx, 0, 1000}}}},
83-
{"tofBeta", "tofBeta", {HistType::kTH2F, {{nBinsPForBeta, 0, pMax}, {nBinsTofBeta, 0.4, 1.1}}}},
82+
{"tpcDedx", "tpcDedx", {HistType::kTHnSparseD, {{nBinsPForDedx, 0, pMax}, {nBinsTpcDedx, 0, 1000}, {nBinsCentrality, centralityMinForCut, centralityMaxForCut}}}},
83+
{"tofBeta", "tofBeta", {HistType::kTHnSparseD, {{nBinsPForBeta, 0, pMax}, {nBinsTofBeta, 0.4, 1.1}, {nBinsCentrality, centralityMinForCut, centralityMaxForCut}}}},
8484
{"pVsPtForPr", "pVsPtForPr", {HistType::kTHnSparseD, {{nBinsP, 0, pMax}, {nBinsPt, 0, ptMax}, {nBinsCentrality, centralityMinForCut, centralityMaxForCut}}}},
8585
{"pVsPtForPi", "pVsPtPi", {HistType::kTHnSparseD, {{nBinsP, 0, pMax}, {nBinsPt, 0, ptMax}, {nBinsCentrality, centralityMinForCut, centralityMaxForCut}}}},
86-
{"tofMass", "tofMass", {HistType::kTH1F, {{90, 0, 3}}}},
8786
{"trackPhi", "trackPhi", {HistType::kTH1F, {{80, -1, 7}}}},
8887
{"trackEta", "trackEta", {HistType::kTH1F, {{100, -1, 1}}}},
8988
{"trackTpcNClsCrossedRows", "trackTpcNClsCrossedRows", {HistType::kTH1F, {{50, 0, 200}}}},
@@ -114,7 +113,6 @@ struct JetShapeTask {
114113
{"rho", "rho", {HistType::kTH1F, {{120, 0, 300}}}},
115114
{"ptCorr", "Corrected jet pT; p_{T}^{corr} (GeV/c); Counts", {HistType::kTH1F, {{200, 0, 200}}}},
116115
{"ptCorrVsDistance", "ptcorr_vs_distance", {HistType::kTH2F, {{70, 0, 0.7}, {100, 0, 100}}}},
117-
{"distanceVsTrackpt", "trackpt_vs_distance", {HistType::kTH2F, {{70, 0, 0.7}, {100, 0, 100}}}},
118116
{"jetDistanceVsTrackpt", "trackpt_vs_distance_injet", {HistType::kTH2F, {{70, 0, 0.7}, {100, 0, 100}}}},
119117
{"ptSum", "ptSum", {HistType::kTHnSparseD, {{14, 0, 0.7}, {nBinsJetShapeFunc, 0, jetShapeFuncMax}, {nBinsJetPt, jetPtMinForCut, jetPtMaxForCut}, {nBinsCentrality, centralityMinForCut, centralityMaxForCut}}}},
120118
{"ptSumBg1", "ptSumBg1", {HistType::kTHnSparseD, {{14, 0, 0.7}, {nBinsJetShapeFunc, 0, jetShapeFuncMax}, {nBinsJetPt, jetPtMinForCut, jetPtMaxForCut}, {nBinsCentrality, centralityMinForCut, centralityMaxForCut}}}},
@@ -161,7 +159,7 @@ struct JetShapeTask {
161159
Configurable<float> nclcrossTpcMin{"nclcrossTpcMin", 70.0f, "tpc # of crossedRows cut"};
162160
Configurable<float> mcRapidityMax{"mcRapidityMax", 0.5f, "maximum mctrack y"};
163161
Configurable<double> epsilon{"epsilon", 1e-6, "standard for aboid division of zero"};
164-
Configurable<float> maxDeltaEtaSafe{"maxDeltaEtaSafe", 2.0f, "maximum track eta for cut"};
162+
Configurable<float> maxDeltaEtaSafe{"maxDeltaEtaSafe", 0.9f, "maximum track eta for cut"};
165163

166164
Configurable<std::string> triggerMasks{"triggerMasks", "", "possible JE Trigger masks: fJetChLowPt,fJetChHighPt,fTrackLowPt,fTrackHighPt,fJetD0ChLowPt,fJetD0ChHighPt,fJetLcChLowPt,fJetLcChHighPt,fEMCALReadout,fJetFullHighPt,fJetFullLowPt,fJetNeutralHighPt,fJetNeutralLowPt,fGammaVeryHighPtEMCAL,fGammaVeryHighPtDCAL,fGammaHighPtEMCAL,fGammaHighPtDCAL,fGammaLowPtEMCAL,fGammaLowPtDCAL,fGammaVeryLowPtEMCAL,fGammaVeryLowPtDCAL"};
167165

@@ -227,8 +225,14 @@ struct JetShapeTask {
227225
Filter collisionFilter = nabs(aod::collision::posZ) < vertexZCut;
228226
Filter mcCollisionFilter = nabs(aod::jmccollision::posZ) < vertexZCut;
229227

228+
using FullTrackInfo = soa::Join<aod::Tracks, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::pidTPCFullPr, aod::pidTOFFullPr, aod::TracksExtra, aod::TracksDCA, aod::pidTOFbeta>;
229+
230230
void processJetShape(soa::Filtered<soa::Join<aod::JetCollisions, aod::BkgChargedRhos>>::iterator const& collision, aod::JetTracks const& tracks, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents> const& jets)
231231
{
232+
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
233+
return;
234+
}
235+
232236
size_t nBins = distanceCategory->size() - 1;
233237

234238
float maxDistance = distanceCategory->at(nBins);
@@ -273,7 +277,9 @@ struct JetShapeTask {
273277
}
274278

275279
for (const auto& track : tracks) {
276-
280+
if (!jetderiveddatautilities::selectTrack(track, trackSelection)) {
281+
continue;
282+
}
277283
float trkPt = track.pt();
278284
float trkPhi = track.phi();
279285
float trkEta = track.eta();
@@ -367,7 +373,7 @@ struct JetShapeTask {
367373

368374
PROCESS_SWITCH(JetShapeTask, processJetShape, "JetShape", false);
369375

370-
void processJetProductionRatio(soa::Filtered<soa::Join<aod::JetCollisions, aod::BkgChargedRhos>>::iterator const& collision, soa::Join<aod::JetTracks, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::pidTPCFullPr, aod::pidTOFFullPr, aod::TracksExtra, aod::TracksDCA, aod::pidTOFbeta> const& tracks, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents> const& jets)
376+
void processJetProductionRatio(soa::Filtered<soa::Join<aod::JetCollisions, aod::BkgChargedRhos>>::iterator const& collision, soa::Join<aod::JetTracks, aod::JTrackPIs> const& tracks, FullTrackInfo const&, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents> const& jets)
371377
{
372378
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
373379
return;
@@ -402,7 +408,12 @@ struct JetShapeTask {
402408
{jet.pt(), jet.eta(), jet.phi(), ptCorr, phiBg1, phiBg2});
403409
}
404410

405-
for (const auto& track : tracks) {
411+
for (const auto& jetTrack : tracks) {
412+
if (!jetderiveddatautilities::selectTrack(jetTrack, trackSelection)) {
413+
continue;
414+
}
415+
416+
auto track = jetTrack.track_as<FullTrackInfo>();
406417

407418
if (std::abs(track.eta()) > etaTrUp)
408419
continue;
@@ -458,7 +469,7 @@ struct JetShapeTask {
458469
float distBg2 = std::sqrt(dEta * dEta + deltaPhiBg2 * deltaPhiBg2);
459470

460471
// --- Background Fill ---
461-
if (distBg1 < jetR || distBg2 < jetR) {
472+
if (distBg1 < distanceMax || distBg2 < distanceMax) {
462473
registry.fill(HIST("tpcDedxOutOfJet"), trkP, tpcSig);
463474

464475
if (hasTofPi) {
@@ -496,14 +507,23 @@ struct JetShapeTask {
496507
}
497508
}
498509
}
499-
PROCESS_SWITCH(JetShapeTask, processJetProductionRatio,
500-
"production ratio around jets", false);
510+
PROCESS_SWITCH(JetShapeTask, processJetProductionRatio, "production ratio around jets", false);
501511

502-
void processInclusiveProductionRatio(soa::Filtered<soa::Join<aod::Collisions, aod::CentFT0Ms>>::iterator const& collision, soa::Join<aod::Tracks, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::pidTPCFullPr, aod::pidTOFFullPr, aod::TracksExtra, aod::TracksDCA, aod::pidTOFbeta, aod::pidTOFmass> const& tracks)
512+
void processInclusiveProductionRatio(soa::Filtered<aod::JetCollisions>::iterator const& collision, soa::Join<aod::JetTracks, aod::JTrackPIs> const& tracks, FullTrackInfo const&)
503513
{
514+
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
515+
return;
516+
}
504517

505518
// tracks conditions
506-
for (const auto& track : tracks) {
519+
for (const auto& jetTrack : tracks) {
520+
521+
if (!jetderiveddatautilities::selectTrack(jetTrack, trackSelection)) {
522+
continue;
523+
}
524+
525+
auto track = jetTrack.track_as<FullTrackInfo>();
526+
507527
registry.fill(HIST("trackTpcNClsCrossedRows"), track.tpcNClsCrossedRows());
508528
registry.fill(HIST("trackDcaXY"), track.dcaXY());
509529
registry.fill(HIST("trackItsChi2NCl"), track.itsChi2NCl());
@@ -529,11 +549,12 @@ struct JetShapeTask {
529549
continue;
530550

531551
// PID check
532-
registry.fill(HIST("tofMass"), track.mass());
533552
registry.fill(HIST("tpcPi"), track.p(), track.tpcNSigmaPi());
534553
registry.fill(HIST("tofPi"), track.pt(), track.tofNSigmaPi());
535554
registry.fill(HIST("tpcPr"), track.p(), track.tpcNSigmaPr());
536555
registry.fill(HIST("tofPr"), track.pt(), track.tofNSigmaPr());
556+
registry.fill(HIST("tpcDedx"), track.p(), track.tpcSignal(), collision.centFT0M());
557+
registry.fill(HIST("tofBeta"), track.p(), track.beta(), collision.centFT0M());
537558

538559
if (std::abs(track.tofNSigmaPr()) < nSigmaTofCut) {
539560
registry.fill(HIST("tpcTofPr"), track.p(), track.tpcNSigmaPr(), collision.centFT0M());
@@ -551,19 +572,21 @@ struct JetShapeTask {
551572
}
552573
}
553574
}
554-
PROCESS_SWITCH(JetShapeTask, processInclusiveProductionRatio,
555-
"inclusive Production ratio", false);
575+
PROCESS_SWITCH(JetShapeTask, processInclusiveProductionRatio, "inclusive Production ratio", false);
556576

557-
void processReco(
558-
soa::Filtered<soa::Join<aod::JetCollisionsMCD, aod::BkgChargedRhos>>::iterator const& collision,
559-
soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::McTrackLabels> const& tracks, aod::ChargedMCDetectorLevelJets const& jets, aod::McParticles const& mcParticles)
577+
void processReco(soa::Filtered<soa::Join<aod::JetCollisionsMCD, aod::BkgChargedRhos>>::iterator const& collision, soa::Join<aod::JetTracks, aod::TracksExtra, aod::TracksDCA, aod::McTrackLabels> const& tracks, aod::ChargedMCDetectorLevelJets const& jets, aod::McParticles const& mcParticles)
560578
{
579+
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
580+
return;
581+
}
582+
561583
(void)mcParticles;
562584

563585
registry.fill(HIST("eventCounter"), 0.5);
564586

565587
float centrality = collision.centFT0M();
566588
float rho = collision.rho();
589+
567590
registry.fill(HIST("mcCentralityReco"), centrality);
568591

569592
struct CachedJet {
@@ -583,6 +606,11 @@ struct JetShapeTask {
583606
}
584607

585608
for (const auto& track : tracks) {
609+
610+
if (!jetderiveddatautilities::selectTrack(track, trackSelection)) {
611+
continue;
612+
}
613+
586614
if (!track.has_mcParticle())
587615
continue;
588616

@@ -657,35 +685,71 @@ struct JetShapeTask {
657685
}
658686
PROCESS_SWITCH(JetShapeTask, processReco, "process reconstructed simulation information", true);
659687

660-
void processSim(soa::Join<aod::McCollisions, aod::McCentFT0Ms>::iterator const& mcCollision, aod::ChargedMCParticleLevelJets const& mcpjets, aod::McParticles const& mcParticles)
688+
void processSim(aod::JetMcCollisions::iterator const& mcCollision, aod::ChargedMCParticleLevelJets const& mcpjets, aod::JetParticles const& mcParticles)
661689
{
690+
if (std::abs(mcCollision.posZ()) > vertexZCut) {
691+
return;
692+
}
662693

694+
// --- centrality ---
663695
float centrality = mcCollision.centFT0M();
664696
registry.fill(HIST("mcCentralitySim"), centrality);
665697

666-
for (const auto& mcpjet : mcpjets) {
698+
const float maxR2 = distanceMax * distanceMax;
667699

668-
for (const auto& mcParticle : mcParticles) {
700+
// --- loop over MC particles only once ---
701+
for (const auto& mcParticle : mcParticles) {
669702

670-
float dEta = mcParticle.eta() - mcpjet.eta();
671-
float dPhi = std::abs(mcParticle.phi() - mcpjet.phi());
703+
// --- early cuts on particle ---
704+
if (!mcParticle.isPhysicalPrimary()) {
705+
continue;
706+
}
672707

708+
if (std::abs(mcParticle.y()) > mcRapidityMax) {
709+
continue;
710+
}
711+
712+
int absPdg = std::abs(mcParticle.pdgCode());
713+
if (absPdg != PDG_t::kPiPlus &&
714+
absPdg != PDG_t::kKPlus &&
715+
absPdg != PDG_t::kProton) {
716+
continue;
717+
}
718+
719+
const float partPt = mcParticle.pt();
720+
const float partEta = mcParticle.eta();
721+
const float partPhi = mcParticle.phi();
722+
723+
// --- loop over jets ---
724+
for (const auto& mcpjet : mcpjets) {
725+
726+
// --- delta eta cut first ---
727+
float dEta = partEta - mcpjet.eta();
728+
if (std::abs(dEta) > distanceMax) {
729+
continue;
730+
}
731+
732+
// --- delta phi ---
733+
float dPhi = std::abs(partPhi - mcpjet.phi());
673734
if (dPhi > o2::constants::math::PI) {
674735
dPhi = o2::constants::math::TwoPI - dPhi;
675736
}
676737

677-
float deltaR = std::sqrt(dEta * dEta + dPhi * dPhi);
678-
if (deltaR > distanceMax) {
738+
// --- delta R^2 ---
739+
float dR2 = dEta * dEta + dPhi * dPhi;
740+
if (dR2 > maxR2) {
679741
continue;
680742
}
681743

682-
if (mcParticle.isPhysicalPrimary() && std::fabs(mcParticle.y()) < mcRapidityMax) {
683-
if (std::abs(mcParticle.pdgCode()) == PDG_t::kPiPlus)
684-
registry.fill(HIST("ptGeneratedPion"), mcParticle.pt(), mcpjet.pt(), centrality);
685-
if (std::abs(mcParticle.pdgCode()) == PDG_t::kKPlus)
686-
registry.fill(HIST("ptGeneratedKaon"), mcParticle.pt(), mcpjet.pt(), centrality);
687-
if (std::abs(mcParticle.pdgCode()) == PDG_t::kProton)
688-
registry.fill(HIST("ptGeneratedProton"), mcParticle.pt(), mcpjet.pt(), centrality);
744+
const float jetPt = mcpjet.pt();
745+
746+
// --- histogram fill ---
747+
if (absPdg == PDG_t::kPiPlus) {
748+
registry.fill(HIST("ptGeneratedPion"), partPt, jetPt, centrality);
749+
} else if (absPdg == PDG_t::kKPlus) {
750+
registry.fill(HIST("ptGeneratedKaon"), partPt, jetPt, centrality);
751+
} else if (absPdg == PDG_t::kProton) {
752+
registry.fill(HIST("ptGeneratedProton"), partPt, jetPt, centrality);
689753
}
690754
}
691755
}

0 commit comments

Comments
 (0)