#ifndef L1TrackPar_h #define L1TrackPar_h 1 #include "L1Types.h" class L1TrackPar{ public: fvec x,y,tx,ty,qp,z, C00, C10, C11, C20, C21, C22, C30, C31, C32, C33, C40, C41, C42, C43, C44, chi2, NDF ; L1TrackPar(){}; L1TrackPar(double *T, double *C){ x = T[0]; y = T[1]; tx = T[2]; ty = T[3]; qp = T[4]; z = T[5]; C00 = C[0]; C10 = C[1]; C11 = C[2]; C20 = C[3]; C21 = C[4]; C22 = C[5]; C30 = C[6]; C31 = C[7]; C32 = C[8]; C33 = C[9]; C40 = C[10]; C41 = C[11]; C42 = C[12]; C43 = C[13]; C44 = C[14]; }; void SetOneEntry( const int i0, const L1TrackPar &T1, const int i1 ); void Print(int i = -1); // void L1Extrapolate // ( // // L1TrackPar &T, // input track parameters (x,y,tx,ty,Q/p) and cov.matrix // fvec z_out , // extrapolate to this z position // fvec qp0 , // use Q/p linearisation at this value // L1FieldRegion &F // ); } _fvecalignment; // ============================================================================================= inline void L1TrackPar::Print(int i){ cout.setf(std::ios::scientific,std::ios::floatfield); if (i == -1){ cout << "T = " << endl; cout << x << endl; cout << y << endl; cout << tx << endl; cout << ty << endl; cout << qp << endl; cout << z << endl; } else{ cout << "T = "; cout << x[i] << " "; cout << y[i] << " "; cout << tx[i] << " "; cout << ty[i] << " "; cout << qp[i] << " "; cout << z[i] << endl; cout << "C = "; cout << C00[i] << " "; cout << C11[i] << " "; cout << C22[i] << " "; cout << C33[i] << " "; cout << C44[i] << endl; } }; inline void L1TrackPar::SetOneEntry( const int i0, const L1TrackPar &T1, const int i1 ) { x[i0] = T1.x[i1]; y[i0] = T1.y[i1]; tx[i0] = T1.tx[i1]; ty[i0] = T1.ty[i1]; qp[i0] = T1.qp[i1]; z[i0] = T1.z[i1]; C00[i0] = T1.C00[i1]; C10[i0] = T1.C10[i1]; C11[i0] = T1.C11[i1]; C20[i0] = T1.C20[i1]; C21[i0] = T1.C21[i1]; C22[i0] = T1.C22[i1]; C30[i0] = T1.C30[i1]; C31[i0] = T1.C31[i1]; C32[i0] = T1.C32[i1]; C33[i0] = T1.C33[i1]; C40[i0] = T1.C40[i1]; C41[i0] = T1.C41[i1]; C42[i0] = T1.C42[i1]; C43[i0] = T1.C43[i1]; C44[i0] = T1.C44[i1]; chi2[i0] = T1.chi2[i1]; NDF[i0] = T1.NDF[i1]; } // SetOneEntry // #define cnst static const fvec // inline void L1TrackPar::L1Extrapolate // ( // // L1TrackPar &T, // input track parameters (x_,y_,tx,ty,Q/p) and cov.matrix // fvec z_out , // extrapolate to this z position // fvec qp0 , // use Q/p linearisation at this value // L1FieldRegion &F // ) // { // //cout<<"Extrapolation..."<