Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions PWGHF/D2H/Tasks/taskBs.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ using namespace o2::analysis;
using namespace o2::framework;
using namespace o2::aod::hf_cand_2prong;
using namespace o2::aod::hf_cand_3prong;
using namespace o2::aod::hf_cand_bs; // from CandidateReconstructionTables.h
using namespace o2::aod::hf_cand_bs; // from CandidateReconstructionTables.h
using namespace o2::analysis::hf_cuts_bs_to_ds_pi; // from SelectorCuts.h
using namespace o2::framework::expressions;

Expand Down Expand Up @@ -72,7 +72,7 @@ struct HfTaskBs {
registry.add("hImpParErr", "B^{0}_{s} candidates;B^{0}_{s} candidate impact parameter error (cm);entries", {HistType::kTH2F, {{100, -1., 1.}, axisPt}});
registry.add("hIPProd", "B^{0}_{s} candidates;B^{0}_{s} candidate impact parameter product;entries", {HistType::kTH2F, {{100, -0.5, 0.5}, axisPt}});
registry.add("hInvMassDs", "B^{0}_{s} candidates;prong0, D^{-}_{s} inv. mass (GeV/#it{c}^{2});entries", {HistType::kTH2F, {{500, 0, 5}, axisPt}});

registry.add("hPtGenSig", "B^{0}_{s} candidates (gen+rec);candidate #it{p}_{T}^{gen.} (GeV/#it{c});entries", {HistType::kTH1F, {{300, 0., 30.}}});
registry.add("hPtRecSig", "B^{0}_{s} candidates (matched);candidate #it{p}_{T} (GeV/#it{c});entries", {HistType::kTH1F, {{300, 0., 30.}}});
registry.add("hPtRecBg", "B^{0}_{s} candidates (unmatched);candidate #it{p}_{T} (GeV/#it{c});entries", {HistType::kTH1F, {{300, 0., 30.}}});
Expand All @@ -96,7 +96,7 @@ struct HfTaskBs {
registry.add("hImpParProdBsRecBg", "B^{0}_{s} candidates (unmatched);B^{0}_{s} candidate impact parameter product ;entries", {HistType::kTH2F, {{100, -0.01, 0.01}, axisPt}});
registry.add("hPtProng0RecSig", "B^{0}_{s} candidates (matched);prong 0 (D^{-}_{s}) #it{p}_{T} (GeV/#it{c});entries", {HistType::kTH2F, {{100, 0., 10.}, axisPt}});
registry.add("hPtProng0RecBg", "B^{0}_{s} candidates (unmatched);prong 0 (D^{-}_{s}) #it{p}_{T} (GeV/#it{c});entries", {HistType::kTH2F, {{100, 0., 10.}, axisPt}});
registry.add("hPtProng1RecSig", "B^{0}_{s} candidates (matched);prong 1 (#pi^{-}) #it{p}_{T} (GeV/#it{c});entries", {HistType::kTH2F, {{100, 0., 10.}, axisPt}});
registry.add("hPtProng1RecSig", "B^{0}_{s} candidates (matched);prong 1 (#pi^{-}) #it{p}_{T} (GeV/#it{c});entries", {HistType::kTH2F, {{100, 0., 10.}, axisPt}});
registry.add("hPtProng1RecBg", "B^{0}_{s} candidates (unmatched);prong 1 (#pi^{-}) #it{p}_{T} (GeV/#it{c});entries", {HistType::kTH2F, {{100, 0., 10.}, axisPt}});
registry.add("hd0Prong0RecSig", "B^{0}_{s} candidates (matched);prong 0 (D^{-}_{s}) DCAxy to prim. vertex (cm);entries", {HistType::kTH2F, {{200, -0.05, 0.05}, axisPt}});
registry.add("hd0Prong0RecBg", "B^{0}_{s} candidates (unmatched);prong 0 (D^{-}_{s}) DCAxy to prim. vertex (cm);entries", {HistType::kTH2F, {{200, -0.05, 0.05}, axisPt}});
Expand Down Expand Up @@ -240,7 +240,7 @@ struct HfTaskBs {
registry.fill(HIST("hDecLengthNormRecBg"), candidate.decayLengthXYNormalised(), ptCandBs);
registry.fill(HIST("hImpParProdBsRecBg"), candidate.impactParameterProduct(), ptCandBs);
registry.fill(HIST("hPtProng0RecBg"), candidate.ptProng0(), ptCandBs);
registry.fill(HIST("hPtProng1RecBg"), candidate.ptProng1(), ptCandBs);
registry.fill(HIST("hPtProng1RecBg"), candidate.ptProng1(), ptCandBs);
registry.fill(HIST("hd0Prong0RecBg"), candidate.impactParameter0(), ptCandBs);
registry.fill(HIST("hd0Prong1RecBg"), candidate.impactParameter1(), ptCandBs);
registry.fill(HIST("hCPADsRecBg"), candDs.cpa(), ptCandBs);
Expand Down Expand Up @@ -303,7 +303,6 @@ struct HfTaskBs {
registry.fill(HIST("hPtGenWithProngsInAcceptance"), ptParticle);
registry.fill(HIST("hEtaGenWithProngsInAcceptance"), particle.eta(), ptParticle);
registry.fill(HIST("hYGenWithProngsInAcceptance"), yParticle, ptParticle);

}
} // gen
} // process
Expand Down
2 changes: 1 addition & 1 deletion PWGHF/DataModel/CandidateReconstructionTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -1899,7 +1899,7 @@ enum DecayType { BsToDsPi };
enum DecayTypeMc : uint8_t { BsToDsPiToKKPiPi = 0,
PartlyRecoDecay,
OtherDecay,
NDecayTypeMc};
NDecayTypeMc };
// B0s(B0sbar) → Ds∓ π±
template <typename T>
auto ctBs(const T& candidate)
Expand Down
13 changes: 6 additions & 7 deletions PWGHF/TableProducer/candidateCreatorBs.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -227,9 +227,9 @@ struct HfCandidateCreatorBs {
array<float, 3> pVecKK = RecoDecay::pVec(pVec0, pVec1);
array<float, 3> pVecDs = RecoDecay::pVec(pVec0, pVec1, pVec2);
auto trackParCovKK = o2::dataformats::V0(df3.getPCACandidatePos(), pVecKK, df3.calcPCACovMatrixFlat(),
trackParCov0, trackParCov1, {0, 0}, {0, 0});
trackParCov0, trackParCov1, {0, 0}, {0, 0});
auto trackParCovDs = o2::dataformats::V0(df3.getPCACandidatePos(), pVecDs, df3.calcPCACovMatrixFlat(),
trackParCovKK, trackParCov2, {0, 0}, {0, 0});
trackParCovKK, trackParCov2, {0, 0}, {0, 0});

