#ifndef L1Extrapolation_h #define L1Extrapolation_h #include "CbmL1Def.h" #include "L1Field.h" #include "L1TrackPar.h" #define cnst static const fvec inline void L1Extrapolate( L1TrackPar &T, fvec z_out , fvec qp0 , L1FieldRegion &F, fvec *w = 0 ); inline void L1Extrapolate0( L1TrackPar &T, fvec z_out , L1FieldRegion &F ); inline void L1Extrapolate00( L1TrackPar &T, fvec z_out , L1FieldRegion &F ); inline void L1ExtrapolateLine( L1TrackPar &T, fvec z_out); inline void L1ExtrapolateShort ( 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 ) // TODO: try to optimize time { // T.x += T.tx*(z_out-T.z); // T.y += T.ty*(z_out-T.z); // T.z = z_out; // L1TrackPar T_temp = T; // L1Extrapolate(T,z_out,qp0,F); L1Extrapolate0(T,z_out,F); // L1Extrapolate00(T,z_out,F); // L1ExtrapolateLine(T, z_out); // T.C00 = T_temp.C00; // T.C10 = T_temp.C10; // T.C11 = T_temp.C11; // T.C20 = T_temp.C20; // T.C21 = T_temp.C21; // T.C22 = T_temp.C22; // T.C30 = T_temp.C30; // T.C31 = T_temp.C32; // T.C32 = T_temp.C33; // T.C33 = T_temp.C33; // T.C40 = T_temp.C40; // T.C41 = T_temp.C41; // T.C42 = T_temp.C42; // T.C43 = T_temp.C43; // T.C44 = T_temp.C44; // T.chi2 = T_temp.chi2; // T.NDF = T_temp.NDF; } inline 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, fvec *w ) { //cout<<"Extrapolation..."<