Skip to content

Commit 4fe8cc6

Browse files
authored
[PWG-DQ] Implemented collision-track association to the table-maker and table-reader workflows (#4585)
Main changes: 1) tableMaker_withAssoc.cxx: skimming workflow running on data to produce the DQ reduced data model 2) tableReader_withAssoc.cxx: analysis workflow running on data Other updates needed to implement the above workflows
1 parent 19297e4 commit 4fe8cc6

15 files changed

+3002
-174
lines changed

PWGDQ/Core/HistogramManager.cxx

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,6 @@ void HistogramManager::AddHistClass(const char* histClass)
110110
fMainList->Add(hList);
111111
std::list<std::vector<int>> varList;
112112
fVariablesMap[histClass] = varList;
113-
cout << "Adding histogram class " << histClass << endl;
114-
cout << "Variable map size :: " << fVariablesMap.size() << endl;
115113
}
116114

117115
//_________________________________________________________________
@@ -181,8 +179,6 @@ void HistogramManager::AddHistogram(const char* histClass, const char* hname, co
181179
varVector.push_back(varT); // variable used for profiling in case of TProfile3D
182180
std::list varList = fVariablesMap[histClass];
183181
varList.push_back(varVector);
184-
cout << "Adding histogram " << hname << endl;
185-
cout << "size of array :: " << varList.size() << endl;
186182
fVariablesMap[histClass] = varList;
187183

188184
// create and configure histograms according to required options
@@ -380,8 +376,6 @@ void HistogramManager::AddHistogram(const char* histClass, const char* hname, co
380376
varVector.push_back(varT); // variable used for profiling in case of TProfile3D
381377
std::list varList = fVariablesMap[histClass];
382378
varList.push_back(varVector);
383-
cout << "Adding histogram " << hname << endl;
384-
cout << "size of array :: " << varList.size() << endl;
385379
fVariablesMap[histClass] = varList;
386380

387381
TH1* h = nullptr;
@@ -548,8 +542,6 @@ void HistogramManager::AddHistogram(const char* histClass, const char* hname, co
548542
}
549543
std::list varList = fVariablesMap[histClass];
550544
varList.push_back(varVector);
551-
cout << "Adding histogram " << hname << endl;
552-
cout << "size of array :: " << varList.size() << endl;
553545
fVariablesMap[histClass] = varList;
554546

555547
uint32_t nbins = 1;
@@ -627,8 +619,6 @@ void HistogramManager::AddHistogram(const char* histClass, const char* hname, co
627619
}
628620
std::list varList = fVariablesMap[histClass];
629621
varList.push_back(varVector);
630-
cout << "Adding histogram " << hname << endl;
631-
cout << "size of array :: " << varList.size() << endl;
632622
fVariablesMap[histClass] = varList;
633623

634624
// get the min and max for each axis

PWGDQ/Core/HistogramsLibrary.cxx

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -759,40 +759,48 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
759759
}
760760
}
761761

