@@ -20,12 +20,16 @@ namespace AliceO2 {
2020 using namespace std ;
2121
2222 // aliases for track elements
23- enum {kY ,kZ ,kSnp ,kTgl ,kQ2Pt };
24- enum {kSigY2 ,
23+ enum ParLabels : int {
24+ kY ,kZ ,kSnp ,kTgl ,kQ2Pt
25+ };
26+ enum CovLabels : int {
27+ kSigY2 ,
2528 kSigZY ,kSigZ2 ,
2629 kSigSnpY ,kSigSnpZ ,kSigSnp2 ,
2730 kSigTglY ,kSigTglZ ,kSigTglSnp ,kSigTgl2 ,
28- kSigQ2PtY ,kSigQ2PtZ ,kSigQ2PtSnp ,kSigQ2PtTgl ,kSigQ2Pt2 };
31+ kSigQ2PtY ,kSigQ2PtZ ,kSigQ2PtSnp ,kSigQ2PtTgl ,kSigQ2Pt2
32+ };
2933
3034 constexpr int
3135 kNParams =5 ,
@@ -43,13 +47,13 @@ namespace AliceO2 {
4347 // helper function
4448 float BetheBlochSolid (float bg, float rho=2 .33f ,float kp1=0 .20f ,float kp2=3 .00f ,
4549 float meanI=173e-9f ,float meanZA=0 .49848f );
46- void g3helx3 (float qfield, float step,float vect[ 7 ] );
50+ void g3helx3 (float qfield, float step,array< float , 7 > & vect);
4751
4852
4953 class TrackParBase { // track parameterization, kinematics only. This base class cannot be instantiated
5054 public:
5155
52- const float * GetParam () const { return mP ; }
56+ // / const float* GetParam() const { return mP; }
5357 float GetX () const { return mX ; }
5458 float GetAlpha () const { return mAlpha ; }
5559 float GetY () const { return mP [kY ]; }
@@ -66,41 +70,41 @@ namespace AliceO2 {
6670
6771 float GetP () const ;
6872 float GetPt () const ;
69- void GetXYZ (float xyz[ 3 ] ) const ;
70- bool GetPxPyPz (float pxyz[ 3 ] ) const ;
71- bool GetPosDir (float posdirp[ 9 ] ) const ;
73+ void GetXYZ (array< float , 3 > & xyz) const ;
74+ bool GetPxPyPz (array< float , 3 > & pxyz) const ;
75+ bool GetPosDir (array< float , 9 > & posdirp) const ;
7276
7377 // parameters manipulation
7478 bool RotateParam (float alpha);
7579 bool PropagateParamTo (float xk, float b);
76- bool PropagateParamTo (float xk, const float b[ 3 ] );
80+ bool PropagateParamTo (float xk, const array< float , 3 > &b );
7781 void InvertParam ();
7882
7983 void PrintParam () const ;
8084
8185 protected:
8286 // to keep this class non-virtual but derivable the c-tors and d-tor are protected
83- TrackParBase () : mX {0 .},mAlpha {0 .}, mP { 0 . f } {}
84- TrackParBase (float x,float alpha, const float par[ kNParams ] );
85- TrackParBase (const float xyz[ 3 ] ,const float pxpypz[ 3 ], int sign, bool sectorAlpha=true );
87+ TrackParBase () : mX {0 .},mAlpha {0 .} {}
88+ TrackParBase (float x,float alpha, const array< float , kNParams > & par);
89+ TrackParBase (const array< float , 3 > & xyz,const array< float , 3 > & pxpypz, int sign, bool sectorAlpha=true );
8690 TrackParBase (const TrackParBase&) = default ;
8791 TrackParBase (TrackParBase&&) = default ;
8892 TrackParBase& operator =(const TrackParBase& src) = default ;
8993 ~TrackParBase () = default ;
9094 //
91- float mX ; // / X of track evaluation
92- float mAlpha ; // / track frame angle
93- float mP [kNParams ]; // / 5 parameters: Y,Z,sin(phi),tg(lambda),q/pT
95+ float mX ; // / X of track evaluation
96+ float mAlpha ; // / track frame angle
97+ float mP [kNParams ] = { 0 . f }; // / 5 parameters: Y,Z,sin(phi),tg(lambda),q/pT
9498 };
9599
96100 // rootcint does not swallow final keyword here
97101 class TrackParCov final : public TrackParBase { // track+error parameterization
98102 public:
99- TrackParCov () : TrackParBase{}, mC { 0 . f } { }
100- TrackParCov (float x,float alpha, const float par[ kNParams ] , const float cov[ kCovMatSize ] );
101- TrackParCov (const float xyz[ 3 ] ,const float pxpypz[ 3 ] ,const float [ kLabCovMatSize ] , int sign, bool sectorAlpha=true );
103+ TrackParCov () : TrackParBase{} { }
104+ TrackParCov (float x, float alpha, const array< float , kNParams > & par, const array< float , kCovMatSize > & cov);
105+ TrackParCov (const array< float , 3 > & xyz,const array< float , 3 > & pxpypz,const array< float , kLabCovMatSize > &cv , int sign, bool sectorAlpha=true );
102106
103- const float * GetCov () const { return mC ; }
107+ // / const float* GetCov() const { return mC; }
104108 float GetSigmaY2 () const { return mC [kSigY2 ]; }
105109 float GetSigmaZY () const { return mC [kSigZY ]; }
106110 float GetSigmaZ2 () const { return mC [kSigZ2 ]; }
@@ -122,40 +126,39 @@ namespace AliceO2 {
122126 // parameters + covmat manipulation
123127 bool Rotate (float alpha);
124128 bool PropagateTo (float xk, float b);
125- bool PropagateTo (float xk, const float b[ 3 ] );
129+ bool PropagateTo (float xk, const array< float , 3 > &b );
126130 void Invert ();
127131
128- float GetPredictedChi2 (const float p[ 2 ] , const float cov[ 3 ] ) const ;
129- bool Update (const float p[ 2 ] , const float cov[ 3 ] );
132+ float GetPredictedChi2 (const array< float , 2 > &p , const array< float , 3 > & cov) const ;
133+ bool Update (const array< float , 2 > &p , const array< float , 3 > & cov);
130134
131135 bool CorrectForMaterial (float x2x0,float xrho,float mass,bool anglecorr=false ,float dedx=kCalcdEdxAuto );
132136
133137 void ResetCovariance (float s2=0 );
134138 void CheckCovariance ();
135139
136140 protected:
137- float mC [kCovMatSize ]; // x, alpha + 5 parameters + 15 errors
141+ float mC [kCovMatSize ] = { 0 . f } ; // 15 covariance matrix elements
138142
139143 };
140144
141145 class TrackPar final : public TrackParBase { // track parameterization only
142146 public:
143147 TrackPar () {}
144- TrackPar (float x,float alpha, const float par[kNParams ]) : TrackParBase{x,alpha,par} {}
145- TrackPar (const float xyz[3 ], const float pxpypz[3 ],int sign, bool sectorAlpha=true );
146- TrackPar (const TrackParCov& src) : TrackParBase{static_cast <const TrackParBase&>(src)} {}
148+ TrackPar (float x,float alpha, const array<float ,kNParams > &par) : TrackParBase{x,alpha,par} {}
149+ TrackPar (const array<float ,3 > &xyz, const array<float ,3 > &pxpypz,int sign, bool sectorAlpha=true );
147150 //
148151 void Print () const {PrintParam ();}
149152 };
150153
151154 // ____________________________________________________________
152- inline TrackParBase::TrackParBase (float x, float alpha, const float par[ kNParams ] ) : mX{x}, mAlpha {alpha} {
155+ inline TrackParBase::TrackParBase (float x, float alpha, const array< float , kNParams > &par ) : mX{x}, mAlpha {alpha} {
153156 // explicit constructor
154- std::copy (par, par + kNParams , mP );
157+ std::copy (par. begin () , par. end () , mP );
155158 }
156159
157160 // _______________________________________________________
158- inline void TrackParBase::GetXYZ (float xyz[ 3 ] ) const {
161+ inline void TrackParBase::GetXYZ (array< float , 3 > & xyz) const {
159162 // track coordinates in lab frame
160163 xyz[0 ] = GetX ();
161164 xyz[1 ] = GetY ();
@@ -187,16 +190,16 @@ namespace AliceO2 {
187190 // ============================================================
188191
189192 // ____________________________________________________________
190- inline TrackParCov::TrackParCov (float x, float alpha, const float par[ kNParams ] , const float cov[ kCovMatSize ] )
193+ inline TrackParCov::TrackParCov (float x, float alpha, const array< float , kNParams > & par, const array< float , kCovMatSize > & cov)
191194 : TrackParBase{x,alpha,par} {
192195 // explicit constructor
193- std::copy (cov, cov + kCovMatSize , mC );
196+ std::copy (cov. begin () , cov. end () , mC );
194197 }
195198
196199 // ============================================================
197200
198201 // ____________________________________________________________
199- inline TrackPar::TrackPar (const float xyz[ 3 ] , const float pxpypz[ 3 ] ,int sign, bool sectorAlpha)
202+ inline TrackPar::TrackPar (const array< float , 3 > & xyz, const array< float , 3 > & pxpypz,int sign, bool sectorAlpha)
200203 : TrackParBase{xyz,pxpypz,sign,sectorAlpha} {
201204 // explicit constructor
202205 }
0 commit comments