Skip to content

Commit 64bf3aa

Browse files
committed
restored Ds task
1 parent 2aa6faf commit 64bf3aa

File tree

1 file changed

+25
-94
lines changed

1 file changed

+25
-94
lines changed

PWGHF/D2H/Tasks/taskDs.cxx

Lines changed: 25 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,13 @@ struct HfTaskDs {
7676
Configurable<float> massDplusSignalMin{"massDplusSignalMin", 1.866, "min mass for Dplus signal"};
7777
Configurable<float> massDplusSignalMax{"massDplusSignalMax", 1.906, "max mass for Dplus signal"};
7878
Configurable<bool> fillPercentiles{"fillPercentiles", true, "Wheter to fill multiplicity axis with percentiles or raw information"};
79-
Configurable<bool> storeOccupancy{"storeOccupancy", false, "Flag to store occupancy information"};
8079

8180
ConfigurableAxis axisPt{"axisPt", {VARIABLE_WIDTH, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 8.f, 12.f, 24.f}, "axis for pT"};
82-
ConfigurableAxis axisPtBHad{"axisPtBHad", {25, 0., 50}, "axis for pt of B hadron decayed into D candidate"};
83-
ConfigurableAxis axisPdgBHad{"axisPdgBHad", {50, 500., 550}, "axis for PDG of B hadron"};
8481
ConfigurableAxis axisNPvContributors{"axisNPvContributors", {200, -0.5f, 199.5f}, "axis for NPvContributors"};
8582
ConfigurableAxis axisMlScore0{"axisMlScore0", {100, 0., 1.}, "axis for ML output score 0"};
8683
ConfigurableAxis axisMlScore1{"axisMlScore1", {100, 0., 1.}, "axis for ML output score 1"};
8784
ConfigurableAxis axisMlScore2{"axisMlScore2", {100, 0., 1.}, "axis for ML output score 2"};
8885
ConfigurableAxis axisCentrality{"axisCentrality", {100, 0., 1.}, "axis for centrality/multiplicity"};
89-
ConfigurableAxis axisOccupancy{"axisOccupancy", {100, 0., 1.}, "axis for occupancy"};
9086

9187
struct : ConfigurableGroup {
9288
Configurable<std::string> ccdburl{"ccdburl", "http://alice-ccdb.cern.ch", "The CCDB endpoint url address"};
@@ -160,47 +156,24 @@ struct HfTaskDs {
160156
}
161157

162158
AxisSpec ptbins{axisPt, "#it{p}_{T} (GeV/#it{c})"};
163-
AxisSpec ptBHad{axisPtBHad, "#it{p}_{T}(B) (GeV/#it{c})"};
164-
AxisSpec pdgBHad{axisPdgBHad, "PDG"};
165159
AxisSpec ybins = {100, -5., 5, "#it{y}"};
166160
AxisSpec massbins = {600, 1.67, 2.27, "inv. mass (KK#pi) (GeV/#it{c}^{2})"};
167161
AxisSpec centralitybins = {100, 0., 100., "Centrality"};
168-
AxisSpec occupancybins = {100, 0., 100., "Occupancy"};
169162

170163
histosPtr[DataType::Data]["hNPvContribAll"] = registry.add<TH2>((folders[DataType::Data] + "hNPvContribAll").c_str(), "3-prong candidates;NPvContributors;Centrality;Entries", HistType::kTH2F, {axisNPvContributors, {100, 0., 100}});
171164

172-
std::vector<AxisSpec> axes = {massbins, ptbins, centralitybins};
173-
std::vector<AxisSpec> axesMl = {massbins, ptbins, centralitybins, axisMlScore0, axisMlScore1, axisMlScore2};
174-
std::vector<AxisSpec> axesFd = {massbins, ptbins, centralitybins, ptBHad, pdgBHad};
175-
std::vector<AxisSpec> axesFdMl = {massbins, ptbins, centralitybins, axisMlScore0, axisMlScore1, axisMlScore2, ptBHad, pdgBHad};
176-
std::vector<AxisSpec> axesWithNpv = {massbins, ptbins, centralitybins, axisNPvContributors};
177-
std::vector<AxisSpec> axesWithNpvMl = {massbins, ptbins, centralitybins, axisNPvContributors, axisMlScore0, axisMlScore1, axisMlScore2};
178-
179-
if (storeOccupancy) {
180-
axes.insert(axes.end(), {occupancybins});
181-
axesMl.insert(axesMl.end(), {occupancybins});
182-
axesFd.insert(axesFd.end(), {occupancybins});
183-
axesFdMl.insert(axesFdMl.end(), {occupancybins});
184-
axesWithNpv.insert(axesWithNpv.end(), {occupancybins});
185-
axesWithNpvMl.insert(axesWithNpvMl.end(), {occupancybins});
186-
}
187-
188165
for (auto i = 0; i < DataType::kDataTypes; ++i) {
189166
if (doprocessDataWithCentFT0C || doprocessDataWithCentFT0M || doprocessDataWithCentNTracksPV || doprocessData || doprocessMcWithCentFT0C || doprocessMcWithCentFT0M || doprocessMcWithCentNTracksPV || doprocessMc) {
190167
if (i == DataType::Data) { // If data do not fill PV contributors in sparse
191-
histosPtr[i]["hSparseMass"] = registry.add<THnSparse>((folders[i] + "hSparseMass").c_str(), "THn for Ds", HistType::kTHnSparseF, axes);
192-
} else if (i == DataType::McDsNonPrompt) { // If data do not fill PV contributors in sparse
193-
histosPtr[i]["hSparseMass"] = registry.add<THnSparse>((folders[i] + "hSparseMass").c_str(), "THn for Ds", HistType::kTHnSparseF, axesFd);
168+
histosPtr[i]["hSparseMass"] = registry.add<THnSparse>((folders[i] + "hSparseMass").c_str(), "THn for Ds", HistType::kTHnSparseF, {massbins, ptbins, centralitybins});
194169
} else {
195-
histosPtr[i]["hSparseMass"] = registry.add<THnSparse>((folders[i] + "hSparseMass").c_str(), "THn for Ds", HistType::kTHnSparseF, axesWithNpv);
170+
histosPtr[i]["hSparseMass"] = registry.add<THnSparse>((folders[i] + "hSparseMass").c_str(), "THn for Ds", HistType::kTHnSparseF, {massbins, ptbins, centralitybins, axisNPvContributors});
196171
}
197172
} else if (doprocessDataWithMlAndCentFT0C || doprocessDataWithMlAndCentFT0M || doprocessDataWithMlAndCentNTracksPV || doprocessDataWithMl || doprocessMcWithMlAndCentFT0C || doprocessMcWithMlAndCentFT0M || doprocessMcWithMlAndCentNTracksPV || doprocessMcWithMl) {
198173
if (i == DataType::Data) { // If data do not fill PV contributors in sparse
199-
histosPtr[i]["hSparseMass"] = registry.add<THnSparse>((folders[i] + "hSparseMass").c_str(), "THn for Ds", HistType::kTHnSparseF, axesMl);
200-
} else if (i == DataType::McDsNonPrompt) { // If data do not fill PV contributors in sparse
201-
histosPtr[i]["hSparseMass"] = registry.add<THnSparse>((folders[i] + "hSparseMass").c_str(), "THn for Ds", HistType::kTHnSparseF, axesFdMl);
174+
histosPtr[i]["hSparseMass"] = registry.add<THnSparse>((folders[i] + "hSparseMass").c_str(), "THn for Ds", HistType::kTHnSparseF, {massbins, ptbins, centralitybins, axisMlScore0, axisMlScore1, axisMlScore2});
202175
} else {
203-
histosPtr[i]["hSparseMass"] = registry.add<THnSparse>((folders[i] + "hSparseMass").c_str(), "THn for Ds", HistType::kTHnSparseF, axesWithNpvMl);
176+
histosPtr[i]["hSparseMass"] = registry.add<THnSparse>((folders[i] + "hSparseMass").c_str(), "THn for Ds", HistType::kTHnSparseF, {massbins, ptbins, centralitybins, axisMlScore0, axisMlScore1, axisMlScore2, axisNPvContributors});
204177
}
205178
}
206179
histosPtr[i]["hNPvContribCands"] = registry.add<TH2>((folders[i] + "hNPvContribCands").c_str(), "3-prong candidates;NPvContributors;Centrality;Entries", HistType::kTH2F, {axisNPvContributors, centralitybins});
@@ -409,7 +382,7 @@ struct HfTaskDs {
409382
/// \param candidate is candidate
410383
/// \param dataType is data class, as defined in DataType enum
411384
/// \param finalState is either KKPi or PiKK, as defined in FinalState enum
412-
template <bool isMc, typename Coll, hasDsMlInfo Cand>
385+
template <typename Coll, hasDsMlInfo Cand>
413386
void fillSparse(const Cand& candidate, DataType dataType, FinalState finalState)
414387
{
415388
auto mass = finalState == FinalState::KKPi ? hfHelper.invMassDsToKKPi(candidate) : hfHelper.invMassDsToPiKK(candidate);
@@ -425,82 +398,41 @@ struct HfTaskDs {
425398
}
426399

427400
if (dataType == DataType::Data) { // If data do not fill PV contributors in sparse
428-
if (storeOccupancy) {
429-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), outputMl[0], outputMl[1], outputMl[2], candidate.template collision_as<Coll>().trackOccupancyInTimeRange());
430-
return;
431-
} else {
432-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), outputMl[0], outputMl[1], outputMl[2]);
433-
return;
434-
}
435-
}
436-
if constexpr (isMc) {
437-
if (dataType == DataType::McDsNonPrompt) { // If data do not fill PV contributors in sparse
438-
if (storeOccupancy) {
439-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), outputMl[0], outputMl[1], outputMl[2], candidate.ptBhadMotherPart(), abs(candidate.pdgBhadMotherPart()), candidate.template collision_as<Coll>().trackOccupancyInTimeRange());
440-
441-
return;
442-
} else {
443-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), outputMl[0], outputMl[1], outputMl[2], candidate.ptBhadMotherPart(), abs(candidate.pdgBhadMotherPart()));
444-
return;
445-
}
446-
}
447-
}
448-
if (storeOccupancy) {
449-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), outputMl[0], outputMl[1], outputMl[2], candidate.template collision_as<Coll>().numContrib(), candidate.template collision_as<Coll>().trackOccupancyInTimeRange());
450-
return;
451-
} else {
452-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), outputMl[0], outputMl[1], outputMl[2], candidate.template collision_as<Coll>().numContrib());
401+
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), outputMl[0], outputMl[1], outputMl[2]);
453402
return;
454403
}
404+
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), outputMl[0], outputMl[1], outputMl[2], candidate.template collision_as<Coll>().numContrib());
405+
406+
return;
455407
}
456408

