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 @@
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 @@
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 @@ -275,7 +282,7 @@
auto proton2LambdaRF = boostLambda2ToCM(proton2pairCM);

double cosThetaDiff = proton1LambdaRF.Vect().Unit().Dot(proton2LambdaRF.Vect().Unit());
double deltaR = TMath::Sqrt(TMath::Power(particle1.Eta() - particle2.Eta(), 2.0) + TMath::Power(particle1.Phi() - particle2.Phi(), 2.0));

Check failure on line 285 in PWGLF/Tasks/Strangeness/taskLambdaSpinCorr.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[root/entity]

Replace ROOT entities with equivalents from standard C++ or from O2.
if (datatype == 0) {
if (tag1 && tag3) {
histos.fill(HIST("hSparseLambdaLambda"), particle1.M(), particle2.M(), cosThetaDiff, centrality, deltaR);
Expand Down Expand Up @@ -306,7 +313,7 @@
}
}

if (datatype == 2) {

Check failure on line 316 in PWGLF/Tasks/Strangeness/taskLambdaSpinCorr.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
if (tag1 && tag3) {
histos.fill(HIST("hSparseLambdaLambdaMixed"), particle1.M(), particle2.M(), cosThetaDiff, centrality, deltaR);
}
Expand Down Expand Up @@ -514,7 +521,7 @@
Preslice<aod::V0Datas> tracksPerCollisionV0 = aod::v0data::collisionId;
void processME(EventCandidates const& collisions, AllTrackCandidates const&, ResoV0s const& V0s)
{
for (auto& [collision1, collision2] : selfCombinations(colBinning, nMix, -1, collisions, collisions)) {

Check failure on line 524 in PWGLF/Tasks/Strangeness/taskLambdaSpinCorr.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
// LOGF(info, "Mixed event collisions: (%d, %d)", collision1.index(), collision2.index());
if (rctCut.requireRCTFlagChecker && !rctChecker(collision1)) {
continue;
Expand Down Expand Up @@ -550,7 +557,7 @@
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 @@
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,12 +577,18 @@
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))) {

Check failure on line 591 in PWGLF/Tasks/Strangeness/taskLambdaSpinCorr.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
bool pairfound = false;
if (t2.index() <= t1.index()) {
continue;
Expand Down Expand Up @@ -605,9 +618,14 @@
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));

Check failure on line 622 in PWGLF/Tasks/Strangeness/taskLambdaSpinCorr.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[root/entity]

Replace ROOT entities with equivalents from standard C++ or from O2.
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 @@
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));

Check failure on line 654 in PWGLF/Tasks/Strangeness/taskLambdaSpinCorr.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[root/entity]

Replace ROOT entities with equivalents from standard C++ or from O2.
histos.fill(HIST("hPtDiff"), TMath::Abs(mixPairSumPt - samePairSumPt));

Check failure on line 655 in PWGLF/Tasks/Strangeness/taskLambdaSpinCorr.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[root/entity]

Replace ROOT entities with equivalents from standard C++ or from O2.
histos.fill(HIST("hRDiff"), TMath::Abs(mixPairR - samePairR));

Check failure on line 656 in PWGLF/Tasks/Strangeness/taskLambdaSpinCorr.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[root/entity]

Replace ROOT entities with equivalents from standard C++ or from O2.
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 @@
}
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 Expand Up @@ -760,7 +798,7 @@
// Processing Event Mixing MC
void processMEMC(CollisionMCRecTableCentFT0C const& collisions, TrackMCRecTable const&, V0TrackCandidatesMC const& V0s)
{
for (auto& [collision1, collision2] : selfCombinations(colBinning, nMix, -1, collisions, collisions)) {

Check failure on line 801 in PWGLF/Tasks/Strangeness/taskLambdaSpinCorr.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
// LOGF(info, "Mixed event collisions: (%d, %d)", collision1.index(), collision2.index());

if (collision1.index() == collision2.index()) {
Expand All @@ -787,7 +825,7 @@
continue;
}
bool pairStatus[1150][1150] = {{false}};
for (auto& [t1, t2] : soa::combinations(o2::soa::CombinationsFullIndexPolicy(groupV01, groupV02))) {

Check failure on line 828 in PWGLF/Tasks/Strangeness/taskLambdaSpinCorr.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
bool pairfound = false;
if (t2.index() <= t1.index()) {
continue;
Expand Down
Loading