Skip to content

Commit e88b635

Browse files
authored
[PWGLF] Add Model Prediction Process in H-SCorrelation (#16045)
1 parent b27bfbd commit e88b635

1 file changed

Lines changed: 207 additions & 6 deletions

File tree

PWGLF/Tasks/Strangeness/hStrangeCorrelation.cxx

Lines changed: 207 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323

2424
#include "PWGLF/DataModel/LFHStrangeCorrelationTables.h"
2525
#include "PWGLF/DataModel/LFStrangenessTables.h"
26+
#include "PWGLF/DataModel/mcCentrality.h"
27+
#include "PWGLF/Utils/inelGt.h"
2628

2729
#include "Common/CCDB/EventSelectionParams.h"
2830
#include "Common/Core/RecoDecay.h"
@@ -87,6 +89,7 @@ struct HStrangeCorrelation {
8789
Service<o2::ccdb::BasicCCDBManager> ccdb;
8890

8991
Service<o2::framework::O2DatabasePDG> pdgDB;
92+
o2::pwglf::ParticleCounter<o2::framework::O2DatabasePDG> mCounter;
9093

9194
HistogramRegistry histos{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};
9295

@@ -121,6 +124,8 @@ struct HStrangeCorrelation {
121124
Configurable<bool> doMCassociation{"doMCassociation", false, "fill everything only for MC associated"};
122125
Configurable<bool> doTriggPhysicalPrimary{"doTriggPhysicalPrimary", false, "require physical primary for trigger particles"};
123126
Configurable<bool> applyNewMCSelection{"applyNewMCSelection", false, "apply new MC Generated selection"};
127+
Configurable<bool> doSeparateFT0Prediction{"doSeparateFT0Prediction", false, "separate FT0M to FT0A and FT0C in prediction process"};
128+
Configurable<bool> useCentralityinPrediction{"useCentralityinPrediction", false, "if true, use centrality instead of multiplisity"};
124129
} masterConfigurations;
125130

126131
// master analysis switches
@@ -154,8 +159,9 @@ struct HStrangeCorrelation {
154159
ConfigurableAxis axisPtAssoc{"axisPtAssoc", {VARIABLE_WIDTH, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0, 10.0}, "pt associated axis for histograms"};
155160
ConfigurableAxis axisPtTrigger{"axisPtTrigger", {VARIABLE_WIDTH, 0.0, 1.0, 2.0, 3.0, 100}, "pt associated axis for histograms"};
156161
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"};
157-
ConfigurableAxis axisMultCount{"axisMultCount", {VARIABLE_WIDTH, 0, 200, 400, 600, 800, 1000, 1400, 1800, 2300, 2800, 3300, 4000, 5000, 6000}, "Mixing bins - multiplicity"};
158162
ConfigurableAxis axisMassNSigma{"axisMassNSigma", {40, -2, 2}, "Axis for mass Nsigma"};
163+
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"};
164+
159165
} axesConfigurations;
160166

161167
// for topo var QA
@@ -253,7 +259,7 @@ struct HStrangeCorrelation {
253259
} cascadeSelections;
254260

255261
struct : ConfigurableGroup {
256-
std::string prefix = "`";
262+
std::string prefix = "checks";
257263
// cascade selections
258264
// more cascade selections in PbPb
259265
// Configurable<float> bachBaryonCosPA{"bachBaryonCosPA", 0.9999, "Bachelor baryon CosPA"};
@@ -1568,6 +1574,7 @@ struct HStrangeCorrelation {
15681574
const AxisSpec preAxisMult{axesConfigurations.axisMult, "mult percentile"};
15691575
const AxisSpec axisPtLambda{axesConfigurations.axisPtAssoc, "#it{p}_{T}^{#Lambda} (GeV/c)"};
15701576
const AxisSpec axisPtCascade{axesConfigurations.axisPtAssoc, "#it{p}_{T}^{Mother} (GeV/c)"};
1577+
const AxisSpec preAxisMultiplicity{axesConfigurations.axisMultiplicity, "multiplicity"};
15711578

15721579
// store the original axes in specific TH1Cs for completeness
15731580
histos.add("axes/hDeltaPhiAxis", "", kTH1C, {preAxisDeltaPhi});
@@ -1576,34 +1583,39 @@ struct HStrangeCorrelation {
15761583
histos.add("axes/hPtTriggerAxis", "", kTH1C, {preAxisPtTrigger});
15771584
histos.add("axes/hVertexZAxis", "", kTH1C, {preAxisVtxZ});
15781585
histos.add("axes/hMultAxis", "", kTH1C, {preAxisMult});
1586+
histos.add("axes/hMultiplicityAxis", "", kTH1C, {preAxisMultiplicity});
15791587

15801588
std::vector<double> edgesDeltaPhiOrig = preAxisDeltaPhi.binEdges;
15811589
std::vector<double> edgesDeltaEtaOrig = preAxisDeltaEta.binEdges;
15821590
std::vector<double> edgesPtAssocOrig = preAxisPtAssoc.binEdges;
15831591
std::vector<double> edgesPtTriggerOrig = preAxisPtTrigger.binEdges;
15841592
std::vector<double> edgesVtxZOrig = preAxisVtxZ.binEdges;
15851593
std::vector<double> edgesMultOrig = preAxisMult.binEdges;
1594+
std::vector<double> edgesMultiplicityOrig = preAxisMultiplicity.binEdges;
15861595

15871596
std::vector<float> rangesDeltaPhi = {static_cast<float>(edgesDeltaPhiOrig[0]), static_cast<float>(edgesDeltaPhiOrig[edgesDeltaPhiOrig.size() - 1])};
15881597
std::vector<float> rangesDeltaEta = {static_cast<float>(edgesDeltaEtaOrig[0]), static_cast<float>(edgesDeltaEtaOrig[edgesDeltaEtaOrig.size() - 1])};
15891598
std::vector<float> rangesPtAssoc = {static_cast<float>(edgesPtAssocOrig[0]), static_cast<float>(edgesPtAssocOrig[edgesPtAssocOrig.size() - 1])};
15901599
std::vector<float> rangesPtTrigger = {static_cast<float>(edgesPtTriggerOrig[0]), static_cast<float>(edgesPtTriggerOrig[edgesPtTriggerOrig.size() - 1])};
15911600
std::vector<float> rangesVtxZ = {static_cast<float>(edgesVtxZOrig[0]), static_cast<float>(edgesVtxZOrig[edgesVtxZOrig.size() - 1])};
15921601
std::vector<float> rangesMult = {static_cast<float>(edgesMultOrig[0]), static_cast<float>(edgesMultOrig[edgesMultOrig.size() - 1])};
1602+
std::vector<float> rangesMultiplicity = {static_cast<float>(edgesMultiplicityOrig[0]), static_cast<float>(edgesMultiplicityOrig[edgesMultiplicityOrig.size() - 1])};
15931603

15941604
axisRanges.emplace_back(rangesDeltaPhi);
15951605
axisRanges.emplace_back(rangesDeltaEta);
15961606
axisRanges.emplace_back(rangesPtAssoc);
15971607
axisRanges.emplace_back(rangesPtTrigger);
15981608
axisRanges.emplace_back(rangesVtxZ);
15991609
axisRanges.emplace_back(rangesMult);
1610+
axisRanges.emplace_back(rangesMultiplicity);
16001611

16011612
std::vector<double> edgesDeltaPhi;
16021613
std::vector<double> edgesDeltaEta;
16031614
std::vector<double> edgesPtAssoc;
16041615
std::vector<double> edgesPtTrigger;
16051616
std::vector<double> edgesVtxZ;
16061617
std::vector<double> edgesMult;
1618+
std::vector<double> edgesMultiplicity;
16071619

16081620
// v--- skipUnderOverflowInTHn ---v
16091621
//
@@ -1688,25 +1700,39 @@ struct HStrangeCorrelation {
16881700
for (int i = offset; i < preAxisMult.nBins.value() + 1 - offset; i++)
16891701
edgesMult.emplace_back(min + static_cast<double>(i) * delta);
16901702
}
1703+
// ===] multiplicity count [===
1704+
if (!preAxisMultiplicity.nBins.has_value()) {
1705+
// variable binning, use bins provided
1706+
for (int i = offset; i < static_cast<int>(edgesMultiplicityOrig.size()) - offset; i++)
1707+
edgesMultiplicity.emplace_back(edgesMultiplicityOrig[i]);
1708+
} else {
1709+
// fixed binning, generate the bin edges on-the-spot
1710+
double min = edgesMultiplicityOrig[0];
1711+
double delta = (edgesMultiplicityOrig[1] - edgesMultiplicityOrig[0]) / preAxisMultiplicity.nBins.value();
1712+
for (int i = offset; i < preAxisMultiplicity.nBins.value() + 1 - offset; i++)
1713+
edgesMultiplicity.emplace_back(min + static_cast<double>(i) * delta);
1714+
}
16911715

16921716
LOGF(info, "Initialized THnF axis delta-phi with %i bins.", edgesDeltaPhi.size() - 1);
16931717
LOGF(info, "Initialized THnF axis delta-eta with %i bins.", edgesDeltaEta.size() - 1);
16941718
LOGF(info, "Initialized THnF axis pTassoc with %i bins.", edgesPtAssoc.size() - 1);
16951719
LOGF(info, "Initialized THnF axis pTtrigger with %i bins.", edgesPtTrigger.size() - 1);
16961720
LOGF(info, "Initialized THnF axis vertex-Z with %i bins.", edgesVtxZ.size() - 1);
1697-
LOGF(info, "Initialized THnF axis multiplicity with %i bins.", edgesMult.size() - 1);
1721+
LOGF(info, "Initialized THnF axis mult cent with %i bins.", edgesMult.size() - 1);
1722+
LOGF(info, "Initialized THnF axis multiplicity with %i bins.", edgesMultiplicity.size() - 1);
16981723

16991724
const AxisSpec axisDeltaPhiNDim{edgesDeltaPhi, "#Delta#varphi"};
17001725
const AxisSpec axisDeltaEtaNDim{edgesDeltaEta, "#Delta#eta"};
17011726
const AxisSpec axisPtAssocNDim{edgesPtAssoc, "#it{p}_{T}^{assoc} (GeV/c)"};
17021727
const AxisSpec axisPtTriggerNDim{edgesPtTrigger, "#it{p}_{T}^{trigger} (GeV/c)"};
17031728
const AxisSpec axisVtxZNDim{edgesVtxZ, "vertex Z (cm)"};
17041729
const AxisSpec axisMultNDim{edgesMult, "mult percentile"};
1730+
const AxisSpec axisMultiplicityNDim{edgesMultiplicity, "Multiplicity"};
17051731

17061732
if (doprocessMixedEventHV0sInBuffer || doprocessMixedEventHCascadesInBuffer) {
17071733
validCollisions.resize(histos.get<TH1>(HIST("axes/hMultAxis"))->GetNbinsX() * histos.get<TH1>(HIST("axes/hVertexZAxis"))->GetNbinsX());
1708-
for (std::vector<ValidCollision>& inner_vec : validCollisions) {
1709-
inner_vec.reserve(masterConfigurations.mixingParameter);
1734+
for (size_t i = 0; i < validCollisions.size(); ++i) {
1735+
validCollisions[i].reserve(masterConfigurations.mixingParameter);
17101736
}
17111737
}
17121738
if (!masterConfigurations.doPPAnalysis) {
@@ -1882,7 +1908,31 @@ struct HStrangeCorrelation {
18821908
histos.add("GeneratedWithPV/hAntiLambdaFromXiZero", "", kTH2F, {axesConfigurations.axisPtQA, axesConfigurations.axisEta});
18831909
histos.add("GeneratedWithPV/hAntiLambdaFromXiPlus", "", kTH2F, {axesConfigurations.axisPtQA, axesConfigurations.axisEta});
18841910
}
1885-
1911+
if (doprocessPrediction) {
1912+
mCounter.mPdgDatabase = pdgDB.service;
1913+
mCounter.mSelectPrimaries = doAssocPhysicalPrimary.value;
1914+
histos.add("Prediction/hEventSelection", "hEventSelection", kTH1F, {{3, 0, 3}});
1915+
TString eventSelLabel[] = {"Read", "INELgt0", "|Z|<10"};
1916+
for (int i = 1; i <= histos.get<TH1>(HIST("Prediction/hEventSelection"))->GetNbinsX(); i++) {
1917+
histos.get<TH1>(HIST("Prediction/hEventSelection"))->GetXaxis()->SetBinLabel(i, eventSelLabel[i - 1]);
1918+
}
1919+
histos.add("Prediction/hTrigger", "Trigger Tracks", kTH3F, {axesConfigurations.axisPtQA, axesConfigurations.axisEta, axesConfigurations.axisPhi});
1920+
for (int i = 0; i < AssocParticleTypes; i++) {
1921+
if (TESTBIT(doCorrelation, i))
1922+
histos.add(fmt::format("Prediction/h{}", Particlenames[i]).c_str(), "", kTH3F, {axesConfigurations.axisPtQA, axesConfigurations.axisEta, axesConfigurations.axisPhi});
1923+
if (masterConfigurations.useCentralityinPrediction) {
1924+
if (TESTBIT(doCorrelation, i))
1925+
histos.add(fmt::format("Prediction/sameEvent/{}", Particlenames[i]).c_str(), "", kTHnF, {axisDeltaPhiNDim, axisDeltaEtaNDim, axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultNDim});
1926+
} else {
1927+
if (TESTBIT(doCorrelation, i))
1928+
histos.add(fmt::format("Prediction/sameEvent/{}", Particlenames[i]).c_str(), "", kTHnF, {axisDeltaPhiNDim, axisDeltaEtaNDim, axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultiplicityNDim});
1929+
}
1930+
}
1931+
if (masterConfigurations.doSeparateFT0Prediction) {
1932+
histos.addClone("Prediction/sameEvent/", "Prediction/sameEventFT0A/");
1933+
histos.addClone("Prediction/sameEvent/", "Prediction/sameEventFT0C/");
1934+
}
1935+
}
18861936
// visual inspection of sizes
18871937
histos.print();
18881938

@@ -3226,6 +3276,156 @@ struct HStrangeCorrelation {
32263276
if (masterConfigurations.doFullCorrelationStudy)
32273277
fillCorrelationsCascade(triggerTracks, associatedCascades, true, true, collision.posX(), collision.posY(), collision.posZ(), cent, bField);
32283278
}
3279+
void processPrediction(soa::Join<aod::McCollisions, aod::McCentFT0Ms, aod::McCentFT0Cs, aod::McCentFT0As>::iterator const& mcCollision, aod::McParticles const& mcParticles)
3280+
{
3281+
std::vector<uint32_t> triggerIndices;
3282+
std::vector<std::vector<uint32_t>> associatedIndices;
3283+
std::vector<uint32_t> assocHadronIndices;
3284+
std::vector<uint32_t> piIndices;
3285+
std::vector<uint32_t> k0ShortIndices;
3286+
std::vector<uint32_t> lambdaIndices;
3287+
std::vector<uint32_t> antiLambdaIndices;
3288+
std::vector<uint32_t> xiMinusIndices;
3289+
std::vector<uint32_t> xiPlusIndices;
3290+
std::vector<uint32_t> omegaMinusIndices;
3291+
std::vector<uint32_t> omegaPlusIndices;
3292+
float centMultFT0M = -1;
3293+
float centMultFT0A = -1;
3294+
float centMultFT0C = -1;
3295+
float multFT0M = -1;
3296+
float multFT0A = -1;
3297+
float multFT0C = -1;
3298+
histos.fill(HIST("Prediction/hEventSelection"), 0.5);
3299+
if (masterConfigurations.selectINELgtZERO && !o2::pwglf::isINELgt0mc(mcParticles, pdgDB)) {
3300+
return;
3301+
}
3302+
histos.fill(HIST("Prediction/hEventSelection"), 1.5);
3303+
if (std::abs(mcCollision.posZ()) > masterConfigurations.zVertexCut) {
3304+
return;
3305+
}
3306+
histos.fill(HIST("Prediction/hEventSelection"), 2.5);
3307+
if (masterConfigurations.useCentralityinPrediction) {
3308+
centMultFT0M = mcCollision.centFT0M();
3309+
centMultFT0A = mcCollision.centFT0A();
3310+
centMultFT0C = mcCollision.centFT0C();
3311+
} else {
3312+
multFT0M = mCounter.countFT0A(mcParticles) + mCounter.countFT0C(mcParticles);
3313+
multFT0A = mCounter.countFT0A(mcParticles);
3314+
multFT0C = mCounter.countFT0C(mcParticles);
3315+
}
3316+
int iteratorNum = -1;
3317+
for (auto const& mcParticle : mcParticles) {
3318+
iteratorNum = iteratorNum + 1;
3319+
double geta = mcParticle.eta();
3320+
double gpt = mcParticle.pt();
3321+
double gphi = mcParticle.phi();
3322+
if (std::abs(geta) > etaSel) {
3323+
continue;
3324+
}
3325+
if (std::abs(mcParticle.pdgCode()) == PDG_t::kPiPlus || std::abs(mcParticle.pdgCode()) == PDG_t::kKPlus || std::abs(mcParticle.pdgCode()) == PDG_t::kProton || std::abs(mcParticle.pdgCode()) == PDG_t::kElectron || std::abs(mcParticle.pdgCode()) == PDG_t::kMuonMinus) {
3326+
if (!masterConfigurations.doTriggPhysicalPrimary || mcParticle.isPhysicalPrimary()) {
3327+
triggerIndices.emplace_back(iteratorNum);
3328+
histos.fill(HIST("Prediction/hTrigger"), gpt, geta, gphi);
3329+
}
3330+
if (masterConfigurations.doCorrelationHadron) {
3331+
if (!doAssocPhysicalPrimary || mcParticle.isPhysicalPrimary()) {
3332+
assocHadronIndices.emplace_back(iteratorNum);
3333+
histos.fill(HIST("Prediction/hHadron"), gpt, geta, gphi);
3334+
}
3335+
}
3336+
}
3337+
if (!doAssocPhysicalPrimary || mcParticle.isPhysicalPrimary()) {
3338+
if (std::abs(mcParticle.pdgCode()) == PDG_t::kPiPlus && masterConfigurations.doCorrelationPion) {
3339+
piIndices.emplace_back(iteratorNum);
3340+
histos.fill(HIST("Prediction/hPion"), gpt, geta, gphi);
3341+
}
3342+
if (mcParticle.pdgCode() == PDG_t::kK0Short && masterConfigurations.doCorrelationK0Short) {
3343+
k0ShortIndices.emplace_back(iteratorNum);
3344+
histos.fill(HIST("Prediction/hK0Short"), gpt, geta, gphi);
3345+
}
3346+
if (mcParticle.pdgCode() == PDG_t::kLambda0 && masterConfigurations.doCorrelationLambda) {
3347+
lambdaIndices.emplace_back(iteratorNum);
3348+
histos.fill(HIST("Prediction/hLambda"), gpt, geta, gphi);
3349+
}
3350+
if (mcParticle.pdgCode() == PDG_t::kLambda0Bar && masterConfigurations.doCorrelationAntiLambda) {
3351+
antiLambdaIndices.emplace_back(iteratorNum);
3352+
histos.fill(HIST("Prediction/hAntiLambda"), gpt, geta, gphi);
3353+
}
3354+
if (mcParticle.pdgCode() == PDG_t::kXiMinus && masterConfigurations.doCorrelationXiMinus) {
3355+
xiMinusIndices.emplace_back(iteratorNum);
3356+
histos.fill(HIST("Prediction/hXiMinus"), gpt, geta, gphi);
3357+
}
3358+
if (mcParticle.pdgCode() == PDG_t::kXiPlusBar && masterConfigurations.doCorrelationXiPlus) {
3359+
xiPlusIndices.emplace_back(iteratorNum);
3360+
histos.fill(HIST("Prediction/hXiPlus"), gpt, geta, gphi);
3361+
}
3362+
if (mcParticle.pdgCode() == PDG_t::kOmegaMinus && masterConfigurations.doCorrelationOmegaMinus) {
3363+
omegaMinusIndices.emplace_back(iteratorNum);
3364+
histos.fill(HIST("Prediction/hOmegaMinus"), gpt, geta, gphi);
3365+
}
3366+
if (mcParticle.pdgCode() == PDG_t::kOmegaPlusBar && masterConfigurations.doCorrelationOmegaPlus) {
3367+
omegaPlusIndices.emplace_back(iteratorNum);
3368+
histos.fill(HIST("Prediction/hOmegaPlus"), gpt, geta, gphi);
3369+
}
3370+
}
3371+
}
3372+
3373+
associatedIndices.emplace_back(k0ShortIndices);
3374+
associatedIndices.emplace_back(lambdaIndices);
3375+
associatedIndices.emplace_back(antiLambdaIndices);
3376+
associatedIndices.emplace_back(xiMinusIndices);
3377+
associatedIndices.emplace_back(xiPlusIndices);
3378+
associatedIndices.emplace_back(omegaMinusIndices);
3379+
associatedIndices.emplace_back(omegaPlusIndices);
3380+
associatedIndices.emplace_back(piIndices);
3381+
associatedIndices.emplace_back(assocHadronIndices);
3382+
for (std::size_t iTrigger = 0; iTrigger < triggerIndices.size(); iTrigger++) {
3383+
auto triggerParticle = mcParticles.iteratorAt(triggerIndices[iTrigger]);
3384+
// check range of trigger particle
3385+
if (triggerParticle.pt() > axisRanges[3][1] || triggerParticle.pt() < axisRanges[3][0]) {
3386+
continue;
3387+
}
3388+
double getatrigger = triggerParticle.eta();
3389+
double gphitrigger = triggerParticle.phi();
3390+
double pttrigger = triggerParticle.pt();
3391+
auto const& mother = triggerParticle.mothers_first_as<aod::McParticles>();
3392+
auto globalIndex = mother.globalIndex();
3393+
static_for<0, 8>([&](auto i) { // associated loop
3394+
constexpr int Index = i.value;
3395+
for (std::size_t iassoc = 0; iassoc < associatedIndices[Index].size(); iassoc++) {
3396+
auto assocParticle = mcParticles.iteratorAt(associatedIndices[Index][iassoc]);
3397+
if (triggerIndices[iTrigger] != associatedIndices[Index][iassoc] && globalIndex != assocParticle.globalIndex()) { // avoid self
3398+
double getaassoc = assocParticle.eta();
3399+
double gphiassoc = assocParticle.phi();
3400+
double ptassoc = assocParticle.pt();
3401+
double deltaphi = computeDeltaPhi(gphitrigger, gphiassoc);
3402+
double deltaeta = getatrigger - getaassoc;
3403+
3404+
// skip if basic ranges not met
3405+
if (deltaphi < axisRanges[0][0] || deltaphi > axisRanges[0][1])
3406+
continue;
3407+
if (deltaeta < axisRanges[1][0] || deltaeta > axisRanges[1][1])
3408+
continue;
3409+
if (ptassoc < axisRanges[2][0] || ptassoc > axisRanges[2][1])
3410+
continue;
3411+
if (TESTBIT(doCorrelation, i)) {
3412+
if (masterConfigurations.useCentralityinPrediction) {
3413+
histos.fill(HIST("Prediction/sameEvent/") + HIST(Particlenames[Index]), computeDeltaPhi(gphitrigger, gphiassoc), deltaeta, ptassoc, pttrigger, mcCollision.posZ(), centMultFT0M);
3414+
if (masterConfigurations.doSeparateFT0Prediction)
3415+
histos.fill(HIST("Prediction/sameEventFT0A/") + HIST(Particlenames[Index]), computeDeltaPhi(gphitrigger, gphiassoc), deltaeta, ptassoc, pttrigger, mcCollision.posZ(), centMultFT0A);
3416+
histos.fill(HIST("Prediction/sameEventFT0C/") + HIST(Particlenames[Index]), computeDeltaPhi(gphitrigger, gphiassoc), deltaeta, ptassoc, pttrigger, mcCollision.posZ(), centMultFT0C);
3417+
} else {
3418+
histos.fill(HIST("Prediction/sameEvent/") + HIST(Particlenames[Index]), computeDeltaPhi(gphitrigger, gphiassoc), deltaeta, ptassoc, pttrigger, mcCollision.posZ(), multFT0M);
3419+
if (masterConfigurations.doSeparateFT0Prediction)
3420+
histos.fill(HIST("Prediction/sameEventFT0A/") + HIST(Particlenames[Index]), computeDeltaPhi(gphitrigger, gphiassoc), deltaeta, ptassoc, pttrigger, mcCollision.posZ(), multFT0A);
3421+
histos.fill(HIST("Prediction/sameEventFT0C/") + HIST(Particlenames[Index]), computeDeltaPhi(gphitrigger, gphiassoc), deltaeta, ptassoc, pttrigger, mcCollision.posZ(), multFT0C);
3422+
}
3423+
}
3424+
}
3425+
}
3426+
});
3427+
}
3428+
}
32293429
PROCESS_SWITCH(HStrangeCorrelation, processSelectEventWithTrigger, "Select events with trigger only", true);
32303430
PROCESS_SWITCH(HStrangeCorrelation, processSameEventHV0s, "Process same events, h-V0s", true);
32313431
PROCESS_SWITCH(HStrangeCorrelation, processSameEventHCascades, "Process same events, h-Cascades", true);
@@ -3242,6 +3442,7 @@ struct HStrangeCorrelation {
32423442
PROCESS_SWITCH(HStrangeCorrelation, processMCGenerated, "Process MC generated", false);
32433443
PROCESS_SWITCH(HStrangeCorrelation, processClosureTest, "Process Closure Test", false);
32443444
PROCESS_SWITCH(HStrangeCorrelation, processFeedDown, "process Feed Down", false);
3445+
PROCESS_SWITCH(HStrangeCorrelation, processPrediction, "process model prediction", false);
32453446
};
32463447

32473448
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)