00001 #ifndef ExtMucKal_H_ 00002 #define ExtMucKal_H_ 00003 00004 //#include "CLHEP/Alist/AList.h" 00005 #include "CLHEP/Matrix/Vector.h" 00006 #include "CLHEP/Matrix/SymMatrix.h" 00007 //#ifndef CLHEP_POINT3D_H 00008 #include "CLHEP/Geometry/Point3D.h" 00009 #include "G4VPhysicalVolume.hh" 00010 #include "TrkExtAlg/Ext_xp_err.h" 00011 #include "G4LogicalVolume.hh" 00012 #include "MucRawEvent/MucDigi.h" 00013 #include "MucRecEvent/MucRecHit.h" 00014 //#endif 00015 00016 00017 class ExtMucKal //: public HepAList<KLMKCluster> 00018 { 00019 00020 public: 00021 00022 ExtMucKal(); 00023 ~ExtMucKal(); 00024 bool ExtMucFilter(); 00025 void SetPosMomErr(Hep3Vector pos,Hep3Vector mom,HepSymMatrix err){m_CurrentPosition=pos;m_CurrentMomentum=mom;m_CurrentXPErr = err;} 00026 void SetMucDigiCol(MucDigiCol* amucdigi){m_MucDigiCol=amucdigi;} 00027 void SetMucWindow(int aMucWindow){n_sigm = aMucWindow;} 00028 void SetGapID(Hep3Vector id ){m_gapid = id;} 00029 bool MucKalIniti(); 00030 void XPmod(Hep3Vector &pos,Hep3Vector &mom,HepSymMatrix &err); 00031 bool JCB(); 00032 double Fit( Hep3Vector &pos, Hep3Vector &mom, HepSymMatrix &err); 00033 HepMatrix GetRoationMatrix(MucGeoGap *box); 00034 bool GetFilterStatus(){return FilterOK;} 00035 double GetChi2(){return Chi2_sub;} 00036 double GetDistance(const MucRecHit* hit); 00037 double GetPull(){return m_pull;} 00038 int GetOrient(){return m_orient;} 00039 Hep3Vector GetHitGap(); 00040 vector<MucRecHit*> GapHit(); 00041 vector<MucRecHit*> TrackHit(); 00042 bool GetSameStrip(){return m_samestrip;} 00043 protected: 00044 00045 private: 00046 Hep3Vector m_gapid; 00047 Hep3Vector m_hitgap; 00048 Hep3Vector m_CurrentPosition; 00049 Hep3Vector m_CurrentMomentum; 00050 HepSymMatrix m_CurrentXPErr; 00051 HepVector3D m_CurrentInsct; 00052 HepSymMatrix m_CurrentInsctXPErr; 00053 HepMatrix m_jcb; 00054 MucDigiCol* m_MucDigiCol; 00055 bool FilterOK; 00056 double Chi2_sub; 00057 HepSymMatrix m_err_mod; 00058 Hep3Vector m_pos_mod; 00059 Hep3Vector m_mom_mod; 00060 MucRecHit* m_nearesthit; 00061 bool HitExist; 00062 double m_pull; 00063 double m_sigma; 00064 int m_orient; 00065 int n_sigm; 00066 HepVector m_bm; 00067 HepSymMatrix m_Ebm; 00068 int m_iStrip; 00069 bool m_samestrip; 00070 }; 00071 00072 #endif