Skip to content
Closed
Show file tree
Hide file tree
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
11 changes: 9 additions & 2 deletions PWGCF/GenericFramework/Core/FlowContainer.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@

#include "FlowContainer.h"

#include <cstdio>
#include <vector>

ClassImp(FlowContainer);

FlowContainer::FlowContainer() : TNamed("", ""),
Expand Down Expand Up @@ -51,15 +54,15 @@
if (nMultiBins <= 0)
nMultiBins = multiBins.size() - 1;
if (nMultiBins <= 0) {
printf("Multiplicity axis does not exist");

Check failure on line 57 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).

Check failure on line 57 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).
return;
}
if (!inputList) {
printf("Input list not specified\n");

Check failure on line 61 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).

Check failure on line 61 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).
return;
}
if (inputList->GetEntries() < 1) {
printf("Input list empty!\n");

Check failure on line 65 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).

Check failure on line 65 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).
return;
}
fProf = new TProfile2D(Form("%s_CorrProfile", this->GetName()), "CorrProfile", nMultiBins, &multiBins[0], inputList->GetEntries(), 0.5, inputList->GetEntries() + 0.5);
Expand All @@ -79,11 +82,11 @@
void FlowContainer::Initialize(TObjArray* inputList, int nMultiBins, double MultiMin, double MultiMax, int nRandom)
{
if (!inputList) {
printf("Input list not specified\n");

Check failure on line 85 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).

Check failure on line 85 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).
return;
}
if (inputList->GetEntries() < 1) {
printf("Input list empty!\n");

Check failure on line 89 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).

Check failure on line 89 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).
return;
}
fProf = new TProfile2D(Form("%s_CorrProfile", this->GetName()), "CorrProfile", nMultiBins, MultiMin, MultiMax, inputList->GetEntries(), 0.5, inputList->GetEntries() + 0.5);
Expand Down Expand Up @@ -116,7 +119,7 @@
fXAxis = dynamic_cast<TAxis*>(inax->Clone("pTAxis"));
bool success = CreateBinsFromAxis(fXAxis);
if (!success)
printf("Something went wrong setting the x axis!\n");

Check failure on line 122 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).

Check failure on line 122 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).
}
void FlowContainer::SetXAxis()
{
Expand All @@ -139,7 +142,7 @@
return -1;
int yin = fProf->GetYaxis()->FindBin(hname);
if (!yin) {
printf("Could not find bin %s\n", hname);

Check failure on line 145 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).

Check failure on line 145 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).
return -1;
}
fProf->Fill(multi, yin, corr, w);
Expand All @@ -154,11 +157,11 @@
int nBinsX = fProf->GetNbinsX();
int nBinsY = fProf->GetNbinsY();
if ((inpf->GetNbinsX() != nBinsX) || (inpf->GetNbinsY() != nBinsY)) {
printf("Number of bins in two profiles do not match, not doing anything\n");

Check failure on line 160 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).

Check failure on line 160 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).
return;
}
if (!inpf->GetBinSumw2()->fArray) {
printf("Input profile has no BinSumw2()! Returning\n");

Check failure on line 164 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).

Check failure on line 164 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).
return;
}
if (!fProf->GetBinSumw2()->fArray)
Expand All @@ -170,7 +173,7 @@
double* farrProf = fProf->fArray;
for (int ix = 1; ix <= nBinsX; ix++) {
double xval = fProf->GetXaxis()->GetBinCenter(ix);
printf("Processing x-bin %i\n", ix);

Check failure on line 176 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).

Check failure on line 176 in PWGCF/GenericFramework/Core/FlowContainer.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[logging]

Use O2 logging (LOG, LOGF, LOGP).
for (int iy = 1; iy <= nBinsY; iy++) {
double yval = fProf->GetYaxis()->GetBinCenter(iy);
int binno = fProf->FindBin(xval, yval);
Expand Down Expand Up @@ -916,8 +919,12 @@
delete tempprof;
}
delete rhSubset;
retpf->RebinX(nBins);
return retpf;
if (retpf) {
retpf->RebinX(nBins);
return retpf;
} else {
return nullptr;
}
};

