Skip to content

Commit d20cdae

Browse files
iarseneIonut Cristian Arsenealibuild
authored
[PWGDQ] Analysis workflow for MC, which runs directly on full AO2Ds (#14151)
Co-authored-by: Ionut Cristian Arsene <iarsene@cern.ch> Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent f7e61f6 commit d20cdae

File tree

9 files changed

+3346
-109
lines changed

9 files changed

+3346
-109
lines changed

PWGDQ/Core/HistogramsLibrary.cxx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
3333
groupStr.ToLower();
3434
TString subGroupStr = subGroupName;
3535
subGroupStr.ToLower();
36+
if (groupStr.Contains("timeframe")) {
37+
hm->AddHistogram(histClass, "TF_NCollisions", "Number of collisions per TF", false, 1000, 0.0, 5000.0, VarManager::kTFNCollisions);
38+
hm->AddHistogram(histClass, "TF_NMCCollisions", "Number of MC collisions per TF", false, 1000, 0.0, 5000.0, VarManager::kTFNMCCollisions);
39+
hm->AddHistogram(histClass, "TF_NBCs", "Number of BCs per TF", false, 1000, 0.0, 50000.0, VarManager::kTFNBCs);
40+
hm->AddHistogram(histClass, "TF_NTracks", "Number of tracks per TF", false, 1000, 0.0, 200000.0, VarManager::kTFNTracks);
41+
hm->AddHistogram(histClass, "TF_NMuons", "Number of muons per TF", false, 1000, 0.0, 5000.0, VarManager::kTFNMuons);
42+
hm->AddHistogram(histClass, "TF_NMFTs", "Number of MFT tracks per TF", false, 1000, 0.0, 200000.0, VarManager::kTFNMFTs);
43+
}
3644
if (!groupStr.CompareTo("event")) {
3745
if (!subGroupStr.Contains("generator")) {
3846
hm->AddHistogram(histClass, "VtxZ", "Vtx Z", false, 60, -15.0, 15.0, VarManager::kVtxZ);

PWGDQ/Core/MCProng.cxx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,10 @@ void MCProng::Print() const
159159
<< ") ExcludePDG(" << fExcludePDG[i] << ") SourceBits(" << fSourceBits[i] << ") ExcludeSource(" << fExcludeSource[i]
160160
<< ") UseANDonSource(" << fUseANDonSourceBitMap[i] << ") CheckGenerationsInTime(" << fCheckGenerationsInTime << ")";
161161
for (std::size_t j = 0; j < fPDGInHistory.size(); j++) {
162-
std::cout << " #" << j << " PDGInHistory(" << fPDGInHistory[j] << ") ExcludePDGInHistory(" << fExcludePDGInHistory[j] << ")";
162+
std::cout << " #" << j << " PDGInHistory(" << fPDGInHistory[j] << ")";
163+
}
164+
for (std::size_t j = 0; j < fExcludePDGInHistory.size(); j++) {
165+
std::cout << " #" << j << " ExcludePDGInHistory(" << fExcludePDGInHistory[j] << ")";
163166
}
164167
std::cout << std::endl;
165168
}

PWGDQ/Core/VarManager.cxx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,18 @@ void VarManager::SetDefaultVarNames()
369369

370370
fgVariableNames[kRunNo] = "Run number";
371371
fgVariableUnits[kRunNo] = "";
372+
fgVariableNames[kTFNBCs] = "Number of bunch crossings per TF";
373+
fgVariableUnits[kTFNBCs] = "";
374+
fgVariableNames[kTFNCollisions] = "Number of collisions per TF";
375+
fgVariableUnits[kTFNCollisions] = "";
376+
fgVariableNames[kTFNMCCollisions] = "Number of MC collisions per TF";
377+
fgVariableUnits[kTFNMCCollisions] = "";
378+
fgVariableNames[kTFNTracks] = "Number of tracks per TF";
379+
fgVariableUnits[kTFNTracks] = "";
380+
fgVariableNames[kTFNMuons] = "Number of muons per TF";
381+
fgVariableUnits[kTFNMuons] = "";
382+
fgVariableNames[kTFNMFTs] = "Number of MFT tracks per TF";
383+
fgVariableUnits[kTFNMFTs] = "";
372384
fgVariableNames[kBC] = "Bunch crossing";
373385
fgVariableUnits[kBC] = "";
374386
fgVariableNames[kTimeFromSOR] = "time since SOR";
@@ -1402,6 +1414,12 @@ void VarManager::SetDefaultVarNames()
14021414
// Set the variables short names map. This is needed for dynamic configuration via JSON files
14031415
fgVarNamesMap["kNothing"] = kNothing;
14041416
fgVarNamesMap["kRunNo"] = kRunNo;
1417+
fgVarNamesMap["kTFNBCs"] = kTFNBCs;
1418+
fgVarNamesMap["kTFNCollisions"] = kTFNCollisions;
1419+
fgVarNamesMap["kTFNMCCollisions"] = kTFNMCCollisions;
1420+
fgVarNamesMap["kTFNTracks"] = kTFNTracks;
1421+
fgVarNamesMap["kTFNMuons"] = kTFNMuons;
1422+
fgVarNamesMap["kTFNMFTs"] = kTFNMFTs;
14051423
fgVarNamesMap["kNRunWiseVariables"] = kNRunWiseVariables;
14061424
fgVarNamesMap["kTimestamp"] = kTimestamp;
14071425
fgVarNamesMap["kTimeFromSOR"] = kTimeFromSOR;

PWGDQ/Core/VarManager.h

Lines changed: 92 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include "Common/CCDB/TriggerAliases.h"
2828
#include "Common/Core/CollisionTypeHelper.h"
2929
#include "Common/Core/EventPlaneHelper.h"
30+
#include "Common/Core/PID/PIDTOFParamService.h"
3031
#include "Common/Core/fwdtrackUtilities.h"
3132
#include "Common/Core/trackUtilities.h"
3233

@@ -129,18 +130,19 @@ class VarManager : public TObject
129130
ReducedMuon = BIT(14),
130131
ReducedMuonExtra = BIT(15),
131132
ReducedMuonCov = BIT(16),
132-
ParticleMC = BIT(17),
133-
Pair = BIT(18), // TODO: check whether we really need the Pair member here
134-
AmbiTrack = BIT(19),
135-
AmbiMuon = BIT(20),
136-
DalitzBits = BIT(21),
137-
TrackTPCPID = BIT(22),
138-
TrackMFT = BIT(23),
139-
ReducedTrackCollInfo = BIT(24), // TODO: remove it once new reduced data tables are produced for dielectron with ReducedTracksBarrelInfo
140-
ReducedMuonCollInfo = BIT(25), // TODO: remove it once new reduced data tables are produced for dielectron with ReducedTracksBarrelInfo
141-
MuonRealign = BIT(26),
142-
MuonCovRealign = BIT(27),
143-
MFTCov = BIT(28)
133+
Pair = BIT(17), // TODO: check whether we really need the Pair member here
134+
AmbiTrack = BIT(18),
135+
AmbiMuon = BIT(19),
136+
DalitzBits = BIT(20),
137+
TrackTPCPID = BIT(21),
138+
TrackMFT = BIT(22),
139+
ReducedTrackCollInfo = BIT(23), // TODO: remove it once new reduced data tables are produced for dielectron with ReducedTracksBarrelInfo
140+
ReducedMuonCollInfo = BIT(24), // TODO: remove it once new reduced data tables are produced for dielectron with ReducedTracksBarrelInfo
141+
MuonRealign = BIT(25),
142+
MuonCovRealign = BIT(26),
143+
MFTCov = BIT(27),
144+
TrackTOFService = BIT(28),
145+
ParticleMC = BIT(29)
144146
};
145147

146148
enum PairCandidateType {
@@ -188,8 +190,17 @@ class VarManager : public TObject
188190
kRunNo = 0,
189191
kNRunWiseVariables,
190192

193+
// Timeframe wise variables
194+
kTFNBCs = kNRunWiseVariables,
195+
kTFNCollisions,
196+
kTFNMCCollisions,
197+
kTFNTracks,
198+
kTFNMuons,
199+
kTFNMFTs,
200+
kNTFWiseVariables,
201+
191202
// Event wise variables
192-
kTimestamp,
203+
kTimestamp = kNTFWiseVariables,
193204
kTimeFromSOR, // Time since Start of Run (SOR) in minutes
194205
kCollisionTime,
195206
kCollisionTimeRes,
@@ -442,7 +453,6 @@ class VarManager : public TObject
442453
kTwoR2SP2, // Scalar product resolution of event2 for ME technique
443454
kTwoR2EP1, // Event plane resolution of event2 for ME technique
444455
kTwoR2EP2, // Event plane resolution of event2 for ME technique
445-
kNEventWiseVariables,
446456

447457
// Variables for event mixing with cumulant
448458
kV22m,
@@ -453,9 +463,10 @@ class VarManager : public TObject
453463
kV24ME,
454464
kWV22ME,
455465
kWV24ME,
466+
kNEventWiseVariables,
456467

457468
// Basic track/muon/pair wise variables
458-
kX,
469+
kX = kNEventWiseVariables,
459470
kY,
460471
kZ,
461472
kPt,
@@ -571,7 +582,7 @@ class VarManager : public TObject
571582
kNBarrelTrackVariables,
572583

573584
// Muon track variables
574-
kMuonNClusters,
585+
kMuonNClusters = kNBarrelTrackVariables,
575586
kMuonPDca,
576587
kMuonRAtAbsorberEnd,
577588
kMCHBitMap,
@@ -1163,8 +1174,8 @@ class VarManager : public TObject
11631174
static void FillBC(T const& bc, float* values = nullptr);
11641175
template <uint32_t fillMap, typename T>
11651176
static void FillEvent(T const& event, float* values = nullptr);
1166-
template <uint32_t fillMap, typename TEvent, typename TAssoc, typename TTracks>
1167-
static void FillEventTrackEstimators(TEvent const& collision, TAssoc const& groupedTrackIndices, TTracks const& tracks, float* values = nullptr);
1177+
template <typename T>
1178+
static void FillTimeFrame(T const& tfTable, float* values = nullptr);
11681179
template <typename T>
11691180
static void FillEventFlowResoFactor(T const& hs_sp, T const& hs_ep, float* values = nullptr);
11701181
template <typename T>
@@ -1181,7 +1192,7 @@ class VarManager : public TObject
11811192
static void FillPhoton(T const& photon, float* values = nullptr);
11821193
template <uint32_t fillMap, typename T, typename C>
11831194
static void FillTrackCollision(T const& track, C const& collision, float* values = nullptr);
1184-
template <int candidateType, typename T1, typename T2, typename C>
1195+
template <int candidateType, uint32_t fillMap, typename T1, typename T2, typename C>
11851196
static void FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C const& collision, float* values = nullptr);
11861197
template <uint32_t fillMap, typename T, typename C, typename M, typename P>
11871198
static void FillTrackCollisionMatCorr(T const& track, C const& collision, M const& materialCorr, P const& propagator, float* values = nullptr);
@@ -1364,7 +1375,7 @@ class VarManager : public TObject
13641375
VarManager& operator=(const VarManager& c);
13651376
VarManager(const VarManager& c);
13661377

1367-
ClassDef(VarManager, 4);
1378+
ClassDef(VarManager, 5);
13681379
};
13691380

