]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/EveBase/AliEveTrackFitter.h
* hmpid_digits.C, hmpid_raw.C
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveTrackFitter.h
1 // $Id$
2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 #ifndef AliEveTrackFitter_H
11 #define AliEveTrackFitter_H
12
13 #include <TEvePointSet.h>
14 #include <map>
15
16 class TGraphErrors;
17 class TGraph;
18 class AliRieman;
19
20 class TEveTrackList;
21
22 class AliEveTrackFitter : public TEvePointSet
23 {
24 public:
25   AliEveTrackFitter(const Text_t* name = "TrackFitter", Int_t nPoints=0);
26   virtual ~AliEveTrackFitter();
27
28   virtual void DestroyElements();
29
30   virtual void  AddFitPoint(Int_t pointId);  // slot for TEvePointSet::PointSelected() signal
31
32   virtual void  Start();
33   virtual void  Stop();
34   virtual void  FitTrack();
35   virtual void  Reset(Int_t nPoints=0, Int_t nIntIds=0);
36
37   Bool_t        GetConnected() const { return fConnected; }
38   AliRieman*    GetRieman()    const { return fRieman; }
39
40   TGraph*       GetGraphPicked() const { return fGraphPicked; }
41   TGraphErrors* GetGraphHelix()  const { return fGraphHelix; }
42   void          DrawDebugGraph();
43
44
45 protected:
46
47   struct Point_t
48   {
49     TEvePointSet   *fPS;   // point set
50     Int_t           fIdx;  // id in point set
51
52     Point_t(TEvePointSet* ps=0, Int_t i=0) : fPS(ps), fIdx(i) {}
53     Point_t(const Point_t& p) : fPS(p.fPS), fIdx(p.fIdx)  {}
54
55     Point_t& operator=(const Point_t& p)
56     {
57       fPS = p.fPS; fIdx = p.fIdx; return *this;
58     }
59
60     bool operator<(const Point_t& o) const
61     {
62       if (fPS != o.fPS) return fPS < o.fPS;
63       return fIdx < o.fIdx;
64     }
65   };
66
67   typedef std::map<Point_t, Int_t> PointMap_t;
68
69   Float_t            fAlpha;           // transformation angle to AliRieman local system (where x>>y)
70   AliRieman*         fRieman;          // rieman fitter
71
72   Bool_t             fConnected;       // connection to the TEvePointSet signal
73
74   PointMap_t         fSPMap;           // map of selected points
75   TEveTrackList*     fTrackList;       // list of tracks removed in the destructor
76
77   TGraph            *fGraphPicked;     // graph of selected points debug info
78   TGraphErrors      *fGraphHelix;      // graph of fitted points for debug info
79
80 private:
81   AliEveTrackFitter(const AliEveTrackFitter&);            // Not implemented
82   AliEveTrackFitter& operator=(const AliEveTrackFitter&); // Not implemented
83
84   ClassDef(AliEveTrackFitter, 0); // Interface of TEvePointSet allowing helix fit.
85 };
86
87 #endif