@@ -424,7 +424,11 @@ struct CascDiHadronCorr {
424424 same.setObject (new CorrelationContainer (" sameEvent" , " sameEvent" , corrAxis, effAxis, userAxis));
425425 mixed.setObject (new CorrelationContainer (" mixedEvent" , " mixedEvent" , corrAxis, effAxis, userAxis));
426426
427- validCollisions.resize (registry.get <TH1 >(HIST (" Nch" ))->GetNbinsX () * registry.get <TH1 >(HIST (" zVtx" ))->GetNbinsX ());
427+ o2::framework::AxisSpec axisMult = axisMultiplicity;
428+ o2::framework::AxisSpec axisVtx = axisVertex;
429+ int nMultBins = axisMult.binEdges .size () - 1 ;
430+ int nVtxBins = axisVtx.binEdges .size () - 1 ;
431+ validCollisions.resize (nMultBins * nVtxBins);
428432
429433 LOGF (info, " End of init" );
430434 }
@@ -748,6 +752,8 @@ struct CascDiHadronCorr {
748752 {
749753 float triggerWeight = 1 .0f ;
750754 float associatedWeight = 1 .0f ;
755+ if (currentCollision.assocParticles .size () == 0 )
756+ return ;
751757 // loop over all validCollisions in buffer
752758 for (const auto & collision : validCollisions[bin]) {
753759 double fSampleIndex = gRandom ->Uniform (0 , cfgSampleSize);
@@ -756,7 +762,7 @@ struct CascDiHadronCorr {
756762 if (mEfficiency ) {
757763 efficiencyAssociatedCache.clear ();
758764 efficiencyAssociatedCache.reserve (collision.assocParticles .size ());
759- for (const auto & track2 : currentCollision .assocParticles ) {
765+ for (const auto & track2 : collision .assocParticles ) {
760766 float weff = 1 .;
761767 getEfficiencyCorrection (weff, track2.eta , track2.pt , posZ);
762768 efficiencyAssociatedCache.push_back (weff);
@@ -794,6 +800,8 @@ struct CascDiHadronCorr {
794800 {
795801 float triggerWeight = 1 .0f ;
796802 float associatedWeight = 1 .0f ;
803+ if (currentCollision.assocParticles .size () == 0 )
804+ return ;
797805 // loop over all validCollisions in buffer
798806 for (const auto & collision : validCollisions[bin]) {
799807 double fSampleIndex = gRandom ->Uniform (0 , cfgSampleSize);
@@ -802,7 +810,7 @@ struct CascDiHadronCorr {
802810 if (mEfficiency ) {
803811 efficiencyAssociatedCache.clear ();
804812 efficiencyAssociatedCache.reserve (collision.assocParticles .size ());
805- for (const auto & track2 : currentCollision .assocParticles ) {
813+ for (const auto & track2 : collision .assocParticles ) {
806814 float weff = 1 .;
807815 getEfficiencyCorrection (weff, track2.eta , track2.pt , posZ);
808816 efficiencyAssociatedCache.push_back (weff);
@@ -829,9 +837,9 @@ struct CascDiHadronCorr {
829837 float deltaEta = track1.eta () - track2.eta ;
830838
831839 if (cfgOutputXi)
832- same ->getPairHist ()->Fill (step, fSampleIndex , posZ, track1.pt (), track2.pt , deltaPhi, deltaEta, track1.mXi (), eventWeight * triggerWeight * associatedWeight);
840+ mixed ->getPairHist ()->Fill (step, fSampleIndex , posZ, track1.pt (), track2.pt , deltaPhi, deltaEta, track1.mXi (), eventWeight * triggerWeight * associatedWeight);
833841 if (cfgOutputOmega)
834- same ->getPairHist ()->Fill (step, fSampleIndex , posZ, track1.pt (), track2.pt , deltaPhi, deltaEta, track1.mOmega (), eventWeight * triggerWeight * associatedWeight);
842+ mixed ->getPairHist ()->Fill (step, fSampleIndex , posZ, track1.pt (), track2.pt , deltaPhi, deltaEta, track1.mOmega (), eventWeight * triggerWeight * associatedWeight);
835843 registry.fill (HIST (" deltaEta_deltaPhi_mixed" ), deltaPhi, deltaEta, eventWeight * triggerWeight * associatedWeight);
836844 }
837845 }
@@ -1592,7 +1600,7 @@ struct CascDiHadronCorr {
15921600 }
15931601 }
15941602
1595- void processMCEfficiency (FilteredMcCollisions::iterator const & mcCollision, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions>> const & collisions, soa::Join<aod::CascDatas, aod::McCascLabels> const & Cascades, FilteredMcParticles const & mcParticles)
1603+ void processMCEfficiency (FilteredMcCollisions::iterator const & mcCollision, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions>> const & collisions, soa::Join<aod::CascDatas, aod::McCascLabels> const & Cascades, FilteredMcParticles const & mcParticles, DaughterTracks const & )
15961604 {
15971605 registry.fill (HIST (" MCEffeventcount" ), 0.5 );
15981606 if (cfgSelCollByNch && (mcParticles.size () < cfgCutMultMin || mcParticles.size () >= cfgCutMultMax)) {
@@ -1601,8 +1609,10 @@ struct CascDiHadronCorr {
16011609 // Primaries
16021610 for (const auto & mcParticle : mcParticles) {
16031611 if (mcParticle.isPhysicalPrimary ()) {
1604- registry.fill (HIST (" MCEffeventcount" ), 1.5 );
1605- same->getTrackHistEfficiency ()->Fill (CorrelationContainer::MC , mcParticle.eta (), mcParticle.pt (), getSpecies (mcParticle.pdgCode ()), 0 ., mcCollision.posZ ());
1612+ if ((cfgOutputXi && getSpecies (mcParticle.pdgCode ()) == 1 ) || (cfgOutputOmega && getSpecies (mcParticle.pdgCode ()) == 2 )) {
1613+ registry.fill (HIST (" MCEffeventcount" ), 1.5 );
1614+ same->getTrackHistEfficiency ()->Fill (CorrelationContainer::MC , mcParticle.eta (), mcParticle.pt (), getSpecies (mcParticle.pdgCode ()), 0 ., mcCollision.posZ ());
1615+ }
16061616 }
16071617 }
16081618 for (const auto & collision : collisions) {
@@ -1613,14 +1623,16 @@ struct CascDiHadronCorr {
16131623 }
16141624
16151625 for (const auto & casc : groupedCascades) {
1626+ if (!cascSelected (casc, collision.posX (), collision.posY (), collision.posZ ()))
1627+ continue ;
16161628 if (casc.has_mcParticle ()) {
1617- auto mcParticle = casc.mcParticle ();
1629+ auto mcParticle = casc.mcParticle_as <FilteredMcParticles> ();
16181630 if (mcParticle.isPhysicalPrimary ()) {
16191631 registry.fill (HIST (" MCEffeventcount" ), 2.5 );
16201632 same->getTrackHistEfficiency ()->Fill (CorrelationContainer::RecoPrimaries, mcParticle.eta (), mcParticle.pt (), getSpecies (mcParticle.pdgCode ()), 0 ., mcCollision.posZ ());
16211633 }
16221634 registry.fill (HIST (" MCEffeventcount" ), 3.5 );
1623- same->getTrackHistEfficiency ()->Fill (CorrelationContainer::RecoAll, mcParticle.eta (), mcParticle.pt (), getSpecies (mcParticle. pdgCode ( )), 0 ., mcCollision.posZ ());
1635+ same->getTrackHistEfficiency ()->Fill (CorrelationContainer::RecoAll, mcParticle.eta (), mcParticle.pt (), (cfgOutputXi * getSpecies (PDG_t:: kXiMinus ) + cfgOutputOmega * getSpecies (PDG_t:: kOmegaMinus )), 0 ., mcCollision.posZ ());
16241636 } else {
16251637 // fake casc
16261638 registry.fill (HIST (" MCEffeventcount" ), 4.5 );
0 commit comments