13701381
template <typename T, typename C>
@@ -1633,6 +1644,32 @@ void VarManager::FillGlobalMuonRefitCov(T1 const& muontrack, T2 const& mfttrack,
16331644
}
16341645
}
16351646

1647+
template <typename T>
1648+
void VarManager::FillTimeFrame(T const& tf, float* values)
1649+
{
1650+
if (!values) {
1651+
values = fgValues;
1652+
}
1653+
if constexpr (T::template contains<o2::aod::BCs>()) {
1654+
values[kTFNBCs] = tf.size();
1655+
}
1656+
if constexpr (T::template contains<o2::aod::Collisions>()) {
1657+
values[kTFNCollisions] = tf.size();
1658+
}
1659+
if constexpr (T::template contains<o2::aod::McCollisions>()) {
1660+
values[kTFNMCCollisions] = tf.size();
1661+
}
1662+
if constexpr (T::template contains<o2::aod::Tracks>()) {
1663+
values[kTFNTracks] = tf.size();
1664+
}
1665+
if constexpr (T::template contains<o2::aod::FwdTracks>()) {
1666+
values[kTFNMuons] = tf.size();
1667+
}
1668+
if constexpr (T::template contains<o2::aod::MFTTracks>()) {
1669+
values[kTFNMFTs] = tf.size();
1670+
}
1671+
}
1672+
16361673
template <typename T>
16371674
void VarManager::FillBC(T const& bc, float* values)
16381675
{
@@ -2138,56 +2175,6 @@ void VarManager::FillEvent(T const& event, float* values)
21382175
// FillEventDerived(values);
21392176
}
21402177

