#ifndef __MUTKALMANTRACK_H__ #define __MUTKALMANTRACK_H__ // MutKalmanTrack.h // // Kalman track for muon tracker: header file //--------------------------------------------------------------------- #include "TClonesArray.h" #include "TObject.h" #include "table_header.h" #include "mumhits.h" /* #include "dMutCathodeClustersN.h" */ /* #include "dMutCSCGeom.h" */ /* #include "MutGeom.h" */ #include "dMutArrayParams.h" #include "MutKalmanTrackParam.h" // object belongs to the class class MutKalmanTrackHit; class dMuoTracksClass; // "public TObject" to use Root facilities class MutKalmanTrack : public TObject { public: virtual ~MutKalmanTrack(); // destructor MutKalmanTrack (const MutKalmanTrack& Track); // copy constructor MutKalmanTrack& operator=(const MutKalmanTrack& Track); // assignment operator // Constructors MutKalmanTrack(Int_t TrackNumber, TABLE_HEAD_ST* Mumhits_h, MUMHITS_ST* Mumhits, Double_t SigmaR, Double_t SigmaRPhi); // constructor from PISA hits of one GEANT track MutKalmanTrack(long int NHits, float xmeas[MAXPLANES][3], float CathodeAngle[MAXPLANES], float res[MAXPLANES][2]); // constructor from information given to "mum_geafit" Fortran subroutine /* MutKalmanTrack(dMuoTracksClass* MuoTrack); // constructor from one "dMuoTracksClass" object */ /* MutKalmanTrack(dMuoTracksClass* MuoTrack, dMutCathodeClustersN_ST* dMutCathodeClustersN[NumberOfArms][NumberOfStations][NumberOfOctants][NumberOfHalfOctants][3][NumberOfCathodePlanes], DMUTCSCGEOM_ST* dMutCSCGeom); // constructor from one "dMuoTracksClass" object */ MutKalmanTrackParam* GetTrackParamAtVertex() {return &fTrackParamAtVertex;} void SetTrackParamAtVertex(MutKalmanTrackParam* Param) {fTrackParamAtVertex = *Param;} TClonesArray* GetTrackHitsPtr() {return fTrackHitsPtr;} MutKalmanTrackHit* FirstHit() {return (MutKalmanTrackHit*) (fTrackHitsPtr->First());} MutKalmanTrackHit* LastHit() {return (MutKalmanTrackHit*) (fTrackHitsPtr->Last());} void AddToChi2(Double_t Chi2M, Double_t Chi2P) {fChi2 = fChi2 + Chi2M + Chi2P;} void Fit(MutKalmanTrackParam *StartParam, Double_t StartZ); void Print(); protected: private: MutKalmanTrackParam fTrackParamAtVertex; //! Track parameters at vertex TClonesArray *fTrackHitsPtr; //! Pointer to array of pointers to TrackHit's Double_t fChi2; //! Chi square of the track // There is no default constructor without argument MutKalmanTrack(); // default constructor void Filter(MutKalmanTrackParam *StartParam, Double_t StartZ); void Smoother(); // class version ClassDef(MutKalmanTrack, 1) // Kalman track in PHENIX dimuon spectrometer }; #endif /*__MUTKALMANTRACK_H__*/