Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

GFdata.h

Go to the documentation of this file.
00001 //-----------------------------------------------------------------
00002 //
00003 //                              B. Atwood
00004 //                              B. Atwood, JA Hernando    Santa Cruz 2/26/99
00005 //------------------------------------------------------------------------------
00006 
00007 #ifndef __GLASTFIT_H
00008 #define __GLASTFIT_H 1
00009 
00010 #include "GaudiKernel/MsgStream.h"
00011 #include "geometry/Ray.h"
00012 #include "TkrRecon/GFcontrol.h"
00013 
00014 //---------------------------------------------------------------
00015 //
00016 //    GF - Tracking classes
00017 //
00018 //                     B.Atwood, JA Hernando
00019 //                     Santa Cruz, 03/30/99
00020 //---------------------------------------------------------------
00021 
00022 //############################################
00023 class GFdata
00024 //############################################
00025 {
00026 public:
00027 
00028     GFdata() : m_RCenergy(0.), m_quality(0.), m_firstLayer(0), 
00029                m_nhits(0), m_itower(0)
00030     {ini();}
00031                 
00032     GFdata getGFdata() {return *this;}
00033     
00034         // access
00035     inline Point vertex() const {return m_vertex;}
00036     inline Vector direction() const {return m_direction.unit();}
00037     inline double RCenergy() const {return m_RCenergy;}
00038     inline double Q() const {return m_quality;}
00039     inline int firstLayer() const {return m_firstLayer;}
00040     inline int nhits() const {return m_nhits;}
00041     inline int tower() const {return m_itower;}
00042 
00043     Ray ray() const {return Ray(m_vertex,m_direction);} 
00044 
00045         // operations
00046         void ini();
00047         bool empty() const;
00048         void writeOut(MsgStream& log) const;
00049 
00050         // utilities
00051     static Point doVertex(const Ray&, const  Ray& );
00052         static Vector doDirection(const Vector& xdir, const Vector& ydir);
00053     static bool neighbourTowers(int itower, int jtower);
00054 
00055 protected:
00056 
00057         // Output Data
00058     Point m_vertex;
00059     Vector m_direction;
00060     double m_RCenergy;
00061     double m_quality;
00062     int m_firstLayer;
00063         int m_nhits;
00064     int m_itower;
00065         
00066 };
00067  
00068 //############################################
00069 class GFbase: public GFdata
00070 //############################################
00071 {
00072 public:
00073 
00074         // access
00075         inline double sigmaCut() const {return m_sigmaCut;}
00076         inline bool alive() const {return m_alive;}
00077         inline Point inputVertex() const {return m_inVertex;}
00078         inline Vector inputDirection() const {return m_inDirection;}
00079         inline int inputLayer() const {return m_iniLayer;}
00080         inline double inputEnergy() const {return m_iniEnergy;}
00081 
00082         inline Ray inputRay() const {return Ray(m_inVertex,m_inDirection);}
00083 
00084         // operation
00085         virtual void flagAllHits(int iflag=1) = 0;
00086         virtual void unFlagAllHits() = 0;
00087 
00088         virtual bool empty() const = 0;
00089         virtual bool accept() const = 0;
00090         virtual void clear() = 0;
00091         virtual void writeOut(std::ostream& out=std::cout) const {}; 
00092 
00093 
00094 public:
00095         
00096     enum StatusHit {EMPTY, FOUND, CRACK};
00097     enum StatusPair {TOGETHER, SPLIT, ONE, DONE};
00098 
00099 protected:
00100 
00101         // constructor
00102     GFbase(double sigmaCut, double ene, int ist, const Ray& testRay);
00103     virtual ~GFbase() {}
00104 
00105         // operations
00106         virtual void ini() = 0;
00107         virtual void doit(); // do a full pattern Regonition
00108         virtual void step(int kplane) = 0; // One Step in the Pattern Recognition
00109         virtual void anastep(int kplane) = 0; // make some analysis after the step is done
00110         virtual void fit() = 0; // fit the GF object - compute the GFdata
00111         virtual bool end() const = 0; // end of the Pattern Recognition?
00112         virtual void kill() = 0;        
00113         virtual void setAlive() = 0;
00114 
00115         virtual void contability(int kplane) = 0; // contability of the anaStep
00116         virtual void loadGFdata() = 0;   // load the GF data
00117 
00118 protected:
00119     
00120         // Control 
00121     double m_sigmaCut;
00122         bool m_alive;
00123 
00124         // Input Data
00125         Point m_inVertex;
00126         Vector m_inDirection;
00127     double m_iniEnergy;
00128     int m_iniLayer;
00129 
00130 };
00131 
00132 #endif

Generated at Wed Nov 21 12:21:20 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000