Skip to content

Commit 805c97a

Browse files
committed
More interface and mixins
1 parent 30fd1ca commit 805c97a

6 files changed

Lines changed: 154 additions & 485 deletions

File tree

DataFormats/Reconstruction/include/ReconstructionDataFormats/TrackFwd.h

Lines changed: 1 addition & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -55,93 +55,6 @@ class TrackParFwd : public TrackParametrizationData<float, 5>, public TrackParFw
5555
template <typename T>
5656
void toBarrelTrackPar(TrackParametrization<T>& t) const;
5757

58-
/// return Z coordinate (cm)
59-
value_t getZ() const { return mX; }
60-
/// set Z coordinate (cm)
61-
void setZ(value_t z) { mX = z; }
62-
value_t getX() const { return mP[0]; }
63-
void setX(value_t x) { mP[0] = x; }
64-
65-
value_t getY() const { return mP[1]; }
66-
void setY(value_t y) { mP[1] = y; }
67-
68-
void setPhi(value_t phi) { mP[2] = phi; }
69-
value_t getPhi() const { return mP[2]; }
70-
71-
value_t getSnp() const
72-
{
73-
return o2::math_utils::sin(mP[2]);
74-
}
75-
76-
value_t getCsp2() const
77-
{
78-
auto snp = o2::math_utils::sin(mP[2]);
79-
value_t csp = o2::math_utils::sqrt((value_t(1) - snp) * (value_t(1) + snp));
80-
return csp * csp;
81-
}
82-
83-
void setTanl(value_t tanl) { mP[3] = tanl; }
84-
value_t getTanl() const { return mP[3]; }
85-
86-
value_t getTgl() const { return mP[3]; } // for the sake of helixhelper
87-
88-
void setInvQPt(value_t invqpt) { mP[4] = invqpt; }
89-
value_t getInvQPt() const { return mP[4]; } // return Inverse charged pt
90-
value_t getPt() const { return o2::math_utils::abs(value_t(1) / mP[4]); }
91-
value_t getInvPt() const { return o2::math_utils::abs(mP[4]); }
92-
value_t getPx() const { return o2::math_utils::cos(getPhi()) * getPt(); } // return px
93-
value_t getPy() const { return o2::math_utils::sin(getPhi()) * getPt(); } // return py
94-
value_t getPz() const { return getTanl() * getPt(); } // return pz
95-
value_t getP() const { return getPt() * o2::math_utils::sqrt(value_t(1) + getTanl() * getTanl()); }
96-
value_t getInverseMomentum() const { return value_t(1) / getP(); }
97-
98-
value_t getTheta() const { return value_t(0.5) * o2::math_utils::pi() - o2::math_utils::atan(getTanl()); }
99-
value_t getEta() const { return -o2::math_utils::log(o2::math_utils::tan(getTheta() / value_t(2))); } // return total momentum
100-
101-
value_t getCurvature(value_t b) const
102-
{
103-
auto invqpt = getInvQPt();
104-
return o2::constants::math::B2C * b * invqpt;
105-
}
106-
107-
/// return the charge (assumed forward motion)
108-
int getCharge() const { return mP[4] >= 0.f ? 1 : -1; }
109-
/// set the charge (assumed forward motion)
110-
void setCharge(int charge)
111-
{
112-
if (charge * mP[4] < 0.) {
113-
mP[4] *= -1.;
114-
}
115-
}
116-
117-
/// return track parameters
118-
const value_t* getParameters() const { return mP; }
119-
const value_t* getParams() const { return mP; }
120-
params_t getParametersArray() const
121-
{
122-
params_t params;
123-
for (int i = 0; i < 5; ++i) {
124-
params[i] = mP[i];
125-
}
126-
return params;
127-
}
128-
/// set track parameters
129-
void setParameters(const params_t& parameters) { setParameters(parameters.data()); }
130-
void setParameters(const value_t* parameters)
131-
{
132-
for (int i = 0; i < 5; ++i) {
133-
mP[i] = parameters[i];
134-
}
135-
}
136-
/// add track parameters
137-
void addParameters(const params_t& parameters) { addParameters(parameters.data()); }
138-
void addParameters(const value_t* parameters)
139-
{
140-
for (int i = 0; i < 5; ++i) {
141-
mP[i] += parameters[i];
142-
}
143-
}
144-
14558
// Track parameter propagation
14659
void propagateParamToZlinear(double zEnd);
14760
void propagateParamToZquadratic(double zEnd, double zField);
@@ -168,10 +81,7 @@ class TrackParCovFwd : public TrackParFwd, public TrackCovarianceData<TrackParFw
16881
using cov_base_t = TrackCovarianceData<value_t, 15>;
16982
using cov_interface_t = TrackParCovFwdInterface<TrackParCovFwd, value_t>;
17083
using covMat_t = std::array<value_t, 15>;
171-
struct cov_view_t {
172-
const value_t* data = nullptr;
173-
value_t operator()(int i, int j) const { return data[TrackParCovFwd::covIndex(i, j)]; }
174-
};
84+
using typename cov_interface_t::cov_view_t;
17585
using TrackParFwd::TrackParFwd; // inherit base constructors
17686

17787
TrackParCovFwd() = default;
@@ -182,20 +92,6 @@ class TrackParCovFwd : public TrackParFwd, public TrackCovarianceData<TrackParFw
18292
template <typename T>
18393
void toBarrelTrackParCov(TrackParametrizationWithError<T>& t) const;
18494

185-
cov_view_t getCovariances() const { return {mC.data()}; }
186-
const covMat_t& getCov() const { return mC; }
187-
value_t getCovarElem(int i, int j) const { return mC[covIndex(i, j)]; }
188-
void setCovariances(const covMat_t& covariances) { mC = covariances; }
189-
void setCovariances(const value_t* covariances);
190-
void deleteCovariances() { mC = {}; }
191-
192-
value_t getSigma2X() const { return mC[covIndex(0, 0)]; }
193-
value_t getSigma2Y() const { return mC[covIndex(1, 1)]; }
194-
value_t getSigmaXY() const { return mC[covIndex(0, 1)]; }
195-
value_t getSigma2Phi() const { return mC[covIndex(2, 2)]; }
196-
value_t getSigma2Tanl() const { return mC[covIndex(3, 3)]; }
197-
value_t getSigma2InvQPt() const { return mC[covIndex(4, 4)]; }
198-
19995
// Propagate parameters and covariances matrix
20096
void propagateToZlinear(double zEnd);
20197
void propagateToZquadratic(double zEnd, double zField);
@@ -215,11 +111,6 @@ class TrackParCovFwd : public TrackParFwd, public TrackCovarianceData<TrackParFw
215111

216112
bool getCovXYZPxPyPzGlo(std::array<float, 21>& cv) const;
217113

218-
static constexpr int covIndex(int i, int j)
219-
{
220-
return i >= j ? i * (i + 1) / 2 + j : j * (j + 1) / 2 + i;
221-
}
222-
223114
protected:
224115
using cov_base_t::mC;
225116

0 commit comments

Comments
 (0)