//{2} particle correlations
Expand Down
56 changes: 56 additions & 0 deletions PWGCF/GenericFramework/Tasks/flowGfwLightIons.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ GFWCorrConfigs configs;
std::vector<double> multGlobalCorrCutPars;
std::vector<double> multPVCorrCutPars;
std::vector<double> multGlobalPVCorrCutPars;
std::vector<double> multGlobalV0ACutPars;
std::vector<double> multGlobalT0ACutPars;
std::vector<int> firstRunsOfFill;
} // namespace o2::analysis::gfw

Expand Down Expand Up @@ -134,6 +136,15 @@ struct FlowGfwLightIons {
O2_DEFINE_CONFIGURABLE(cfgMultCorrHighCutFunction, std::string, "[0] + [1]*x + [2]*x*x + [3]*x*x*x + [4]*x*x*x*x + 3.*([5] + [6]*x + [7]*x*x + [8]*x*x*x + [9]*x*x*x*x)", "Functional for multiplicity correlation cut");
O2_DEFINE_CONFIGURABLE(cfgMultCorrLowCutFunction, std::string, "[0] + [1]*x + [2]*x*x + [3]*x*x*x + [4]*x*x*x*x - 3.*([5] + [6]*x + [7]*x*x + [8]*x*x*x + [9]*x*x*x*x)", "Functional for multiplicity correlation cut");
O2_DEFINE_CONFIGURABLE(cfgMultGlobalPVCorrCutFunction, std::string, "[0] + [1]*x + 3*([2] + [3]*x + [4]*x*x + [5]*x*x*x)", "Functional for global vs pv multiplicity correlation cut");
struct : ConfigurableGroup {
O2_DEFINE_CONFIGURABLE(cfgMultGlobalASideCorrCutFunction, std::string, "[0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x + [10]*([5]+[6]*x+[7]*x*x+[8]*x*x*x+[9]*x*x*x*x)", "Functional for global vs V0A multiplicity low correlation cut");
Configurable<std::vector<double>> cfgMultGlobalV0ACutPars{"cfgMultGlobalV0ACutPars", std::vector<double>{567.785, 172.715, 0.77888, -0.00693466, 1.40564e-05, 679.853, 66.8068, -0.444332, 0.00115002, -4.92064e-07}, "Global vs FV0A multiplicity cut parameter values"};
Configurable<std::vector<double>> cfgMultGlobalT0ACutPars{"cfgMultGlobalT0ACutPars", std::vector<double>{241.618, 61.8402, 0.348049, -0.00306078, 6.20357e-06, 315.235, 29.1491, -0.188639, 0.00044528, -9.08912e-08}, "Global vs FT0A multiplicity cut parameter values"};
O2_DEFINE_CONFIGURABLE(cfgGlobalV0ALowSigma, float, -3, "Number of sigma deviations below expected value in global vs V0A correlation");
O2_DEFINE_CONFIGURABLE(cfgGlobalV0AHighSigma, float, 4, "Number of sigma deviations above expected value in global vs V0A correlation");
O2_DEFINE_CONFIGURABLE(cfgGlobalT0ALowSigma, float, -3., "Number of sigma deviations below expected value in global vs T0A correlation");
O2_DEFINE_CONFIGURABLE(cfgGlobalT0AHighSigma, float, 4, "Number of sigma deviations above expected value in global vs T0A correlation");
} cfgGlobalAsideCorrCuts;

Configurable<GFWBinningCuts> cfgGFWBinning{"cfgGFWBinning", {40, 16, 72, 300, 0, 3000, 0.2, 10.0, 0.2, 3.0, {0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 4.5, 5, 5.5, 6, 7, 8, 9, 10}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90}}, "Configuration for binning"};
Configurable<GFWRegions> cfgRegions{"cfgRegions", {{"refN", "refP", "refFull"}, {-0.8, 0.4, -0.8}, {-0.4, 0.8, 0.8}, {0, 0, 0}, {1, 1, 1}}, "Configurations for GFW regions"};
Expand Down Expand Up @@ -241,6 +252,10 @@ struct FlowGfwLightIons {
TF1* fMultCutLow = nullptr;
TF1* fMultCutHigh = nullptr;
TF1* fMultPVGlobalCutHigh = nullptr;
TF1* fMultGlobalV0ACutLow = nullptr;
TF1* fMultGlobalV0ACutHigh = nullptr;
TF1* fMultGlobalT0ACutLow = nullptr;
TF1* fMultGlobalT0ACutHigh = nullptr;

TF1* fPtDepDCAxy = nullptr;

Expand Down Expand Up @@ -287,6 +302,8 @@ struct FlowGfwLightIons {
o2::analysis::gfw::multGlobalCorrCutPars = cfgMultGlobalCutPars;
o2::analysis::gfw::multPVCorrCutPars = cfgMultPVCutPars;
o2::analysis::gfw::multGlobalPVCorrCutPars = cfgMultGlobalPVCutPars;
o2::analysis::gfw::multGlobalV0ACutPars = cfgGlobalAsideCorrCuts.cfgMultGlobalV0ACutPars;
o2::analysis::gfw::multGlobalT0ACutPars = cfgGlobalAsideCorrCuts.cfgMultGlobalT0ACutPars;
o2::analysis::gfw::firstRunsOfFill = cfgFirstRunsOfFill;
if (cfgTimeDependent && !std::is_sorted(o2::analysis::gfw::firstRunsOfFill.begin(), o2::analysis::gfw::firstRunsOfFill.end())) {
std::sort(o2::analysis::gfw::firstRunsOfFill.begin(), o2::analysis::gfw::firstRunsOfFill.end());
Expand Down Expand Up @@ -479,6 +496,36 @@ struct FlowGfwLightIons {
fMultCutHigh->SetParameters(&(o2::analysis::gfw::multGlobalCorrCutPars[0]));
fMultPVGlobalCutHigh = new TF1("fMultPVGlobalCutHigh", cfgMultGlobalPVCorrCutFunction->c_str(), 0, nchbinning.back());
fMultPVGlobalCutHigh->SetParameters(&(o2::analysis::gfw::multGlobalPVCorrCutPars[0]));

LOGF(info, "Global V0A function: %s in range 0-%g", cfgGlobalAsideCorrCuts.cfgMultGlobalASideCorrCutFunction->c_str(), v0aAxis.binEdges.back());
fMultGlobalV0ACutLow = new TF1("fMultGlobalV0ACutLow", cfgGlobalAsideCorrCuts.cfgMultGlobalASideCorrCutFunction->c_str(), 0, v0aAxis.binEdges.back());
for (std::size_t i = 0; i < o2::analysis::gfw::multGlobalV0ACutPars.size(); ++i)
fMultGlobalV0ACutLow->SetParameter(i, o2::analysis::gfw::multGlobalV0ACutPars[i]);
fMultGlobalV0ACutLow->SetParameter(o2::analysis::gfw::multGlobalV0ACutPars.size(), cfgGlobalAsideCorrCuts.cfgGlobalV0ALowSigma);
for (int i = 0; i < fMultGlobalV0ACutLow->GetNpar(); ++i)
LOGF(info, "fMultGlobalV0ACutLow par %d = %g", i, fMultGlobalV0ACutLow->GetParameter(i));

fMultGlobalV0ACutHigh = new TF1("fMultGlobalV0ACutHigh", cfgGlobalAsideCorrCuts.cfgMultGlobalASideCorrCutFunction->c_str(), 0, v0aAxis.binEdges.back());
for (std::size_t i = 0; i < o2::analysis::gfw::multGlobalV0ACutPars.size(); ++i)
fMultGlobalV0ACutHigh->SetParameter(i, o2::analysis::gfw::multGlobalV0ACutPars[i]);
fMultGlobalV0ACutHigh->SetParameter(o2::analysis::gfw::multGlobalV0ACutPars.size(), cfgGlobalAsideCorrCuts.cfgGlobalV0AHighSigma);
for (int i = 0; i < fMultGlobalV0ACutHigh->GetNpar(); ++i)
LOGF(info, "fMultGlobalV0ACutHigh par %d = %g", i, fMultGlobalV0ACutHigh->GetParameter(i));

LOGF(info, "Global T0A function: %s", cfgGlobalAsideCorrCuts.cfgMultGlobalASideCorrCutFunction->c_str());
fMultGlobalT0ACutLow = new TF1("fMultGlobalT0ACutLow", cfgGlobalAsideCorrCuts.cfgMultGlobalASideCorrCutFunction->c_str(), 0, t0aAxis.binEdges.back());
for (std::size_t i = 0; i < o2::analysis::gfw::multGlobalT0ACutPars.size(); ++i)
fMultGlobalT0ACutLow->SetParameter(i, o2::analysis::gfw::multGlobalT0ACutPars[i]);
fMultGlobalT0ACutLow->SetParameter(o2::analysis::gfw::multGlobalT0ACutPars.size(), cfgGlobalAsideCorrCuts.cfgGlobalT0ALowSigma);
for (int i = 0; i < fMultGlobalT0ACutLow->GetNpar(); ++i)
LOGF(info, "fMultGlobalT0ACutLow par %d = %g", i, fMultGlobalT0ACutLow->GetParameter(i));

fMultGlobalT0ACutHigh = new TF1("fMultGlobalT0ACutHigh", cfgGlobalAsideCorrCuts.cfgMultGlobalASideCorrCutFunction->c_str(), 0, t0aAxis.binEdges.back());
for (std::size_t i = 0; i < o2::analysis::gfw::multGlobalT0ACutPars.size(); ++i)
fMultGlobalT0ACutHigh->SetParameter(i, o2::analysis::gfw::multGlobalT0ACutPars[i]);
fMultGlobalT0ACutHigh->SetParameter(o2::analysis::gfw::multGlobalT0ACutPars.size(), cfgGlobalAsideCorrCuts.cfgGlobalT0AHighSigma);
for (int i = 0; i < fMultGlobalT0ACutHigh->GetNpar(); ++i)
LOGF(info, "fMultGlobalT0ACutHigh par %d = %g", i, fMultGlobalT0ACutHigh->GetParameter(i));
}
if (cfgUseDensityDependentCorrection) {
std::vector<double> pTEffBins = {0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.4, 1.8, 2.2, 2.6, 3.0};
Expand Down Expand Up @@ -690,6 +737,15 @@ struct FlowGfwLightIons {
return 0;
if (multTrk > fMultPVGlobalCutHigh->Eval(collision.multNTracksPV()))
return 0;

if (!(cfgGlobalAsideCorrCuts.cfgMultGlobalASideCorrCutFunction->empty()) && static_cast<double>(collision.multFV0A()) < fMultGlobalV0ACutLow->Eval(multTrk))
return 0;
if (!(cfgGlobalAsideCorrCuts.cfgMultGlobalASideCorrCutFunction->empty()) && static_cast<double>(collision.multFV0A()) > fMultGlobalV0ACutHigh->Eval(multTrk))
return 0;
if (!(cfgGlobalAsideCorrCuts.cfgMultGlobalASideCorrCutFunction->empty()) && static_cast<double>(collision.multFT0A()) < fMultGlobalT0ACutLow->Eval(multTrk))
return 0;
if (!(cfgGlobalAsideCorrCuts.cfgMultGlobalASideCorrCutFunction->empty()) && static_cast<double>(collision.multFT0A()) > fMultGlobalT0ACutHigh->Eval(multTrk))
return 0;
registry.fill(HIST("eventQA/eventSel"), kMultCuts);
if (cfgRunByRun)
th1sList[run][hEventSel]->Fill(kMultCuts);
Expand Down
Loading