Skip to content

Commit a1d1302

Browse files
authored
RecoDecay: Add support for custom particle masses (#117)
1 parent 9e338ec commit a1d1302

File tree

1 file changed

+37
-8
lines changed

1 file changed

+37
-8
lines changed

Common/Core/RecoDecay.h

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,13 @@
3131
using std::array;
3232
using namespace o2::constants::math;
3333

34-
/// Base class for calculating properties of reconstructed decays.
34+
/// Base class for calculating properties of reconstructed decays
35+
///
36+
/// Provides static helper functions for:
37+
/// - useful arithmetic operations and basic vector algebra
38+
/// - calculation of kinematic quantities
39+
/// - calculation of topological properties of secondary vertices
40+
/// - Monte Carlo matching of decays at track and particle level
3541

3642
class RecoDecay
3743
{
@@ -509,6 +515,14 @@ class RecoDecay
509515
return maxNormDeltaIP;
510516
}
511517

518+
/// Adds particle mass in the list.
519+
/// \param pdg PDG code
520+
/// \param mass particle mass
521+
static void addMassPDG(int pdg, double mass)
522+
{
523+
mListMass.push_back(std::make_tuple(pdg, mass));
524+
}
525+
512526
/// Returns particle mass based on PDG code.
513527
/// \param pdg PDG code
514528
/// \return particle mass
@@ -521,14 +535,29 @@ class RecoDecay
521535
}
522536
}
523537
// Get the mass of the new particle and add it in the list.
524-
const TParticlePDG* particle = TDatabasePDG::Instance()->GetParticle(pdg);
525-
if (!particle) { // Check that it's there
526-
LOGF(fatal, "Cannot find particle mass for PDG code %i", pdg);
527-
return 999.;
538+
double mass = 0.;
539+
switch (pdg) {
540+
// Particles that cannot be taken from ROOT ($ROOTSYS/etc/pdg_table.txt)
541+
case 4422: { // Ξcc (wrong mass in ROOT)
542+
mass = 3.62155; // https://pdg.lbl.gov/ (2021)
543+
break;
544+
}
545+
case 9920443: { // χc1 aka X(3872)
546+
mass = 3.87165; // https://pdg.lbl.gov/ (2021)
547+
break;
548+
}
549+
// Take the rest from ROOT.
550+
default: {
551+
const TParticlePDG* particle = TDatabasePDG::Instance()->GetParticle(pdg);
552+
if (!particle) { // Check that it's there.
553+
LOGF(fatal, "Cannot find particle mass for PDG code %i", pdg);
554+
return 999.;
555+
}
556+
mass = particle->Mass();
557+
}
528558
}
529-
auto newMass = particle->Mass();
530-
mListMass.push_back(std::make_tuple(pdg, newMass));
531-
return newMass;
559+
addMassPDG(pdg, mass);
560+
return mass;
532561
}
533562

534563
/// Finds the mother of an MC particle by looking for the expected PDG code in the mother chain.

0 commit comments

Comments
 (0)