//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // a local straight line track representation // // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Sebastian Neubert TUM (original author) // // //----------------------------------------------------------- #ifndef LSLTRACKREP_HH #define LSLTRACKREP_HH // Base Class Headers ---------------- #include "AbsTrackRep.h" // Collaborating Class Headers ------- #include // remove if you do not need streaming op #include "TVectorT.h" // Collaborating Class Declarations -- class AbsBFieldIfc; class AbsNystromEQM; class LSLTrackRep : public AbsTrackRep { public: // Constructors/Destructors --------- LSLTrackRep(); LSLTrackRep(double z, double x, double y, double dxdz, double dydz, double invp, double sigx, double sigy, double sigdxdz, double sigdydz, double siginvp, AbsBFieldIfc* field); LSLTrackRep(const LSLTrackRep& rep); // copy ctor virtual ~LSLTrackRep(); virtual AbsTrackRep* clone(){return new LSLTrackRep(*this);} virtual AbsTrackRep* prototype(){return new LSLTrackRep();} // Operators friend std::ostream& operator<< (std::ostream& s, const LSLTrackRep& me); // Accessors ----------------------- virtual int getDim() const {return 5;} void init(const TVector3& pos, double dxdz, double dydz, double invp, double sigx, double sigy, double sigdxdz, double sigdydz, double siginvp, AbsBFieldIfc* field); // Modifiers void SetBField(AbsBFieldIfc* b); void setReferencePlane(const DetPlane& pl) {s=pl.getO().Z(); _refPlane=pl;} // Operations ---------------------- virtual void predict(const DetPlane&,TMatrixT& statePred, TMatrixT& covPred,TMatrixT& jacobian); virtual void extrapolate(const DetPlane&, TMatrixT& statePred); //virtual void extrapolate(const DetPlane&, // const TMatrixT& stateFrom, // TMatrixT& stateResult); virtual void extrapolate(const DetPlane&, TMatrixT& statePred, TMatrixT& covPred, TMatrixT& jacobian); virtual TVector3 getPos(const DetPlane&) ; virtual TVector3 getMom(const DetPlane&) ; virtual int getCharge()const {return state[4][0]<0 ? -1 : 1;} private: // Private Data Members ------------ // Private Methods ----------------- // equation of motion in a magnetic field //static TVectorT eqm(const TVectorT& u, // const TVectorT& uprim, // const TVectorT& par); double s; AbsNystromEQM* _eqm; //! // calculate jacobian of extrapolation void Jacobian(const DetPlane& pl, const TMatrixT& statePred, TMatrixT& jacResult); public: ClassDef(LSLTrackRep,1) }; #endif //-------------------------------------------------------------- // $Log$ //--------------------------------------------------------------