int indexTrack0 = track0.globalIndex();
int indexTrack1 = track1.globalIndex();
Expand Down Expand Up @@ -275,7 +275,7 @@ struct HfCandidateCreatorBs {
// propagate Ds and Pi to the Bs vertex
df2.propagateTracksToVertex();
// track.getPxPyPzGlo(pVec) modifies pVec of track
df2.getTrack(0).getPxPyPzGlo(pVecDs); // momentum of Ds at the Bs vertex
df2.getTrack(0).getPxPyPzGlo(pVecDs); // momentum of Ds at the Bs vertex
df2.getTrack(1).getPxPyPzGlo(pVecPion); // momentum of Pi at the Bs vertex

// calculate invariant mass and apply selection
Expand All @@ -284,7 +284,6 @@ struct HfCandidateCreatorBs {
continue;
}


// compute impact parameters of Ds and Pi
o2::dataformats::DCA dcaDs;
o2::dataformats::DCA dcaPion;
Expand All @@ -308,7 +307,7 @@ struct HfCandidateCreatorBs {
hPtDs->Fill(candDs.pt());
hCPADs->Fill(candDs.cpa());
hPtPion->Fill(trackPion.pt());

// fill the candidate table for the Bs here:
rowCandidateBase(thisCollId,
collision.posX(), collision.posY(), collision.posZ(),
Expand Down Expand Up @@ -365,8 +364,8 @@ struct HfCandidateCreatorBsExpressions {
candDs.prong2_as<aod::BigTracksMC>(),
candidate.prong1_as<aod::BigTracksMC>()};
auto arrayDaughtersDs = array{candDs.prong0_as<aod::BigTracksMC>(),
candDs.prong1_as<aod::BigTracksMC>(),
candDs.prong2_as<aod::BigTracksMC>()};
candDs.prong1_as<aod::BigTracksMC>(),
candDs.prong2_as<aod::BigTracksMC>()};

// Checking Bs0(bar) → Ds∓ π± → (K- K+ π∓) π±
indexRec = RecoDecay::getMatchedMCRec(particlesMc, arrayDaughtersBs, pdg::Code::kBS, array{-kKPlus, +kKPlus, -kPiPlus, +kPiPlus}, true, &sign, 3);
Expand Down
10 changes: 5 additions & 5 deletions PWGHF/TableProducer/candidateSelectorBsToDsPi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ using namespace o2::analysis::hf_cuts_bs_to_ds_pi; // from SelectorCuts.h
struct HfCandidateSelectorBsToDsPi {
Produces<aod::HfSelBsToDsPi> hfSelBsToDsPiCandidate; // table defined in CandidateSelectionTables.h

//Configurable<double> ptCandMin{"ptCandMin", 0., "Lower bound of candidate pT"};
//Configurable<double> ptCandMax{"ptCandMax", 50., "Upper bound of candidate pT"};
// Enable PID
// Configurable<double> ptCandMin{"ptCandMin", 0., "Lower bound of candidate pT"};
// Configurable<double> ptCandMax{"ptCandMax", 50., "Upper bound of candidate pT"};
// Enable PID
Configurable<bool> usePid{"usePid", true, "Switch for PID selection at track level"};
Configurable<bool> acceptPIDNotApplicable{"acceptPIDNotApplicable", true, "Switch to accept Status::PIDNotApplicable [(NotApplicable for one detector) and (NotApplicable or Conditional for the other)] in PID selection"};
// TPC PID
Expand Down Expand Up @@ -127,14 +127,14 @@ struct HfCandidateSelectorBsToDsPi {
if (activateQA) {
registry.fill(HIST("hSelections"), 1, ptCandBs);
}
//LOGF(info, "Bs candidate selection failed at hfflag check");
// LOGF(info, "Bs candidate selection failed at hfflag check");
continue;
}
SETBIT(statusBsToDsPi, SelectionStep::RecoSkims); // RecoSkims = 0 --> statusBsToDsPi = 1
if (activateQA) {
registry.fill(HIST("hSelections"), 2 + SelectionStep::RecoSkims, ptCandBs);
}

// topological cuts
if (!hf_sel_candidate_bs::selectionTopol(hfCandBs, cuts, binsPt)) {
hfSelBsToDsPiCandidate(statusBsToDsPi);
Expand Down