Skip to content

Commit dcb2c68

Browse files
authored
Add files via upload
1 parent 4a07b35 commit dcb2c68

1 file changed

Lines changed: 58 additions & 34 deletions

File tree

PWGLF/Tasks/Strangeness/hStrangeCorrelation.cxx

Lines changed: 58 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)