Skip to content
Open
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
66 changes: 34 additions & 32 deletions PWGDQ/Core/VarManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@

#include "PWGUD/Core/UDHelpers.h"
#include "PWGUD/Core/UPCHelpers.h"
//
#include "PWGHF/Core/HfHelper.h"

#include "Common/CCDB/EventSelectionParams.h"
#include "Common/CCDB/TriggerAliases.h"
Expand Down Expand Up @@ -1562,10 +1564,10 @@ class VarManager : public TObject
static void FillDileptonPhoton(T1 const& dilepton, T2 const& photon, float* values = nullptr);
template <typename T>
static void FillHadron(T const& hadron, float* values = nullptr, float hadronMass = 0.0f);
template <int partType, typename Cand, typename H, typename T>
static void FillSingleDileptonCharmHadron(Cand const& candidate, H hfHelper, T& bdtScoreCharmHad, float* values = nullptr);
template <int partTypeCharmHad, typename DQ, typename HF, typename H, typename T>
static void FillDileptonCharmHadron(DQ const& dilepton, HF const& charmHadron, H hfHelper, T& bdtScoreCharmHad, float* values = nullptr);
template <int partType, typename Cand, typename T>
static void FillSingleDileptonCharmHadron(Cand const& candidate, T& bdtScoreCharmHad, float* values = nullptr);
template <int partTypeCharmHad, typename DQ, typename HF, typename T>
static void FillDileptonCharmHadron(DQ const& dilepton, HF const& charmHadron, T& bdtScoreCharmHad, float* values = nullptr);
template <typename C, typename A>
static void FillQVectorFromGFW(C const& collision, A const& compA11, A const& compB11, A const& compC11, A const& compA21, A const& compB21, A const& compC21, A const& compA31, A const& compB31, A const& compC31, A const& compA41, A const& compB41, A const& compC41, A const& compA23, A const& compA42, float S10A = 1.0, float S10B = 1.0, float S10C = 1.0, float S11A = 1.0, float S11B = 1.0, float S11C = 1.0, float S12A = 1.0, float S13A = 1.0, float S14A = 1.0, float S21A = 1.0, float S22A = 1.0, float S31A = 1.0, float S41A = 1.0, float* values = nullptr);
template <typename C>
Expand Down Expand Up @@ -3899,12 +3901,12 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values)
}

// polarization parameters
bool useHE = fgUsedVars[kCosThetaHE] || fgUsedVars[kPhiHE]; // helicity frame
bool useCS = fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame
bool useHE = fgUsedVars[kCosThetaHE] || fgUsedVars[kPhiHE]; // helicity frame
bool useCS = fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame
bool useGJB1 = fgUsedVars[kCosThetaGJB1] || fgUsedVars[kPhiGJB1]; // Gottfried-Jackson frame, beam 1 (+z)
bool useGJB2 = fgUsedVars[kCosThetaGJB2] || fgUsedVars[kPhiGJB2]; // Gottfried-Jackson frame, beam 2 (-z)
bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame
bool useRM = fgUsedVars[kCosThetaRM]; // Random frame
bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame
bool useRM = fgUsedVars[kCosThetaRM]; // Random frame

if (useHE || useCS || useGJB1 || useGJB2 || usePP || useRM) {
ROOT::Math::Boost boostv12{v12.BoostToCM()};
Expand Down Expand Up @@ -4460,12 +4462,12 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values)
}

// polarization parameters
bool useHE = fgUsedVars[kCosThetaHE] || fgUsedVars[kPhiHE]; // helicity frame
bool useCS = fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame
bool useHE = fgUsedVars[kCosThetaHE] || fgUsedVars[kPhiHE]; // helicity frame
bool useCS = fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame
bool useGJB1 = fgUsedVars[kCosThetaGJB1] || fgUsedVars[kPhiGJB1]; // Gottfried-Jackson frame, beam 1 (+z)
bool useGJB2 = fgUsedVars[kCosThetaGJB2] || fgUsedVars[kPhiGJB2]; // Gottfried-Jackson frame, beam 2 (-z)
bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame
bool useRM = fgUsedVars[kCosThetaRM]; // Random frame
bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame
bool useRM = fgUsedVars[kCosThetaRM]; // Random frame

if (useHE || useCS || useGJB1 || useGJB2 || usePP || useRM) {
ROOT::Math::Boost boostv12{v12.BoostToCM()};
Expand Down Expand Up @@ -4888,12 +4890,12 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values)
values[kMCP2] = t2.p();

