@@ -43,7 +43,6 @@ using namespace o2::framework;
4343using namespace o2 ::framework::expressions;
4444using namespace o2 ::constants::physics;
4545
46- // FIX name/namespace: use snake_case for namespace
4746namespace lambda_analysis
4847{
4948// Named PDG codes — fixes pdg/explicit-code and magic-number errors
@@ -55,13 +54,11 @@ static constexpr int PdgXi0{3322};
5554static constexpr int PdgOmegaMinus{3334 };
5655} // namespace lambda_analysis
5756
58- // FIX name/struct: use UpperCamelCase for struct names
5957struct lambda1520analysispo {
6058 SliceCache sliceCache;
6159
6260 // Preslice helpers
63- Preslice<aod::ResoTracks> tracksPerResonanceCollision =
64- aod::resodaughter::resoCollisionId;
61+ Preslice<aod::ResoTracks> tracksPerResonanceCollision = aod::resodaughter::resoCollisionId;
6562 Preslice<aod::Tracks> tracksPerStandardCollision = aod::track::collisionId;
6663
6764 // Pointer to MC parent particle table (used only in MC processing)
@@ -192,7 +189,7 @@ struct lambda1520analysispo {
192189 const AxisSpec axisTPCdEdx (380 , 10 , 200 , " #frac{dE}{dx}" );
193190 const AxisSpec axisVertexZ (120 , -12 , 12 , " v_{z} (cm)" );
194191 const AxisSpec axisEventPlaneAngle (120 , -3.14 , 3.14 , " #theta (rad)" );
195- const AxisSpec axisInvariantMass (numberOfInvMassBins, 1.4 , 2 .0 , " M_{inv} (GeV/c^{2})" );
192+ const AxisSpec axisInvariantMass (numberOfInvMassBins, 1.4 , 3 .0 , " M_{inv} (GeV/c^{2})" );
196193
197194 AxisSpec axisOccupancy = {occupancyBins, " Track occupancy [-40,100]" };
198195 AxisSpec axisDCAz = {dcaZMixingBins, " DCA_{z} (cm)" };
@@ -321,7 +318,7 @@ struct lambda1520analysispo {
321318 // passesProtonDCASelection()
322319 // ============================================================
323320 template <typename TrackType>
324- bool passesProtonDCASelection (TrackType const & track, float totalMomentum )
321+ bool passesProtonDCASelection (TrackType const & track, float trackPt )
325322 {
326323 auto ptBinEdges = static_cast <std::vector<float >>(protonDCAPtBinEdges);
327324 auto maxDCAxyValues =
@@ -330,8 +327,8 @@ struct lambda1520analysispo {
330327
331328 bool dcaXYPassed = false ;
332329 for (int iBin = 0 ; iBin < numberOfBins; iBin++) {
333- if (totalMomentum >= ptBinEdges[iBin] &&
334- totalMomentum < ptBinEdges[iBin + 1 ] &&
330+ if (trackPt >= ptBinEdges[iBin] &&
331+ trackPt < ptBinEdges[iBin + 1 ] &&
335332 std::abs (track.dcaXY ()) < maxDCAxyValues[iBin])
336333 dcaXYPassed = true ;
337334 }
@@ -346,16 +343,16 @@ struct lambda1520analysispo {
346343 // passesKaonDCASelection()
347344 // ============================================================
348345 template <typename TrackType>
349- bool passesKaonDCASelection (TrackType const & track, float totalMomentum )
346+ bool passesKaonDCASelection (TrackType const & track, float trackPt )
350347 {
351348 auto ptBinEdges = static_cast <std::vector<float >>(kaonDCAPtBinEdges);
352349 auto maxDCAxyValues = static_cast <std::vector<float >>(kaonMaxDCAxyPerPtBin);
353350 int numberOfBins = static_cast <int >(ptBinEdges.size ()) - 1 ;
354351
355352 bool dcaXYPassed = false ;
356353 for (int iBin = 0 ; iBin < numberOfBins; iBin++) {
357- if (totalMomentum >= ptBinEdges[iBin] &&
358- totalMomentum < ptBinEdges[iBin + 1 ] &&
354+ if (trackPt >= ptBinEdges[iBin] &&
355+ trackPt < ptBinEdges[iBin + 1 ] &&
359356 std::abs (track.dcaXY ()) < maxDCAxyValues[iBin])
360357 dcaXYPassed = true ;
361358 }
@@ -406,7 +403,7 @@ struct lambda1520analysispo {
406403 if (track.tofNSigmaPr () < minTOFNSigmaProton)
407404 return false ;
408405
409- if (combinedNSigmaCutProton < 0 && totalMomentum >= minProtonMomentum ) {
406+ if (combinedNSigmaCutProton < 0 ) {
410407 for (int i = 0 ; i < nTOFBins - 1 ; ++i) {
411408 if (totalMomentum >= tofMomBins[i] &&
412409 totalMomentum < tofMomBins[i + 1 ] &&
@@ -423,21 +420,17 @@ struct lambda1520analysispo {
423420 tpcPIDPassed = true ;
424421 }
425422
426- if ((combinedNSigmaCutProton > 0 ) && totalMomentum >= minProtonMomentum &&
423+ if ((combinedNSigmaCutProton > 0 ) &&
427424 (combinedNSigProton < circularCutSquared &&
428425 combinedNSigPion > circularRejCutSquared &&
429426 combinedNSigKaon > circularRejCutSquared)) {
430427 tofPIDPassed = true ;
431428 tpcPIDPassed = true ;
432429 }
433430
434- if (totalMomentum < minProtonMomentum &&
435- tpcNSigProton < maxTPCNSigmaProton) {
436- tofPIDPassed = true ;
437- tpcPIDPassed = true ;
438- }
439-
440431 } else {
432+ if (!track.hasTOF () && totalMomentum >= minProtonMomentum)
433+ return false ;
441434 tofPIDPassed = true ;
442435 if (track.tpcNSigmaPr () < minTPCNSigmaProton)
443436 return false ;
@@ -490,7 +483,7 @@ struct lambda1520analysispo {
490483 if (track.tofNSigmaKa () < minTOFNSigmaKaon)
491484 return false ;
492485
493- if (combinedNSigmaCutKaon < 0 && totalMomentum >= minKaonMomentum ) {
486+ if (combinedNSigmaCutKaon < 0 ) {
494487 for (int i = 0 ; i < nTOFBins - 1 ; ++i) {
495488 if (totalMomentum >= tofMomBins[i] &&
496489 totalMomentum < tofMomBins[i + 1 ] &&
@@ -507,20 +500,17 @@ struct lambda1520analysispo {
507500 tpcPIDPassed = true ;
508501 }
509502
510- if ((combinedNSigmaCutKaon > 0 ) && totalMomentum >= minKaonMomentum &&
503+ if ((combinedNSigmaCutKaon > 0 ) &&
511504 (combinedNSigKaon < circularCutSquared &&
512505 combinedNSigPion > circularRejCutSquared &&
513506 combinedNSigProton > circularRejCutSquared)) {
514507 tofPIDPassed = true ;
515508 tpcPIDPassed = true ;
516509 }
517510
518- if (totalMomentum < minKaonMomentum && tpcNSigKaon < maxTPCNSigmaKaon) {
519- tofPIDPassed = true ;
520- tpcPIDPassed = true ;
521- }
522-
523511 } else {
512+ if (!track.hasTOF () && totalMomentum >= minKaonMomentum)
513+ return false ;
524514 tofPIDPassed = true ;
525515 if (track.tpcNSigmaKa () < minTPCNSigmaKaon)
526516 return false ;
@@ -537,6 +527,87 @@ struct lambda1520analysispo {
537527 return (tpcPIDPassed && tofPIDPassed);
538528 }
539529
530+ template <typename TrackType>
531+ void fillTrackQAHistograms (TrackType const & track, float centralityPercent)
532+ {
533+ if (!passesBasicTrackSelection (track))
534+ return ;
535+
536+ const float trackPt = track.pt ();
537+ const float totalMomentum = RecoDecay::p (track.px (), track.py (), track.pz ());
538+
539+ const auto tpcNSigProtonRaw = track.tpcNSigmaPr ();
540+ allHistograms.fill (HIST (" QAbefore/Proton/tpcNSigmaVsMomentum" ), totalMomentum, tpcNSigProtonRaw);
541+ const auto tpcNSigKaonRaw = track.tpcNSigmaKa ();
542+ allHistograms.fill (HIST (" QAbefore/Kaon/tpcNSigmaVsMomentum" ), totalMomentum, tpcNSigKaonRaw);
543+ if (track.hasTOF ()) {
544+ const auto tofNSigProtonRaw = track.tofNSigmaPr ();
545+ allHistograms.fill (HIST (" QAbefore/Proton/tofNSigmaVsMomentum" ), totalMomentum, tofNSigProtonRaw);
546+ allHistograms.fill (HIST (" QAbefore/Proton/tofNSigmaVsTPCNSigma" ), tpcNSigProtonRaw, tofNSigProtonRaw);
547+ const auto tofNSigKaonRaw = track.tofNSigmaKa ();
548+ allHistograms.fill (HIST (" QAbefore/Kaon/tofNSigmaVsMomentum" ), totalMomentum, tofNSigKaonRaw);
549+ allHistograms.fill (HIST (" QAbefore/Kaon/tofNSigmaVsTPCNSigma" ), tpcNSigKaonRaw, tofNSigKaonRaw);
550+ }
551+
552+ const bool isProtonCandidate =
553+ (!requireTOFForProton || track.hasTOF ()) &&
554+ passesProtonPID (track, totalMomentum) &&
555+ passesProtonDCASelection (track, trackPt);
556+
557+ if (isProtonCandidate) {
558+ allHistograms.fill (HIST (" QAafter/Proton/ptVsCentrality" ), trackPt, centralityPercent);
559+ allHistograms.fill (HIST (" QAafter/Proton/dcaZVsPt" ), trackPt, track.dcaZ ());
560+ allHistograms.fill (HIST (" QAafter/Proton/dcaXYVsPt" ), trackPt, track.dcaXY ());
561+ allHistograms.fill (HIST (" QAafter/Proton/tpcDedxVsMomentum" ), totalMomentum, track.tpcSignal ());
562+ allHistograms.fill (HIST (" QAafter/Proton/tpcNSigmaPionContamVsPt" ), totalMomentum, track.tpcNSigmaPi ());
563+ allHistograms.fill (HIST (" QAafter/Proton/tpcNSigmaKaonContamVsPt" ), totalMomentum, track.tpcNSigmaKa ());
564+ allHistograms.fill (HIST (" QAafter/Proton/tpcNSigmaVsMomentum" ), totalMomentum, tpcNSigProtonRaw);
565+ allHistograms.fill (HIST (" QAafter/Proton/tpcNSigmaVsCentrality" ), centralityPercent, tpcNSigProtonRaw);
566+ allHistograms.fill (HIST (" QAafter/Proton/tpcNSigmaVsPt" ), trackPt, tpcNSigProtonRaw);
567+ allHistograms.fill (HIST (" QAafter/Proton/tpcCrossedRowsVsPt" ), trackPt, track.tpcNClsCrossedRows ());
568+ allHistograms.fill (HIST (" QAafter/Proton/tpcClustersFoundVsPt" ), trackPt, track.tpcNClsFound ());
569+
570+ if (!useTPCOnlyPID && track.hasTOF ()) {
571+ const auto tofNSigProton = track.tofNSigmaPr ();
572+ allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaVsMomentum" ), totalMomentum, tofNSigProton);
573+ allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaVsCentrality" ), centralityPercent, tofNSigProton);
574+ allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaVsPt" ), trackPt, tofNSigProton);
575+ allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaPionContamVsMomentum" ), totalMomentum, track.tofNSigmaPi ());
576+ allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaKaonContamVsMomentum" ), totalMomentum, track.tofNSigmaKa ());
577+ allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaVsTPCNSigma" ), tpcNSigProtonRaw, tofNSigProton);
578+ }
579+ }
580+
581+ const bool isKaonCandidate =
582+ (!requireTOFForKaon || track.hasTOF ()) &&
583+ passesKaonPID (track, totalMomentum) &&
584+ passesKaonDCASelection (track, trackPt);
585+
586+ if (isKaonCandidate) {
587+ allHistograms.fill (HIST (" QAafter/Kaon/ptVsCentrality" ), trackPt, centralityPercent);
588+ allHistograms.fill (HIST (" QAafter/Kaon/dcaZVsPt" ), trackPt, track.dcaZ ());
589+ allHistograms.fill (HIST (" QAafter/Kaon/dcaXYVsPt" ), trackPt, track.dcaXY ());
590+ allHistograms.fill (HIST (" QAafter/Kaon/tpcDedxVsMomentum" ), totalMomentum, track.tpcSignal ());
591+ allHistograms.fill (HIST (" QAafter/Kaon/tpcNSigmaPionContamVsPt" ), totalMomentum, track.tpcNSigmaPi ());
592+ allHistograms.fill (HIST (" QAafter/Kaon/tpcNSigmaProtonContamVsMomentum" ), totalMomentum, track.tpcNSigmaPr ());
593+ allHistograms.fill (HIST (" QAafter/Kaon/tpcNSigmaVsMomentum" ), totalMomentum, tpcNSigKaonRaw);
594+ allHistograms.fill (HIST (" QAafter/Kaon/tpcNSigmaVsCentrality" ), centralityPercent, tpcNSigKaonRaw);
595+ allHistograms.fill (HIST (" QAafter/Kaon/tpcNSigmaVsPt" ), trackPt, tpcNSigKaonRaw);
596+ allHistograms.fill (HIST (" QAafter/Kaon/tpcCrossedRowsVsPt" ), trackPt, track.tpcNClsCrossedRows ());
597+ allHistograms.fill (HIST (" QAafter/Kaon/tpcClustersFoundVsPt" ), trackPt, track.tpcNClsFound ());
598+
599+ if (!useTPCOnlyPID && track.hasTOF ()) {
600+ const auto tofNSigKaon = track.tofNSigmaKa ();
601+ allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaVsMomentum" ), totalMomentum, tofNSigKaon);
602+ allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaVsPt" ), trackPt, tofNSigKaon);
603+ allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaVsCentrality" ), centralityPercent, tofNSigKaon);
604+ allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaPionContamVsMomentum" ), totalMomentum, track.tofNSigmaPi ());
605+ allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaProtonContamVsMomentum" ), totalMomentum, track.tofNSigmaPr ());
606+ allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaVsTPCNSigma" ), tpcNSigKaonRaw, tofNSigKaon);
607+ }
608+ }
609+ }
610+
540611 // ============================================================
541612 // fillInvariantMassHistograms()
542613 // ============================================================
@@ -566,23 +637,6 @@ struct lambda1520analysispo {
566637 protonTotalMomentum = RecoDecay::p (pxProton, pyProton, pzProton);
567638 kaonTotalMomentum = RecoDecay::p (pxKaon, pyKaon, pzKaon);
568639
569- if (!isMixedEvent) {
570- auto tpcNSigProton = protonTrack.tpcNSigmaPr ();
571- allHistograms.fill (HIST (" QAbefore/Proton/tpcNSigmaVsMomentum" ), protonTotalMomentum, tpcNSigProton);
572- if (protonTrack.hasTOF ()) {
573- auto tofNSigProton = protonTrack.tofNSigmaPr ();
574- allHistograms.fill (HIST (" QAbefore/Proton/tofNSigmaVsMomentum" ), protonTotalMomentum, tofNSigProton);
575- allHistograms.fill (HIST (" QAbefore/Proton/tofNSigmaVsTPCNSigma" ), tpcNSigProton, tofNSigProton);
576- }
577- auto tpcNSigKaon = kaonTrack.tpcNSigmaKa ();
578- allHistograms.fill (HIST (" QAbefore/Kaon/tpcNSigmaVsMomentum" ), kaonTotalMomentum, tpcNSigKaon);
579- if (kaonTrack.hasTOF ()) {
580- auto tofNSigKaon = kaonTrack.tofNSigmaKa ();
581- allHistograms.fill (HIST (" QAbefore/Kaon/tofNSigmaVsMomentum" ), kaonTotalMomentum, tofNSigKaon);
582- allHistograms.fill (HIST (" QAbefore/Kaon/tofNSigmaVsTPCNSigma" ), tpcNSigKaon, tofNSigKaon);
583- }
584- }
585-
586640 if (requireTOFForProton && !protonTrack.hasTOF ())
587641 continue ;
588642 if (requireTOFForKaon && !kaonTrack.hasTOF ())
@@ -592,8 +646,8 @@ struct lambda1520analysispo {
592646 !passesKaonPID (kaonTrack, kaonTotalMomentum))
593647 continue ;
594648
595- if (!passesProtonDCASelection (protonTrack, protonTotalMomentum ) ||
596- !passesKaonDCASelection (kaonTrack, kaonTotalMomentum ))
649+ if (!passesProtonDCASelection (protonTrack, protonTrack. pt () ) ||
650+ !passesKaonDCASelection (kaonTrack, kaonTrack. pt () ))
597651 continue ;
598652
599653 // FIX root/entity: replaced TMath::ACos with std::acos
@@ -603,58 +657,6 @@ struct lambda1520analysispo {
603657 deepAngleCutValue)
604658 continue ;
605659
606- if constexpr (!isMixedEvent) {
607- auto ptProton = protonTrack.pt ();
608- auto tpcNSigProton = protonTrack.tpcNSigmaPr ();
609-
610- allHistograms.fill (HIST (" QAafter/Proton/ptVsCentrality" ), ptProton, centralityPercent);
611- allHistograms.fill (HIST (" QAafter/Proton/dcaZVsPt" ), ptProton, protonTrack.dcaZ ());
612- allHistograms.fill (HIST (" QAafter/Proton/dcaXYVsPt" ), ptProton, protonTrack.dcaXY ());
613- allHistograms.fill (HIST (" QAafter/Proton/tpcDedxVsMomentum" ), protonTotalMomentum, protonTrack.tpcSignal ());
614- allHistograms.fill (HIST (" QAafter/Proton/tpcNSigmaPionContamVsPt" ), protonTotalMomentum, protonTrack.tpcNSigmaPi ());
615- allHistograms.fill (HIST (" QAafter/Proton/tpcNSigmaKaonContamVsPt" ), protonTotalMomentum, protonTrack.tpcNSigmaKa ());
616- allHistograms.fill (HIST (" QAafter/Proton/tpcNSigmaVsMomentum" ), protonTotalMomentum, tpcNSigProton);
617- allHistograms.fill (HIST (" QAafter/Proton/tpcNSigmaVsCentrality" ), tpcNSigProton, centralityPercent);
618- allHistograms.fill (HIST (" QAafter/Proton/tpcNSigmaVsPt" ), ptProton, tpcNSigProton);
619- allHistograms.fill (HIST (" QAafter/Proton/tpcCrossedRowsVsPt" ), ptProton, protonTrack.tpcNClsCrossedRows ());
620- allHistograms.fill (HIST (" QAafter/Proton/tpcClustersFoundVsPt" ), ptProton, protonTrack.tpcNClsFound ());
621-
622- if (!useTPCOnlyPID && protonTrack.hasTOF ()) {
623- auto tofNSigProton = protonTrack.tofNSigmaPr ();
624- allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaVsMomentum" ), protonTotalMomentum, tofNSigProton);
625- allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaVsCentrality" ), tofNSigProton, centralityPercent);
626- allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaVsPt" ), ptProton, tofNSigProton);
627- allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaPionContamVsMomentum" ), protonTotalMomentum, protonTrack.tofNSigmaPi ());
628- allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaKaonContamVsMomentum" ), protonTotalMomentum, protonTrack.tofNSigmaKa ());
629- allHistograms.fill (HIST (" QAafter/Proton/tofNSigmaVsTPCNSigma" ), tpcNSigProton, tofNSigProton);
630- }
631-
632- auto ptKaon = kaonTrack.pt ();
633- auto tpcNSigKaon = kaonTrack.tpcNSigmaKa ();
634-
635- allHistograms.fill (HIST (" QAafter/Kaon/ptVsCentrality" ), ptKaon, centralityPercent);
636- allHistograms.fill (HIST (" QAafter/Kaon/dcaZVsPt" ), ptKaon, kaonTrack.dcaZ ());
637- allHistograms.fill (HIST (" QAafter/Kaon/dcaXYVsPt" ), ptKaon, kaonTrack.dcaXY ());
638- allHistograms.fill (HIST (" QAafter/Kaon/tpcDedxVsMomentum" ), kaonTotalMomentum, kaonTrack.tpcSignal ());
639- allHistograms.fill (HIST (" QAafter/Kaon/tpcNSigmaPionContamVsPt" ), kaonTotalMomentum, kaonTrack.tpcNSigmaPi ());
640- allHistograms.fill (HIST (" QAafter/Kaon/tpcNSigmaProtonContamVsMomentum" ), kaonTotalMomentum, kaonTrack.tpcNSigmaPr ());
641- allHistograms.fill (HIST (" QAafter/Kaon/tpcNSigmaVsMomentum" ), kaonTotalMomentum, tpcNSigKaon);
642- allHistograms.fill (HIST (" QAafter/Kaon/tpcNSigmaVsCentrality" ), tpcNSigKaon, centralityPercent);
643- allHistograms.fill (HIST (" QAafter/Kaon/tpcNSigmaVsPt" ), ptKaon, tpcNSigKaon);
644- allHistograms.fill (HIST (" QAafter/Kaon/tpcCrossedRowsVsPt" ), ptKaon, kaonTrack.tpcNClsCrossedRows ());
645- allHistograms.fill (HIST (" QAafter/Kaon/tpcClustersFoundVsPt" ), ptKaon, kaonTrack.tpcNClsFound ());
646-
647- if (!useTPCOnlyPID && kaonTrack.hasTOF ()) {
648- auto tofNSigKaon = kaonTrack.tofNSigmaKa ();
649- allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaVsMomentum" ), kaonTotalMomentum, tofNSigKaon);
650- allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaVsPt" ), ptKaon, tofNSigKaon);
651- allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaVsCentrality" ), tofNSigKaon, centralityPercent);
652- allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaPionContamVsMomentum" ), kaonTotalMomentum, kaonTrack.tofNSigmaPi ());
653- allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaProtonContamVsMomentum" ), kaonTotalMomentum, kaonTrack.tofNSigmaPr ());
654- allHistograms.fill (HIST (" QAafter/Kaon/tofNSigmaVsTPCNSigma" ), tpcNSigKaon, tofNSigKaon);
655- }
656- }
657-
658660 if (runQualityChecksOnly)
659661 continue ;
660662
@@ -836,6 +838,9 @@ struct lambda1520analysispo {
836838 allHistograms.fill (HIST (" Event/centralityVsOccupancy" ), collision.cent (),
837839 100 );
838840 allHistograms.fill (HIST (" Event/primaryVertexZ" ), collision.posZ ());
841+ for (const auto & track : tracks) {
842+ fillTrackQAHistograms (track, collision.cent ());
843+ }
839844 fillInvariantMassHistograms<false , false >(tracks, tracks, collision.cent ());
840845 }
841846 PROCESS_SWITCH (lambda1520analysispo, processData,
@@ -900,6 +905,8 @@ struct lambda1520analysispo {
900905 if (!passesBasicTrackSelection (track))
901906 continue ;
902907
908+ fillTrackQAHistograms (track, centralityPercent);
909+
903910 // FIX root/entity: replaced TMath::Sqrt with RecoDecay::p
904911 float totalMom = RecoDecay::p (track.px (), track.py (), track.pz ());
905912
@@ -1077,7 +1084,7 @@ struct lambda1520analysispo {
10771084 // FIX const-ref-in-for-loop: const auto& structured binding
10781085 for (const auto & [col1, tracks1, col2, tracks2] : eventPairs) {
10791086 if (cEvtRecINELgt0 && !col1.isRecINELgt0 ()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1080- return ;
1087+ continue ;
10811088 allHistograms.fill (HIST (" Event/mixingBins_centralityVsVtxZVsEventPlane" ),
10821089 col1.cent (), col1.posZ (), col1.evtPl ());
10831090 fillInvariantMassHistograms<true , false >(tracks1, tracks2, col1.cent ());
@@ -1110,6 +1117,9 @@ struct lambda1520analysispo {
11101117
11111118 allHistograms.fill (HIST (" Event/centralityVsOccupancy" ), collision.cent (),
11121119 occupancyValue);
1120+ for (const auto & track : tracks) {
1121+ fillTrackQAHistograms (track, collision.cent ());
1122+ }
11131123 fillInvariantMassHistograms<false , false >(tracks, tracks, collision.cent (),
11141124 occupancyValue);
11151125 }
@@ -1140,7 +1150,7 @@ struct lambda1520analysispo {
11401150 // FIX const-ref-in-for-loop: const auto& structured binding
11411151 for (const auto & [col1, tracks1, col2, tracks2] : eventPairs) {
11421152 if (cEvtRecINELgt0 && !col1.isRecINELgt0 ()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1143- return ;
1153+ continue ;
11441154 auto occupancyValue = 100 ;
11451155 if (applyOccupancyInTimeRangeCut)
11461156 occupancyValue = col1.trackOccupancyInTimeRange ();
0 commit comments