00001 00002 // Package: CandTrackCam 00003 // 00004 // AlgTrackCamList 00005 // 00006 // marshall@hep.phy.cam.ac.uk 00008 #ifndef ALGTRACKCAMLIST_H 00009 #define ALGTRACKCAMLIST_H 00010 00011 #include "Algorithm/AlgBase.h" 00012 #include <vector> 00013 #include "Validity/VldContext.h" 00014 00015 using std::vector; 00016 00017 class HitCam; 00018 class ClusterCam; 00019 class TrackSegmentCam; 00020 class TrackCam; 00021 00022 00023 class AlgTrackCamList : public AlgBase 00024 { 00025 00026 public: 00027 AlgTrackCamList(); 00028 virtual ~AlgTrackCamList(); 00029 virtual void RunAlg(AlgConfig &ac, CandHandle &ch, CandContext &cx); 00030 virtual void Trace(const char *c) const; 00031 00032 void RunTheFinder(CandSliceHandle* slice); 00033 void FormTheHits(CandSliceHandle* slice); 00034 void FormTheClusters(); 00035 void IDTrkAndShwClusters(); 00036 void FormTriplets(); 00037 void FindAllAssociations(); 00038 void FindPreferredJoins(); 00039 void FindMatchedJoins(); 00040 void FirstUVComparison(); 00041 void Form2DTracks(); 00042 void Join2DTracks(); 00043 void SecondUVComparison(); 00044 void Form3DTracks(CandSliceHandle* slice); 00045 void LookForHitsAcrossGap(TrackCam* Trk); 00046 void ExtendTrack(TrackCam* Trk); 00047 void FillGapsInTrack(TrackCam* Trk); 00048 void NearDetectorTriplets(); 00049 void ClearUp(); 00050 void MatchUV(TrackCam* trku, TrackCam* trkv); 00051 00052 private: 00053 vector<HitCam*> AllHitBank[500]; 00054 00055 vector<HitCam*> HitBank[500]; 00056 00057 vector<HitCam*> HitsInTracks[2]; 00058 00059 vector<ClusterCam*> ClusterBank[500]; 00060 00061 vector<ClusterCam*> ClusterList[500]; 00062 00063 vector<TrackSegmentCam*> SegmentBank[500]; 00064 vector<TrackSegmentCam*> NDSegmentBank[500]; 00065 00066 vector<TrackSegmentCam*> ViewSegBank[2]; 00067 vector<TrackSegmentCam*> TempTrack[2]; 00068 00069 vector<TrackSegmentCam*> PossibleJoins[2]; 00070 00071 vector<TrackCam*> FinalTrackBank[2]; 00072 00073 00074 VldContext *vldc; 00075 int NumModules; 00076 int PlanesInModule; 00077 int ModuleType; 00078 const double StripWidth; 00079 00080 double PECut, PECut2; 00081 00082 bool CambridgeAnalysis; 00083 00084 00085 ClassDef(AlgTrackCamList,1) // TrackCamList Algorithm Class 00086 00087 }; 00088 00089 #endif // ALGTRACKCAMLIST
1.3.9.1