// polarization parameters
bool useHE = fgUsedVars[kMCCosThetaHE] || fgUsedVars[kMCPhiHE]; // helicity frame
bool useCS = fgUsedVars[kMCCosThetaCS] || fgUsedVars[kMCPhiCS]; // Collins-Soper frame
bool useHE = fgUsedVars[kMCCosThetaHE] || fgUsedVars[kMCPhiHE]; // helicity frame
bool useCS = fgUsedVars[kMCCosThetaCS] || fgUsedVars[kMCPhiCS]; // Collins-Soper frame
bool useGJB1 = fgUsedVars[kMCCosThetaGJB1] || fgUsedVars[kMCPhiGJB1]; // Gottfried-Jackson frame, beam 1 (+z)
bool useGJB2 = fgUsedVars[kMCCosThetaGJB2] || fgUsedVars[kMCPhiGJB2]; // Gottfried-Jackson frame, beam 2 (-z)
bool usePP = fgUsedVars[kMCCosThetaPP]; // production plane frame
bool useRM = fgUsedVars[kMCCosThetaRM]; // Random frame
bool usePP = fgUsedVars[kMCCosThetaPP]; // production plane frame
bool useRM = fgUsedVars[kMCCosThetaRM]; // Random frame

if (useHE || useCS || useGJB1 || useGJB2 || usePP || useRM) {
ROOT::Math::Boost boostv12{v12.BoostToCM()};
Expand Down Expand Up @@ -6829,8 +6831,8 @@ void VarManager::FillHadron(T const& hadron, float* values, float hadronMass)
values[kRap] = vhadron.Rapidity();
}

template <int partType, typename Cand, typename H, typename T>
void VarManager::FillSingleDileptonCharmHadron(Cand const& candidate, H hfHelper, T& bdtScoreCharmHad, float* values)
template <int partType, typename Cand, typename T>
void VarManager::FillSingleDileptonCharmHadron(Cand const& candidate, T& bdtScoreCharmHad, float* values)
{
if (!values) {
values = static_cast<float*>(fgValues);
Expand All @@ -6843,33 +6845,33 @@ void VarManager::FillSingleDileptonCharmHadron(Cand const& candidate, H hfHelper
values[kRap] = candidate.rap();
}
if constexpr (partType == kD0ToPiK) {
values[kMassCharmHadron] = hfHelper.invMassD0ToPiK(candidate);
values[kMassCharmHadron] = HfHelper::invMassD0ToPiK(candidate);
values[kPtCharmHadron] = candidate.pt();
values[kPhiCharmHadron] = candidate.phi();
values[kRapCharmHadron] = hfHelper.yD0(candidate);
values[kRapCharmHadron] = HfHelper::yD0(candidate);
values[kBdtCharmHadron] = static_cast<float>(bdtScoreCharmHad);
}
if constexpr (partType == kD0barToKPi) {
values[kMassCharmHadron] = hfHelper.invMassD0barToKPi(candidate);
values[kMassCharmHadron] = HfHelper::invMassD0barToKPi(candidate);
values[kPtCharmHadron] = candidate.pt();
values[kPhiCharmHadron] = candidate.phi();
values[kRapCharmHadron] = hfHelper.yD0(candidate);
values[kRapCharmHadron] = HfHelper::yD0(candidate);
values[kBdtCharmHadron] = static_cast<float>(bdtScoreCharmHad);
}
if constexpr (partType == kDplusToPiKPi) {
values[kMassCharmHadron] = hfHelper.invMassDplusToPiKPi(candidate);
values[kMassCharmHadron] = HfHelper::invMassDplusToPiKPi(candidate);
values[kPtCharmHadron] = candidate.pt();
values[kPhiCharmHadron] = candidate.phi();
values[kRapCharmHadron] = hfHelper.yDplus(candidate);
values[kRapCharmHadron] = HfHelper::yDplus(candidate);
values[kBdtCharmHadron] = static_cast<float>(bdtScoreCharmHad);
}
}

template <int partTypeCharmHad, typename DQ, typename HF, typename H, typename T>
void VarManager::FillDileptonCharmHadron(DQ const& dilepton, HF const& charmHadron, H hfHelper, T& bdtScoreCharmHad, float* values)
template <int partTypeCharmHad, typename DQ, typename HF, typename T>
void VarManager::FillDileptonCharmHadron(DQ const& dilepton, HF const& charmHadron, T& bdtScoreCharmHad, float* values)
{
FillSingleDileptonCharmHadron<kJPsi>(dilepton, hfHelper, bdtScoreCharmHad, values);
FillSingleDileptonCharmHadron<partTypeCharmHad>(charmHadron, hfHelper, bdtScoreCharmHad, values);
FillSingleDileptonCharmHadron<kJPsi>(dilepton, bdtScoreCharmHad, values);
FillSingleDileptonCharmHadron<partTypeCharmHad>(charmHadron, bdtScoreCharmHad, values);
}

template <int candidateType, typename T1, typename T2, typename T3>
Expand Down Expand Up @@ -7767,12 +7769,12 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values)
}

