Skip to content

Commit 93294a3

Browse files
author
Ida Torkjellsdatter Storehaug
committed
mctruth of triålet vertex
1 parent 51ba9f7 commit 93294a3

File tree

4 files changed

+171
-7
lines changed

4 files changed

+171
-7
lines changed

PWGDQ/Core/HistogramsLibrary.cxx

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2048,6 +2048,36 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
20482048
hm->AddHistogram(histClass, "hMass_defaultDileptonMass_Chi2OverNDFGeo", "", false, 1000, 3.0, 5.0, VarManager::kQuadDefaultDileptonMass, 150, -5, 10., VarManager::kKFChi2OverNDFGeo);
20492049
}
20502050
}
2051+
if (subGroupStr.Contains("mctruth")) {
2052+
hm->AddHistogram(histClass, "PtMC", "MC pT", false, 200, 0.0, 20.0, VarManager::kMCPt);
2053+
hm->AddHistogram(histClass, "EtaMC", "MC #eta", false, 50, -5.0, 5.0, VarManager::kMCEta);
2054+
hm->AddHistogram(histClass, "PhiMC", "MC #phi", false, 50, -6.3, 6.3, VarManager::kMCPhi);
2055+
hm->AddHistogram(histClass, "YMC", "MC y", false, 50, -5.0, 5.0, VarManager::kMCY);
2056+
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);
2057+
hm->AddHistogram(histClass, "EtaMC_PtMC", "", false, 40, -2.0, 2.0, VarManager::kMCEta, 200, 0.0, 20.0, VarManager::kMCPt);
2058+
hm->AddHistogram(histClass, "VzMC", "MC vz", false, 100, -15.0, 15.0, VarManager::kMCVz);
2059+
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);
2060+
hm->AddHistogram(histClass, "LzMC", "", false, 1000, 0.0, 2.0, VarManager::kMCVertexingLz);
2061+
hm->AddHistogram(histClass, "LxyMC", "", false, 1000, 0.0, 2.0, VarManager::kMCVertexingLxy);
2062+
hm->AddHistogram(histClass, "LxyzMC", "", false, 1000, 0.0, 2.0, VarManager::kMCVertexingLxyz);
2063+
hm->AddHistogram(histClass, "LxyMCExpected", "", false, 1000, 0.0, 2.0, VarManager::kMCLxyExpected);
2064+
hm->AddHistogram(histClass, "LxyzMCExpected", "", false, 1000, 0.0, 2.0, VarManager::kMCLxyzExpected);
2065+
hm->AddHistogram(histClass, "LxyMC_LxyMCExpected", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLxy, 500, 0.0, 2.0, VarManager::kMCLxyExpected);
2066+
hm->AddHistogram(histClass, "LxyzMC_LxyzMCExpected", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLxyz, 500, 0.0, 2.0, VarManager::kMCLxyzExpected);
2067+
hm->AddHistogram(histClass, "TauzMC", "", false, 4000, -0.01, 0.01, VarManager::kMCVertexingTauz);
2068+
hm->AddHistogram(histClass, "TauxyMC", "", false, 4000, -0.01, 0.01, VarManager::kMCVertexingTauxy);
2069+
hm->AddHistogram(histClass, "TauzMC_PtMC", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauz, 200, 0.0, 20.0, VarManager::kMCPt);
2070+
hm->AddHistogram(histClass, "TauxyMC_PtMC", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauxy, 200, 0.0, 20.0, VarManager::kMCPt);
2071+
hm->AddHistogram(histClass, "TauzProjectedMC", "", false, 4000, -0.5, 0.5, VarManager::kMCVertexingTauzProjected);
2072+
hm->AddHistogram(histClass, "TauxyProjectedMC", "", false, 4000, -0.5, 0.5, VarManager::kMCVertexingTauxyProjected);
2073+
hm->AddHistogram(histClass, "TauzProjectedMC_PtMC", "", false, 500, -0.5, 0.5, VarManager::kMCVertexingTauzProjected, 200, 0.0, 20.0, VarManager::kMCPt);
2074+
hm->AddHistogram(histClass, "TauxyProjectedMC_PtMC", "", false, 500, -0.5, 0.5, VarManager::kMCVertexingTauxyProjected, 200, 0.0, 20.0, VarManager::kMCPt);
2075+
hm->AddHistogram(histClass, "LzMC_Lz", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLz, 500, 0.0, 2.0, VarManager::kVertexingLz);
2076+
hm->AddHistogram(histClass, "LxyMC_Lxy", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLxy, 500, 0.0, 2.0, VarManager::kVertexingLxy);
2077+
hm->AddHistogram(histClass, "TauzMC_Tauz", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauz, 500, -0.01, 0.01, VarManager::kVertexingTauz);
2078+
hm->AddHistogram(histClass, "TauxyMC_Tauxy", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauxy, 500, -0.01, 0.01, VarManager::kVertexingTauxy);
2079+
hm->AddHistogram(histClass, "CosPointingAngleMC", "", false, 100, 0.0, 1.0, VarManager::kMCCosPointingAngle);
2080+
}
20512081
if (!groupStr.CompareTo("dilepton-photon-mass")) {
20522082
hm->AddHistogram(histClass, "Mass_Dilepton", "", false, 500, 0.0, 5.0, VarManager::kPairMassDau);
20532083
hm->AddHistogram(histClass, "Mass_Photon", "", false, 500, 0.0, 0.1, VarManager::kMassDau);

PWGDQ/Core/VarManager.cxx

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -806,10 +806,20 @@ void VarManager::SetDefaultVarNames()
806806
fgVariableUnits[kPairType] = "";
807807
fgVariableNames[kVertexingLxy] = "Pair Lxy";
808808
fgVariableUnits[kVertexingLxy] = "cm";
809+
fgVariableNames[kMCVertexingLxy] = "MC Lxy";
810+
fgVariableUnits[kMCVertexingLxy] = "cm";
809811
fgVariableNames[kVertexingLz] = "Pair Lz";
810812
fgVariableUnits[kVertexingLz] = "cm";
813+
fgVariableNames[kMCVertexingLz] = "MC Lz";
814+
fgVariableUnits[kMCVertexingLz] = "cm";
811815
fgVariableNames[kVertexingLxyz] = "Pair Lxyz";
812816
fgVariableUnits[kVertexingLxyz] = "cm";
817+
fgVariableNames[kMCVertexingLxyz] = "MC Lxyz";
818+
fgVariableUnits[kMCVertexingLxyz] = "cm";
819+
fgVariableNames[kMCLxyExpected] = "MC Expected Lxy";
820+
fgVariableUnits[kMCLxyExpected] = "cm";
821+
fgVariableNames[kMCLxyzExpected] = "MC Expected Lxyz";
822+
fgVariableUnits[kMCLxyzExpected] = "cm";
813823
fgVariableNames[kVertexingLxyErr] = "Pair Lxy err.";
814824
fgVariableUnits[kVertexingLxyErr] = "cm";
815825
fgVariableNames[kVertexingLzErr] = "Pair Lz err.";
@@ -820,6 +830,10 @@ void VarManager::SetDefaultVarNames()
820830
fgVariableUnits[kVertexingTauz] = "ns";
821831
fgVariableNames[kVertexingTauxy] = "Pair pseudo-proper Tauxy";
822832
fgVariableUnits[kVertexingTauxy] = "ns";
833+
fgVariableNames[kMCVertexingTauz] = "MC pseudo-proper Tauz";
834+
fgVariableUnits[kMCVertexingTauz] = "ns";
835+
fgVariableNames[kMCVertexingTauxy] = "MC pseudo-proper Tauxy";
836+
fgVariableUnits[kMCVertexingTauxy] = "ns";
823837
fgVariableNames[kVertexingTauzErr] = "Pair pseudo-proper Tauz err.";
824838
fgVariableUnits[kVertexingTauzErr] = "ns";
825839
fgVariableNames[kVertexingLxyProjected] = "Pair Lxy";
@@ -836,8 +850,22 @@ void VarManager::SetDefaultVarNames()
836850
fgVariableUnits[kVertexingTauxyProjectedPoleJPsiMass] = "ns";
837851
fgVariableNames[kVertexingTauxyzProjected] = "Pair pseudo-proper Tauxyz";
838852
fgVariableUnits[kVertexingTauxyzProjected] = "ns";
853+
fgVariableNames[kMCVertexingLxyProjected] = "MC Lxy_{proj}";
854+
fgVariableUnits[kMCVertexingLxyProjected] = "cm";
855+
fgVariableNames[kMCVertexingLzProjected] = "MC Lz_{proj}";
856+
fgVariableUnits[kMCVertexingLzProjected] = "cm";
857+
fgVariableNames[kMCVertexingLxyzProjected] = "MC Lxyz_{proj}";
858+
fgVariableUnits[kMCVertexingLxyzProjected] = "cm";
859+
fgVariableNames[kMCVertexingTauzProjected] = "MC Tauz_{proj}";
860+
fgVariableUnits[kMCVertexingTauzProjected] = "ns";
861+
fgVariableNames[kMCVertexingTauxyProjected] = "MC Tauxy_{proj}";
862+
fgVariableUnits[kMCVertexingTauxyProjected] = "ns";
863+
fgVariableNames[kMCVertexingTauxyzProjected] = "MC Tauxyz_{proj}";
864+
fgVariableUnits[kMCVertexingTauxyzProjected] = "ns";
839865
fgVariableNames[kCosPointingAngle] = "cos(#theta_{pointing})";
840866
fgVariableUnits[kCosPointingAngle] = "";
867+
fgVariableNames[kMCCosPointingAngle] = "MC cos(#theta_{pointing})";
868+
fgVariableUnits[kMCCosPointingAngle] = "";
841869
fgVariableNames[kVertexingPz] = "Pz Pair";
842870
fgVariableUnits[kVertexingPz] = "GeV/c";
843871
fgVariableNames[kVertexingSV] = "Secondary Vertexing z";
@@ -854,8 +882,6 @@ void VarManager::SetDefaultVarNames()
854882
fgVariableUnits[kVertexingLzOverErr] = "";
855883
fgVariableNames[kVertexingLxyzOverErr] = "Pair Lxyz/DLxyz";
856884
fgVariableUnits[kVertexingLxyzOverErr] = "";
857-
fgVariableNames[kCosPointingAngle] = "Cos #theta_{pointing}";
858-
fgVariableUnits[kCosPointingAngle] = "";
859885
fgVariableNames[kKFTrack0DCAxyz] = "Daughter0 DCAxyz";
860886
fgVariableUnits[kKFTrack0DCAxyz] = "cm";
861887
fgVariableNames[kKFTrack1DCAxyz] = "Daughter1 DCAxyz";
@@ -1756,13 +1782,17 @@ void VarManager::SetDefaultVarNames()
17561782
fgVarNamesMap["kPairType"] = kPairType;
17571783
fgVarNamesMap["kVertexingLxy"] = kVertexingLxy;
17581784
fgVarNamesMap["kVertexingLxyErr"] = kVertexingLxyErr;
1785+
fgVarNamesMap["kMCVertexingLxy"] = kMCVertexingLxy;
17591786
fgVarNamesMap["kVertexingPseudoCTau"] = kVertexingPseudoCTau;
17601787
fgVarNamesMap["kVertexingLxyz"] = kVertexingLxyz;
17611788
fgVarNamesMap["kVertexingLxyzErr"] = kVertexingLxyzErr;
1789+
fgVarNamesMap["kMCVertexingLxyz"] = kMCVertexingLxyz;
17621790
fgVarNamesMap["kVertexingLz"] = kVertexingLz;
17631791
fgVarNamesMap["kVertexingLzErr"] = kVertexingLzErr;
1792+
fgVarNamesMap["kMCVertexingLz"] = kMCVertexingLz;
17641793
fgVarNamesMap["kVertexingTauxy"] = kVertexingTauxy;
17651794
fgVarNamesMap["kVertexingTauxyErr"] = kVertexingTauxyErr;
1795+
fgVarNamesMap["kMCVertexingTauxy"] = kMCVertexingTauxy;
17661796
fgVarNamesMap["kVertexingLzProjected"] = kVertexingLzProjected;
17671797
fgVarNamesMap["kVertexingLxyProjected"] = kVertexingLxyProjected;
17681798
fgVarNamesMap["kVertexingLxyzProjected"] = kVertexingLxyzProjected;
@@ -1771,8 +1801,12 @@ void VarManager::SetDefaultVarNames()
17711801
fgVarNamesMap["kVertexingTauxyProjectedPoleJPsiMass"] = kVertexingTauxyProjectedPoleJPsiMass;
17721802
fgVarNamesMap["kVertexingTauxyProjectedNs"] = kVertexingTauxyProjectedNs;
17731803
fgVarNamesMap["kVertexingTauxyzProjected"] = kVertexingTauxyzProjected;
1804+
fgVarNamesMap["kMCVertexingTauzProjected"] = kVertexingTauzProjected;
1805+
fgVarNamesMap["kMCVertexingTauxyProjected"] = kVertexingTauxyProjected;
1806+
fgVarNamesMap["kMCVertexingTauxyzProjected"] = kVertexingTauxyzProjected;
17741807
fgVarNamesMap["kVertexingTauz"] = kVertexingTauz;
17751808
fgVarNamesMap["kVertexingTauzErr"] = kVertexingTauzErr;
1809+
fgVarNamesMap["kMCVertexingTauz"] = kMCVertexingTauz;
17761810
fgVarNamesMap["kVertexingPz"] = kVertexingPz;
17771811
fgVarNamesMap["kVertexingSV"] = kVertexingSV;
17781812
fgVarNamesMap["kVertexingProcCode"] = kVertexingProcCode;
@@ -1804,6 +1838,7 @@ void VarManager::SetDefaultVarNames()
18041838
fgVarNamesMap["kQuadDCAsigXYZ"] = kQuadDCAsigXYZ;
18051839
fgVarNamesMap["kSignQuadDCAsigXY"] = kSignQuadDCAsigXY;
18061840
fgVarNamesMap["kCosPointingAngle"] = kCosPointingAngle;
1841+
fgVarNamesMap["kMCCosPointingAngle"] = kMCCosPointingAngle;
18071842
fgVarNamesMap["kImpParXYJpsi"] = kImpParXYJpsi;
18081843
fgVarNamesMap["kImpParXYK"] = kImpParXYK;
18091844
fgVarNamesMap["kDCATrackProd"] = kDCATrackProd;

PWGDQ/Core/VarManager.h

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -686,19 +686,34 @@ class VarManager : public TObject
686686
kVertexingPseudoCTau,
687687
kVertexingLxyz,
688688
kVertexingLxyzErr,
689+
kMCVertexingLxy,
690+
kMCVertexingLxyz,
691+
kMCLxyExpected,
692+
kMCLxyzExpected,
689693
kVertexingLz,
690694
kVertexingLzErr,
695+
kMCVertexingLz,
691696
kVertexingTauxy,
692697
kVertexingTauxyErr,
698+
kMCVertexingTauxy,
693699
kVertexingLzProjected,
694700
kVertexingLxyProjected,
695701
kVertexingLxyzProjected,
702+
kMCVertexingLzProjected,
703+
kMCVertexingLxyProjected,
704+
kMCVertexingLxyzProjected,
696705
kVertexingTauzProjected,
697706
kVertexingTauxyProjected,
698707
kVertexingTauxyProjectedPoleJPsiMass,
699708
kVertexingTauxyProjectedNs,
700709
kVertexingTauxyzProjected,
710+
kMCVertexingTauzProjected,
711+
kMCVertexingTauxyProjected,
712+
kMCVertexingTauxyProjectedNs,
713+
kMCVertexingTauxyzProjected,
714+
kMCCosPointingAngle,
701715
kVertexingTauz,
716+
kMCVertexingTauz,
702717
kVertexingTauzErr,
703718
kVertexingPz,
704719
kVertexingSV,
@@ -1148,6 +1163,8 @@ class VarManager : public TObject
11481163
static void FillPhoton(T const& photon, float* values = nullptr);
11491164
template <uint32_t fillMap, typename T, typename C>
11501165
static void FillTrackCollision(T const& track, C const& collision, float* values = nullptr);
1166+
template <int candidateType, typename T1, typename T2, typename C>
1167+
static void FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C const& collision, float* values = nullptr);
11511168
template <uint32_t fillMap, typename T, typename C, typename M, typename P>
11521169
static void FillTrackCollisionMatCorr(T const& track, C const& collision, M const& materialCorr, P const& propagator, float* values = nullptr);
11531170
template <typename U, typename T>
@@ -2804,6 +2821,52 @@ void VarManager::FillTrackMC(const U& mcStack, T const& track, float* values)
28042821
FillTrackDerived(values);
28052822
}
28062823

