@@ -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