Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 55 additions & 17 deletions PWGLF/Tasks/Strangeness/taskLambdaSpinCorr.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
#include <fairlogger/Logger.h>
#include <tuple>
#include <string>
#include <vector>
#include "Math/Vector2D.h"
#include "Math/Vector3D.h"
#include "Math/Vector4D.h"
#include "Math/GenVector/Boost.h"
Expand Down Expand Up @@ -59,6 +61,8 @@ struct LfTaskLambdaSpinCorr {
Configurable<bool> cfgEvtRCTFlagCheckerLimitAcceptAsBad{"cfgEvtRCTFlagCheckerLimitAcceptAsBad", true, "Evt sel: RCT flag checker treat Limited Acceptance As Bad"};
} rctCut;
// mixing
Configurable<int> mixingCombination{"mixingCombination", 1, "mixing Combination"};
Configurable<bool> mixingEvSel{"mixingEvSel", false, "mixingEvSel"};
Configurable<int> cfgCutOccupancy{"cfgCutOccupancy", 2000, "Occupancy cut"};
ConfigurableAxis axisVertex{"axisVertex", {5, -10, 10}, "vertex axis for bin"};
ConfigurableAxis axisMultiplicityClass{"axisMultiplicityClass", {8, 0, 80}, "multiplicity percentile for bin"};
Expand Down Expand Up @@ -122,6 +126,9 @@ struct LfTaskLambdaSpinCorr {
AxisSpec thnAxisInvMass{iMNbins, lbinIM, hbinIM, "#it{M} (GeV/#it{c}^{2})"};
AxisSpec thnAxisInvMasspair{iMNbinspair, lbinIMpair, hbinIMpair, "#it{M} (GeV/#it{c}^{2})"};
histos.add("hEvtSelInfo", "hEvtSelInfo", kTH1F, {{10, 0, 10.0}});
histos.add("hPtDiff", "hPtDiff", kTH1F, {{1000, 0, 100.0}});
histos.add("hRDiff", "hRDiff", kTH1F, {{640, 0, 16.0}});
histos.add("hv0Mult", "hv0Mult", kTH1F, {{10001, -0.5, 10000.5}});
histos.add("hCentrality", "Centrality distribution", kTH1F, {{configcentAxis}});
histos.add("hSparseLambdaLambda", "hSparseLambdaLambda", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisInvMass, configthnAxisPol, configcentAxis, thnAxisInvMasspair}, true);
histos.add("hSparseLambdaAntiLambda", "hSparseLambdaAntiLambda", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisInvMass, configthnAxisPol, configcentAxis, thnAxisInvMasspair}, true);
Expand Down Expand Up @@ -550,7 +557,7 @@ struct LfTaskLambdaSpinCorr {
if (additionalEvSel4 && !collision1.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
continue;
}
if (additionalEvSel5 && !collision1.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
if (mixingEvSel && additionalEvSel5 && !collision1.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
continue;
}

Expand All @@ -560,7 +567,7 @@ struct LfTaskLambdaSpinCorr {
if (additionalEvSel4 && !collision2.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
continue;
}
if (additionalEvSel5 && !collision2.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
if (mixingEvSel && additionalEvSel5 && !collision2.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
continue;
}

Expand All @@ -570,11 +577,17 @@ struct LfTaskLambdaSpinCorr {
auto groupV03 = V0s.sliceBy(tracksPerCollisionV0, collision2.globalIndex());
// for (auto& [t1, t2, t3] : soa::combinations(o2::soa::CombinationsFullIndexPolicy(groupV01, groupV02, groupV03))) {
// LOGF(info, "Mixed event collisions: (%d, %d, %d)", t1.collisionId(),t2.collisionId(),t3.collisionId());
auto maxV0Size = 1100;
if (groupV01.size() > maxV0Size || groupV02.size() > maxV0Size || groupV03.size() > maxV0Size) {
continue;
}
bool pairStatus[1150][1150] = {{false}};

// auto maxV0Size = 1400;
// if (groupV01.size() > maxV0Size || groupV02.size() > maxV0Size || groupV03.size() > maxV0Size) {
// continue;
// }
// bool pairStatus[1500][1500] = {{false}};

size_t rows = groupV03.size() + 20;
size_t cols = groupV01.size() + 20;
std::vector<std::vector<bool>> pairStatus(rows, std::vector<bool>(cols, false));
histos.fill(HIST("hv0Mult"), groupV01.size());
for (auto& [t1, t2] : soa::combinations(o2::soa::CombinationsFullIndexPolicy(groupV01, groupV02))) {
bool pairfound = false;
if (t2.index() <= t1.index()) {
Expand Down Expand Up @@ -605,9 +618,14 @@ struct LfTaskLambdaSpinCorr {
if (postrack1.globalIndex() == postrack2.globalIndex() || negtrack1.globalIndex() == negtrack2.globalIndex()) {
continue;
}
auto samePairSumPt = t1.pt() + t2.pt();
auto samePairR = TMath::Sqrt(TMath::Power(t1.phi() - t2.phi(), 2.0) + TMath::Power(t1.eta() - t2.eta(), 2.0));
for (const auto& t3 : groupV03) {
// if (pairStatus[t3.index()][t2.index()]) {
// LOGF(info, "repeat match found v0 id: (%d, %d)", t3.index(), t2.index());
// continue;
// }
if (pairStatus[t3.index()][t2.index()]) {
// LOGF(info, "repeat match found v0 id: (%d, %d)", t3.index(), t2.index());
continue;
}
if (t1.collisionId() == t3.collisionId()) {
Expand All @@ -623,13 +641,33 @@ struct LfTaskLambdaSpinCorr {
if (lambdaTag1 != lambdaTag3 || aLambdaTag1 != aLambdaTag3) {
continue;
}
if (std::abs(t1.pt() - t3.pt()) > ptMix) {
// if (std::abs(t1.pt() - t3.pt()) > ptMix) {
// continue;
// }
// if (std::abs(t1.eta() - t3.eta()) > etaMix) {
// continue;
// }
// if (std::abs(t1.phi() - t3.phi()) > phiMix) {
// continue;
// }
auto mixPairSumPt = t3.pt() + t2.pt();
auto mixPairR = TMath::Sqrt(TMath::Power(t3.phi() - t2.phi(), 2.0) + TMath::Power(t3.eta() - t2.eta(), 2.0));
histos.fill(HIST("hPtDiff"), TMath::Abs(mixPairSumPt - samePairSumPt));
histos.fill(HIST("hRDiff"), TMath::Abs(mixPairR - samePairR));
if (mixingCombination == 0 && std::abs(t1.pt() - t3.pt()) > ptMix) {
continue;
}
if (std::abs(t1.eta() - t3.eta()) > etaMix) {
if (mixingCombination == 0 && std::abs(t1.eta() - t3.eta()) > etaMix) {
continue;
}
if (std::abs(t1.phi() - t3.phi()) > phiMix) {
if (mixingCombination == 0 && std::abs(t1.phi() - t3.phi()) > phiMix) {
continue;
}

if (mixingCombination == 1 && std::abs(mixPairSumPt - samePairSumPt) > ptMix) {
continue;
}
if (mixingCombination == 1 && std::abs(mixPairR - samePairR) > etaMix) {
continue;
}
if (lambdaTag2) {
Expand All @@ -654,17 +692,17 @@ struct LfTaskLambdaSpinCorr {
}
if (lambdaTag2 && lambdaTag3) {
fillHistograms(1, 0, 1, 0, lambda, lambda2, proton, proton2, centrality, 2);
}
if (aLambdaTag2 && aLambdaTag3) {
} else if (aLambdaTag2 && aLambdaTag3) {
fillHistograms(0, 1, 0, 1, antiLambda, antiLambda2, antiProton, antiProton2, centrality, 2);
}
if (lambdaTag2 && aLambdaTag3) {
} else if (lambdaTag2 && aLambdaTag3) {
fillHistograms(1, 0, 0, 1, lambda, antiLambda2, proton, antiProton2, centrality, 2);
}
if (aLambdaTag2 && lambdaTag3) {
} else if (aLambdaTag2 && lambdaTag3) {
fillHistograms(0, 1, 1, 0, antiLambda, lambda2, antiProton, proton2, centrality, 2);
} else {
continue;
}
pairfound = true;
// pairStatus[t3.index()][t2.index()] = true;
pairStatus[t3.index()][t2.index()] = true;
// LOGF(info, "v0 id: (%d, %d)", t3.index(), t2.index());
if (pairfound) {
Expand Down