2824+
template <int candidateType, typename T1, typename T2, typename C>
2825+
void VarManager::FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C const& collision, float* values)
2826+
{
2827+
2828+
if (!values) {
2829+
values = fgValues;
2830+
}
2831+
2832+
float m = 0.0;
2833+
float pdgLifetime = 0.0;
2834+
if (std::abs(MotherTrack.pdgCode()) == 521) {
2835+
m = o2::constants::physics::MassBPlus;
2836+
pdgLifetime = 1.638e-12; // s
2837+
}
2838+
if (std::abs(MotherTrack.pdgCode()) == 511) {
2839+
m = o2::constants::physics::MassB0;
2840+
pdgLifetime = 1.517e-12; // s
2841+
}
2842+
2843+
// displaced vertex is compued with decay product (track) and momentum of mother particle (MotherTrack)
2844+
values[kMCVertexingLxy] = (collision.mcPosX() - track.vx()) * (collision.mcPosX() - track.vx()) +
2845+
(collision.mcPosY() - track.vy()) * (collision.mcPosY() - track.vy());
2846+
values[kMCVertexingLz] = (collision.mcPosZ() - track.vz()) * (collision.mcPosZ() - track.vz());
2847+
values[kMCVertexingLxyz] = values[kMCVertexingLxy] + values[kMCVertexingLz];
2848+
values[kMCVertexingLxy] = std::sqrt(values[kMCVertexingLxy]);
2849+
values[kMCVertexingLz] = std::sqrt(values[kMCVertexingLz]);
2850+
values[kMCVertexingLxyz] = std::sqrt(values[kMCVertexingLxyz]);
2851+
values[kMCVertexingTauz] = (collision.mcPosZ() - track.vz()) * m / (TMath::Abs(MotherTrack.pz()) * o2::constants::physics::LightSpeedCm2NS);
2852+
values[kMCVertexingTauxy] = values[kMCVertexingLxy] * m / (MotherTrack.pt() * o2::constants::physics::LightSpeedCm2NS);
2853+
2854+
values[kMCCosPointingAngle] = ((collision.mcPosX() - track.vx()) * MotherTrack.px() +
2855+
(collision.mcPosY() - track.vy()) * MotherTrack.py() +
2856+
(collision.mcPosZ() - track.vz()) * MotherTrack.pz()) /
2857+
(MotherTrack.p() * values[VarManager::kMCVertexingLxyz]);
2858+
2859+
values[kMCLxyExpected] = (MotherTrack.pt() / m) * (pdgLifetime * o2::constants::physics::LightSpeedCm2S);
2860+
values[kMCLxyzExpected] = (MotherTrack.p() / m) * (pdgLifetime * o2::constants::physics::LightSpeedCm2S);
2861+
2862+
values[kMCVertexingLzProjected] = ((track.vz() - collision.mcPosZ()) * MotherTrack.pz()) / TMath::Abs(MotherTrack.pz());
2863+
values[kMCVertexingLxyProjected] = (((track.vx() - collision.mcPosX()) * MotherTrack.px()) + ((track.vy() - collision.mcPosY()) * MotherTrack.py())) / TMath::Abs(MotherTrack.pt());
2864+
values[kMCVertexingLxyzProjected] = (((track.vx() - collision.mcPosX()) * MotherTrack.px()) + ((track.vy() - collision.mcPosY()) * MotherTrack.py()) + ((track.vz() - collision.mcPosZ()) * MotherTrack.pz())) / MotherTrack.p();
2865+
values[kMCVertexingTauxyProjected] = values[kMCVertexingLxyProjected] * m / (MotherTrack.pt());
2866+
values[kMCVertexingTauzProjected] = values[kMCVertexingLzProjected] * m / TMath::Abs(MotherTrack.pz());
2867+
values[kMCVertexingTauxyzProjected] = values[kMCVertexingLxyzProjected] * m / (MotherTrack.p());
2868+
}
2869+
28072870
template <int pairType, typename T, typename T1>
28082871
void VarManager::FillEnergyCorrelatorsMC(T const& track, T1 const& t1, float* values)
28092872
{

0 commit comments

Comments
 (0)