762-
if (groupStr.Contains("dilepton-hadron-mass")) {
763-
hm->AddHistogram(histClass, "Mass_Dilepton", "", false, 125, 0.0, 5.0, VarManager::kPairMassDau);
764-
hm->AddHistogram(histClass, "Mass_Hadron", "", false, 125, 0.0, 5.0, VarManager::kMassDau);
765-
hm->AddHistogram(histClass, "Mass_Dilepton_Mass_Hadron", "", false, 125, 0.0, 5.0, VarManager::kPairMassDau, 125, 0.0, 5.0, VarManager::kMassDau);
766-
hm->AddHistogram(histClass, "Pt_Dilepton", "", false, 120, 0.0, 30.0, VarManager::kPairPtDau);
767-
hm->AddHistogram(histClass, "Pt_Track", "", false, 120, 0.0, 30.0, VarManager::kPt);
768-
hm->AddHistogram(histClass, "Mass", "", false, 750, 0.0, 30.0, VarManager::kPairMass);
769-
hm->AddHistogram(histClass, "Pt", "", false, 750, 0.0, 30.0, VarManager::kPairPt);
770-
hm->AddHistogram(histClass, "Mass_Pt", "", false, 40, 0.0, 20.0, VarManager::kPairMass, 40, 0.0, 20.0, VarManager::kPairPt);
771-
hm->AddHistogram(histClass, "Pt_Dilepton__Pt", "", false, 40, 0.0, 20.0, VarManager::kPairPtDau, 40, 0.0, 20.0, VarManager::kPairPt);
772-
hm->AddHistogram(histClass, "Pt_Track__Pt", "", false, 40, 0.0, 20.0, VarManager::kPt, 40, 0.0, 20.0, VarManager::kPairPt);
773-
hm->AddHistogram(histClass, "UsedKF", "", false, 2, -0.5, 1.5, VarManager::kUsedKF);
774-
hm->AddHistogram(histClass, "KFMass", "", false, 750, 0.0, 30.0, VarManager::kKFMass);
775-
hm->AddHistogram(histClass, "Lz", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLz);
776-
hm->AddHistogram(histClass, "Lxy", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLxy);
777-
hm->AddHistogram(histClass, "Lxyz", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLxyz);
778-
hm->AddHistogram(histClass, "Tauz", "", false, 4000, -0.01, 0.01, VarManager::kVertexingTauz);
779-
hm->AddHistogram(histClass, "Tauxy", "", false, 4000, -0.01, 0.01, VarManager::kVertexingTauxy);
780-
hm->AddHistogram(histClass, "LxyzErr", "", false, 100, 0.0, 10.0, VarManager::kVertexingLxyzErr);
781-
hm->AddHistogram(histClass, "LzErr", "", false, 100, 0.0, 10.0, VarManager::kVertexingLzErr);
782-
hm->AddHistogram(histClass, "TauzErr", "", false, 100, 0.0, 10.0, VarManager::kVertexingTauzErr);
783-
hm->AddHistogram(histClass, "VtxingProcCode", "", false, 10, 0.0, 10.0, VarManager::kVertexingProcCode);
784-
hm->AddHistogram(histClass, "VtxingChi2PCA", "", false, 100, 0.0, 10.0, VarManager::kVertexingChi2PCA);
785-
hm->AddHistogram(histClass, "LzProj", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLzProjected);
786-
hm->AddHistogram(histClass, "LxyProj", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLxyProjected);
787-
hm->AddHistogram(histClass, "LxyzProj", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLxyzProjected);
788-
hm->AddHistogram(histClass, "TauzProj", "", false, 4000, -0.5, 0.5, VarManager::kVertexingTauzProjected);
789-
hm->AddHistogram(histClass, "TauxyProj", "", false, 4000, -0.5, 0.5, VarManager::kVertexingTauxyProjected);
790-
hm->AddHistogram(histClass, "CosPointingAngle", "", false, 100, 0.0, 1.0, VarManager::kCosPointingAngle);
791-
}
792-
793-
if (groupStr.Contains("dilepton-hadron-correlation")) {
794-
hm->AddHistogram(histClass, "DeltaEta_DeltaPhi", "", false, 20, -2.0, 2.0, VarManager::kDeltaEta, 50, -8.0, 8.0, VarManager::kDeltaPhi);
795-
hm->AddHistogram(histClass, "DeltaEta_DeltaPhiSym", "", false, 20, -2.0, 2.0, VarManager::kDeltaEta, 50, -8.0, 8.0, VarManager::kDeltaPhiSym);
762+
if (groupStr.Contains("dilepton-track")) {
763+
if (subGroupStr.Contains("mixedevent")) { // for mixed event
764+
hm->AddHistogram(histClass, "Mass_Pt", "", false, 40, 0.0, 20.0, VarManager::kPairMass, 40, 0.0, 20.0, VarManager::kPairPt);
765+
hm->AddHistogram(histClass, "Mass", "", false, 750, 0.0, 30.0, VarManager::kPairMass);
766+
hm->AddHistogram(histClass, "Pt", "", false, 750, 0.0, 30.0, VarManager::kPairPt);
767+
}
768+
if (subGroupStr.Contains("invmass")) {
769+
hm->AddHistogram(histClass, "Mass_Dilepton", "", false, 125, 0.0, 5.0, VarManager::kPairMassDau);
770+
hm->AddHistogram(histClass, "Mass_Hadron", "", false, 125, 0.0, 5.0, VarManager::kMassDau);
771+
hm->AddHistogram(histClass, "Mass_Dilepton_Mass_Hadron", "", false, 125, 0.0, 5.0, VarManager::kPairMassDau, 125, 0.0, 5.0, VarManager::kMassDau);
772+
hm->AddHistogram(histClass, "Pt_Dilepton", "", false, 120, 0.0, 30.0, VarManager::kPairPtDau);
773+
hm->AddHistogram(histClass, "Pt_Track", "", false, 120, 0.0, 30.0, VarManager::kPt);
774+
hm->AddHistogram(histClass, "Mass", "", false, 750, 0.0, 30.0, VarManager::kPairMass);
775+
hm->AddHistogram(histClass, "Pt", "", false, 750, 0.0, 30.0, VarManager::kPairPt);
776+
hm->AddHistogram(histClass, "Mass_Pt", "", false, 40, 0.0, 20.0, VarManager::kPairMass, 40, 0.0, 20.0, VarManager::kPairPt);
777+
hm->AddHistogram(histClass, "Pt_Dilepton__Pt", "", false, 40, 0.0, 20.0, VarManager::kPairPtDau, 40, 0.0, 20.0, VarManager::kPairPt);
778+
hm->AddHistogram(histClass, "Pt_Track__Pt", "", false, 40, 0.0, 20.0, VarManager::kPt, 40, 0.0, 20.0, VarManager::kPairPt);
779+
}
780+
if (subGroupStr.Contains("vertexing")) {
781+
hm->AddHistogram(histClass, "UsedKF", "", false, 2, -0.5, 1.5, VarManager::kUsedKF);
782+
hm->AddHistogram(histClass, "KFMass", "", false, 750, 0.0, 30.0, VarManager::kKFMass);
783+
hm->AddHistogram(histClass, "Lz", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLz);
784+
hm->AddHistogram(histClass, "Lxy", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLxy);
785+
hm->AddHistogram(histClass, "Lxyz", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLxyz);
786+
hm->AddHistogram(histClass, "Tauz", "", false, 4000, -0.01, 0.01, VarManager::kVertexingTauz);
787+
hm->AddHistogram(histClass, "Tauxy", "", false, 4000, -0.01, 0.01, VarManager::kVertexingTauxy);
788+
hm->AddHistogram(histClass, "LxyzErr", "", false, 100, 0.0, 10.0, VarManager::kVertexingLxyzErr);
789+
hm->AddHistogram(histClass, "LzErr", "", false, 100, 0.0, 10.0, VarManager::kVertexingLzErr);
790+
hm->AddHistogram(histClass, "TauzErr", "", false, 100, 0.0, 10.0, VarManager::kVertexingTauzErr);
791+
hm->AddHistogram(histClass, "VtxingProcCode", "", false, 10, 0.0, 10.0, VarManager::kVertexingProcCode);
792+
hm->AddHistogram(histClass, "VtxingChi2PCA", "", false, 100, 0.0, 10.0, VarManager::kVertexingChi2PCA);
793+
hm->AddHistogram(histClass, "LzProj", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLzProjected);
794+
hm->AddHistogram(histClass, "LxyProj", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLxyProjected);
795+
hm->AddHistogram(histClass, "LxyzProj", "", false, 1000, -2.0, 2.0, VarManager::kVertexingLxyzProjected);
796+
hm->AddHistogram(histClass, "TauzProj", "", false, 4000, -0.5, 0.5, VarManager::kVertexingTauzProjected);
797+
hm->AddHistogram(histClass, "TauxyProj", "", false, 4000, -0.5, 0.5, VarManager::kVertexingTauxyProjected);
798+
hm->AddHistogram(histClass, "CosPointingAngle", "", false, 100, 0.0, 1.0, VarManager::kCosPointingAngle);
799+
}
800+
if (subGroupStr.Contains("correlation")) {
801+
hm->AddHistogram(histClass, "DeltaEta_DeltaPhi", "", false, 20, -2.0, 2.0, VarManager::kDeltaEta, 50, -8.0, 8.0, VarManager::kDeltaPhi);
802+
hm->AddHistogram(histClass, "DeltaEta_DeltaPhiSym", "", false, 20, -2.0, 2.0, VarManager::kDeltaEta, 50, -8.0, 8.0, VarManager::kDeltaPhiSym);
803+
}
796804
}
797805

798806
if (groupStr.Contains("dilepton-hadron-array-correlation")) {

PWGDQ/Core/VarManager.h

Lines changed: 61 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
#include "Math/GenVector/Boost.h"
3838

3939
#include "Framework/DataTypes.h"
40-
// #include "MCHTracking/TrackExtrap.h"
4140
#include "TGeoGlobalMagField.h"
4241
#include "Field/MagneticField.h"
4342
#include "ReconstructionDataFormats/Track.h"
@@ -46,6 +45,8 @@
4645
#include "Common/CCDB/EventSelectionParams.h"
4746
#include "Common/CCDB/TriggerAliases.h"
4847
#include "ReconstructionDataFormats/DCA.h"
48+
#include "DetectorsBase/Propagator.h"
49+
#include "Common/Core/trackUtilities.h"
4950

5051
#include "Math/SMatrix.h"
5152
#include "ReconstructionDataFormats/TrackFwd.h"
@@ -340,7 +341,6 @@ class VarManager : public TObject
340341
kMuonC1Pt2Phi,
341342
kMuonC1Pt2Tgl,
342343
kMuonC1Pt21Pt2,
343-
kNMuonTrackVariables,
344344
kMuonTrackType,
345345
kMuonDCAx,
346346
kMuonDCAy,
@@ -349,6 +349,7 @@ class VarManager : public TObject
349349
kMftNClusters,
350350
kMftClusterSize,
351351
kMftMeanClusterSize,
352+
kNMuonTrackVariables,
352353

353354
// MC particle variables
354355
kMCPdgCode,
@@ -416,7 +417,6 @@ class VarManager : public TObject
416417
kPsi2C,
417418
kCos2DeltaPhi,
418419
kCos3DeltaPhi,
419-
kNPairVariables,
420420
kDeltaPtotTracks,
421421
kVertexingLxyOverErr,
422422
kVertexingLzOverErr,
@@ -432,6 +432,7 @@ class VarManager : public TObject
432432
kKFChi2OverNDFGeo,
433433
kKFNContributorsPV,
434434
kKFCosPA,
435+
kNPairVariables,
435436

436437
// Candidate-track correlation variables
437438
kPairMass,
@@ -629,6 +630,8 @@ class VarManager : public TObject
629630
static void FillEvent(T const& event, float* values = nullptr);
630631
template <uint32_t fillMap, typename T>
631632
static void FillTrack(T const& track, float* values = nullptr);
633+
template <uint32_t fillMap, typename T, typename C>
634+
static void FillTrackCollision(T const& track, C const& collision, float* values = nullptr);
632635
template <typename U, typename T>
633636
static void FillTrackMC(const U& mcStack, T const& track, float* values = nullptr);
634637
template <uint32_t fillMap, typename T1, typename T2, typename C>
@@ -726,7 +729,7 @@ class VarManager : public TObject
726729
VarManager& operator=(const VarManager& c);
727730
VarManager(const VarManager& c);
728731

729-
ClassDef(VarManager, 2)
732+
ClassDefNV(VarManager, 3)
730733
};
731734

732735
template <typename T, typename U, typename V>
@@ -856,8 +859,10 @@ void VarManager::FillPropagateMuon(const T& muon, const C& collision, float* val
856859
if (!values) {
857860
values = fgValues;
858861
}
859-
if constexpr ((fillMap & MuonCov) > 0) {
862+
863+
if constexpr ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0) {
860864
o2::dataformats::GlobalFwdTrack propmuon = PropagateMuon(muon, collision);
865+
861866
values[kPt] = propmuon.getPt();
862867
values[kX] = propmuon.getX();
863868
values[kY] = propmuon.getY();
@@ -979,14 +984,14 @@ void VarManager::FillEvent(T const& event, float* values)
979984
values[kVtxZ] = event.posZ();
980985
values[kVtxNcontrib] = event.numContrib();
981986
if (fgUsedVars[kIsSel8]) {
982-
values[kIsSel8] = (event.tag() & (uint64_t(1) << o2::aod::evsel::kIsTriggerTVX)) > 0;
987+
values[kIsSel8] = (event.selection_bit(o2::aod::evsel::kIsTriggerTVX) > 0);
983988
}
984989
if (fgUsedVars[kIsDoubleGap]) {
985-
values[kIsDoubleGap] = (event.tag() & (uint64_t(1) << (56 + kDoubleGap))) > 0;
990+
values[kIsDoubleGap] = (event.tag_bit(56 + kDoubleGap) > 0);
986991
}
987992
if (fgUsedVars[kIsSingleGap] || fgUsedVars[kIsSingleGapA] || fgUsedVars[kIsSingleGapC]) {
988-
values[kIsSingleGapA] = (event.tag() & (uint64_t(1) << (56 + kSingleGapA))) > 0;
989-
values[kIsSingleGapC] = (event.tag() & (uint64_t(1) << (56 + kSingleGapC))) > 0;
993+
values[kIsSingleGapA] = (event.tag_bit(56 + kSingleGapA) > 0);
994+
values[kIsSingleGapC] = (event.tag_bit(56 + kSingleGapC) > 0);
990995
values[kIsSingleGap] = values[kIsSingleGapA] || values[kIsSingleGapC];
991996
}
992997
}
@@ -997,37 +1002,37 @@ void VarManager::FillEvent(T const& event, float* values)
9971002
values[kCentVZERO] = event.centRun2V0M();
9981003
values[kCentFT0C] = event.centFT0C();
9991004
if (fgUsedVars[kIsINT7]) {
1000-
values[kIsINT7] = (event.triggerAlias() & (uint32_t(1) << kINT7)) > 0;
1005+
values[kIsINT7] = (event.alias_bit(kINT7) > 0);
10011006
}
10021007
if (fgUsedVars[kIsEMC7]) {
1003-
values[kIsEMC7] = (event.triggerAlias() & (uint32_t(1) << kEMC7)) > 0;
1008+
values[kIsEMC7] = (event.alias_bit(kEMC7) > 0);
10041009
}
10051010
if (fgUsedVars[kIsINT7inMUON]) {
1006-
values[kIsINT7inMUON] = (event.triggerAlias() & (uint32_t(1) << kINT7inMUON)) > 0;
1011+
values[kIsINT7inMUON] = (event.alias_bit(kINT7inMUON) > 0);
10071012
}
10081013
if (fgUsedVars[kIsMuonSingleLowPt7]) {
1009-
values[kIsMuonSingleLowPt7] = (event.triggerAlias() & (uint32_t(1) << kMuonSingleLowPt7)) > 0;
1014+
values[kIsMuonSingleLowPt7] = (event.alias_bit(kMuonSingleLowPt7) > 0);
10101015
}
10111016
if (fgUsedVars[kIsMuonSingleHighPt7]) {
1012-
values[kIsMuonSingleHighPt7] = (event.triggerAlias() & (uint32_t(1) << kMuonSingleHighPt7)) > 0;
1017+
values[kIsMuonSingleHighPt7] = (event.alias_bit(kMuonSingleHighPt7) > 0);
10131018
}
10141019
if (fgUsedVars[kIsMuonUnlikeLowPt7]) {
1015-
values[kIsMuonUnlikeLowPt7] = (event.triggerAlias() & (uint32_t(1) << kMuonUnlikeLowPt7)) > 0;
1020+
values[kIsMuonUnlikeLowPt7] = (event.alias_bit(kMuonUnlikeLowPt7) > 0);
10161021
}
10171022
if (fgUsedVars[kIsMuonLikeLowPt7]) {
1018-
values[kIsMuonLikeLowPt7] = (event.triggerAlias() & (uint32_t(1) << kMuonLikeLowPt7)) > 0;
1023+
values[kIsMuonLikeLowPt7] = (event.alias_bit(kMuonLikeLowPt7) > 0);
10191024
}
10201025
if (fgUsedVars[kIsCUP8]) {
1021-
values[kIsCUP8] = (event.triggerAlias() & (uint32_t(1) << kCUP8)) > 0;
1026+
values[kIsCUP8] = (event.alias_bit(kCUP8) > 0);
10221027
}
10231028
if (fgUsedVars[kIsCUP9]) {
1024-
values[kIsCUP9] = (event.triggerAlias() & (uint32_t(1) << kCUP9)) > 0;
1029+
values[kIsCUP9] = (event.alias_bit(kCUP9) > 0);
10251030
}
10261031
if (fgUsedVars[kIsMUP10]) {
1027-
values[kIsMUP10] = (event.triggerAlias() & (uint32_t(1) << kMUP10)) > 0;
1032+
values[kIsMUP10] = (event.alias_bit(kMUP10) > 0);
10281033
}
10291034
if (fgUsedVars[kIsMUP11]) {
1030-
values[kIsMUP11] = (event.triggerAlias() & (uint32_t(1) << kMUP11)) > 0;
1035+
values[kIsMUP11] = (event.alias_bit(kMUP11) > 0);
10311036
}
10321037
}
10331038

@@ -1150,20 +1155,20 @@ void VarManager::FillTrack(T const& track, float* values)
11501155
values[kCharge] = track.sign();
11511156

11521157
if constexpr ((fillMap & ReducedTrack) > 0 && !((fillMap & Pair) > 0)) {
1153-
values[kIsGlobalTrack] = track.filteringFlags() & (uint64_t(1) << 0);
1154-
values[kIsGlobalTrackSDD] = track.filteringFlags() & (uint64_t(1) << 1);
1158+
values[kIsGlobalTrack] = track.filteringFlags_bit(0);
1159+
values[kIsGlobalTrackSDD] = track.filteringFlags_bit(1);
11551160
values[kIsAmbiguous] = track.isAmbiguous();
11561161

1157-
values[kIsLegFromGamma] = static_cast<bool>(track.filteringFlags() & (uint64_t(1) << 2));
1158-
values[kIsLegFromK0S] = static_cast<bool>(track.filteringFlags() & (uint64_t(1) << 3));
1159-
values[kIsLegFromLambda] = static_cast<bool>(track.filteringFlags() & (uint64_t(1) << 4));
1160-
values[kIsLegFromAntiLambda] = static_cast<bool>(track.filteringFlags() & (uint64_t(1) << 5));
1161-
values[kIsLegFromOmega] = static_cast<bool>(track.filteringFlags() & (uint64_t(1) << 6));
1162+
values[kIsLegFromGamma] = track.filteringFlags_bit(2);
1163+
values[kIsLegFromK0S] = track.filteringFlags_bit(3);
1164+
values[kIsLegFromLambda] = track.filteringFlags_bit(4);
1165+
values[kIsLegFromAntiLambda] = track.filteringFlags_bit(5);
1166+
values[kIsLegFromOmega] = track.filteringFlags_bit(6);
11621167

11631168
values[kIsProtonFromLambdaAndAntiLambda] = static_cast<bool>((values[kIsLegFromLambda] * track.sign() > 0) || (values[kIsLegFromAntiLambda] * (-track.sign()) > 0));
11641169

11651170
for (int i = 0; i < 8; i++) {
1166-
values[kIsDalitzLeg + i] = static_cast<bool>(track.filteringFlags() & (uint64_t(1) << (7 + i)));
1171+
values[kIsDalitzLeg + i] = track.filteringFlags_bit(7 + i);
11671172
}
11681173
}
11691174
}
@@ -1490,6 +1495,32 @@ void VarManager::FillTrack(T const& track, float* values)
14901495
FillTrackDerived(values);
14911496
}
14921497

