@@ -82,7 +82,7 @@ using namespace o2::framework;
8282using namespace o2 ::framework::expressions;
8383
8484enum CorrelationCase {
85- TpcTpc,
85+ TpcTpc = 0 ,
8686 TpcMft,
8787 TpcFv0a,
8888 MftFv0a,
@@ -395,9 +395,11 @@ struct HfTaskFlow {
395395 // =========================
396396
397397 using SmallGroupMcCollisions = soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions, aod::EvSel, aod::CentFT0Cs, aod::CentFT0CVariant1s, aod::CentFT0Ms, aod::CentFV0As, aod::Mults>>;
398- using FilteredMcCollisionsWMult = soa::Filtered<soa::Join<aod::McCollisions, aod::MultMCExtras>>;
398+ // using FilteredMcCollisionsWMult = soa::Filtered<soa::Join<aod::McCollisions, aod::MultMCExtras>>;
399+ using FilteredMcCollisionsWMult = soa::Join<aod::McCollisions, aod::MultMCExtras>;
399400 using FilteredMcCollisionsWMultWCollsExtra = soa::Filtered<soa::Join<aod::McCollisions, aod::McCollsExtra, aod::MultMCExtras>>;
400- using FilteredMcParticles = soa::Filtered<aod::McParticles>;
401+ // using FilteredMcParticles = soa::Filtered<aod::McParticles>;
402+ using FilteredMcParticles = aod::McParticles;
401403
402404 // =========================
403405 // Filters & partitions : DATA
@@ -440,10 +442,11 @@ struct HfTaskFlow {
440442 // Filters & partitions : MC
441443 // =========================
442444
443- Filter mcParticleFilter = (((aod::mcparticle::eta > configTask.etaMcParticlesTriggerMin) && (aod::mcparticle::eta < configTask.etaMcParticlesTriggerMax)) || ((aod::mcparticle::eta > configTask.etaMcParticlesAssocMin) && (aod::mcparticle::eta < configTask.etaMcParticlesAssocMax)) || (nabs(aod::mcparticle::eta) < configCentral.etaCentralTrackMax)) && (aod::mcparticle::pt < configTask.ptMcParticlesTriggerMax);
445+ // // Filter for McParticles
446+ // Filter mcParticleFilter = (((aod::mcparticle::eta > configTask.etaMcParticlesTriggerMin) && (aod::mcparticle::eta < configTask.etaMcParticlesTriggerMax)) || ((aod::mcparticle::eta > configTask.etaMcParticlesAssocMin) && (aod::mcparticle::eta < configTask.etaMcParticlesAssocMax)) || (nabs(aod::mcparticle::eta) < configCentral.etaCentralTrackMax)) && (aod::mcparticle::pt < configTask.ptMcParticlesTriggerMax);
444447
445- // Filter for MCcollisions
446- Filter mcCollisionFilter = nabs(aod::mccollision::posZ) < configCollision.zVertexMax;
448+ // // Filter for MCcollisions
449+ // Filter mcCollisionFilter = nabs(aod::mccollision::posZ) < configCollision.zVertexMax;
447450
448451 // =========================
449452 // Preslice : DATA
@@ -2666,8 +2669,16 @@ struct HfTaskFlow {
26662669 target->getPairHist ()->Fill (step, etaA - etaC, 0.5 , 0.5 , multiplicity, deltaPhi, posZ,
26672670 amplitudeA * amplitudeC * centralityWeight * triggerWeight * associatedWeight);
26682671 } else if (configTask.doEtaDependentFlow ) {
2669- target->getPairHist ()->Fill (step, sampleIndex, posZ, etaC, etaA, deltaPhi, etaA - etaC,
2670- amplitudeA * amplitudeC * centralityWeight * triggerWeight * associatedWeight);
2672+ // target->getPairHist()->Fill(step, sampleIndex, posZ, etaC, etaA, deltaPhi, etaA - etaC,
2673+ // amplitudeA * amplitudeC * centralityWeight * triggerWeight * associatedWeight);
2674+
2675+ if (!configFit.discriminateInnerOrOuter ) {
2676+ target->getPairHist ()->Fill (step, sampleIndex, posZ, etaC, etaA, deltaPhi, etaA - etaC,
2677+ amplitudeA * amplitudeC * centralityWeight * triggerWeight * associatedWeight);
2678+ } else {
2679+ target->getPairHist ()->Fill (step, sampleIndex, posZ, isInnerOrOuter (channelIdA, isFT0A), isInnerOrOuter (channelIdC, isFT0C), deltaPhi, etaA - etaC,
2680+ amplitudeA * amplitudeC * centralityWeight * triggerWeight * associatedWeight);
2681+ }
26712682 } else {
26722683 target->getPairHist ()->Fill (step, sampleIndex, posZ, 0.5 , multiplicity, deltaPhi, etaA - etaC,
26732684 amplitudeA * amplitudeC * centralityWeight * triggerWeight * associatedWeight);
@@ -2689,20 +2700,8 @@ struct HfTaskFlow {
26892700 auto associatedWeight = 1 .0f ;
26902701 auto loopCounter = 0 ; // To avoid filling associated tracks QA many times, I fill it only for the first trigger track of the collision
26912702 int sampleIndex = gRandom ->Uniform (0 , configTask.nSamples );
2692- bool fillQaPlots = false ;
2693-
2694- if (configTask.fillOnlyStepAll ) {
2695- if (step == CorrelationContainer::kCFStepAll ) {
2696- fillQaPlots = true ;
2697- }
2698- } else {
2699- if (step == CorrelationContainer::kCFStepTrackedOnlyPrim ) {
2700- fillQaPlots = true ;
2701- }
2702- }
27032703
27042704 for (auto const & track1 : tracksTrigger) {
2705- loopCounter++;
27062705
27072706 if (configTask.useCutNeutralParticles ) {
27082707 auto pdgTriggerParticle = pdg->GetParticle (track1.pdgCode ());
@@ -2729,7 +2728,7 @@ struct HfTaskFlow {
27292728 }
27302729
27312730 // FILL QA FOR TRIGGER PARTICLE
2732- if (isSameEvent && fillQaPlots && !configTask.removeQAForSystematics ) {
2731+ if (isSameEvent && !configTask.removeQAForSystematics ) {
27332732 if (configTask.chooseCorrelationCase .value == static_cast <int >(CorrelationCase::TpcTpc)) {
27342733 fillTriggerQa<Mc, TpcTpc, ChPartChPart>(multiplicity, track1.eta (), track1.phi (), track1.pt ());
27352734 } else if (configTask.chooseCorrelationCase .value == static_cast <int >(CorrelationCase::TpcMft)) {
@@ -2748,6 +2747,8 @@ struct HfTaskFlow {
27482747 fillTriggerQa<Mc, Ft0aFt0c, ChPartChPart>(multiplicity, track1.eta (), track1.phi (), track1.pt ());
27492748 }
27502749 }
2750+
2751+ loopCounter++;
27512752
27522753 for (auto const & track2 : tracksAssoc) {
27532754
@@ -2769,8 +2770,8 @@ struct HfTaskFlow {
27692770 continue ;
27702771 }
27712772
2772- float deltaPhi = RecoDecay::constrainAngle (track2 .phi () - track1 .phi (), -PIHalf);
2773- float deltaEta = track2 .eta () - track1 .eta ();
2773+ float deltaPhi = RecoDecay::constrainAngle (track1 .phi () - track2 .phi (), -PIHalf);
2774+ float deltaEta = track1 .eta () - track2 .eta ();
27742775
27752776 if (!configTask.doEtaDependentFlow && !configTask.doVariationContainers ) {
27762777 target->getPairHist ()->Fill (step, deltaEta, track2.pt (), track1.pt (), multiplicity, deltaPhi, posZ,
@@ -2784,7 +2785,7 @@ struct HfTaskFlow {
27842785 }
27852786
27862787 // FILL QA PLOTS for associated particle
2787- if (isSameEvent && fillQaPlots && (loopCounter == 1 ) && !configTask.removeQAForSystematics ) {
2788+ if (isSameEvent && (loopCounter == 1 ) && !configTask.removeQAForSystematics ) {
27882789 if (configTask.chooseCorrelationCase .value == static_cast <int >(CorrelationCase::TpcTpc)) {
27892790 fillAssociatedQa<Mc, TpcTpc, ChPartChPart>(multiplicity, track2.eta (), track2.phi ());
27902791 } else if (configTask.chooseCorrelationCase .value == static_cast <int >(CorrelationCase::TpcMft)) {
@@ -4142,6 +4143,11 @@ struct HfTaskFlow {
41424143 FilteredMcParticles const & mcParticles,
41434144 SmallGroupMcCollisions const & collisions)
41444145 {
4146+
4147+ if (mcParticles.size () == 0 ) { // guard against empty filtered batch
4148+ return ;
4149+ }
4150+
41454151 auto multiplicity = 0 ;
41464152 if (configCollision.useMultiplicityFromTracks ) {
41474153 for (const auto & track : mcParticles) {
@@ -4557,6 +4563,11 @@ struct HfTaskFlow {
45574563 for (auto it = pairs.begin (); it != pairs.end (); it++) {
45584564 auto & [collision1, tracks1, collision2, tracks2] = *it;
45594565
4566+
4567+ if (tracks1.size () == 0 || tracks2.size () == 0 ) { // guard against empty filtered batch
4568+ return ;
4569+ }
4570+
45604571 auto multiplicityCollision1 = 0 ;
45614572 auto multiplicityCollision2 = 0 ;
45624573
0 commit comments