457409
/// Fill mass sparse if ML information is not present
458410
/// \param candidate is candidate
459411
/// \param dataType is data class, as defined in DataType enum
460412
/// \param finalState is either KKPi or PiKK, as defined in FinalState enum
461-
template <bool isMc, typename Coll, typename Cand>
413+
template <typename Coll, typename Cand>
462414
void fillSparse(const Cand& candidate, DataType dataType, FinalState finalState)
463415
{
464416
auto mass = finalState == FinalState::KKPi ? hfHelper.invMassDsToKKPi(candidate) : hfHelper.invMassDsToPiKK(candidate);
465417
auto pt = candidate.pt();
466418

467419
if (dataType == DataType::Data) { // If data do not fill PV contributors in sparse
468-
if (storeOccupancy) {
469-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), candidate.template collision_as<Coll>().trackOccupancyInTimeRange());
470-
return;
471-
} else {
472-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate));
473-
return;
474-
}
475-
}
476-
if constexpr (isMc) {
477-
if (dataType == DataType::McDsNonPrompt) { // If data do not fill PV contributors in sparse
478-
if (storeOccupancy) {
479-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), candidate.ptBhadMotherPart(), abs(candidate.pdgBhadMotherPart()), candidate.template collision_as<Coll>().trackOccupancyInTimeRange());
480-
return;
481-
} else {
482-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), candidate.ptBhadMotherPart(), abs(candidate.pdgBhadMotherPart()));
483-
return;
484-
}
485-
}
486-
}
487-
if (storeOccupancy) {
488-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), candidate.template collision_as<Coll>().numContrib(), candidate.template collision_as<Coll>().trackOccupancyInTimeRange());
489-
return;
490-
} else {
491-
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), candidate.template collision_as<Coll>().numContrib());
420+
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate));
492421
return;
493422
}
423+
std::get<THnSparse_ptr>(histosPtr[dataType]["hSparseMass"])->Fill(mass, pt, evaluateCentralityCand<Coll>(candidate), candidate.template collision_as<Coll>().numContrib());
424+
425+
return;
494426
}
495427

