// ------------------------------------------------------------------------- // ----- CbmLitExtrapolator ----- // ----- Created 14/08/06 by A. Lebedev ----- // ------------------------------------------------------------------------- /** CbmLitExtrapolator.h *@author A.Lebedev ** ** **/ #include "TObject.h" #include "CbmTask.h" #include "CbmRootManager.h" #include "CbmField.h" #include "CbmFieldMap.h" #include "TVectorD.h" #include "TMatrixD.h" #include "TMatrixDSym.h" #include "CbmLitState.h" #ifndef CbmLitExtrapolatorAAAA #define CbmLitExtrapolatorAAAA 1 class CbmLitExtrapolator:public TObject { public: CbmLitExtrapolator(); virtual ~CbmLitExtrapolator(); void InitMagneticField(); void SetMethod(Int_t method) { fMethod = method; } Int_t GetMethod() { return fMethod; } void Propagate(CbmLitState &StateIn, Double_t z_out, Bool_t IsCovMatrix); //magnetic field CbmField* fMagneticField; private: Bool_t fIsCovMatrix; void Extrapolate( double& zIn, double pIn[5], double& zNew, double pOut[5], double fQp[25], int& istat); void line( CbmLitState &State, Double_t z_out); void parabolic( CbmLitState &State, Double_t z_out); void rk4order( double& z_in , double* p_in , double& z_out, double* p_out, double* rkd, int& ierror); void rk4fast( double& z_in , double* p_in , double& z_out , double* p_out, double* rkd, int& ierror ); void rk5order( double& z_in , double* p_in , double& error , double& z_out , double* p_out, double* rkd, int& ierror); void rk5fast( double& z_in , double* p_in, double& error, double& z_out, double* p_out, double* rkd, int& ierror); void rk5numde( double& z_in , double* p_in, double& error, double& z_out, double* p_out, double* rkd, int& ierror); void rk5fast( double& z_in, double* p_in, double& error, double& z_out, double* p_out); void rk4fast( double& z_in, double* p_in, double& z_out, double* p_out); // propagation method Int_t fMethod; // Double_t fError; Double_t fPoint[3]; Double_t fB[3]; // Parameters for Runge-Kutta Double_t fQpCurls; Double_t fStepMin; Double_t fStepMinRK5; Double_t c_light; ClassDef(CbmLitExtrapolator,1) }; #endif // CbmLitExtrapolator_H