// polarization parameters
bool useHE = fgUsedVars[kCosThetaHE] || fgUsedVars[kPhiHE]; // helicity frame
bool useCS = fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame
bool useHE = fgUsedVars[kCosThetaHE] || fgUsedVars[kPhiHE]; // helicity frame
bool useCS = fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame
bool useGJB1 = fgUsedVars[kCosThetaGJB1] || fgUsedVars[kPhiGJB1]; // Gottfried-Jackson frame, beam 1 (+z)
bool useGJB2 = fgUsedVars[kCosThetaGJB2] || fgUsedVars[kPhiGJB2]; // Gottfried-Jackson frame, beam 2 (-z)
bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame
bool useRM = fgUsedVars[kCosThetaRM]; // Random frame
bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame
bool useRM = fgUsedVars[kCosThetaRM]; // Random frame

if (useHE || useCS || useGJB1 || useGJB2 || usePP || useRM) {
ROOT::Math::Boost boostv12{v12.BoostToCM()};
Expand Down
30 changes: 14 additions & 16 deletions PWGDQ/TableProducer/tableMakerJpsiHf.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,6 @@ using TracksWithExtra = soa::Join<aod::Tracks, aod::TracksExtra>;
using MyBarrelTracksSelectedWithColl = soa::Join<aod::ReducedTracks, aod::ReducedTracksBarrel, aod::ReducedTracksBarrelPID, aod::ReducedTracksBarrelInfo>;
using MyMuonTracksSelectedWithColl = soa::Join<aod::ReducedMuons, aod::ReducedMuonsExtra, aod::ReducedMuonsInfo>;

HfHelper hfHelper;

struct tableMakerJpsiHf {
//
// This task combines dilepton candidates with a open charm hadron
Expand Down Expand Up @@ -321,9 +319,9 @@ struct tableMakerJpsiHf {

double rapDmeson = -999.;
if constexpr (TDmeson == DmesonType::D0) {
rapDmeson = hfHelper.yD0(dmeson);
rapDmeson = HfHelper::yD0(dmeson);
} else if constexpr (TDmeson == DmesonType::Dplus) {
rapDmeson = hfHelper.yDplus(dmeson);
rapDmeson = HfHelper::yDplus(dmeson);
}

if (yCandDmesonMax >= 0. && std::abs(rapDmeson) > yCandDmesonMax) {
Expand All @@ -332,18 +330,18 @@ struct tableMakerJpsiHf {

if constexpr (TDmeson == DmesonType::D0) {
if (dmeson.isSelD0() >= 1) {
VarManager::FillSingleDileptonCharmHadron<VarManager::kD0ToPiK>(dmeson, hfHelper, scores[0], fValuesDileptonCharmHadron);
VarManager::FillSingleDileptonCharmHadron<VarManager::kD0ToPiK>(dmeson, scores[0], fValuesDileptonCharmHadron);
fHistMan->FillHistClass("Dmeson", fValuesDileptonCharmHadron);
VarManager::ResetValues(0, VarManager::kNVars, fValuesDileptonCharmHadron);
}
if (dmeson.isSelD0bar() >= 1) {
VarManager::FillSingleDileptonCharmHadron<VarManager::kD0barToKPi>(dmeson, hfHelper, scores[3], fValuesDileptonCharmHadron);
VarManager::FillSingleDileptonCharmHadron<VarManager::kD0barToKPi>(dmeson, scores[3], fValuesDileptonCharmHadron);
fHistMan->FillHistClass("Dmeson", fValuesDileptonCharmHadron);
VarManager::ResetValues(0, VarManager::kNVars, fValuesDileptonCharmHadron);
}
} else if constexpr (TDmeson == DmesonType::Dplus) {
if (dmeson.isSelDplusToPiKPi() >= 1) {
VarManager::FillSingleDileptonCharmHadron<VarManager::kDplusToPiKPi>(dmeson, hfHelper, scores_dplus[0], fValuesDileptonCharmHadron);
VarManager::FillSingleDileptonCharmHadron<VarManager::kDplusToPiKPi>(dmeson, scores_dplus[0], fValuesDileptonCharmHadron);
fHistMan->FillHistClass("Dmeson", fValuesDileptonCharmHadron);
VarManager::ResetValues(0, VarManager::kNVars, fValuesDileptonCharmHadron);
}
Expand All @@ -366,7 +364,7 @@ struct tableMakerJpsiHf {

if (configDebug) {
float dummyScore{-999.f};
VarManager::FillSingleDileptonCharmHadron<VarManager::kJPsi>(dilepton, hfHelper, dummyScore, fValuesDileptonCharmHadron);
VarManager::FillSingleDileptonCharmHadron<VarManager::kJPsi>(dilepton, dummyScore, fValuesDileptonCharmHadron);
fHistMan->FillHistClass("JPsi", fValuesDileptonCharmHadron);
VarManager::ResetValues(0, VarManager::kNVars, fValuesDileptonCharmHadron);
}
Expand All @@ -391,9 +389,9 @@ struct tableMakerJpsiHf {

double rapDmeson = -999.;
if constexpr (TDmeson == DmesonType::D0) {
rapDmeson = hfHelper.yD0(dmeson);
rapDmeson = HfHelper::yD0(dmeson);
} else if constexpr (TDmeson == DmesonType::Dplus) {
rapDmeson = hfHelper.yDplus(dmeson);
rapDmeson = HfHelper::yDplus(dmeson);
}

if (yCandDmesonMax >= 0. && std::abs(rapDmeson) > yCandDmesonMax) {
Expand Down Expand Up @@ -471,14 +469,14 @@ struct tableMakerJpsiHf {

if constexpr (TDmeson == DmesonType::D0) {
if (dmeson.isSelD0() >= 1) {
massD0 = hfHelper.invMassD0ToPiK(dmeson);
VarManager::FillDileptonCharmHadron<VarManager::kD0ToPiK>(dilepton, dmeson, hfHelper, scores[0], fValuesDileptonCharmHadron);
massD0 = HfHelper::invMassD0ToPiK(dmeson);
VarManager::FillDileptonCharmHadron<VarManager::kD0ToPiK>(dilepton, dmeson, scores[0], fValuesDileptonCharmHadron);
fHistMan->FillHistClass("JPsiDmeson", fValuesDileptonCharmHadron);
VarManager::ResetValues(0, VarManager::kNVars, fValuesDileptonCharmHadron);
}
if (dmeson.isSelD0bar() >= 1) {
massD0bar = hfHelper.invMassD0barToKPi(dmeson);
VarManager::FillDileptonCharmHadron<VarManager::kD0barToKPi>(dilepton, dmeson, hfHelper, scores[3], fValuesDileptonCharmHadron);
massD0bar = HfHelper::invMassD0barToKPi(dmeson);
VarManager::FillDileptonCharmHadron<VarManager::kD0barToKPi>(dilepton, dmeson, scores[3], fValuesDileptonCharmHadron);
fHistMan->FillHistClass("JPsiDmeson", fValuesDileptonCharmHadron);
VarManager::ResetValues(0, VarManager::kNVars, fValuesDileptonCharmHadron);
}
Expand All @@ -487,8 +485,8 @@ struct tableMakerJpsiHf {
}
} else if constexpr (TDmeson == DmesonType::Dplus) {
if (dmeson.isSelDplusToPiKPi() >= 1) {
massDplus = hfHelper.invMassDplusToPiKPi(dmeson);
VarManager::FillDileptonCharmHadron<VarManager::kDplusToPiKPi>(dilepton, dmeson, hfHelper, scores_dplus[0], fValuesDileptonCharmHadron);
massDplus = HfHelper::invMassDplusToPiKPi(dmeson);
VarManager::FillDileptonCharmHadron<VarManager::kDplusToPiKPi>(dilepton, dmeson, scores_dplus[0], fValuesDileptonCharmHadron);
fHistMan->FillHistClass("JPsiDmeson", fValuesDileptonCharmHadron);
VarManager::ResetValues(0, VarManager::kNVars, fValuesDileptonCharmHadron);
}
Expand Down
Loading