Skip to content

Commit 939807b

Browse files
committed
[PWGCF] Femto: wire the track-Lc pair task
1 parent a37914c commit 939807b

8 files changed

Lines changed: 138 additions & 42 deletions

PWGCF/Femto/Core/charmHadronBuilder.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -561,12 +561,12 @@ class CharmHadronBuilder
561561
if constexpr (modes::isEqual(hadronType, modes::CharmHadron::kD0) || modes::isEqual(hadronType, modes::CharmHadron::kD0Bar)) {
562562
auto prong0 = candidate.template prong0_as<T7>();
563563
auto prong1 = candidate.template prong1_as<T7>();
564-
564+
565565
collisionBuilder.template fillCollision<system>(collisionProducts, col);
566566

567567
int64_t posDauIndex = trackBuilder.template getDaughterIndex<modes::Track::kCharmDaughter>(prong0, trackProducts, collisionBuilder);
568568
int64_t negDauIndex = trackBuilder.template getDaughterIndex<modes::Track::kCharmDaughter>(prong1, trackProducts, collisionBuilder);
569-
569+
570570
if constexpr (modes::isEqual(hadronType, modes::CharmHadron::kD0)) {
571571
this->fillD0Tables(collisionProducts, charmHadronProducts, candidate, candidate.pt(), mHfHelper.invMassD0ToPiK(candidate), posDauIndex, negDauIndex);
572572
} else {
@@ -586,8 +586,8 @@ class CharmHadronBuilder
586586

587587
// remap the prong onto the accepted hypothesis so that the proton is always first
588588
bool const isPKPi = candidate.isSelLcToPKPi();
589-
auto const& protonProng = isPKPi ? prong0 : prong2;
590-
auto const& pionProng = isPKPi ? prong2 : prong0;
589+
auto const& protonProng = isPKPi ? prong0 : prong2;
590+
auto const& pionProng = isPKPi ? prong2 : prong0;
591591
float const mass = isPKPi ? mHfHelper.invMassLcToPKPi(candidate) : mHfHelper.invMassLcToPiKP(candidate);
592592
float const massCompeting = isPKPi ? mHfHelper.invMassLcToPiKP(candidate) : mHfHelper.invMassLcToPKPi(candidate);
593593

@@ -613,18 +613,18 @@ class CharmHadronBuilder
613613
if (!mCharmHadronSelection.checkFilters(candidate)) {
614614
continue;
615615
}
616-
616+
617617
mCharmHadronSelection.applySelections(candidate);
618618
if (!mCharmHadronSelection.passesAllRequiredSelections()) {
619619
continue;
620620
}
621-
621+
622622
if constexpr (modes::isEqual(hadronType, modes::CharmHadron::kD0) || modes::isEqual(hadronType, modes::CharmHadron::kD0Bar)) {
623623
auto prong0 = candidate.template prong0_as<T8>();
624624
auto prong1 = candidate.template prong1_as<T8>();
625-
625+
626626
collisionBuilder.template fillMcCollision<system>(collisionProducts, col, mcCols, mcProducts, mcBuilder);
627-
627+
628628
int64_t posDauIndex = trackBuilder.template getDaughterIndex<system, modes::Track::kCharmDaughter>(prong0, trackProducts, mcCols, collisionBuilder, mcParticles, mcBuilder, mcProducts);
629629
int64_t negDauIndex = trackBuilder.template getDaughterIndex<system, modes::Track::kCharmDaughter>(prong1, trackProducts, mcCols, collisionBuilder, mcParticles, mcBuilder, mcProducts);
630630

@@ -648,8 +648,8 @@ class CharmHadronBuilder
648648

649649
// remap the prongs onto the accepted hypothesis so that the proton is always first
650650
bool const isPKPi = candidate.isSelLcToPKPi();
651-
auto const& protonProng = isPKPi ? prong0 : prong2;
652-
auto const& pionProng = isPKPi ? prong2 : prong0;
651+
auto const& protonProng = isPKPi ? prong0 : prong2;
652+
auto const& pionProng = isPKPi ? prong2 : prong0;
653653
float const mass = isPKPi ? mHfHelper.invMassLcToPKPi(candidate) : mHfHelper.invMassLcToPiKP(candidate);
654654
float const massCompeting = isPKPi ? mHfHelper.invMassLcToPiKP(candidate) : mHfHelper.invMassLcToPKPi(candidate);
655655

@@ -664,7 +664,7 @@ class CharmHadronBuilder
664664
mcBuilder.template fillMcLcWithLabel<system>(candidate, tracks, mcParticles, mcCols, mcProducts);
665665
}
666666

667-
667+
668668
}
669669
}
670670

