#ifndef __MUTKALMANTRACKHIT_H__ #define __MUTKALMANTRACKHIT_H__ // MutKalmanTrackHit.h // // Kalman track hit for muon tracker: header file //--------------------------------------------------------------------- #include "TObject.h" #include "MutKalmanTrack.h" // object belongs to the class #include "MutKalmanTrackParam.h" // object belongs to the class class TVectorD; class TMatrixD; // "public TObject" to use Root facilities class MutKalmanTrackHit : public TObject { public: MutKalmanTrackHit(Int_t NMeas = 1); // constructor with "NMeas" measurements (default: 1) virtual ~MutKalmanTrackHit(); // destructor MutKalmanTrackHit (const MutKalmanTrackHit& TrackHit); // copy constructor MutKalmanTrackHit& operator=(const MutKalmanTrackHit& TrackHit); // assignment operator MutKalmanTrack* GetTrack() {return fTrack;} void SetTrack(MutKalmanTrack* Track) {fTrack = Track;} Double_t GetZ() {return fZ;} void SetZ(Double_t Z) {fZ = Z;} Int_t GetNMeas() {return fNMeas;} TVectorD* GetMeas() {return fMeas;} void SetMeas1(Double_t Meas0); void SetMeas1Z(Double_t Meas0, Double_t Z); void SetMeas2(Double_t Meas0, Double_t Meas1); void SetMeas2Z(Double_t Meas0, Double_t Meas1, Double_t Z); TMatrixD* GetCovMeas() {return fCovMeas;} void SetCovMeas(TMatrixD* CovMeas); TMatrixD* GetDMeasDXY() {return fDMeasDXY;} void SetDMeasDXY(TMatrixD* DMeasDXY); TMatrixD* GetPropagatorParDeriv() {return fPropagatorParDeriv;} MutKalmanTrackParam* GetTrackParam(Int_t PredFiltSmooth) {return &fTrackParam[PredFiltSmooth];} // Predicted(0)-Filtered(1)-Smoothed(2) void SetTrackParam(Int_t PredFiltSmooth, MutKalmanTrackParam* Param) {fTrackParam[PredFiltSmooth] = *Param;} TVectorD* GetTrueParam() {return fTrueParam;} void SetTrueParam(Double_t X, Double_t Y, Double_t Px, Double_t Py, Double_t Pz); Double_t GetChi2M() {return fChi2M;} void SetChi2M(TMatrixD* Chi2M); Double_t GetChi2P() {return fChi2P;} void SetChi2P(TMatrixD* Chi2P); MutKalmanTrackHit* Next() {return (MutKalmanTrackHit*) (fTrack->GetTrackHitsPtr()->After((MutKalmanTrackHit*) (this)));} MutKalmanTrackHit* Prev() {return (MutKalmanTrackHit*) (fTrack->GetTrackHitsPtr()->Before((MutKalmanTrackHit*) (this)));} /* void FillWithHitFromDMuoTracksClass(dMuoTracksClass* MuoTrack, Int_t stNumber, Int_t stHitNumber); */ void Print(); protected: private: MutKalmanTrack *fTrack; //! Pointer to the track the hit belongs to // information about raw hit Double_t fZ; //! Z position in cm Int_t fNMeas; //! number of measurements TVectorD *fMeas; //! pointer to: measurements in cm (not necessarily X and Y) TMatrixD *fCovMeas; //! pointer to: covariance matrix of measurements in cm**2 TMatrixD *fDMeasDXY; //! pointer to: matrix of derivatives of measurements with respect to X and Y TMatrixD *fPropagatorParDeriv; //! Track propagator: partial derivatives of track parameters /* TMatrixD *fPropagatorCovMatrix; //! Track propagator: covariance matrix of track parameters */ MutKalmanTrackParam fTrackParam[3]; //! Track parameters: predicted (0), filtered (1) and smoothed (2) TVectorD *fTrueParam; //! True track parameters if simulated track Double_t fChi2M; //! chi squared from measurement Double_t fChi2P; //! chi squared from propagation // class version ClassDef(MutKalmanTrackHit, 1) // Kalman track in PHENIX dimuon spectrometer }; #endif /*__MUTKALMANTRACKHIT_H__*/