496428
/// Fill histograms of quantities for the KKPi daugther-mass hypothesis
497429
/// \param candidate is candidate
498430
/// \param dataType is data class, as defined in DataType enum
499-
template <bool isMc, typename Coll, typename T1>
431+
template <typename Coll, typename T1>
500432
void fillHistoKKPi(const T1& candidate, DataType dataType)
501433
{
502434
auto pt = candidate.pt();
503-
fillSparse<isMc, Coll>(candidate, dataType, FinalState::KKPi);
435+
fillSparse<Coll>(candidate, dataType, FinalState::KKPi);
504436

505437
std::get<TH2_ptr>(histosPtr[dataType]["hCos3PiK"])->Fill(hfHelper.cos3PiKDsToKKPi(candidate), pt);
506438
std::get<TH2_ptr>(histosPtr[dataType]["hAbsCos3PiK"])->Fill(hfHelper.absCos3PiKDsToKKPi(candidate), pt);
@@ -513,11 +445,11 @@ struct HfTaskDs {
513445
/// Fill histograms of quantities for the PiKK daugther-mass hypothesis
514446
/// \param candidate is candidate
515447
/// \param dataType is data class, as defined in DataType enum
516-
template <bool isMc, typename Coll, typename T1>
448+
template <typename Coll, typename T1>
517449
void fillHistoPiKK(const T1& candidate, DataType dataType)
518450
{
519451
auto pt = candidate.pt();
520-
fillSparse<isMc, Coll>(candidate, dataType, FinalState::PiKK);
452+
fillSparse<Coll>(candidate, dataType, FinalState::PiKK);
521453

522454
std::get<TH2_ptr>(histosPtr[dataType]["hCos3PiK"])->Fill(hfHelper.cos3PiKDsToPiKK(candidate), pt);
523455
std::get<TH2_ptr>(histosPtr[dataType]["hAbsCos3PiK"])->Fill(hfHelper.absCos3PiKDsToPiKK(candidate), pt);
@@ -558,7 +490,7 @@ struct HfTaskDs {
558490

559491
if (candidate.isSelDsToKKPi() >= selectionFlagDs) { // KKPi
560492
fillHisto(candidate, dataType);
561-
fillHistoKKPi<true, Coll>(candidate, dataType);
493+
fillHistoKKPi<Coll>(candidate, dataType);
562494

563495
if (TESTBIT(candidate.isSelDsToKKPi(), aod::SelectionStep::RecoSkims)) {
564496
std::get<TH2_ptr>(histosPtr[dataType]["hPtVsYRecoSkim"])->Fill(pt, yCand);
@@ -572,7 +504,7 @@ struct HfTaskDs {
572504
}
573505
if (candidate.isSelDsToPiKK() >= selectionFlagDs) { // PiKK
574506
fillHisto(candidate, dataType);
575-
fillHistoPiKK<true, Coll>(candidate, dataType);
507+
fillHistoPiKK<Coll>(candidate, dataType);
576508

577509
if (TESTBIT(candidate.isSelDsToPiKK(), aod::SelectionStep::RecoSkims)) {
578510
std::get<TH2_ptr>(histosPtr[dataType]["hPtVsYRecoSkim"])->Fill(pt, yCand);
@@ -597,11 +529,11 @@ struct HfTaskDs {
597529

598530
if (candidate.isSelDsToKKPi() >= selectionFlagDs) { // KKPi
599531
fillHisto(candidate, DataType::Data);
600-
fillHistoKKPi<false, Coll>(candidate, DataType::Data);
532+
fillHistoKKPi<Coll>(candidate, DataType::Data);
601533
}
602534
if (candidate.isSelDsToPiKK() >= selectionFlagDs) { // PiKK
603535
fillHisto(candidate, DataType::Data);
604-
fillHistoPiKK<false, Coll>(candidate, DataType::Data);
536+
fillHistoPiKK<Coll>(candidate, DataType::Data);
605537
}
606538
}
607539

@@ -634,11 +566,11 @@ struct HfTaskDs {
634566
if (candidate.isSelDsToKKPi() >= selectionFlagDs || candidate.isSelDsToPiKK() >= selectionFlagDs) {
635567
if (candidate.isSelDsToKKPi() >= selectionFlagDs) { // KKPi
636568
fillHisto(candidate, DataType::McBkg);
637-
fillHistoKKPi<true, Coll>(candidate, DataType::McBkg);
569+
fillHistoKKPi<Coll>(candidate, DataType::McBkg);
638570
}
639571
if (candidate.isSelDsToPiKK() >= selectionFlagDs) { // PiKK
640572
fillHisto(candidate, DataType::McBkg);
641-
fillHistoPiKK<true, Coll>(candidate, DataType::McBkg);
573+
fillHistoPiKK<Coll>(candidate, DataType::McBkg);
642574
}
643575
}
644576
}
@@ -1046,5 +978,4 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
1046978
// Parse the metadata
1047979
metadataInfo.initMetadata(cfgc);
1048980
return WorkflowSpec{adaptAnalysisTask<HfTaskDs>(cfgc)};
1049-
}
1050-
981+
}

0 commit comments

Comments
 (0)