Move core classes from EveDet to EveBase.
[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 ALIEVE_TrackFitter_H
11 #define ALIEVE_TrackFitter_H
12
13 #include <TEvePointSet.h>
14 #include <TQObject.h>
15 #include <map>
16
17 class TGraphErrors;
18 class TGraph;
19 class AliRieman;
20
21 class TEveTrackList;
22
23
24 class AliEveTrackFitter : public TEvePointSet
25 {
26 private:
27   AliEveTrackFitter(const AliEveTrackFitter&);            // Not implemented
28   AliEveTrackFitter& operator=(const AliEveTrackFitter&); // Not implemented
29
30   TGraph       *fGraphSelected;  // graph of selected points
31   TGraphErrors *fGraphFitted;    // graph of fitted points
32
33 protected:
34   struct Point_t
35   {
36     // inner structure to check duplicates
37     TEvePointSet* fPS;   // selected pointset
38     Int_t           fIdx;  // location in the point set array
39     Point_t(TEvePointSet* ps, Int_t i): fPS(ps), fIdx(i){}
40     bool operator<(const Point_t& o) const
41     { if (fPS != o.fPS) return fPS < o.fPS; return fIdx < o.fIdx; }
42   };
43
44   Float_t    fAlpha;          // transformation agle to local system (where x>>y)
45   AliRieman* fRieman;         // rieman fitter
46
47   Bool_t     fConnected;      // object connected to pointset Ctrl-shift signal
48
49   TEveTrackList* fTrackList; // track list created with rieman fit
50
51   std::map<Point_t, Int_t> fMapPS; // map of selected points from different TEvePointSet
52 public:
53   AliEveTrackFitter(const Text_t* name, Int_t n_points=0);
54   virtual ~AliEveTrackFitter();
55
56   virtual void AddFitPoint(TEvePointSet*,Int_t);  // slot for PointCtrlClicked() signal
57
58   virtual void DestroyElements(); // *MENU*
59
60   virtual void Start();
61   virtual void Stop();
62   virtual void FitTrack();
63   virtual void Reset(Int_t n_points=0, Int_t n_int_ids=0);
64
65   Bool_t        GetConnected(){ return fConnected; }
66   AliRieman*    GetRieman(){ return fRieman; }
67
68   void          DrawRiemanGraph();
69
70   TGraph*       GetGraphSelected() { return fGraphSelected; }
71   TGraphErrors* GetGraphFitted()   { return fGraphFitted; }
72
73   ClassDef(AliEveTrackFitter, 0); // Interface to AliRieman fit.
74 }; // endclass AliEveTrackFitter
75
76 #endif