@@ -127,6 +127,7 @@ struct HStrangeCorrelation {
127127 Configurable<bool > doSeparateFT0Prediction{" doSeparateFT0Prediction" , false , " separate FT0M to FT0A and FT0C in prediction process" };
128128 Configurable<bool > useCentralityinPrediction{" useCentralityinPrediction" , false , " if true, use centrality instead of multiplisity" };
129129 Configurable<bool > doMirroringInDelataEta{" doMirroringInDelataEta" , false , " if true, fill only positive delta eta and mirror the negative side in post processing, Adjust the delta axis!" };
130+ Configurable<bool > fillCorrelationHistWithMass{" fillCorrelationHistWithMass" , false , " if true, fill correlation histograms with particle mass" };
130131 } masterConfigurations;
131132
132133 // master analysis switches
@@ -161,6 +162,8 @@ struct HStrangeCorrelation {
161162 ConfigurableAxis axisPtTrigger{" axisPtTrigger" , {VARIABLE_WIDTH , 0.0 , 1.0 , 2.0 , 3.0 , 100 }, " pt associated axis for histograms" };
162163 ConfigurableAxis axisPtQA{" axisPtQA" , {VARIABLE_WIDTH , 0 .0f , 0 .1f , 0 .2f , 0 .3f , 0 .4f , 0 .5f , 0 .6f , 0 .7f , 0 .8f , 0 .9f , 1 .0f , 1 .1f , 1 .2f , 1 .3f , 1 .4f , 1 .5f , 1 .6f , 1 .7f , 1 .8f , 1 .9f , 2 .0f , 2 .2f , 2 .4f , 2 .6f , 2 .8f , 3 .0f , 3 .2f , 3 .4f , 3 .6f , 3 .8f , 4 .0f , 4 .4f , 4 .8f , 5 .2f , 5 .6f , 6 .0f , 6 .5f , 7 .0f , 7 .5f , 8 .0f , 9 .0f , 10 .0f , 11 .0f , 12 .0f , 13 .0f , 14 .0f , 15 .0f , 17 .0f , 19 .0f , 21 .0f , 23 .0f , 25 .0f , 30 .0f , 35 .0f , 40 .0f , 50 .0f }, " pt axis for QA histograms" };
163164 ConfigurableAxis axisMassNSigma{" axisMassNSigma" , {40 , -2 , 2 }, " Axis for mass Nsigma" };
165+ ConfigurableAxis axisK0ShortMass{" axisK0ShortMass" , {200 , 0 .400f , 0 .600f }, " Inv. Mass (GeV/c^{2})" };
166+ ConfigurableAxis axisLambdaMass{" axisLambdaMass" , {200 , 1 .01f , 1 .21f }, " Inv. Mass (GeV/c^{2})" };
164167 ConfigurableAxis axisMultiplicity{" axisMultiplicity" , {VARIABLE_WIDTH , 0 , 20 , 40 , 60 , 100 , 120 , 140 , 160 , 180 , 200 , 220 , 240 , 260 , 280 , 300 }, " Binning of the Multiplicity axis in model prediction process" };
165168 ConfigurableAxis axisMidrapidityMultiplicity{" axisMidrapidityMultiplicity" , {VARIABLE_WIDTH , 0 , 20 , 40 , 60 , 100 , 120 , 140 , 160 , 180 , 200 , 220 , 240 , 260 , 280 , 300 }, " Binning of the Midrapidity Multiplicity axis in model prediction process" };
166169
@@ -232,6 +235,7 @@ struct HStrangeCorrelation {
232235 Configurable<float > v0RadiusMax{" v0RadiusMax" , 200 , " v0radius" };
233236 Configurable<float > dcaBaryonToPV{" dcaBaryonToPV" , 0.2 , " DCA of baryon daughter track To PV" };
234237 Configurable<float > dcaMesonToPV{" dcaMesonToPV" , 0.05 , " DCA of meson daughter track To PV" };
238+ Configurable<float > dcaDaugToPVForK0s{" dcaDaugToPVForK0s" , 0 , " DCA of K0s daughter tracks To PV" };
235239 Configurable<float > lifetimecutK0S{" lifetimecutK0S" , 20 , " lifetimecutK0S" };
236240 Configurable<float > lifetimecutLambda{" lifetimecutLambda" , 30 , " lifetimecutLambda" };
237241 // original equation: lArmPt*2>TMath::Abs(lArmAlpha) only for K0S
@@ -488,7 +492,8 @@ struct HStrangeCorrelation {
488492 if (v0.distovertotmom (pvx, pvy, pvz) * o2::constants::physics::MassK0Short < v0Selection.lifetimecutK0S )
489493 SETBIT (bitMap, 0 );
490494 // DCA daughter to prim.vtx and armenteros
491- if (std::abs (v0.dcapostopv ()) > v0Selection.dcaMesonToPV && std::abs (v0.dcanegtopv ()) > v0Selection.dcaMesonToPV && v0.qtarm () * v0Selection.armPodCut > std::abs (v0.alpha ()))
495+ float dcaCut = v0Selection.dcaDaugToPVForK0s == 0 ? v0Selection.dcaMesonToPV : v0Selection.dcaDaugToPVForK0s ;
496+ if (std::abs (v0.dcapostopv ()) > dcaCut && std::abs (v0.dcanegtopv ()) > dcaCut && v0.qtarm () * v0Selection.armPodCut > std::abs (v0.alpha ()))
492497 SETBIT (bitMap, 3 );
493498 }
494499 if (masterConfigurations.doCorrelationLambda ) {
@@ -823,16 +828,14 @@ struct HStrangeCorrelation {
823828 // ---] removing autocorrelations [---
824829 auto postrack = assoc.posTrack_as <TracksComplete>();
825830 auto negtrack = assoc.negTrack_as <TracksComplete>();
826- if (!mixingInBf) {
827- if (doAutocorrelationRejection) {
828- if (trigg.globalIndex () == postrack.globalIndex ()) {
829- histos.fill (HIST (" hNumberOfRejectedPairsV0" ), 0.5 );
830- continue ;
831- }
832- if (trigg.globalIndex () == negtrack.globalIndex ()) {
833- histos.fill (HIST (" hNumberOfRejectedPairsV0" ), 0.5 );
834- continue ;
835- }
831+ if (doAutocorrelationRejection) {
832+ if (trigg.globalIndex () == postrack.globalIndex ()) {
833+ histos.fill (HIST (" hNumberOfRejectedPairsV0" ), 0.5 );
834+ continue ;
835+ }
836+ if (trigg.globalIndex () == negtrack.globalIndex ()) {
837+ histos.fill (HIST (" hNumberOfRejectedPairsV0" ), 0.5 );
838+ continue ;
836839 }
837840 }
838841
@@ -925,7 +928,7 @@ struct HStrangeCorrelation {
925928 }
926929 double binFillThn[6 ] = {deltaphi, deltaeta, ptassoc, pttrigger, pvz, mult};
927930 if (TESTBIT (doCorrelation, Index) && (!efficiencyFlags.applyEfficiencyCorrection || efficiency != 0 ) && (masterConfigurations.doPPAnalysis || (TESTBIT (selMap, Index) && TESTBIT (selMap, Index + 3 )))) {
928- if (assocCandidate.compatible (Index, trackSelection.dEdxCompatibility ) && (!masterConfigurations.doMCassociation || assocCandidate.mcTrue (Index)) && (!doAssocPhysicalPrimary || assocCandidate.mcPhysicalPrimary ()) && !mixing && -massWindowConfigurations.maxBgNSigma < assocCandidate.invMassNSigma (Index) && assocCandidate.invMassNSigma (Index) < -massWindowConfigurations.minBgNSigma ) {
931+ if (assocCandidate.compatible (Index, trackSelection.dEdxCompatibility ) && (!masterConfigurations.doMCassociation || assocCandidate.mcTrue (Index)) && (!doAssocPhysicalPrimary || assocCandidate.mcPhysicalPrimary ()) && !mixing && -massWindowConfigurations.maxBgNSigma < assocCandidate.invMassNSigma (Index) && assocCandidate.invMassNSigma (Index) < -massWindowConfigurations.minBgNSigma && !masterConfigurations. fillCorrelationHistWithMass ) {
929932 fillCorrelationHistogram (histos.get <THn>(HIST (" sameEvent/LeftBg/" ) + HIST (V0names[Index])), binFillThn, etaWeight, efficiency * efficiencyTrigg, totalEffUncert, purityTrigg, purityTriggErr);
930933 if (doDeltaPhiStarCheck) {
931934 double deltaPhiStar = calculateAverageDeltaPhiStar (triggForDeltaPhiStar, assocForDeltaPhiStar, bField);
@@ -943,7 +946,22 @@ struct HStrangeCorrelation {
943946 }
944947 }
945948 }
946- if (assocCandidate.compatible (Index, trackSelection.dEdxCompatibility ) && (!masterConfigurations.doMCassociation || assocCandidate.mcTrue (Index)) && (!doAssocPhysicalPrimary || assocCandidate.mcPhysicalPrimary ()) && !mixing && -massWindowConfigurations.maxPeakNSigma < assocCandidate.invMassNSigma (Index) && assocCandidate.invMassNSigma (Index) < +massWindowConfigurations.maxPeakNSigma ) {
949+ if (assocCandidate.compatible (Index, trackSelection.dEdxCompatibility ) && (!masterConfigurations.doMCassociation || assocCandidate.mcTrue (Index)) && (!doAssocPhysicalPrimary || assocCandidate.mcPhysicalPrimary ()) && !mixing && (masterConfigurations.fillCorrelationHistWithMass || (-massWindowConfigurations.maxPeakNSigma < assocCandidate.invMassNSigma (Index) && assocCandidate.invMassNSigma (Index) < +massWindowConfigurations.maxPeakNSigma ))) {
950+ if (masterConfigurations.fillCorrelationHistWithMass ) {
951+ float massAssoc = 0 .f ;
952+ switch (i) {
953+ case 0 :
954+ massAssoc = assoc.mK0Short ();
955+ break ;
956+ case 1 :
957+ massAssoc = assoc.mLambda ();
958+ break ;
959+ case 2 :
960+ massAssoc = assoc.mAntiLambda ();
961+ break ;
962+ }
963+ binFillThn[1 ] = massAssoc;
964+ }
947965 fillCorrelationHistogram (histos.get <THn>(HIST (" sameEvent/Signal/" ) + HIST (V0names[Index])), binFillThn, etaWeight, efficiency * efficiencyTrigg, totalEffUncert, purityTrigg, purityTriggErr);
948966 if (std::abs (deltaphi) < checks.towardDeltaEtaRange && doITSClustersQA) {
949967 histos.fill (HIST (" hITSClusters" ) + HIST (V0names[Index]) + HIST (" NegativeDaughterToward" ), ptassoc, negtrack.itsNCls (), assoc.v0radius ());
@@ -969,7 +987,7 @@ struct HStrangeCorrelation {
969987 }
970988 }
971989 }
972- if (assocCandidate.compatible (Index, trackSelection.dEdxCompatibility ) && (!masterConfigurations.doMCassociation || assocCandidate.mcTrue (Index)) && (!doAssocPhysicalPrimary || assocCandidate.mcPhysicalPrimary ()) && !mixing && +massWindowConfigurations.minBgNSigma < assocCandidate.invMassNSigma (Index) && assocCandidate.invMassNSigma (Index) < +massWindowConfigurations.maxBgNSigma ) {
990+ if (assocCandidate.compatible (Index, trackSelection.dEdxCompatibility ) && (!masterConfigurations.doMCassociation || assocCandidate.mcTrue (Index)) && (!doAssocPhysicalPrimary || assocCandidate.mcPhysicalPrimary ()) && !mixing && +massWindowConfigurations.minBgNSigma < assocCandidate.invMassNSigma (Index) && assocCandidate.invMassNSigma (Index) < +massWindowConfigurations.maxBgNSigma && !masterConfigurations. fillCorrelationHistWithMass ) {
973991 fillCorrelationHistogram (histos.get <THn>(HIST (" sameEvent/RightBg/" ) + HIST (V0names[Index])), binFillThn, etaWeight, efficiency * efficiencyTrigg, totalEffUncert, purityTrigg, purityTriggErr);
974992 if (doDeltaPhiStarCheck) {
975993 double deltaPhiStar = calculateAverageDeltaPhiStar (triggForDeltaPhiStar, assocForDeltaPhiStar, bField);
@@ -1024,7 +1042,7 @@ struct HStrangeCorrelation {
10241042 for (const auto & collision : validCollisions[binnumb]) {
10251043 BinningTypePP colBinning{{axesConfigurations.axisVtxZ , axesConfigurations.axisMult }, true };
10261044 // When 'collisionHasTriggOrAssoc' = 0:
1027- // binContent(hMECollisionBins) = Σ(RunNumbers )[binContent(the same bin of hSECollisionBins) * masterConfigurations.mixingParameter - Σ(k=0 to min(masterConfigurations.mixingParameter,binContent)) k]
1045+ // binContent(hMECollisionBins) = Σ(Submitted jobs(done) )[binContent(the same bin of hSECollisionBins) * masterConfigurations.mixingParameter - Σ(k=0 to min(masterConfigurations.mixingParameter,binContent)) k]
10281046 // When 'collisionHasTriggOrAssoc' = 3
10291047 // More collision loss at higher peripheral centrality (fewer target particles); higher bincontent of HIST("mixedEvent/Signal/") + HIST(Cascadenames[Index])
10301048 // due to avoiding vector occupancy by collisions with no trigger&associated particles
@@ -1065,7 +1083,8 @@ struct HStrangeCorrelation {
10651083 if (validCollisions[binnumb].size () >= static_cast <size_t >(masterConfigurations.mixingParameter )) {
10661084 validCollisions[binnumb].erase (validCollisions[binnumb].begin ());
10671085 }
1068- validCollisions[binnumb].push_back (currentCollision);
1086+ if (!currentCollision.trigParticles .empty ())
1087+ validCollisions[binnumb].push_back (currentCollision);
10691088 }
10701089
10711090 void fillCorrelationsCascade (aod::TriggerTracks const & triggers, aod::AssocCascades const & assocs, bool mixing, bool mixingInBf, float pvx, float pvy, float pvz, float mult, double bField)
@@ -1163,22 +1182,21 @@ struct HStrangeCorrelation {
11631182 auto postrack = assoc.posTrack_as <TracksComplete>();
11641183 auto negtrack = assoc.negTrack_as <TracksComplete>();
11651184 auto bachtrack = assoc.bachelor_as <TracksComplete>();
1166- if (!mixingInBf) {
1167- if (doAutocorrelationRejection) {
1168- if (trigg.globalIndex () == postrack.globalIndex ()) {
1169- histos.fill (HIST (" hNumberOfRejectedPairsCascades" ), 0.5 );
1170- continue ;
1171- }
1172- if (trigg.globalIndex () == negtrack.globalIndex ()) {
1173- histos.fill (HIST (" hNumberOfRejectedPairsCascades" ), 0.5 );
1174- continue ;
1175- }
1176- if (trigg.globalIndex () == bachtrack.globalIndex ()) {
1177- histos.fill (HIST (" hNumberOfRejectedPairsCascades" ), 0.5 );
1178- continue ;
1179- }
1185+ if (doAutocorrelationRejection) {
1186+ if (trigg.globalIndex () == postrack.globalIndex ()) {
1187+ histos.fill (HIST (" hNumberOfRejectedPairsCascades" ), 0.5 );
1188+ continue ;
1189+ }
1190+ if (trigg.globalIndex () == negtrack.globalIndex ()) {
1191+ histos.fill (HIST (" hNumberOfRejectedPairsCascades" ), 0.5 );
1192+ continue ;
1193+ }
1194+ if (trigg.globalIndex () == bachtrack.globalIndex ()) {
1195+ histos.fill (HIST (" hNumberOfRejectedPairsCascades" ), 0.5 );
1196+ continue ;
11801197 }
11811198 }
1199+
11821200 double phiProton = postrack.phi ();
11831201 double etaProton = postrack.eta ();
11841202 double ptProton = postrack.pt ();
@@ -1372,7 +1390,8 @@ struct HStrangeCorrelation {
13721390 if (validCollisions[binnumb].size () >= static_cast <size_t >(masterConfigurations.mixingParameter )) {
13731391 validCollisions[binnumb].erase (validCollisions[binnumb].begin ());
13741392 }
1375- validCollisions[binnumb].push_back (currentCollision);
1393+ if (!currentCollision.trigParticles .empty ())
1394+ validCollisions[binnumb].push_back (currentCollision);
13761395 }
13771396 template <typename TTriggers, typename THadrons>
13781397 void fillCorrelationsHadron (TTriggers const & triggers, THadrons const & assocs, bool mixing, float pvz, float mult, double bField)
@@ -1772,7 +1791,7 @@ struct HStrangeCorrelation {
17721791 if (!masterConfigurations.doPPAnalysis ) {
17731792 // event selections in Pb-Pb
17741793 histos.add (" hEventSelection" , " hEventSelection" , kTH1F , {{10 , 0 , 10 }});
1775- TString eventSelLabel[] = {" all" , " sel8" , " kIsTriggerTVX" , " PV_{z}" , " kIsGoodITSLayersAll" , " kIsGoodZvtxFT0vsPV" , " OccupCut" , " kNoITSROFrameBorder " , " kNoSameBunchPileup " , " kNoCollInTimeRangeStandard " };
1794+ TString eventSelLabel[] = {" all" , " sel8" , " kIsTriggerTVX" , " PV_{z}" , " kIsGoodITSLayersAll" , " kIsGoodZvtxFT0vsPV" , " OccupCut" , " kNoTimeFrameBorder " , " kNoITSROFrameBorder " , " kNoSameBunchPileup " };
17761795 for (int i = 1 ; i <= histos.get <TH1 >(HIST (" hEventSelection" ))->GetNbinsX (); i++) {
17771796 histos.get <TH1 >(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (i, eventSelLabel[i - 1 ]);
17781797 }
@@ -1834,11 +1853,16 @@ struct HStrangeCorrelation {
18341853 histos.add (" EventQA/hPvz" , " ;pvz;Entries" , kTH1F , {{30 , -15 , 15 }});
18351854 histos.add (" EventQA/hMultFT0vsTPC" , " ;centFT0M;multNTracksPVeta1" , kTH2F , {{100 , 0 , 100 }, {300 , 0 , 300 }});
18361855 }
1856+ if (masterConfigurations.doFullCorrelationStudy && masterConfigurations.fillCorrelationHistWithMass ) {
1857+ histos.add (" sameEvent/Signal/K0Short" , " " , kTHnF , {axisDeltaPhiNDim, axesConfigurations.axisK0ShortMass , axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultNDim});
1858+ histos.add (" sameEvent/Signal/Lambda" , " " , kTHnF , {axisDeltaPhiNDim, axesConfigurations.axisLambdaMass , axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultNDim});
1859+ histos.add (" sameEvent/Signal/AntiLambda" , " " , kTHnF , {axisDeltaPhiNDim, axesConfigurations.axisLambdaMass , axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultNDim});
1860+ }
18371861
18381862 bool hStrange = false ;
18391863 for (int i = 0 ; i < AssocParticleTypes; i++) {
18401864 if (TESTBIT (doCorrelation, i) && (doprocessSameEventHV0s || doprocessSameEventHCascades)) {
1841- if (masterConfigurations.doFullCorrelationStudy )
1865+ if (masterConfigurations.doFullCorrelationStudy && !masterConfigurations. fillCorrelationHistWithMass )
18421866 histos.add (fmt::format (" sameEvent/Signal/{}" , Particlenames[i]).c_str (), " " , kTHnF , {axisDeltaPhiNDim, axisDeltaEtaNDim, axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultNDim});
18431867 if (doDeltaPhiStarCheck && masterConfigurations.doFullCorrelationStudy ) {
18441868 histos.add (fmt::format (" sameEvent/Signal/{}DeltaPhiStar" , Particlenames[i]).c_str (), " " , kTH3F , {{100 , -0.3 , 0.3 }, {50 , -0.05 , 0.05 }, {2 , -1 , 1 }}); // -1 oposite charge, 1 same charge
@@ -1876,7 +1900,7 @@ struct HStrangeCorrelation {
18761900 histos.add (" hAssocPtResolution" , " ;p_{T}^{reconstructed} (GeV/c); p_{T}^{generated} (GeV/c)" , kTH2F , {axesConfigurations.axisPtQA , axesConfigurations.axisPtQA });
18771901 }
18781902
1879- if (hStrange && masterConfigurations.doFullCorrelationStudy ) {
1903+ if (hStrange && masterConfigurations.doFullCorrelationStudy && !masterConfigurations. fillCorrelationHistWithMass ) {
18801904 histos.addClone (" sameEvent/Signal/" , " sameEvent/LeftBg/" );
18811905 histos.addClone (" sameEvent/Signal/" , " sameEvent/RightBg/" );
18821906 }
0 commit comments