Skip to content

Commit 20c26cc

Browse files
Merge branch 'AliceO2Group:master' into feeddown-correction-and-efficiency
2 parents 397d25f + e11b625 commit 20c26cc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+300
-124
lines changed

ALICE3/TableProducer/OTF/onTheFlyTracker.cxx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,13 +307,20 @@ struct OnTheFlyTracker {
307307

308308
if (enablePrimarySmearing) {
309309
auto loadLUT = [&](int icfg, int pdg, const std::vector<std::string>& tables) {
310+
LOG(info) << "Loading LUT for pdg " << pdg << " for config " << icfg << " from provided tables with size " << tables.size();
311+
if (tables.empty()) {
312+
LOG(debug) << "No LUT file passed for pdg " << pdg << ", skipping.";
313+
return false;
314+
}
310315
const bool foundNewCfg = static_cast<size_t>(icfg) < tables.size();
311316
std::string lutFile = foundNewCfg ? tables[icfg] : tables.front();
317+
LOG(info) << "Loading LUT for pdg " << pdg << " from file " << lutFile << " for config " << icfg;
312318
// strip from leading/trailing spaces
313319
lutFile.erase(0, lutFile.find_first_not_of(" "));
314320
lutFile.erase(lutFile.find_last_not_of(" ") + 1);
315321
if (lutFile.empty()) {
316-
LOG(fatal) << "Empty LUT file passed for pdg " << pdg << ", if you don't want to use a LUT remove the entry from the JSON config.";
322+
LOG(debug) << "Empty LUT file name for pdg " << pdg << ", skipping.";
323+
return false;
317324
}
318325
bool success = mSmearer[icfg]->loadTable(pdg, lutFile.c_str());
319326
if (!success) {

PWGCF/GenericFramework/Tasks/flowGfwLightIons.cxx

Lines changed: 83 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,9 @@ struct FlowGfwLightIons {
111111
O2_DEFINE_CONFIGURABLE(cfgPtmin, float, 0.2, "minimum pt (GeV/c)");
112112
O2_DEFINE_CONFIGURABLE(cfgPtmax, float, 10, "maximum pt (GeV/c)");
113113
O2_DEFINE_CONFIGURABLE(cfgEta, float, 0.8, "eta cut");
114-
O2_DEFINE_CONFIGURABLE(cfgEtaPtPt, float, 0.4, "eta cut for pt-pt correlations");
114+
O2_DEFINE_CONFIGURABLE(cfgEtaPtPt, float, 0.4, "eta cut for pt-pt correlations used in subevent vn-pt");
115+
O2_DEFINE_CONFIGURABLE(cfgEtaPtPtGap, float, 0.4, "eta gap for subevent pt-pt correlations");
116+
O2_DEFINE_CONFIGURABLE(cfgEtaPtPtFull, float, 0.8, "eta cut for pure pt-pt correlations");
115117
O2_DEFINE_CONFIGURABLE(cfgVtxZ, float, 10, "vertex cut (cm)");
116118
O2_DEFINE_CONFIGURABLE(cfgOccupancySelection, int, 2000, "Max occupancy selection, -999 to disable");
117119
O2_DEFINE_CONFIGURABLE(cfgNoSameBunchPileupCut, bool, true, "kNoSameBunchPileupCut");
@@ -130,12 +132,14 @@ struct FlowGfwLightIons {
130132
O2_DEFINE_CONFIGURABLE(cfgUseDensityDependentCorrection, bool, false, "Use density dependent efficiency correction based on Run 2 measurements");
131133
Configurable<std::vector<double>> cfgTrackDensityP0{"cfgTrackDensityP0", std::vector<double>{0.7217476707, 0.7384792571, 0.7542625668, 0.7640680200, 0.7701951667, 0.7755299053, 0.7805901710, 0.7849446786, 0.7957356586, 0.8113039262, 0.8211968966, 0.8280558878, 0.8329342135}, "parameter 0 for track density efficiency correction"};
132134
Configurable<std::vector<double>> cfgTrackDensityP1{"cfgTrackDensityP1", std::vector<double>{-2.169488e-05, -2.191913e-05, -2.295484e-05, -2.556538e-05, -2.754463e-05, -2.816832e-05, -2.846502e-05, -2.843857e-05, -2.705974e-05, -2.477018e-05, -2.321730e-05, -2.203315e-05, -2.109474e-05}, "parameter 1 for track density efficiency correction"};
133-
Configurable<std::vector<double>> cfgMultGlobalCutPars{"cfgMultGlobalCutPars", std::vector<double>{2272.16, -76.6932, 1.01204, -0.00631545, 1.59868e-05, 136.336, -4.97006, 0.121199, -0.0015921, 7.66197e-06}, "Global vs FT0C multiplicity cut parameter values"};
134-
Configurable<std::vector<double>> cfgMultPVCutPars{"cfgMultPVCutPars", std::vector<double>{3074.43, -106.192, 1.46176, -0.00968364, 2.61923e-05, 182.128, -7.43492, 0.193901, -0.00256715, 1.22594e-05}, "PV vs FT0C multiplicity cut parameter values"};
135-
Configurable<std::vector<double>> cfgMultGlobalPVCutPars{"cfgMultGlobalPVCutPars", std::vector<double>{-0.223013, 0.715849, 0.664242, 0.0829653, -0.000503733, 1.21185e-06}, "Global vs PV multiplicity cut parameter values"};
136-
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");
137-
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");
138-
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");
135+
struct : ConfigurableGroup {
136+
Configurable<std::vector<double>> cfgMultGlobalCutPars{"cfgMultGlobalCutPars", std::vector<double>{2272.16, -76.6932, 1.01204, -0.00631545, 1.59868e-05, 136.336, -4.97006, 0.121199, -0.0015921, 7.66197e-06}, "Global vs FT0C multiplicity cut parameter values"};
137+
Configurable<std::vector<double>> cfgMultPVCutPars{"cfgMultPVCutPars", std::vector<double>{3074.43, -106.192, 1.46176, -0.00968364, 2.61923e-05, 182.128, -7.43492, 0.193901, -0.00256715, 1.22594e-05}, "PV vs FT0C multiplicity cut parameter values"};
138+
Configurable<std::vector<double>> cfgMultGlobalPVCutPars{"cfgMultGlobalPVCutPars", std::vector<double>{-0.223013, 0.715849, 0.664242, 0.0829653, -0.000503733, 1.21185e-06}, "Global vs PV multiplicity cut parameter values"};
139+
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");
140+
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");
141+
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");
142+
} cfgMultCorrCuts;
139143
struct : ConfigurableGroup {
140144
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");
141145
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"};
@@ -163,8 +167,10 @@ struct FlowGfwLightIons {
163167
// Define output
164168
OutputObj<FlowContainer> fFC{FlowContainer("FlowContainer")};
165169
OutputObj<FlowPtContainer> fFCpt{FlowPtContainer("FlowPtContainer")};
170+
OutputObj<FlowPtContainer> fFCptFull{FlowPtContainer("FlowPtContainerFull")};
166171
OutputObj<FlowContainer> fFCgen{FlowContainer("FlowContainer_gen")};
167172
OutputObj<FlowPtContainer> fFCptgen{FlowPtContainer("FlowPtContainer_gen")};
173+
OutputObj<FlowPtContainer> fFCptgenFull{FlowPtContainer("FlowPtContainer_gen")};
168174
HistogramRegistry registry{"registry"};
169175

170176
// QA outputs
@@ -198,6 +204,8 @@ struct FlowGfwLightIons {
198204
kCentNGlobal,
199205
kCentMFT
200206
};
207+
std::map<int, std::string> centNamesMap = {{kCentFT0C, "FT0C"}, {kCentFT0CVariant1, "FT0C variant1"}, {kCentFT0M, "FT0M"}, {kCentFV0A, "FV0A"}, {kCentNTPV, "NTPV"}, {kCentNGlobal, "NGlobal"}, {kCentMFT, "MFT"}};
208+
201209
enum EventSelFlags {
202210
kFilteredEvent = 1,
203211
kSel8,
@@ -299,9 +307,9 @@ struct FlowGfwLightIons {
299307
o2::analysis::gfw::nchup = cfgGFWBinning->GetNchMax();
300308
o2::analysis::gfw::centbinning = cfgGFWBinning->GetCentBinning();
301309
cfgGFWBinning->Print();
302-
o2::analysis::gfw::multGlobalCorrCutPars = cfgMultGlobalCutPars;
303-
o2::analysis::gfw::multPVCorrCutPars = cfgMultPVCutPars;
304-
o2::analysis::gfw::multGlobalPVCorrCutPars = cfgMultGlobalPVCutPars;
310+
o2::analysis::gfw::multGlobalCorrCutPars = cfgMultCorrCuts.cfgMultGlobalCutPars;
311+
o2::analysis::gfw::multPVCorrCutPars = cfgMultCorrCuts.cfgMultPVCutPars;
312+
o2::analysis::gfw::multGlobalPVCorrCutPars = cfgMultCorrCuts.cfgMultGlobalPVCutPars;
305313
o2::analysis::gfw::multGlobalV0ACutPars = cfgGlobalAsideCorrCuts.cfgMultGlobalV0ACutPars;
306314
o2::analysis::gfw::multGlobalT0ACutPars = cfgGlobalAsideCorrCuts.cfgMultGlobalT0ACutPars;
307315
o2::analysis::gfw::firstRunsOfFill = cfgFirstRunsOfFill;
@@ -314,34 +322,7 @@ struct FlowGfwLightIons {
314322
AxisSpec etaAxis = {o2::analysis::gfw::etabins, -cfgEta, cfgEta, "#eta"};
315323
AxisSpec vtxAxis = {o2::analysis::gfw::vtxZbins, -cfgVtxZ, cfgVtxZ, "Vtx_{z} (cm)"};
316324
AxisSpec ptAxis = {o2::analysis::gfw::ptbinning, "#it{p}_{T} GeV/#it{c}"};
317-
std::string sCentralityEstimator;
318-
switch (cfgCentEstimator) {
319-
case kCentFT0C:
320-
sCentralityEstimator = "FT0C";
321-
break;
322-
case kCentFT0CVariant1:
323-
sCentralityEstimator = "FT0C variant 1";
324-
break;
325-
case kCentFT0M:
326-
sCentralityEstimator = "FT0M";
327-
break;
328-
case kCentFV0A:
329-
sCentralityEstimator = "FV0A";
330-
break;
331-
case kCentNTPV:
332-
sCentralityEstimator = "NTPV";
333-
break;
334-
case kCentNGlobal:
335-
sCentralityEstimator = "NGlobals";
336-
break;
337-
case kCentMFT:
338-
sCentralityEstimator = "MFT";
339-
break;
340-
default:
341-
sCentralityEstimator = "FT0C";
342-
break;
343-
}
344-
sCentralityEstimator += " centrality (%)";
325+
std::string sCentralityEstimator = centNamesMap[cfgCentEstimator] + " centrality (%)";
345326
AxisSpec centAxis = {o2::analysis::gfw::centbinning, sCentralityEstimator.c_str()};
346327
std::vector<double> nchbinning;
347328
int nchskip = (o2::analysis::gfw::nchup - o2::analysis::gfw::nchlow) / o2::analysis::gfw::nchbins;
@@ -478,23 +459,31 @@ struct FlowGfwLightIons {
478459
fFCpt->setUseCentralMoments(cfgUseCentralMoments);
479460
fFCpt->setUseGapMethod(true);
480461
fFCpt->initialise(multAxis, cfgMpar, o2::analysis::gfw::configs, cfgNbootstrap);
462+
fFCptFull->setUseCentralMoments(cfgUseCentralMoments);
463+
fFCptFull->setUseGapMethod(true);
464+
fFCptFull->initialise(multAxis, cfgMpar, o2::analysis::gfw::configs, cfgNbootstrap);
465+
fFCptFull->initialiseSubevent(multAxis, cfgMpar, cfgNbootstrap);
481466
fFCptgen->setUseCentralMoments(cfgUseCentralMoments);
482467
fFCptgen->setUseGapMethod(true);
483468
fFCptgen->initialise(multAxis, cfgMpar, o2::analysis::gfw::configs, cfgNbootstrap);
469+
fFCptgenFull->setUseCentralMoments(cfgUseCentralMoments);
470+
fFCptgenFull->setUseGapMethod(true);
471+
fFCptgenFull->initialise(multAxis, cfgMpar, o2::analysis::gfw::configs, cfgNbootstrap);
472+
fFCptgenFull->initialiseSubevent(multAxis, cfgMpar, cfgNbootstrap);
484473

485474
fPtDepDCAxy = new TF1("ptDepDCAxy", Form("[0]*%s", cfgDCAxy->c_str()), 0.001, 100);
486475
fPtDepDCAxy->SetParameter(0, cfgDCAxyNSigma);
487476
LOGF(info, "DCAxy pt-dependence function: %s", Form("[0]*%s", cfgDCAxy->c_str()));
488477
if (cfgUseAdditionalEventCut) {
489-
fMultPVCutLow = new TF1("fMultPVCutLow", cfgMultCorrLowCutFunction->c_str(), 0, 100);
478+
fMultPVCutLow = new TF1("fMultPVCutLow", cfgMultCorrCuts.cfgMultCorrLowCutFunction->c_str(), 0, 100);
490479
fMultPVCutLow->SetParameters(&(o2::analysis::gfw::multPVCorrCutPars[0]));
491-
fMultPVCutHigh = new TF1("fMultPVCutHigh", cfgMultCorrHighCutFunction->c_str(), 0, 100);
480+
fMultPVCutHigh = new TF1("fMultPVCutHigh", cfgMultCorrCuts.cfgMultCorrHighCutFunction->c_str(), 0, 100);
492481
fMultPVCutHigh->SetParameters(&(o2::analysis::gfw::multPVCorrCutPars[0]));
493-
fMultCutLow = new TF1("fMultCutLow", cfgMultCorrLowCutFunction->c_str(), 0, 100);
482+
fMultCutLow = new TF1("fMultCutLow", cfgMultCorrCuts.cfgMultCorrLowCutFunction->c_str(), 0, 100);
494483
fMultCutLow->SetParameters(&(o2::analysis::gfw::multGlobalCorrCutPars[0]));
495-
fMultCutHigh = new TF1("fMultCutHigh", cfgMultCorrHighCutFunction->c_str(), 0, 100);
484+
fMultCutHigh = new TF1("fMultCutHigh", cfgMultCorrCuts.cfgMultCorrHighCutFunction->c_str(), 0, 100);
496485
fMultCutHigh->SetParameters(&(o2::analysis::gfw::multGlobalCorrCutPars[0]));
497-
fMultPVGlobalCutHigh = new TF1("fMultPVGlobalCutHigh", cfgMultGlobalPVCorrCutFunction->c_str(), 0, nchbinning.back());
486+
fMultPVGlobalCutHigh = new TF1("fMultPVGlobalCutHigh", cfgMultCorrCuts.cfgMultGlobalPVCorrCutFunction->c_str(), 0, nchbinning.back());
498487
fMultPVGlobalCutHigh->SetParameters(&(o2::analysis::gfw::multGlobalPVCorrCutPars[0]));
499488

500489
LOGF(info, "Global V0A function: %s in range 0-%g", cfgGlobalAsideCorrCuts.cfgMultGlobalASideCorrCutFunction->c_str(), v0aAxis.binEdges.back());
@@ -816,9 +805,28 @@ struct FlowGfwLightIons {
816805
template <DataType dt>
817806
void fillOutputContainers(const float& centmult, const double& rndm, const int& run = 0)
818807
{
819-
(dt == kGen) ? fFCptgen->calculateCorrelations() : fFCpt->calculateCorrelations();
820-
(dt == kGen) ? fFCptgen->fillPtProfiles(centmult, rndm) : fFCpt->fillPtProfiles(centmult, rndm);
821-
(dt == kGen) ? fFCptgen->fillCMProfiles(centmult, rndm) : fFCpt->fillCMProfiles(centmult, rndm);
808+
if (dt == kGen) {
809+
fFCptgen->calculateCorrelations();
810+
fFCptgenFull->calculateCorrelations();
811+
fFCptgenFull->calculateSubeventCorrelations();
812+
} else {
813+
fFCpt->calculateCorrelations();
814+
fFCptFull->calculateCorrelations();
815+
fFCptFull->calculateSubeventCorrelations();
816+
}
817+
if (dt == kGen) {
818+
fFCptgen->fillPtProfiles(centmult, rndm);
819+
fFCptgen->fillCMProfiles(centmult, rndm);
820+
fFCptgenFull->fillPtProfiles(centmult, rndm);
821+
fFCptgenFull->fillCMProfiles(centmult, rndm);
822+
fFCptgenFull->fillSubeventPtProfiles(centmult, rndm);
823+
} else {
824+
fFCpt->fillPtProfiles(centmult, rndm);
825+
fFCpt->fillCMProfiles(centmult, rndm);
826+
fFCptFull->fillPtProfiles(centmult, rndm);
827+
fFCptFull->fillSubeventPtProfiles(centmult, rndm);
828+
fFCptFull->fillCMProfiles(centmult, rndm);
829+
}
822830
for (uint l_ind = 0; l_ind < corrconfigs.size(); ++l_ind) {
823831
if (!corrconfigs.at(l_ind).pTDif) {
824832
auto dnx = fGFW->Calculate(corrconfigs.at(l_ind), 0, kTRUE).real();
@@ -883,7 +891,13 @@ struct FlowGfwLightIons {
883891
th1sList[run][hCent]->Fill(xaxis.centrality);
884892
}
885893
fGFW->Clear();
886-
(dt == kGen) ? fFCptgen->clearVector() : fFCpt->clearVector();
894+
if (dt == kGen) {
895+
fFCptgen->clearVector();
896+
fFCptgenFull->clearVector();
897+
} else {
898+
fFCpt->clearVector();
899+
fFCptFull->clearVector();
900+
}
887901

888902
float lRandom = fRndm->Rndm();
889903

@@ -1081,12 +1095,32 @@ struct FlowGfwLightIons {
10811095
template <DataType dt, typename TTrack>
10821096
inline void fillPtSums(TTrack track)
10831097
{
1098+
if (track.pt() < o2::analysis::gfw::ptreflow || track.pt() > o2::analysis::gfw::ptrefup)
1099+
return;
1100+
10841101
double weff = (dt == kGen) ? 1. : getEfficiency(track);
10851102
if (weff < 0)
10861103
return;
1087-
if (std::abs(track.eta()) < cfgEtaPtPt && track.pt() > o2::analysis::gfw::ptreflow && track.pt() < o2::analysis::gfw::ptrefup) {
1088-
(dt == kGen) ? fFCptgen->fill(1., track.pt()) : fFCpt->fill(weff, track.pt());
1104+
1105+
// Fill pt-pt correlations used in vn-pt correlations (gapped)
1106+
if (std::abs(track.eta()) < cfgEtaPtPt) {
1107+
if (dt == kGen) {
1108+
fFCptgen->fill(1., track.pt());
1109+
} else {
1110+
fFCpt->fill(weff, track.pt());
1111+
}
10891112
}
1113+
1114+
// Fill pt-pt correlations for entire eta range
1115+
if (std::abs(track.eta()) < cfgEtaPtPtFull)
1116+
(dt == kGen) ? fFCptgenFull->fill(1., track.pt()) : fFCptFull->fill(weff, track.pt());
1117+
1118+
// Fill pt-pt correlations in subevents
1119+
if (track.eta() < -cfgEtaPtPtGap && track.eta() > -cfgEtaPtPtFull)
1120+
(dt == kGen) ? fFCptgenFull->fillSub1(weff, track.pt()) : fFCptFull->fillSub1(weff, track.pt());
1121+
if (track.eta() > cfgEtaPtPtGap && track.eta() < cfgEtaPtPtFull)
1122+
(dt == kGen) ? fFCptgenFull->fillSub2(weff, track.pt()) : fFCptFull->fillSub2(weff, track.pt());
1123+
return;
10901124
}
10911125

10921126
template <DataType dt, QAFillTime ft, typename TTrack>

PWGEM/Dilepton/Core/DileptonProducer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -767,7 +767,7 @@ struct DileptonProducer {
767767
continue;
768768
}
769769

770-
normTable(collision.alias_raw(), collision.selection_raw(), collision.rct_raw(), collision.posZ(), collision.centFT0C());
770+
normTable(collision.selection_raw(), collision.rct_raw(), collision.posZ(), collision.centFT0C());
771771

772772
} // end of collision loop
773773
}

0 commit comments

Comments
 (0)