PWGCF/Femto/Core/charmHadronHistManager.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
#include <map>
3636
#include <string>
3737
#include <string_view>
38-
#include <utility>
3938
#include <vector>
4039

4140
namespace o2::analysis::femto::charmhadronhistmanager
@@ -50,7 +49,7 @@ enum CharmHadronHist {
5049
kPtVsEta,
5150
kPtVsPhi,
5251
kPhiVsEta,
53-
52+
5453
// mass under each hypothesis
5554
kMassD0,
5655
kMassD0bar,
@@ -67,7 +66,7 @@ enum CharmHadronHist {
6766
kCpaXY,
6867
kDecayLength,
6968
kDecayLengthXY,
70-
69+
7170
// topology, 2-prong only (D0)
7271
kImpactParameterProduct,
7372
kCosThetaStar,
@@ -119,7 +118,7 @@ constexpr const char PrefixD0Binning2[] = "D0Binning2";
119118
using ConfD0Binning1 = ConfCharmHadronBinning<PrefixD0Binning1>;
120119
using ConfD0Binning2 = ConfCharmHadronBinning<PrefixD0Binning2>;
121120

122-
constexpr const char PrefixLcBinning1[] = "LcBinning1";
121+
constexpr const char PrefixLcBinning1[] = "LcBinning1";
123122
using ConfLcBinning1 = ConfLcBinning<PrefixLcBinning1>;
124123

125124
template <auto& Prefix>
@@ -203,7 +202,7 @@ constexpr std::array<histmanager::HistInfo<CharmHadronHist>, kCharmHadronHistLas
203202
{kPhiVsEta, {(conf).phi2d, (conf).eta2d}},
204203

205204
template <typename T>
206-
auto makeD0HistSpecMap(const T& confBinningAnalysis)
205+
auto makeCharmHadronHistSpecMap(const T& confBinningAnalysis)
207206
{
208207
return std::map<CharmHadronHist, std::vector<o2::framework::AxisSpec>>{
209208
CHARMHADRON_HIST_ANALYSIS_MAP(confBinningAnalysis)};
@@ -219,7 +218,7 @@ auto makeD0HistSpecMap(const T& confBinningAnalysis)
219218
{kPtVsOrigin, {(conf).pt2d}},
220219

221220
template <typename T>
222-
auto makeD0McHistSpecMap(const T& confBinningAnalysis)
221+
auto makeCharmHadronMcHistSpecMap(const T& confBinningAnalysis)
223222
{
224223
return std::map<CharmHadronHist, std::vector<o2::framework::AxisSpec>>{
225224
CHARMHADRON_HIST_ANALYSIS_MAP(confBinningAnalysis)
@@ -321,7 +320,7 @@ class CharmHadronHistManager
321320
std::map<CharmHadronHist, std::vector<o2::framework::AxisSpec>> const& CharmHadronSpecs,
322321
T const& ConfCharmHadronSelection,
323322
std::map<trackhistmanager::TrackHist, std::vector<o2::framework::AxisSpec>> const& Prong0Specs,
324-
std::map<trackhistmanager::TrackHist, std::vector<o2::framework::AxisSpec>> const& Prong1Specs,
323+
std::map<trackhistmanager::TrackHist, std::vector<o2::framework::AxisSpec>> const& Prong1Specs,
325324
std::map<trackhistmanager::TrackHist, std::vector<o2::framework::AxisSpec>> const& Prong2Specs)
326325
{
327326
mHistogramRegistry = registry;

PWGCF/Femto/Core/mcBuilder.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ class McBuilder
273273
}
274274
}
275275
if (pdgAbs == o2::constants::physics::Pdg::kLambdaCPlus) {
276-
int8_t sign = 0;
276+
int8_t sign = 0;
277277
if (!RecoDecay::isMatchedMCGen(mcParticles, mcParticle, o2::constants::physics::Pdg::kLambdaCPlus, std::array{+kProton, -kKPlus, +kPiPlus}, true, &sign, 2)) {
278278
return;
279279
}
@@ -384,7 +384,7 @@ class McBuilder
384384
auto prong1 = lcCandidate.template prong1_as<T2>();
385385
auto prong2 = lcCandidate.template prong2_as<T2>();
386386
auto arrayDaughters = std::array{prong0, prong1, prong2};
387-
int8_t sign = 0;
387+
int8_t sign = 0;
388388
const int indexMcRec = RecoDecay::getMatchedMCRec(mcParticles, arrayDaughters, o2::constants::physics::Pdg::kLambdaCPlus, std::array{+kProton, -kKPlus, +kPiPlus}, true, &sign, 2);
389389

390390
if (indexMcRec < 0) {

PWGCF/Femto/Core/pairHistManager.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,8 @@ constexpr char PrefixTrackV0Me[] = "TrackV0/ME/";
498498

499499
constexpr char PrefixTrackD0Se[] = "TrackD0/SE/";
500500
constexpr char PrefixTrackD0Me[] = "TrackD0/ME/";
501+
constexpr char PrefixTrackLcSe[] = "TrackLc/SE/";
502+
constexpr char PrefixTrackLcMe[] = "TrackLc/ME/";
501503
constexpr char PrefixD0D0Se[] = "D0D0/SE/";
502504
constexpr char PrefixD0D0Me[] = "D0D0/ME/";
503505

@@ -710,8 +712,9 @@ class PairHistManager
710712

711713
if (mPlotDalitz) {
712714
if constexpr (modes::isEqual(particleType1, modes::Particle::kTrack) && (modes::isEqual(particleType2, modes::Particle::kV0) ||
713-
modes::isEqual(particleType2, modes::Particle::kTwoTrackResonance) ||
714-
modes::isEqual(particleType2, modes::Particle::kCharmHadron))) {
715+
modes::isEqual(particleType2, modes::Particle::kTwoTrackResonance) ||
716+
modes::isEqual(particleType2, modes::Particle::kCharmHadron)) &&
717+
requires(T2 p) { p.posDauId(); p.negDauId(); }) {
715718
auto posDaughter = trackTable.rawIteratorAt(particle2.posDauId() - trackTable.offset());
716719
auto negDaughter = trackTable.rawIteratorAt(particle2.negDauId() - trackTable.offset());
717720
ROOT::Math::PtEtaPhiMVector posDau4v = ROOT::Math::PtEtaPhiMVector(posDaughter.pt(), posDaughter.eta(), posDaughter.phi(), mPdgMassPosDau2);

PWGCF/Femto/Core/particleCleaner.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ constexpr const char PrefixD0Cleaner2[] = "D0Cleaner2";
5555
using ConfD0Cleaner1 = ConfParticleCleaner<PrefixD0Cleaner1>;
5656
using ConfD0Cleaner2 = ConfParticleCleaner<PrefixD0Cleaner2>;
5757

58+
constexpr const char PrefixLcCleaner1[] = "LcCleaner1";
59+
using ConfLcCleaner1 = ConfParticleCleaner<PrefixLcCleaner1>;
60+
5861
constexpr const char PrefixK0shortCleaner1[] = "K0shortCleaner1";
5962
constexpr const char PrefixK0shortCleaner2[] = "K0shortCleaner2";
6063
using ConfK0shortCleaner1 = ConfParticleCleaner<PrefixK0shortCleaner1>;

PWGCF/Femto/Tasks/femtoCharmHadronQa.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,15 @@ struct FemtoCharmHadronQa {
155155
if (doprocessD0) {
156156
posDaughterHistSpec = trackhistmanager::makeTrackQaHistSpecMap(confD01PosDaughterBinning, confD01PosDaughterQaBinning);
157157
negDaughterHistSpec = trackhistmanager::makeTrackQaHistSpecMap(confD01NegDaughterBinning, confD01NegDaughterQaBinning);
158-
d0HistSpec = charmhadronhistmanager::makeD0HistSpecMap(confD0Binning);
158+
d0HistSpec = charmhadronhistmanager::makeCharmHadronHistSpecMap(confD0Binning);
159159
d0QaHistSpec = charmhadronhistmanager::makeD0QaHistSpecMap(confD0QaBinning);
160160
d0HistManager.init<modes::Mode::kReco_Qa>(&hRegistry, d0HistSpec, d0QaHistSpec, confD0Selection, confD0QaBinning, posDaughterHistSpec, confD01PosDaughterQaBinning, negDaughterHistSpec, confD01NegDaughterQaBinning, negDaughterHistSpec, confD01NegDaughterQaBinning);
161161
}
162162
if (doprocessLc) {
163163
protonHistSpec = trackhistmanager::makeTrackQaHistSpecMap(confLc1ProtonDaughterBinning, confLc1ProtonDaughterQaBinning);
164164
kaonHistSpec = trackhistmanager::makeTrackQaHistSpecMap(confLc1KaonDaughterBinning, confLc1KaonDaughterQaBinning);
165165
pionHistSpec = trackhistmanager::makeTrackQaHistSpecMap(confLc1PionDaughterBinning, confLc1PionDaughterQaBinning);
166-
lcHistSpec = charmhadronhistmanager::makeD0HistSpecMap(confLcBinning);
166+
lcHistSpec = charmhadronhistmanager::makeCharmHadronHistSpecMap(confLcBinning);
167167
lcQaHistSpec = charmhadronhistmanager::makeLcQaHistSpecMap(confLcQaBinning);
168168
lcHistManager.init<modes::Mode::kReco_Qa>(&hRegistry, lcHistSpec, lcQaHistSpec, confLcSelection, confLcQaBinning, protonHistSpec, confLc1ProtonDaughterQaBinning, kaonHistSpec, confLc1KaonDaughterQaBinning, pionHistSpec, confLc1PionDaughterQaBinning);
169169
}

PWGCF/Femto/Tasks/femtoPairD0D0.cxx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,8 @@ struct FemtoPairD0D0 {
169169
negDauSpec1 = trackhistmanager::makeTrackHistSpecMap(confD01NegDauBinning);
170170
posDauSpec2 = trackhistmanager::makeTrackHistSpecMap(confD02PosDauBinning);
171171
negDauSpec2 = trackhistmanager::makeTrackHistSpecMap(confD02NegDauBinning);
172-
d0HistSpec1 = charmhadronhistmanager::makeD0HistSpecMap(confD0Binning1);
173-
d0HistSpec2 = charmhadronhistmanager::makeD0HistSpecMap(confD0Binning2);
172+
d0HistSpec1 = charmhadronhistmanager::makeCharmHadronHistSpecMap(confD0Binning1);
173+
d0HistSpec2 = charmhadronhistmanager::makeCharmHadronHistSpecMap(confD0Binning2);
174174
pairD0D0HistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confMixing);
175175
pairD0D0Builder.init<modes::Mode::kSe_Reco, modes::Mode::kMe_Reco>(&hRegistry, confCollisionBinning, confD0Selection1, confD0Selection2, confD0Cleaner1, confD0Cleaner2, confCprPos, confCprNeg, confMixing, confPairBinning, confPairCuts, colHistSpec, d0HistSpec1, d0HistSpec2, posDauSpec1, negDauSpec1, posDauSpec2, negDauSpec2, pairD0D0HistSpec, cprHistSpecPos, cprHistSpecNeg);
176176
} else {
@@ -179,8 +179,8 @@ struct FemtoPairD0D0 {
179179
negDauSpec1 = trackhistmanager::makeTrackMcHistSpecMap(confD01NegDauBinning);
180180
posDauSpec2 = trackhistmanager::makeTrackMcHistSpecMap(confD02PosDauBinning);
181181
negDauSpec2 = trackhistmanager::makeTrackMcHistSpecMap(confD02NegDauBinning);
182-
d0HistSpec1 = charmhadronhistmanager::makeD0McHistSpecMap(confD0Binning1);
183-
d0HistSpec2 = charmhadronhistmanager::makeD0McHistSpecMap(confD0Binning2);
182+
d0HistSpec1 = charmhadronhistmanager::makeCharmHadronMcHistSpecMap(confD0Binning1);
183+
d0HistSpec2 = charmhadronhistmanager::makeCharmHadronMcHistSpecMap(confD0Binning2);
184184
pairD0D0HistSpec = pairhistmanager::makePairMcHistSpecMap(confPairBinning, confMixing);
185185
pairD0D0Builder.init<modes::Mode::kSe_Reco_Mc, modes::Mode::kMe_Reco_Mc>(&hRegistry, confCollisionBinning, confD0Selection1, confD0Selection2, confD0Cleaner1, confD0Cleaner2, confCprPos, confCprNeg, confMixing, confPairBinning, confPairCuts, colHistSpec, d0HistSpec1, d0HistSpec2, posDauSpec1, negDauSpec1, posDauSpec2, negDauSpec2, pairD0D0HistSpec, cprHistSpecPos, cprHistSpecNeg);
186186
}

0 commit comments

Comments
 (0)