36 Double_t py, Double_t pz, Double_t M, Double_t x, Double_t y,
37 Double_t z, Double_t t, Int_t nPoints, Double_t w)
60 fPdgCode(track.fPdgCode),
61 fMotherId(track.fMotherId),
66 fStartX(track.fStartX),
67 fStartY(track.fStartY),
68 fStartZ(track.fStartZ),
69 fStartT(track.fStartT),
70 fNPoints(track.fNPoints),
71 fProcID(track.GetProcID()),
82 fPdgCode(part->GetPdgCode()),
83 fMotherId(part->GetMother(0)),
87 fM([](const TParticle* p) {
88 Double_t m2 = p->Energy() * p->Energy() - p->P() * p->P();
89 if (m2 >= 0.)
return TMath::Sqrt(m2);
91 Double_t e2 = p->Energy() * p->Energy();
92 if (-m2 < 1e-10 * e2)
return 0.;
95 return -TMath::Sqrt(-m2);
100 fStartT(part->T()*1e09),
102 fProcID(part->GetUniqueID()),
103 fW(part->GetWeight())
146 if ( TDatabasePDG::Instance() ) {
147 TParticlePDG* particle = TDatabasePDG::Instance()->GetParticle(
fPdgCode);
148 if ( particle ) {
return particle->Mass(); }
152 if (!std::isnan(
fM)) {
return fM; }
154 if ( TDatabasePDG::Instance() ) {
155 TParticlePDG* particle = TDatabasePDG::Instance()->GetParticle(
fPdgCode);
156 if ( particle && !std::isnan(particle->Mass()) ) {
return particle->Mass(); }