Skip to content

Commit 1db9cbd

Browse files
author
Ida Torkjellsdatter Storehaug
committed
generated/mctruth vertex for triplet implemeted
1 parent e81c44d commit 1db9cbd

File tree

4 files changed

+174
-7
lines changed

4 files changed

+174
-7
lines changed

PWGDQ/Core/HistogramsLibrary.cxx

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1881,6 +1881,36 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
18811881
hm->AddHistogram(histClass, "CosPointingAngle", "", false, 100, 0.0, 1.0, VarManager::kCosPointingAngle);
18821882
hm->AddHistogram(histClass, "DCAxyzBetweenProngs", "", false, 100, 0.0, 1.0, VarManager::kKFDCAxyzBetweenProngs);
18831883
}
1884+
if (subGroupStr.Contains("mctruth")) {
1885+
hm->AddHistogram(histClass, "PtMC", "MC pT", false, 200, 0.0, 20.0, VarManager::kMCPt);
1886+
hm->AddHistogram(histClass, "EtaMC", "MC #eta", false, 50, -5.0, 5.0, VarManager::kMCEta);
1887+
hm->AddHistogram(histClass, "PhiMC", "MC #phi", false, 50, -6.3, 6.3, VarManager::kMCPhi);
1888+
hm->AddHistogram(histClass, "YMC", "MC y", false, 50, -5.0, 5.0, VarManager::kMCY);
1889+
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);
1890+
hm->AddHistogram(histClass, "EtaMC_PtMC", "", false, 40, -2.0, 2.0, VarManager::kMCEta, 200, 0.0, 20.0, VarManager::kMCPt);
1891+
hm->AddHistogram(histClass, "VzMC", "MC vz", false, 100, -15.0, 15.0, VarManager::kMCVz);
1892+
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);
1893+
hm->AddHistogram(histClass, "LzMC", "", false, 1000, 0.0, 2.0, VarManager::kMCVertexingLz);
1894+
hm->AddHistogram(histClass, "LxyMC", "", false, 1000, 0.0, 2.0, VarManager::kMCVertexingLxy);
1895+
hm->AddHistogram(histClass, "LxyzMC", "", false, 1000, 0.0, 2.0, VarManager::kMCVertexingLxyz);
1896+
hm->AddHistogram(histClass, "LxyMCExpected", "", false, 1000, 0.0, 2.0, VarManager::kMCLxyExpected);
1897+
hm->AddHistogram(histClass, "LxyzMCExpected", "", false, 1000, 0.0, 2.0, VarManager::kMCLxyzExpected);
1898+
hm->AddHistogram(histClass, "LxyMC_LxyMCExpected", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLxy, 500, 0.0, 2.0, VarManager::kMCLxyExpected);
1899+
hm->AddHistogram(histClass, "LxyzMC_LxyzMCExpected", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLxyz, 500, 0.0, 2.0, VarManager::kMCLxyzExpected);
1900+
hm->AddHistogram(histClass, "TauzMC", "", false, 4000, -0.01, 0.01, VarManager::kMCVertexingTauz);
1901+
hm->AddHistogram(histClass, "TauxyMC", "", false, 4000, -0.01, 0.01, VarManager::kMCVertexingTauxy);
1902+
hm->AddHistogram(histClass, "TauzMC_PtMC", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauz, 200, 0.0, 20.0, VarManager::kMCPt);
1903+
hm->AddHistogram(histClass, "TauxyMC_PtMC", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauxy, 200, 0.0, 20.0, VarManager::kMCPt);
1904+
hm->AddHistogram(histClass, "TauzProjectedMC", "", false, 4000, -0.5, 0.5, VarManager::kMCVertexingTauzProjected);
1905+
hm->AddHistogram(histClass, "TauxyProjectedMC", "", false, 4000, -0.5, 0.5, VarManager::kMCVertexingTauxyProjected);
1906+
hm->AddHistogram(histClass, "TauzProjectedMC_PtMC", "", false, 500, -0.5, 0.5, VarManager::kMCVertexingTauzProjected, 200, 0.0, 20.0, VarManager::kMCPt);
1907+
hm->AddHistogram(histClass, "TauxyProjectedMC_PtMC", "", false, 500, -0.5, 0.5, VarManager::kMCVertexingTauxyProjected, 200, 0.0, 20.0, VarManager::kMCPt);
1908+
hm->AddHistogram(histClass, "LzMC_Lz", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLz, 500, 0.0, 2.0, VarManager::kVertexingLz);
1909+
hm->AddHistogram(histClass, "LxyMC_Lxy", "", false, 500, 0.0, 2.0, VarManager::kMCVertexingLxy, 500, 0.0, 2.0, VarManager::kVertexingLxy);
1910+
hm->AddHistogram(histClass, "TauzMC_Tauz", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauz, 500, -0.01, 0.01, VarManager::kVertexingTauz);
1911+
hm->AddHistogram(histClass, "TauxyMC_Tauxy", "", false, 500, -0.01, 0.01, VarManager::kMCVertexingTauxy, 500, -0.01, 0.01, VarManager::kVertexingTauxy);
1912+
hm->AddHistogram(histClass, "CosPointingAngleMC", "", false, 100, 0.0, 1.0, VarManager::kMCCosPointingAngle);
1913+
}
18841914
if (subGroupStr.Contains("multidimentional-vertexing-histograms")) {
18851915
hm->AddHistogram(histClass, "Mass_Tauxy", "", false, 75, 4.0, 7.0, VarManager::kPairMass, 40, -0.0, 0.02, VarManager::kVertexingTauxy);
18861916
hm->AddHistogram(histClass, "Mass_cosPointing", "", false, 75, 4.0, 7.0, VarManager::kPairMass, 40, 0.0, 1.0, VarManager::kCosPointingAngle);

PWGDQ/Core/VarManager.cxx

Lines changed: 38 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";
@@ -1755,13 +1781,17 @@ void VarManager::SetDefaultVarNames()
17551781
fgVarNamesMap["kCandidateId"] = kCandidateId;
17561782
fgVarNamesMap["kPairType"] = kPairType;
17571783
fgVarNamesMap["kVertexingLxy"] = kVertexingLxy;
1784+
fgVarNamesMap["kMCVertexingLxy"] = kMCVertexingLxy;
17581785
fgVarNamesMap["kVertexingLxyErr"] = kVertexingLxyErr;
17591786
fgVarNamesMap["kVertexingPseudoCTau"] = kVertexingPseudoCTau;
17601787
fgVarNamesMap["kVertexingLxyz"] = kVertexingLxyz;
1788+
fgVarNamesMap["kMCVertexingLxyz"] = kMCVertexingLxyz;
17611789
fgVarNamesMap["kVertexingLxyzErr"] = kVertexingLxyzErr;
17621790
fgVarNamesMap["kVertexingLz"] = kVertexingLz;
1791+
fgVarNamesMap["kMCVertexingLz"] = kMCVertexingLz;
17631792
fgVarNamesMap["kVertexingLzErr"] = kVertexingLzErr;
17641793
fgVarNamesMap["kVertexingTauxy"] = kVertexingTauxy;
1794+
fgVarNamesMap["kMCVertexingTauxy"] = kMCVertexingTauxy;
17651795
fgVarNamesMap["kVertexingTauxyErr"] = kVertexingTauxyErr;
17661796
fgVarNamesMap["kVertexingLzProjected"] = kVertexingLzProjected;
17671797
fgVarNamesMap["kVertexingLxyProjected"] = kVertexingLxyProjected;
@@ -1771,7 +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["kMCVertexingTauxyProjectedNs"] = kVertexingTauxyProjectedNs;
1807+
fgVarNamesMap["kMCVertexingTauxyzProjected"] = kVertexingTauxyzProjected;
17741808
fgVarNamesMap["kVertexingTauz"] = kVertexingTauz;
1809+
fgVarNamesMap["kMCVertexingTauz"] = kMCVertexingTauz;
17751810
fgVarNamesMap["kVertexingTauzErr"] = kVertexingTauzErr;
17761811
fgVarNamesMap["kVertexingPz"] = kVertexingPz;
17771812
fgVarNamesMap["kVertexingSV"] = kVertexingSV;
@@ -1804,6 +1839,7 @@ void VarManager::SetDefaultVarNames()
18041839
fgVarNamesMap["kQuadDCAsigXYZ"] = kQuadDCAsigXYZ;
18051840
fgVarNamesMap["kSignQuadDCAsigXY"] = kSignQuadDCAsigXY;
18061841
fgVarNamesMap["kCosPointingAngle"] = kCosPointingAngle;
1842+
fgVarNamesMap["kMCCosPointingAngle"] = kMCCosPointingAngle;
18071843
fgVarNamesMap["kImpParXYJpsi"] = kImpParXYJpsi;
18081844
fgVarNamesMap["kImpParXYK"] = kImpParXYK;
18091845
fgVarNamesMap["kDCATrackProd"] = kDCATrackProd;

PWGDQ/Core/VarManager.h

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -682,23 +682,38 @@ class VarManager : public TObject
682682
kCandidateId,
683683
kPairType,
684684
kVertexingLxy,
685+
kMCVertexingLxy,
685686
kVertexingLxyErr,
686687
kVertexingPseudoCTau,
687688
kVertexingLxyz,
689+
kMCVertexingLxyz,
690+
kMCLxyExpected,
691+
kMCLxyzExpected,
688692
kVertexingLxyzErr,
689693
kVertexingLz,
694+
kMCVertexingLz,
690695
kVertexingLzErr,
691696
kVertexingTauxy,
697+
kMCVertexingTauxy,
692698
kVertexingTauxyErr,
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,54 @@ 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+
values[kMCCosPointingAngle] = ((collision.mcPosX() - track.vx()) * MotherTrack.px() +
2854+
(collision.mcPosY() - track.vy()) * MotherTrack.py() +
2855+
(collision.mcPosZ() - track.vz()) * MotherTrack.pz()) /
2856+
(MotherTrack.p() * values[VarManager::kMCVertexingLxyz]);
2857+
2858+
values[kMCLxyExpected] = (MotherTrack.pt() / m) * (pdgLifetime * o2::constants::physics::LightSpeedCm2S);
2859+
values[kMCLxyzExpected] = (MotherTrack.p() / m) * (pdgLifetime * o2::constants::physics::LightSpeedCm2S);
2860+
2861+
values[kMCVertexingLzProjected] = ((track.vz() - collision.mcPosZ()) * MotherTrack.pz()) / TMath::Sqrt(MotherTrack.pz() * MotherTrack.pz());
2862+
values[kMCVertexingLxyProjected] = ((track.vx() - collision.mcPosX()) * MotherTrack.px()) + ((track.vy() - collision.mcPosY()) * MotherTrack.py());
2863+
values[kMCVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((MotherTrack.px() * MotherTrack.px()) + (MotherTrack.py() * MotherTrack.py()));
2864+
values[kMCVertexingLxyzProjected] = ((track.vx() - collision.mcPosX()) * MotherTrack.px()) + ((track.vy() - collision.mcPosY()) * MotherTrack.py()) + ((track.vz() - collision.mcPosZ()) * MotherTrack.pz());
2865+
values[kMCVertexingLxyzProjected] = values[kMCVertexingLxyzProjected] / TMath::Sqrt((MotherTrack.px() * MotherTrack.px()) + (MotherTrack.py() * MotherTrack.py()) + (MotherTrack.pz() * MotherTrack.pz()));
2866+
values[kMCVertexingTauxyProjected] = values[kMCVertexingLxyProjected] * m / (MotherTrack.pt());
2867+
values[kMCVertexingTauxyProjectedNs] = values[kMCVertexingTauxyProjected] / o2::constants::physics::LightSpeedCm2NS;
2868+
values[kMCVertexingTauzProjected] = values[kMCVertexingLzProjected] * m / TMath::Abs(MotherTrack.pz());
2869+
values[kMCVertexingTauxyzProjected] = values[kMCVertexingLxyzProjected] * m / (MotherTrack.p());
2870+
2871+
}
28072872
template <int pairType, typename T, typename T1>
28082873
void VarManager::FillEnergyCorrelatorsMC(T const& track, T1 const& t1, float* values)
28092874
{

0 commit comments

Comments
 (0)