2141-
template <uint32_t fillMap, typename TEvent, typename TAssoc, typename TTracks>
2142-
void VarManager::FillEventTrackEstimators(TEvent const& collision, TAssoc const& assocs, TTracks const& /*tracks*/, float* values)
2143-
{
2144-
// Compute median Z for the large dcaZ tracks in the TPC
2145-
// This is for studies of the pileup impact on the TPC
2146-
2147-
if (!values) {
2148-
values = fgValues;
2149-
}
2150-
2151-
if constexpr ((fillMap & Track) > 0 && (fillMap & TrackDCA) > 0) {
2152-
2153-
std::vector<float> tracksP;
2154-
std::vector<float> tracksM;
2155-
2156-
for (const auto& assoc : assocs) {
2157-
auto track = assoc.template track_as<TTracks>();
2158-
// compute the dca of this track wrt the collision
2159-
auto trackPar = getTrackPar(track);
2160-
std::array<float, 2> dca{1e10f, 1e10f};
2161-
trackPar.propagateParamToDCA({collision.posX(), collision.posY(), collision.posZ()}, fgMagField, &dca);
2162-
2163-
// if it is a displaced track longitudinally, add it to the track vector
2164-
if (abs(dca[0]) < 3.0 && abs(dca[1]) > 4.0) {
2165-
if (track.tgl() > 0.1) {
2166-
tracksP.push_back(track.z());
2167-
}
2168-
if (track.tgl() < -0.1) {
2169-
tracksM.push_back(track.z());
2170-
}
2171-
}
2172-
} // end loop over associations
2173-
2174-
// compute the number of pileup contributors and the median z for pileup
2175-
if (tracksP.size() > 0) {
2176-
std::sort(tracksP.begin(), tracksP.end());
2177-
auto midP = tracksP.size() / 2;
2178-
values[kNTPCpileupContribA] = tracksP.size();
2179-
values[kNTPCpileupZA] = (tracksP.size() % 2 ? (tracksP[midP] + tracksP[midP - 1]) / 2 : tracksP[midP]);
2180-
}
2181-
2182-
if (tracksM.size() > 0) {
2183-
std::sort(tracksM.begin(), tracksM.end());
2184-
values[kNTPCpileupContribC] = tracksM.size();
2185-
auto midM = tracksM.size() / 2;
2186-
values[kNTPCpileupZC] = (tracksM.size() % 2 ? (tracksM[midM] + tracksM[midM - 1]) / 2 : tracksM[midM]);
2187-
}
2188-
}
2189-
}
2190-
21912178
template <typename T>
21922179
void VarManager::FillEventFlowResoFactor(T const& hs_sp, T const& hs_ep, float* values)
21932180
{
@@ -2280,25 +2267,17 @@ void VarManager::FillTwoEvents(T const& ev1, T const& ev2, float* values)
22802267
if (!values) {
22812268
values = fgValues;
22822269
}
2283-
2270+
// if constexpr (T::template contains<o2::aod::Collision>()) {
22842271
values[kTwoEvPosZ1] = ev1.posZ();
22852272
values[kTwoEvPosZ2] = ev2.posZ();
22862273
values[kTwoEvPosR1] = std::sqrt(ev1.posX() * ev1.posX() + ev1.posY() * ev1.posY());
22872274
values[kTwoEvPosR2] = std::sqrt(ev2.posX() * ev2.posX() + ev2.posY() * ev2.posY());
2288-
values[kTwoEvPVcontrib1] = ev1.numContrib();
2289-
values[kTwoEvPVcontrib2] = ev2.numContrib();
2290-
if (ev1.numContrib() < ev2.numContrib()) {
2291-
values[kTwoEvPosZ1] = ev2.posZ();
2292-
values[kTwoEvPosZ2] = ev1.posZ();
2293-
values[kTwoEvPVcontrib1] = ev2.numContrib();
2294-
values[kTwoEvPVcontrib2] = ev1.numContrib();
2295-
values[kTwoEvPosR1] = std::sqrt(ev2.posX() * ev2.posX() + ev2.posY() * ev2.posY());
2296-
;
2297-
values[kTwoEvPosR2] = std::sqrt(ev1.posX() * ev1.posX() + ev1.posY() * ev1.posY());
2298-
}
22992275
values[kTwoEvDeltaZ] = ev1.posZ() - ev2.posZ();
23002276
values[kTwoEvDeltaX] = ev1.posX() - ev2.posX();
23012277
values[kTwoEvDeltaY] = ev1.posY() - ev2.posY();
2278+
//}
2279+
values[kTwoEvPVcontrib1] = ev1.numContrib();
2280+
values[kTwoEvPVcontrib2] = ev2.numContrib();
23022281
values[kTwoEvDeltaR] = std::sqrt(values[kTwoEvDeltaX] * values[kTwoEvDeltaX] + values[kTwoEvDeltaY] * values[kTwoEvDeltaY]);
23032282
}
23042283

