/////// /** Abstract Base Class for Hit Representations in GENFIT */ /////// #ifndef FITTER_ABSHIT_H #define FITTER_ABSHIT_H #include #include "TMatrixT.h" #include "TObject.h" #include "AbsTrackRep.h" #include "DetPlane.h" #include "MatrixPrinter.h" class AbsRecoHit : public TObject{ protected: /// Transformation from TrackRep frame to Hit coordinates /// track_in_detplane=_HMatrix*_track_state TMatrixT _HMatrix; /// Vector of coordinates of hit given in DetPlane TMatrixT _hitCoord; /// Covariance of hit coordinates in DetPlane TMatrixT _hitCov; public: virtual ~AbsRecoHit(); AbsRecoHit(int NparHit); AbsRecoHit(); virtual void setHMatrix(const AbsTrackRep* stateVector, const TMatrixT& state)=0; inline TMatrixT getHMatrix() const {return _HMatrix;} virtual TMatrixT residualVector(AbsTrackRep* stateVector, const TMatrixT& state) { setHMatrix(stateVector,state); DetPlane d = getDetPlane(stateVector); return ( getHitCoord(d) - (_HMatrix*state )); } virtual double residualScalar(AbsTrackRep* stateVector, const TMatrixT& state)=0; TMatrixT getRawHitCov() const {return _hitCov;} TMatrixT getRawHitCoord() const {return _hitCoord;} virtual TMatrixT getHitCov(const DetPlane&)=0; virtual TMatrixT getHitCoord(const DetPlane&)=0; // this will call the policy stuff in derived classes virtual const DetPlane& getDetPlane(AbsTrackRep*)=0; virtual AbsRecoHit* clone() = 0; virtual void Print() {_hitCoord.Print();} ClassDef(AbsRecoHit,1) }; #endif //FITTER_ABSHIT_H