@@ -87,7 +87,7 @@ struct HadronNucleiCorrelation {
8787
8888 Configurable<std::string> fCorrectionPath {" fCorrectionPath" , " " , " Correction path to file" };
8989 Configurable<std::string> fCorrectionHisto {" fCorrectionHisto" , " " , " Correction histogram" };
90- Configurable<std::string> cfgUrl{" ccdb-url " , " http://alice-ccdb.cern.ch" , " url of the ccdb repository" };
90+ Configurable<std::string> cfgUrl{" cfgUrl " , " http://alice-ccdb.cern.ch" , " url of the ccdb repository" };
9191
9292 // Event selection
9393 Configurable<float > cutzVertex{" cutzVertex" , 10.0 , " |vertexZ| value limit" };
@@ -125,7 +125,6 @@ struct HadronNucleiCorrelation {
125125 ConfigurableAxis confMultBins{" confMultBins" , {VARIABLE_WIDTH, 0 .0f , 4 .0f , 8 .0f , 12 .0f , 16 .0f , 20 .0f , 24 .0f , 28 .0f , 50 .0f , 100 .0f , 99999 .f }, " Mixing bins - multiplicity" };
126126 ConfigurableAxis confVtxBins{" confVtxBins" , {VARIABLE_WIDTH, -10 .0f , -8 .f , -6 .f , -4 .f , -2 .f , 0 .f , 2 .f , 4 .f , 6 .f , 8 .f , 10 .f }, " Mixing bins - z-vertex" };
127127 ColumnBinningPolicy<aod::singletrackselector::PosZ, aod::singletrackselector::Mult> colBinning{{confVtxBins, confMultBins}, true };
128- ColumnBinningPolicy<aod::mccollision::PosZ, o2::aod::mult::MultMCNParticlesEta10> colBinningGen{{confVtxBins, confMultBins}, true };
129128
130129 // pT/A bins
131130 Configurable<std::vector<double >> pTBins{" pTBins" , {0 .6f , 1 .0f , 1 .2f , 2 .f }, " p_{T} bins" };
@@ -134,7 +133,7 @@ struct HadronNucleiCorrelation {
134133 ConfigurableAxis DeltaPhiAxis = {" DeltaPhiAxis" , {46 , -1 * o2::constants::math::PIHalf, 3 * o2::constants::math::PIHalf}, " #Delta#phi (rad)" };
135134
136135 using FilteredCollisions = soa::Filtered<aod::SingleCollSels>;
137- using SimCollisions = soa::Filtered<soa::Join< aod::McCollisions, aod::MultsExtraMC> >;
136+ using SimCollisions = soa::Filtered<aod::McCollisions>;
138137 using SimParticles = aod::McParticles;
139138 using FilteredTracks = soa::Filtered<soa::Join<aod::SingleTrackSels, aod::SingleTrkExtras, aod::SinglePIDEls, aod::SinglePIDPrs, aod::SinglePIDDes>>; // new tables (v3)
140139 using FilteredTracksMC = soa::Filtered<soa::Join<aod::SingleTrackSels, aod::SingleTrkMCs, aod::SingleTrkExtras, aod::SinglePIDEls, aod::SinglePIDPrs, aod::SinglePIDDes>>; // new tables (v3)
@@ -679,6 +678,30 @@ struct HadronNucleiCorrelation {
679678 LOGP (info, " Opened histogram {}" , Form (" %s_antideuteron" , histname.Data ()));
680679 }
681680
681+ template <typename TParticles>
682+ float getMCMultiplicity (TParticles const & particles)
683+ {
684+ float Ncharged = 0 .;
685+ for (auto & mcParticle : particles) {
686+
687+ if (!mcParticle.isPhysicalPrimary ()) {
688+ continue ;
689+ }
690+
691+ if (std::abs (mcParticle.eta ()) > 1 .0f ) {
692+ continue ;
693+ }
694+
695+ TParticlePDG* p = pdgDB->GetParticle (mcParticle.pdgCode ());
696+ if (std::abs (p->Charge ()) > 1E-3 ) {
697+ Ncharged++;
698+ }
699+ }
700+
701+ registry.fill (HIST (" hMult" ), Ncharged);
702+ return Ncharged;
703+ }
704+
682705 void processSameEvent (FilteredCollisions::iterator const & collision, FilteredTracks const & tracks)
683706 {
684707
@@ -721,28 +744,28 @@ struct HadronNucleiCorrelation {
721744 QA.fill (HIST (" QA/hnSigmaITSVsPt_Pr" ), track.pt () * track.sign (), track.itsNSigmaPr ());
722745 QA.fill (HIST (" QA/hnSigmaITSVsPt_De" ), track.pt () * track.sign (), track.itsNSigmaDe ());
723746
724- if (IsProton (track, + 1 )) {
747+ if (IsProton (track, - 1 )) {
725748 QA.fill (HIST (" QA/hEtaAntiPr" ), track.eta ());
726749 QA.fill (HIST (" QA/hPhiAntiPr" ), track.phi ());
727750 QA.fill (HIST (" QA/hnSigmaTOFVsPt_Pr_AfterSel" ), track.pt () * track.sign (), track.tofNSigmaPr ());
728751 QA.fill (HIST (" QA/hnSigmaTPCVsPt_Pr_AfterSel" ), track.pt () * track.sign (), track.tpcNSigmaPr ());
729752 QA.fill (HIST (" QA/hnSigmaITSVsPt_Pr_AfterSel" ), track.pt () * track.sign (), track.itsNSigmaPr ());
730753 }
731- if (IsProton (track, - 1 )) {
754+ if (IsProton (track, + 1 )) {
732755 QA.fill (HIST (" QA/hEtaPr" ), track.eta ());
733756 QA.fill (HIST (" QA/hPhiPr" ), track.phi ());
734757 QA.fill (HIST (" QA/hnSigmaTOFVsPt_Pr_AfterSel" ), track.pt () * track.sign (), track.tofNSigmaPr ());
735758 QA.fill (HIST (" QA/hnSigmaTPCVsPt_Pr_AfterSel" ), track.pt () * track.sign (), track.tpcNSigmaPr ());
736759 QA.fill (HIST (" QA/hnSigmaITSVsPt_Pr_AfterSel" ), track.pt () * track.sign (), track.itsNSigmaPr ());
737760 }
738- if (IsDeuteron (track, + 1 )) {
761+ if (IsDeuteron (track, - 1 )) {
739762 QA.fill (HIST (" QA/hEtaAntiDe" ), track.eta ());
740763 QA.fill (HIST (" QA/hPhiAntiDe" ), track.phi ());
741764 QA.fill (HIST (" QA/hnSigmaTOFVsPt_De_AfterSel" ), track.pt () * track.sign (), track.tofNSigmaDe ());
742765 QA.fill (HIST (" QA/hnSigmaTPCVsPt_De_AfterSel" ), track.pt () * track.sign (), track.tpcNSigmaDe ());
743766 QA.fill (HIST (" QA/hnSigmaITSVsPt_De_AfterSel" ), track.pt () * track.sign (), track.itsNSigmaDe ());
744767 }
745- if (IsDeuteron (track, - 1 )) {
768+ if (IsDeuteron (track, + 1 )) {
746769 QA.fill (HIST (" QA/hEtaDe" ), track.eta ());
747770 QA.fill (HIST (" QA/hPhiDe" ), track.phi ());
748771 QA.fill (HIST (" QA/hnSigmaTOFVsPt_De_AfterSel" ), track.pt () * track.sign (), track.tofNSigmaDe ());
@@ -773,6 +796,12 @@ struct HadronNucleiCorrelation {
773796 if (!applyDCAcut (part1))
774797 continue ;
775798
799+ // remove tracks outside pt bins
800+ if (part0.pt () < pTBins.value .at (0 ) || part0.pt () >= pTBins.value .at (nBinspT))
801+ continue ;
802+ if (part1.pt () < pTBins.value .at (0 ) || part1.pt () >= pTBins.value .at (nBinspT))
803+ continue ;
804+
776805 // mode 6
777806 if (mode == kPP ) {
778807 if (!IsProton (part0, +1 ))
@@ -809,6 +838,12 @@ struct HadronNucleiCorrelation {
809838 if (!applyDCAcut (part1))
810839 continue ;
811840
841+ // remove tracks outside pt bins
842+ if (part0.pt () < pTBins.value .at (0 ) || part0.pt () >= pTBins.value .at (nBinspT))
843+ continue ;
844+ if (part1.pt () < pTBins.value .at (0 ) || part1.pt () >= pTBins.value .at (nBinspT))
845+ continue ;
846+
812847 // modes 0,1,2,3,4,7
813848 if (mode == kDbarPbar ) {
814849 if (!IsDeuteron (part0, -1 ))
@@ -866,7 +901,7 @@ struct HadronNucleiCorrelation {
866901 const auto & magFieldTesla1 = collision1.magField ();
867902 const auto & magFieldTesla2 = collision2.magField ();
868903
869- if (magFieldTesla1 != magFieldTesla2) {
904+ if (std::abs ( magFieldTesla1 - magFieldTesla2) > 1e-4 ) {
870905 continue ;
871906 }
872907
@@ -889,6 +924,12 @@ struct HadronNucleiCorrelation {
889924 if (!applyDCAcut (part1))
890925 continue ;
891926
927+ // remove tracks outside pt bins
928+ if (part0.pt () < pTBins.value .at (0 ) || part0.pt () >= pTBins.value .at (nBinspT))
929+ continue ;
930+ if (part1.pt () < pTBins.value .at (0 ) || part1.pt () >= pTBins.value .at (nBinspT))
931+ continue ;
932+
892933 // {"mode", 0, "0: antid-antip, 1: d-p, 2: antid-p, 3: d-antip, 4: antip-p, 5: antip-antip, 6: p-p, 7: p-antip"};
893934 if (mode == kDbarPbar ) {
894935 if (!IsDeuteron (part0, -1 ))
@@ -1470,14 +1511,21 @@ struct HadronNucleiCorrelation {
14701511 void processMixedEventGen (SimCollisions const & mcCollisions, SimParticles const & mcParticles)
14711512 {
14721513
1473- for (const auto & [collision1, collision2] : soa::selfCombinations (colBinningGen, 5 , -1 , mcCollisions, mcCollisions)) {
1514+ auto getMultiplicity = [this , &mcParticles](SimCollisions::iterator const & collision) {
1515+ auto particlesPerCol = mcParticles.sliceBy (perMcCollision, collision.globalIndex ());
1516+ auto multiplicity = getMCMultiplicity (particlesPerCol);
1517+ return multiplicity;
1518+ };
14741519
1475- // LOGF(info, "Mixed event collisions: (%d, %d) zvtx (%.1f, %.1f) mult (%d, %d)", collision1.globalIndex(), collision2.globalIndex(), collision1.posZ(), collision2.posZ(), collision1.multMCNParticlesEta10(), collision2.multMCNParticlesEta10());
1520+ using BinningTypeMC = FlexibleBinningPolicy<std::tuple<decltype (getMultiplicity)>, aod::mccollision::PosZ, decltype (getMultiplicity)>;
1521+ BinningTypeMC colBinningGen{{getMultiplicity}, {confVtxBins, confMultBins}, true };
1522+
1523+ for (const auto & [collision1, collision2] : soa::selfCombinations (colBinningGen, 5 , -1 , mcCollisions, mcCollisions)) {
14761524
14771525 auto groupPartsOne = mcParticles.sliceBy (perMcCollision, collision1.globalIndex ());
14781526 auto groupPartsTwo = mcParticles.sliceBy (perMcCollision, collision2.globalIndex ());
14791527
1480- registry. fill ( HIST ( " hMult " ), collision1.multMCNParticlesEta10 ( ));
1528+ // LOGF(info, "Mixed event collisions: (%d, %d) zvtx (%.1f, %.1f) mult (%.1f, %.1f)", collision1.globalIndex( ), collision2.globalIndex(), collision1.posZ(), collision2.posZ(), getMCMultiplicity(groupPartsOne), getMCMultiplicity(groupPartsTwo ));
14811529
14821530 for (const auto & [part0, part1] : combinations (CombinationsFullIndexPolicy (groupPartsOne, groupPartsTwo))) {
14831531
0 commit comments