@@ -2680,6 +2659,12 @@ void VarManager::FillTrack(T const& track, float* values)
26802659
values[kTOFbeta] = track.beta();
26812660
}
26822661
}
2662+
if constexpr ((fillMap & TrackTOFService) > 0) {
2663+
values[kTOFnSigmaEl] = track.tofNSigmaDynEl();
2664+
values[kTOFnSigmaEl] = track.tofNSigmaDynPi();
2665+
values[kTOFnSigmaEl] = track.tofNSigmaDynKa();
2666+
values[kTOFnSigmaEl] = track.tofNSigmaDynPr();
2667+
}
26832668
if constexpr ((fillMap & TrackTPCPID) > 0) {
26842669
values[kTPCnSigmaEl] = track.tpcNSigmaEl();
26852670
values[kTPCnSigmaPi] = track.tpcNSigmaPi();
@@ -2870,47 +2855,55 @@ void VarManager::FillTrackMC(const U& mcStack, T const& track, float* values)
28702855
FillTrackDerived(values);
28712856
}
28722857

2873-
template <int candidateType, typename T1, typename T2, typename C>
2858+
template <int candidateType, uint32_t fillMap, typename T1, typename T2, typename C>
28742859
void VarManager::FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C const& collision, float* values)
28752860
{
28762861

28772862
if (!values) {
28782863
values = fgValues;
28792864
}
28802865

2881-
float m = 0.0;
2882-
float pdgLifetime = 0.0;
2883-
if (std::abs(MotherTrack.pdgCode()) == 521) {
2884-
m = o2::constants::physics::MassBPlus;
2885-
pdgLifetime = 1.638e-12; // s
2886-
}
2866+
float m = o2::constants::physics::MassBPlus;
2867+
float pdgLifetime = 1.638e-12; // s
28872868
if (std::abs(MotherTrack.pdgCode()) == 511) {
28882869
m = o2::constants::physics::MassB0;
28892870
pdgLifetime = 1.517e-12; // s
28902871
}
28912872

2873+
// Extract the collision primary vertex position using constexpr, since the collision type may be CollisionMC or ReducedMCEvent
2874+
double collPos[3] = {0.0, 0.0, 0.0};
2875+
if constexpr (fillMap & ObjTypes::CollisionMC) {
2876+
collPos[0] = collision.posX();
2877+
collPos[1] = collision.posY();
2878+
collPos[2] = collision.posZ();
2879+
} else if constexpr (fillMap & ObjTypes::ReducedEventMC) {
2880+
collPos[0] = collision.mcPosX();
2881+
collPos[1] = collision.mcPosY();
2882+
collPos[2] = collision.mcPosZ();
2883+
}
2884+
28922885
// displaced vertex is compued with decay product (track) and momentum of mother particle (MotherTrack)
2893-
values[kMCVertexingLxy] = (collision.mcPosX() - track.vx()) * (collision.mcPosX() - track.vx()) +
2894-
(collision.mcPosY() - track.vy()) * (collision.mcPosY() - track.vy());
2895-
values[kMCVertexingLz] = (collision.mcPosZ() - track.vz()) * (collision.mcPosZ() - track.vz());
2886+
values[kMCVertexingLxy] = (collPos[0] - track.vx()) * (collPos[0] - track.vx()) +
2887+
(collPos[1] - track.vy()) * (collPos[1] - track.vy());
2888+
values[kMCVertexingLz] = (collPos[2] - track.vz()) * (collPos[2] - track.vz());
28962889
values[kMCVertexingLxyz] = values[kMCVertexingLxy] + values[kMCVertexingLz];
28972890
values[kMCVertexingLxy] = std::sqrt(values[kMCVertexingLxy]);
28982891
values[kMCVertexingLz] = std::sqrt(values[kMCVertexingLz]);
28992892
values[kMCVertexingLxyz] = std::sqrt(values[kMCVertexingLxyz]);
2900-
values[kMCVertexingTauz] = (collision.mcPosZ() - track.vz()) * m / (TMath::Abs(MotherTrack.pz()) * o2::constants::physics::LightSpeedCm2NS);
2893+
values[kMCVertexingTauz] = (collPos[2] - track.vz()) * m / (TMath::Abs(MotherTrack.pz()) * o2::constants::physics::LightSpeedCm2NS);
29012894
values[kMCVertexingTauxy] = values[kMCVertexingLxy] * m / (MotherTrack.pt() * o2::constants::physics::LightSpeedCm2NS);
29022895

2903-
values[kMCCosPointingAngle] = ((collision.mcPosX() - track.vx()) * MotherTrack.px() +
2904-
(collision.mcPosY() - track.vy()) * MotherTrack.py() +
2905-
(collision.mcPosZ() - track.vz()) * MotherTrack.pz()) /
2896+
values[kMCCosPointingAngle] = ((collPos[0] - track.vx()) * MotherTrack.px() +
2897+
(collPos[1] - track.vy()) * MotherTrack.py() +
2898+
(collPos[2] - track.vz()) * MotherTrack.pz()) /
29062899
(MotherTrack.p() * values[VarManager::kMCVertexingLxyz]);
29072900

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

2911-
values[kMCVertexingLzProjected] = ((track.vz() - collision.mcPosZ()) * MotherTrack.pz()) / TMath::Abs(MotherTrack.pz());
2912-
values[kMCVertexingLxyProjected] = (((track.vx() - collision.mcPosX()) * MotherTrack.px()) + ((track.vy() - collision.mcPosY()) * MotherTrack.py())) / TMath::Abs(MotherTrack.pt());
2913-
values[kMCVertexingLxyzProjected] = (((track.vx() - collision.mcPosX()) * MotherTrack.px()) + ((track.vy() - collision.mcPosY()) * MotherTrack.py()) + ((track.vz() - collision.mcPosZ()) * MotherTrack.pz())) / MotherTrack.p();
2904+
values[kMCVertexingLzProjected] = ((track.vz() - collPos[2]) * MotherTrack.pz()) / TMath::Abs(MotherTrack.pz());
2905+
values[kMCVertexingLxyProjected] = (((track.vx() - collPos[0]) * MotherTrack.px()) + ((track.vy() - collPos[1]) * MotherTrack.py())) / TMath::Abs(MotherTrack.pt());
2906+
values[kMCVertexingLxyzProjected] = (((track.vx() - collPos[1]) * MotherTrack.px()) + ((track.vy() - collPos[1]) * MotherTrack.py()) + ((track.vz() - collPos[2]) * MotherTrack.pz())) / MotherTrack.p();
29142907
values[kMCVertexingTauxyProjected] = values[kMCVertexingLxyProjected] * m / (MotherTrack.pt());
29152908
values[kMCVertexingTauzProjected] = values[kMCVertexingLzProjected] * m / TMath::Abs(MotherTrack.pz());
29162909
values[kMCVertexingTauxyzProjected] = values[kMCVertexingLxyzProjected] * m / (MotherTrack.p());

PWGDQ/DataModel/ReducedInfoTables.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,7 @@ DECLARE_SOA_COLUMN(DeviationxyTrk1KF, deviationxyTrk1KF, float); //! 2D chi2 dev
718718
// pair information
719719
namespace reducedpair
720720
{
721-
DECLARE_SOA_INDEX_COLUMN(ReducedEvent, reducedevent); //!
721+
DECLARE_SOA_INDEX_COLUMN(ReducedEvent, reducedevent);
722722
DECLARE_SOA_INDEX_COLUMN_FULL(Index0, index0, int, ReducedTracks, "_0"); //! Index to first prong
723723
DECLARE_SOA_INDEX_COLUMN_FULL(Index1, index1, int, ReducedTracks, "_1"); //! Index to second prong
724724
DECLARE_SOA_INDEX_COLUMN_FULL(Prong0, prong0, int, Tracks, "_0"); //! Index of first prong in Tracks table

0 commit comments

Comments
 (0)