00001
00002
00003
00004
00005
00006
00007 #ifndef __GFcandidates_H
00008 #define __GFcandidates_H 1
00009
00010 #include <vector>
00011 #include "TkrRecon/GFgamma.h"
00012
00013
00014 class GFcandidates
00015
00016 {
00017 public:
00018
00019 enum type {TRACK,PARTICLE,PAIR,GAMMA};
00020
00021 public:
00022
00023
00024 GFcandidates(type t, double ene, double sigmaCut, Point Pend = Point(0.,0.,0.), Point Pini = Point(0.,0.,0.));
00025 ~GFcandidates() {}
00026 void clear();
00027
00028
00029 int numCandidates() {return (int) m_candidates.size();}
00030 std::vector<GFdata> m_Xcandidates;
00031 std::vector<GFdata> m_Ycandidates;
00032
00033 std::vector<GFdata> m_candidates;
00034
00035
00036 static GFdata GFconstructor(GFcandidates::type , double ene, double sigmaCut, int ilayer, const Ray testRay, SiCluster::view v = SiCluster::X);
00037
00038 private:
00039
00040
00041 void ini();
00042 bool findCandidates();
00043
00044
00045 bool findCandidates(std::vector<GFdata>& candidates,
00046 const GFdata& Xcandidate, const GFdata& Ycandidate,
00047 double ene, GFcandidates::type);
00048
00049 bool findSeedCandidates(std::vector<GFdata>& candidates, GFcandidates::type , SiCluster::view);
00050 bool findSeedCandidates(std::vector<GFdata>& candidates, GFcandidates::type , SiCluster::view, int iplane, int itower = 0);
00051
00052
00053 static void incorporate(std::vector<GFdata>& candidates, const GFdata);
00054 Point createPend(SiCluster::view axis, int ilayer, const Point& PIni);
00055
00056 private:
00057
00058 GFcandidates::type m_type;
00059 GFcandidates::type m_seedtype;
00060
00061 Point m_Pini;
00062 Point m_Pend;
00063
00064 double m_eneCandidate;
00065 double m_sigmaCut;
00066
00067 };
00068
00069
00070 #endif