00001
00002 #ifndef __GFSEGMENT_H
00003 #define __GFSEGMENT_H 1
00004
00005 #include "TkrRecon/KalFit.h"
00006 #include "TkrRecon/GFdata.h"
00007
00008 class GFparticle;
00009
00010
00011 class GFsegment: public KalTrack
00012
00013 {
00014 protected:
00015
00016 friend class GFgamma;
00017 friend class GFparticle;
00018 friend class GFpair;
00019 friend class GFtrack;
00020
00021
00022 GFsegment(const GFtrack* _GFtrack);
00023
00024
00025 int indexhit() const {return m_indexhit;}
00026 GFbase::StatusHit status() const {return m_statusHit;}
00027 KalPlane getKPlane() const;
00028 double chiGFSq() const;
00029
00030
00031
00032 void best(int kplane);
00033 void next(int kplane);
00034 void previous(int kplane);
00035 void clear();
00036 bool accept() const;
00037
00038 void flagUsedHits(int kplane);
00039 void unFlagUsedHits(int kplane);
00040 void unFlagAllHits();
00041
00042 private:
00043
00044
00045 KalPlane followingKPlane(int kplane) const;
00046 KalPlane getKPlane(int kplane) const;
00047 void doit(KalPlane& oriKplane, int jplane, KalHit::TYPE type = KalHit::FIT);
00048 KalPlane projectedKPlane(KalPlane previous, int klayer,
00049 KalHit::TYPE type = KalHit::FIT) const;
00050 GFbase::StatusHit nextKPlane(const KalPlane& previous, int kplane,
00051 KalPlane& next, KalHit::TYPE typ = KalHit::FIT) const;
00052
00053
00054 double sigmaFoundHit(const KalPlane& previous, const KalPlane& next, int& indexhit, double& radius) const;
00055 void incorporateFoundHit(KalPlane& next, int indexhit) const;
00056 bool foundHit(int& indexhit, double& inerRadius, double outRadius, double twrRadius,
00057 const Point& CenterX, const Point& nearHit, double slope) const;
00058
00059
00060 double getZklayer(enum SiCluster::view axis, int klayer) const;
00061 bool crack(const KalPlane&) const;
00062
00063 private:
00064
00065 SiCluster::view m_axis;
00066
00067 KalPlane m_nextKplane;
00068 int m_indexhit;
00069 GFbase::StatusHit m_statusHit;
00070
00071 const GFtrack* _mGFtrack;
00072
00073 };
00074
00075 #endif