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
30 changes: 30 additions & 0 deletions PWGDQ/Core/HistogramsLibrary.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -1881,6 +1881,36 @@
hm->AddHistogram(histClass, "CosPointingAngle", "", false, 100, 0.0, 1.0, VarManager::kCosPointingAngle);
hm->AddHistogram(histClass, "DCAxyzBetweenProngs", "", false, 100, 0.0, 1.0, VarManager::kKFDCAxyzBetweenProngs);
}
if (subGroupStr.Contains("mctruth")) {
hm->AddHistogram(histClass, "PtMC", "MC pT", false, 200, 0.0, 20.0, VarManager::kMCPt);
hm->AddHistogram(histClass, "EtaMC", "MC #eta", false, 50, -5.0, 5.0, VarManager::kMCEta);
hm->AddHistogram(histClass, "PhiMC", "MC #phi", false, 50, -6.3, 6.3, VarManager::kMCPhi);
hm->AddHistogram(histClass, "YMC", "MC y", false, 50, -5.0, 5.0, VarManager::kMCY);
hm->AddHistogram(histClass, "PtMC_YMC", "MC pT vs MC y", false, 120, 0.0, 30.0, VarManager::kMCPt, 1000, -5.0, 5.0, VarManager::kMCY);
hm->AddHistogram(histClass, "EtaMC_PtMC", "", false, 40, -2.0, 2.0, VarManager::kMCEta, 200, 0.0, 20.0, VarManager::kMCPt);
hm->AddHistogram(histClass, "VzMC", "MC vz", false, 100, -15.0, 15.0, VarManager::kMCVz);
hm->AddHistogram(histClass, "VzMC_VtxZMC", "MC vz vs MC vtxZ", false, 50, -15.0, 15.0, VarManager::kMCVz, 50, -15.0, 15.0, VarManager::kMCVtxZ);
hm->AddHistogram(histClass, "LzMC", "", false, 1000, 0.0, 2.0, VarManager::kMCVertexingLz);
hm->AddHistogram(histClass, "LxyMC", "", false, 1000, 0.0, 2.0, VarManager::kMCVertexingLxy);
hm->AddHistogram(histClass, "LxyzMC", "", false, 1000, 0.0, 2.0, VarManager::kMCVertexingLxyz);
hm->AddHistogram(histClass, "LxyMCExpected", "", false, 1000, 0.0, 2.0, VarManager::kMCLxyExpected);
hm->AddHistogram(histClass, "LxyzMCExpected", "", false, 1000, 0.0, 2.0, VarManager::kMCLxyzExpected);
hm->AddHistogram(histClass, "LxyMC_LxyMCExpected", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLxy, 500, 0.0, 2.0, VarManager::kMCLxyExpected);
hm->AddHistogram(histClass, "LxyzMC_LxyzMCExpected", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLxyz, 500, 0.0, 2.0, VarManager::kMCLxyzExpected);
hm->AddHistogram(histClass, "TauzMC", "", false, 4000, -0.01, 0.01, VarManager::kMCVertexingTauz);
hm->AddHistogram(histClass, "TauxyMC", "", false, 4000, -0.01, 0.01, VarManager::kMCVertexingTauxy);
hm->AddHistogram(histClass, "TauzMC_PtMC", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauz, 200, 0.0, 20.0, VarManager::kMCPt);
hm->AddHistogram(histClass, "TauxyMC_PtMC", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauxy, 200, 0.0, 20.0, VarManager::kMCPt);
hm->AddHistogram(histClass, "TauzProjectedMC", "", false, 4000, -0.5, 0.5, VarManager::kMCVertexingTauzProjected);
hm->AddHistogram(histClass, "TauxyProjectedMC", "", false, 4000, -0.5, 0.5, VarManager::kMCVertexingTauxyProjected);
hm->AddHistogram(histClass, "TauzProjectedMC_PtMC", "", false, 500, -0.5, 0.5, VarManager::kMCVertexingTauzProjected, 200, 0.0, 20.0, VarManager::kMCPt);
hm->AddHistogram(histClass, "TauxyProjectedMC_PtMC", "", false, 500, -0.5, 0.5, VarManager::kMCVertexingTauxyProjected, 200, 0.0, 20.0, VarManager::kMCPt);
hm->AddHistogram(histClass, "LzMC_Lz", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLz, 500, 0.0, 2.0, VarManager::kVertexingLz);
hm->AddHistogram(histClass, "LxyMC_Lxy", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLxy, 500, 0.0, 2.0, VarManager::kVertexingLxy);
hm->AddHistogram(histClass, "TauzMC_Tauz", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauz, 500, -0.01, 0.01, VarManager::kVertexingTauz);
hm->AddHistogram(histClass, "TauxyMC_Tauxy", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauxy, 500, -0.01, 0.01, VarManager::kVertexingTauxy);
hm->AddHistogram(histClass, "CosPointingAngleMC", "", false, 100, 0.0, 1.0, VarManager::kMCCosPointingAngle);
}
if (subGroupStr.Contains("multidimentional-vertexing-histograms")) {
hm->AddHistogram(histClass, "Mass_Tauxy", "", false, 75, 4.0, 7.0, VarManager::kPairMass, 40, -0.0, 0.02, VarManager::kVertexingTauxy);
hm->AddHistogram(histClass, "Mass_cosPointing", "", false, 75, 4.0, 7.0, VarManager::kPairMass, 40, 0.0, 1.0, VarManager::kCosPointingAngle);
Expand Down Expand Up @@ -2098,7 +2128,7 @@
LOG(fatal) << "histClass field should be an array of strings, e.g. [class1, class2]";
return false;
}
for (auto& v : hist->FindMember("histClass")->value.GetArray()) {

Check failure on line 2131 in PWGDQ/Core/HistogramsLibrary.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (!v.IsString()) {
LOG(fatal) << "histClass field should be an array of strings, e.g. [class1, class2]";
return false;
Expand Down Expand Up @@ -2254,7 +2284,7 @@
}
}
if (isTHn) {
for (auto& v : hist->FindMember("vars")->value.GetArray()) {

Check failure on line 2287 in PWGDQ/Core/HistogramsLibrary.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (VarManager::fgVarNamesMap.find(v.GetString()) == VarManager::fgVarNamesMap.end()) {
LOG(fatal) << "Bad variable in vars (" << v.GetString() << ") specified for histogram";
return false;
Expand Down Expand Up @@ -2317,7 +2347,7 @@

// create an array of strings to store the different histogram classes
std::vector<const char*> histClasses;
for (auto& v : hist.FindMember("histClass")->value.GetArray()) {

Check failure on line 2350 in PWGDQ/Core/HistogramsLibrary.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
histClasses.push_back(v.GetString());
}
const char* title = hist.FindMember("title")->value.GetString();
Expand All @@ -2328,7 +2358,7 @@

int* vars = new int[nDimensions];
int iDim = 0;
for (auto& v : hist.FindMember("vars")->value.GetArray()) {

Check failure on line 2361 in PWGDQ/Core/HistogramsLibrary.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
LOG(debug) << "iDim " << iDim << ": " << v.GetString();
vars[iDim++] = VarManager::fgVarNamesMap[v.GetString()];
}
Expand All @@ -2342,27 +2372,27 @@
xmin = new double[nDimensions];
xmax = new double[nDimensions];
int iDim = 0;
for (auto& v : hist.FindMember("nBins")->value.GetArray()) {

Check failure on line 2375 in PWGDQ/Core/HistogramsLibrary.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
nBins[iDim++] = v.GetInt();
LOG(debug) << "nBins " << iDim << ": " << nBins[iDim - 1];
}
iDim = 0;
for (auto& v : hist.FindMember("xmin")->value.GetArray()) {

Check failure on line 2380 in PWGDQ/Core/HistogramsLibrary.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
xmin[iDim++] = v.GetDouble();
LOG(debug) << "xmin " << iDim << ": " << xmin[iDim - 1];
}
iDim = 0;
for (auto& v : hist.FindMember("xmax")->value.GetArray()) {

Check failure on line 2385 in PWGDQ/Core/HistogramsLibrary.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
xmax[iDim++] = v.GetDouble();
LOG(debug) << "xmax " << iDim << ": " << xmax[iDim - 1];
}
} else {
int iDim = 0;
binLimits = new TArrayD[nDimensions];
for (auto& v : hist.FindMember("binLimits")->value.GetArray()) {

Check failure on line 2392 in PWGDQ/Core/HistogramsLibrary.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
double* lims = new double[v.GetArray().Size()];
int iElem = 0;
for (auto& lim : v.GetArray()) {

Check failure on line 2395 in PWGDQ/Core/HistogramsLibrary.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
lims[iElem++] = lim.GetDouble();
}
binLimits[iDim++] = TArrayD(v.GetArray().Size(), lims);
Expand All @@ -2373,7 +2403,7 @@
if (hist.HasMember("axLabels")) {
axLabels = new TString[hist.FindMember("axLabels")->value.GetArray().Size()];
int iDim = 0;
for (auto& v : hist.FindMember("axLabels")->value.GetArray()) {

Check failure on line 2406 in PWGDQ/Core/HistogramsLibrary.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
axLabels[iDim++] = v.GetString();
}
}
Expand Down
40 changes: 38 additions & 2 deletions PWGDQ/Core/VarManager.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -806,10 +806,20 @@ void VarManager::SetDefaultVarNames()
fgVariableUnits[kPairType] = "";
fgVariableNames[kVertexingLxy] = "Pair Lxy";
fgVariableUnits[kVertexingLxy] = "cm";
fgVariableNames[kMCVertexingLxy] = "MC Lxy";
fgVariableUnits[kMCVertexingLxy] = "cm";
fgVariableNames[kVertexingLz] = "Pair Lz";
fgVariableUnits[kVertexingLz] = "cm";
fgVariableNames[kMCVertexingLz] = "MC Lz";
fgVariableUnits[kMCVertexingLz] = "cm";
fgVariableNames[kVertexingLxyz] = "Pair Lxyz";
fgVariableUnits[kVertexingLxyz] = "cm";
fgVariableNames[kMCVertexingLxyz] = "MC Lxyz";
fgVariableUnits[kMCVertexingLxyz] = "cm";
fgVariableNames[kMCLxyExpected] = "MC Expected Lxy";
fgVariableUnits[kMCLxyExpected] = "cm";
fgVariableNames[kMCLxyzExpected] = "MC Expected Lxyz";
fgVariableUnits[kMCLxyzExpected] = "cm";
fgVariableNames[kVertexingLxyErr] = "Pair Lxy err.";
fgVariableUnits[kVertexingLxyErr] = "cm";
fgVariableNames[kVertexingLzErr] = "Pair Lz err.";
Expand All @@ -820,6 +830,10 @@ void VarManager::SetDefaultVarNames()
fgVariableUnits[kVertexingTauz] = "ns";
fgVariableNames[kVertexingTauxy] = "Pair pseudo-proper Tauxy";
fgVariableUnits[kVertexingTauxy] = "ns";
fgVariableNames[kMCVertexingTauz] = "MC pseudo-proper Tauz";
fgVariableUnits[kMCVertexingTauz] = "ns";
fgVariableNames[kMCVertexingTauxy] = "MC pseudo-proper Tauxy";
fgVariableUnits[kMCVertexingTauxy] = "ns";
fgVariableNames[kVertexingTauzErr] = "Pair pseudo-proper Tauz err.";
fgVariableUnits[kVertexingTauzErr] = "ns";
fgVariableNames[kVertexingLxyProjected] = "Pair Lxy";
Expand All @@ -836,8 +850,22 @@ void VarManager::SetDefaultVarNames()
fgVariableUnits[kVertexingTauxyProjectedPoleJPsiMass] = "ns";
fgVariableNames[kVertexingTauxyzProjected] = "Pair pseudo-proper Tauxyz";
fgVariableUnits[kVertexingTauxyzProjected] = "ns";
fgVariableNames[kMCVertexingLxyProjected] = "MC Lxy_{proj}";
fgVariableUnits[kMCVertexingLxyProjected] = "cm";
fgVariableNames[kMCVertexingLzProjected] = "MC Lz_{proj}";
fgVariableUnits[kMCVertexingLzProjected] = "cm";
fgVariableNames[kMCVertexingLxyzProjected] = "MC Lxyz_{proj}";
fgVariableUnits[kMCVertexingLxyzProjected] = "cm";
fgVariableNames[kMCVertexingTauzProjected] = "MC Tauz_{proj}";
fgVariableUnits[kMCVertexingTauzProjected] = "ns";
fgVariableNames[kMCVertexingTauxyProjected] = "MC Tauxy_{proj}";
fgVariableUnits[kMCVertexingTauxyProjected] = "ns";
fgVariableNames[kMCVertexingTauxyzProjected] = "MC Tauxyz_{proj}";
fgVariableUnits[kMCVertexingTauxyzProjected] = "ns";
fgVariableNames[kCosPointingAngle] = "cos(#theta_{pointing})";
fgVariableUnits[kCosPointingAngle] = "";
fgVariableNames[kMCCosPointingAngle] = "MC cos(#theta_{pointing})";
fgVariableUnits[kMCCosPointingAngle] = "";
fgVariableNames[kVertexingPz] = "Pz Pair";
fgVariableUnits[kVertexingPz] = "GeV/c";
fgVariableNames[kVertexingSV] = "Secondary Vertexing z";
Expand All @@ -854,8 +882,6 @@ void VarManager::SetDefaultVarNames()
fgVariableUnits[kVertexingLzOverErr] = "";
fgVariableNames[kVertexingLxyzOverErr] = "Pair Lxyz/DLxyz";
fgVariableUnits[kVertexingLxyzOverErr] = "";
fgVariableNames[kCosPointingAngle] = "Cos #theta_{pointing}";
fgVariableUnits[kCosPointingAngle] = "";
fgVariableNames[kKFTrack0DCAxyz] = "Daughter0 DCAxyz";
fgVariableUnits[kKFTrack0DCAxyz] = "cm";
fgVariableNames[kKFTrack1DCAxyz] = "Daughter1 DCAxyz";
Expand Down Expand Up @@ -1755,13 +1781,17 @@ void VarManager::SetDefaultVarNames()
fgVarNamesMap["kCandidateId"] = kCandidateId;
fgVarNamesMap["kPairType"] = kPairType;
fgVarNamesMap["kVertexingLxy"] = kVertexingLxy;
fgVarNamesMap["kMCVertexingLxy"] = kMCVertexingLxy;
fgVarNamesMap["kVertexingLxyErr"] = kVertexingLxyErr;
fgVarNamesMap["kVertexingPseudoCTau"] = kVertexingPseudoCTau;
fgVarNamesMap["kVertexingLxyz"] = kVertexingLxyz;
fgVarNamesMap["kMCVertexingLxyz"] = kMCVertexingLxyz;
fgVarNamesMap["kVertexingLxyzErr"] = kVertexingLxyzErr;
fgVarNamesMap["kVertexingLz"] = kVertexingLz;
fgVarNamesMap["kMCVertexingLz"] = kMCVertexingLz;
fgVarNamesMap["kVertexingLzErr"] = kVertexingLzErr;
fgVarNamesMap["kVertexingTauxy"] = kVertexingTauxy;
fgVarNamesMap["kMCVertexingTauxy"] = kMCVertexingTauxy;
fgVarNamesMap["kVertexingTauxyErr"] = kVertexingTauxyErr;
fgVarNamesMap["kVertexingLzProjected"] = kVertexingLzProjected;
fgVarNamesMap["kVertexingLxyProjected"] = kVertexingLxyProjected;
Expand All @@ -1771,7 +1801,12 @@ void VarManager::SetDefaultVarNames()
fgVarNamesMap["kVertexingTauxyProjectedPoleJPsiMass"] = kVertexingTauxyProjectedPoleJPsiMass;
fgVarNamesMap["kVertexingTauxyProjectedNs"] = kVertexingTauxyProjectedNs;
fgVarNamesMap["kVertexingTauxyzProjected"] = kVertexingTauxyzProjected;
fgVarNamesMap["kMCVertexingTauzProjected"] = kVertexingTauzProjected;
fgVarNamesMap["kMCVertexingTauxyProjected"] = kVertexingTauxyProjected;
fgVarNamesMap["kMCVertexingTauxyProjectedNs"] = kVertexingTauxyProjectedNs;
fgVarNamesMap["kMCVertexingTauxyzProjected"] = kVertexingTauxyzProjected;
fgVarNamesMap["kVertexingTauz"] = kVertexingTauz;
fgVarNamesMap["kMCVertexingTauz"] = kMCVertexingTauz;
fgVarNamesMap["kVertexingTauzErr"] = kVertexingTauzErr;
fgVarNamesMap["kVertexingPz"] = kVertexingPz;
fgVarNamesMap["kVertexingSV"] = kVertexingSV;
Expand Down Expand Up @@ -1804,6 +1839,7 @@ void VarManager::SetDefaultVarNames()
fgVarNamesMap["kQuadDCAsigXYZ"] = kQuadDCAsigXYZ;
fgVarNamesMap["kSignQuadDCAsigXY"] = kSignQuadDCAsigXY;
fgVarNamesMap["kCosPointingAngle"] = kCosPointingAngle;
fgVarNamesMap["kMCCosPointingAngle"] = kMCCosPointingAngle;
fgVarNamesMap["kImpParXYJpsi"] = kImpParXYJpsi;
fgVarNamesMap["kImpParXYK"] = kImpParXYK;
fgVarNamesMap["kDCATrackProd"] = kDCATrackProd;
Expand Down
64 changes: 64 additions & 0 deletions PWGDQ/Core/VarManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -682,23 +682,38 @@ class VarManager : public TObject
kCandidateId,
kPairType,
kVertexingLxy,
kMCVertexingLxy,
kVertexingLxyErr,
kVertexingPseudoCTau,
kVertexingLxyz,
kMCVertexingLxyz,
kMCLxyExpected,
kMCLxyzExpected,
kVertexingLxyzErr,
kVertexingLz,
kMCVertexingLz,
kVertexingLzErr,
kVertexingTauxy,
kMCVertexingTauxy,
kVertexingTauxyErr,
kVertexingLzProjected,
kVertexingLxyProjected,
kVertexingLxyzProjected,
kMCVertexingLzProjected,
kMCVertexingLxyProjected,
kMCVertexingLxyzProjected,
kVertexingTauzProjected,
kVertexingTauxyProjected,
kVertexingTauxyProjectedPoleJPsiMass,
kVertexingTauxyProjectedNs,
kVertexingTauxyzProjected,
kMCVertexingTauzProjected,
kMCVertexingTauxyProjected,
kMCVertexingTauxyProjectedNs,
kMCVertexingTauxyzProjected,
kMCCosPointingAngle,
kVertexingTauz,
kMCVertexingTauz,
kVertexingTauzErr,
kVertexingPz,
kVertexingSV,
Expand Down Expand Up @@ -1148,6 +1163,8 @@ class VarManager : public TObject
static void FillPhoton(T const& photon, float* values = nullptr);
template <uint32_t fillMap, typename T, typename C>
static void FillTrackCollision(T const& track, C const& collision, float* values = nullptr);
template <int candidateType, typename T1, typename T2, typename C>
static void FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C const& collision, float* values = nullptr);
template <uint32_t fillMap, typename T, typename C, typename M, typename P>
static void FillTrackCollisionMatCorr(T const& track, C const& collision, M const& materialCorr, P const& propagator, float* values = nullptr);
template <typename U, typename T>
Expand Down Expand Up @@ -2804,6 +2821,53 @@ void VarManager::FillTrackMC(const U& mcStack, T const& track, float* values)
FillTrackDerived(values);
}

template <int candidateType, typename T1, typename T2, typename C>
void VarManager::FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C const& collision, float* values)
{

if (!values) {
values = fgValues;
}

float m = 0.0;
float pdgLifetime = 0.0;
if (std::abs(MotherTrack.pdgCode()) == 521) {
m = o2::constants::physics::MassBPlus;
pdgLifetime = 1.638e-12; // s
}
if (std::abs(MotherTrack.pdgCode()) == 511) {
m = o2::constants::physics::MassB0;
pdgLifetime = 1.517e-12; // s
}

// displaced vertex is compued with decay product (track) and momentum of mother particle (MotherTrack)
values[kMCVertexingLxy] = (collision.mcPosX() - track.vx()) * (collision.mcPosX() - track.vx()) +
(collision.mcPosY() - track.vy()) * (collision.mcPosY() - track.vy());
values[kMCVertexingLz] = (collision.mcPosZ() - track.vz()) * (collision.mcPosZ() - track.vz());
values[kMCVertexingLxyz] = values[kMCVertexingLxy] + values[kMCVertexingLz];
values[kMCVertexingLxy] = std::sqrt(values[kMCVertexingLxy]);
values[kMCVertexingLz] = std::sqrt(values[kMCVertexingLz]);
values[kMCVertexingLxyz] = std::sqrt(values[kMCVertexingLxyz]);
values[kMCVertexingTauz] = (collision.mcPosZ() - track.vz()) * m / (TMath::Abs(MotherTrack.pz()) * o2::constants::physics::LightSpeedCm2NS);
values[kMCVertexingTauxy] = values[kMCVertexingLxy] * m / (MotherTrack.pt() * o2::constants::physics::LightSpeedCm2NS);
Comment on lines +2851 to +2852
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe you need to add also the version for Tauxyz ?

values[kMCCosPointingAngle] = ((collision.mcPosX() - track.vx()) * MotherTrack.px() +
(collision.mcPosY() - track.vy()) * MotherTrack.py() +
(collision.mcPosZ() - track.vz()) * MotherTrack.pz()) /
(MotherTrack.p() * values[VarManager::kMCVertexingLxyz]);

values[kMCLxyExpected] = (MotherTrack.pt() / m) * (pdgLifetime * o2::constants::physics::LightSpeedCm2S);
values[kMCLxyzExpected] = (MotherTrack.p() / m) * (pdgLifetime * o2::constants::physics::LightSpeedCm2S);

values[kMCVertexingLzProjected] = ((track.vz() - collision.mcPosZ()) * MotherTrack.pz()) / TMath::Sqrt(MotherTrack.pz() * MotherTrack.pz());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in all this expression, what you need is just the sign of the pz component. So instead of pz / (sqrt(pz*pz)) should be just sign(pz()) or TMath::Sign(pz()). However, it seems that there is no straightforward sign function, so at least you could do just this: pz() / abs(pz())

values[kMCVertexingLxyProjected] = ((track.vx() - collision.mcPosX()) * MotherTrack.px()) + ((track.vy() - collision.mcPosY()) * MotherTrack.py());
values[kMCVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((MotherTrack.px() * MotherTrack.px()) + (MotherTrack.py() * MotherTrack.py()));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This part, TMath::Sqrt((MotherTrack.px() * MotherTrack.px()) + (MotherTrack.py() * MotherTrack.py()), should be just MotherTrack.pt()

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure its not
values[kMCVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Abs(MotherTrack.pt());

values[kMCVertexingLxyzProjected] = ((track.vx() - collision.mcPosX()) * MotherTrack.px()) + ((track.vy() - collision.mcPosY()) * MotherTrack.py()) + ((track.vz() - collision.mcPosZ()) * MotherTrack.pz());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here you compute this as the sum of kMCVertexingLxyProjected and the vz part of the scalar product

values[kMCVertexingLxyzProjected] = values[kMCVertexingLxyzProjected] / TMath::Sqrt((MotherTrack.px() * MotherTrack.px()) + (MotherTrack.py() * MotherTrack.py()) + (MotherTrack.pz() * MotherTrack.pz()));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here, TMath::Sqrt((MotherTrack.px() * MotherTrack.px()) + (MotherTrack.py() * MotherTrack.py()) + (MotherTrack.pz() * MotherTrack.pz())) , should be just MotherTrack.p()

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Abs(MotherTrack.p())?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p is just the mom vector magnitude, it can only be positive, no abs is not needed

values[kMCVertexingTauxyProjected] = values[kMCVertexingLxyProjected] * m / (MotherTrack.pt());
values[kMCVertexingTauxyProjectedNs] = values[kMCVertexingTauxyProjected] / o2::constants::physics::LightSpeedCm2NS;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you added this quantity in nano-sec just for the xy projection. Maybe you need it for the others too? Also, for the not projected Tau variables, you have them in nano-seconds, but this is not reflected in the name of the variable. Also, there you have them just in nanoseconds, and not the version which is in spatial units. I suggest to be consistent and have all of these variables.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default or O2Physics is ns, so It seems unnessecary to specify this in the variable name of all tau variables in all tasks? The reason why I added it here is that "_Projected" are the same definitions in Run2, and at some point, in order to check consistenstsy between Run2 and Run3 I added the "_ProjectedNs" definition. So I havent really used these variables for anything else than Run2/Run3 comparisons.

values[kMCVertexingTauzProjected] = values[kMCVertexingLzProjected] * m / TMath::Abs(MotherTrack.pz());
values[kMCVertexingTauxyzProjected] = values[kMCVertexingLxyzProjected] * m / (MotherTrack.p());
}
template <int pairType, typename T, typename T1>
void VarManager::FillEnergyCorrelatorsMC(T const& track, T1 const& t1, float* values)
{
Expand Down
Loading
Loading