@@ -63,13 +63,16 @@ class Track : public Container {
6363 pz_ = momentum.Pz ();
6464 }
6565
66+ void SetCharge (Int_t charge) noexcept { charge_ = charge; }
67+
6668 ANALYSISTREE_ATTR_NODISCARD inline Floating_t GetPx () const noexcept { return px_; }
6769 ANALYSISTREE_ATTR_NODISCARD inline Floating_t GetPy () const noexcept { return py_; }
6870 ANALYSISTREE_ATTR_NODISCARD inline Floating_t GetPz () const noexcept { return pz_; }
6971 ANALYSISTREE_ATTR_NODISCARD inline Floating_t GetPt () const noexcept { return sqrt (px_ * px_ + py_ * py_); }
7072 ANALYSISTREE_ATTR_NODISCARD inline Floating_t GetPhi () const noexcept { return atan2 (py_, px_); }
7173 ANALYSISTREE_ATTR_NODISCARD inline Floating_t GetEta () const noexcept { return 0 .5f * log ((GetP () + pz_) / (GetP () - pz_)); }
7274 ANALYSISTREE_ATTR_NODISCARD inline Floating_t GetP () const noexcept { return sqrt (px_ * px_ + py_ * py_ + pz_ * pz_); }
75+ ANALYSISTREE_ATTR_NODISCARD inline Integer_t GetCharge () const noexcept { return charge_; }
7376
7477 /* *
7578 * @return 3d-momentum of a track
@@ -120,6 +123,7 @@ class Track : public Container {
120123 case TrackFields::kPx : return GetPx ();
121124 case TrackFields::kPy : return GetPy ();
122125 case TrackFields::kPz : return GetPz ();
126+ case TrackFields::kQ : return GetCharge ();
123127 case TrackFields::kId : return GetId ();
124128 default : throw std::out_of_range (" Track::GetField - Index " + std::to_string (id) + " is not found" );
125129 }
@@ -135,6 +139,7 @@ class Track : public Container {
135139 case TrackFields::kPx : px_ = value; break ;
136140 case TrackFields::kPy : py_ = value; break ;
137141 case TrackFields::kPz : pz_ = value; break ;
142+ case TrackFields::kQ : charge_ = value; break ;
138143 case TrackFields::kId : break ;
139144 case TrackFields::kP : /* throw std::runtime_error("Cannot set transient fields");*/ break ;
140145 case TrackFields::kPt : /* throw std::runtime_error("Cannot set transient fields");*/ break ;
@@ -152,10 +157,12 @@ class Track : public Container {
152157
153158 protected:
154159 static float GetMassByPdgId (PdgCode_t pdg);
160+ static int GetChargeByPdgId (PdgCode_t pdg);
155161
156162 Floating_t px_{UndefValueFloat};// /< x-component of track's momentum
157163 Floating_t py_{UndefValueFloat};// /< y-component of track's momentum
158164 Floating_t pz_{UndefValueFloat};// /< z-component of track's momentum
165+ Integer_t charge_{-1000 };
159166
160167 ClassDefOverride (Track, 2 );
161168};
0 commit comments