1498+
template <uint32_t fillMap, typename T, typename C>
1499+
void VarManager::FillTrackCollision(T const& track, C const& collision, float* values)
1500+
{
1501+
1502+
if (!values) {
1503+
values = fgValues;
1504+
}
1505+
if constexpr ((fillMap & ReducedTrackBarrel) > 0 || (fillMap & TrackDCA) > 0) {
1506+
auto trackPar = getTrackPar(track);
1507+
std::array<float, 2> dca{1e10f, 1e10f};
1508+
trackPar.propagateParamToDCA({collision.posX(), collision.posY(), collision.posZ()}, fgMagField, &dca);
1509+
1510+
values[kTrackDCAxy] = dca[0];
1511+
values[kTrackDCAz] = dca[1];
1512+
1513+
if constexpr ((fillMap & ReducedTrackBarrelCov) > 0 || (fillMap & TrackCov) > 0) {
1514+
if (fgUsedVars[kTrackDCAsigXY]) {
1515+
values[kTrackDCAsigXY] = dca[0] / std::sqrt(track.cYY());
1516+
}
1517+
if (fgUsedVars[kTrackDCAsigZ]) {
1518+
values[kTrackDCAsigZ] = dca[1] / std::sqrt(track.cZZ());
1519+
}
1520+
}
1521+
}
1522+
}
1523+
14931524
template <typename U, typename T>
14941525
void VarManager::FillTrackMC(const U& mcStack, T const& track, float* values)
14951526
{
@@ -2122,14 +2153,14 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2,
21222153
float xyz[3] = {0, 0, 0};
21232154
KFGeoTwoProng.GetFieldValue(xyz, B);
21242155
// TODO: find better soluton to handle cases where KF outputs negative variances
2125-
float covXX = 0.1;
2156+
/*float covXX = 0.1;
21262157
float covYY = 0.1;
21272158
if (KFGeoTwoProng.GetCovariance(0, 0) > 0) {
21282159
covXX = KFGeoTwoProng.GetCovariance(0, 0);
21292160
}
21302161
if (KFGeoTwoProng.GetCovariance(1, 1) > 0) {
21312162
covYY = KFGeoTwoProng.GetCovariance(0, 0);
2132-
}
2163+
}*/
21332164
pars1.propagateToVtxhelixWithMCS(KFGeoTwoProng.GetZ(), {KFGeoTwoProng.GetX(), KFGeoTwoProng.GetY()}, {KFGeoTwoProng.GetCovariance(0, 0), KFGeoTwoProng.GetCovariance(1, 1)}, B[2], x2x01);
21342165
pars2.propagateToVtxhelixWithMCS(KFGeoTwoProng.GetZ(), {KFGeoTwoProng.GetX(), KFGeoTwoProng.GetY()}, {KFGeoTwoProng.GetCovariance(0, 0), KFGeoTwoProng.GetCovariance(1, 1)}, B[2], x2x02);
21352166
v1 = {pars1.getPt(), pars1.getEta(), pars1.getPhi(), m1};

0 commit comments

Comments
 (0)