]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveBase/AliEveCosmicRayFitter.h
alice-data/gentle_geo_trd.root
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveCosmicRayFitter.h
CommitLineData
e7aa1ed8 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_CosmicRayFitter_H
11#define ALIEVE_CosmicRayFitter_H
12
13#include <TEvePointSet.h>
14#include <map>
15
16class TGraphErrors;
17class TGraph;
18class TGraph2DErrors;
19class TGraph2D;
20class TLinearFitter;
21class TVirtualFitter;
22
23class AliEveCosmicRayFitter : public TEvePointSet
24{
4b456ebb 25public:
26 AliEveCosmicRayFitter(const Text_t* name = "CosmicRayFitter", Int_t n_points=0);
27 virtual ~AliEveCosmicRayFitter();
28
29 void AddFitPoint(Int_t); // slot for PointCtrlClicked() signal
e7aa1ed8 30
4b456ebb 31 virtual void Start();
32 virtual void Stop();
33 virtual void FitTrack();
34 virtual void Reset(Int_t n_points=0, Int_t n_int_ids=0);
e7aa1ed8 35
4b456ebb 36 Bool_t GetConnected() { return fConnected; }
37 TVirtualFitter* GetLine3DFitter(){ return fLine3DFitter; }
38
39 TGraph* GetGraphSelected1() { return fGraphPicked1; }
40 TGraph* GetGraphSelected2() { return fGraphPicked2; }
41 TGraph2D* GetGraphSelected3() { return fGraphPicked3; }
42 TGraphErrors* GetGraphFitted1() { return fGraphLinear1; }
43 TGraphErrors* GetGraphFitted2() { return fGraphLinear2; }
44 TGraph2DErrors* GetGraphFitted3() { return fGraphLinear3; }
45 void DrawDebugGraph();
46
47 virtual void DestroyElements(); // *MENU*
48
49protected:
e7aa1ed8 50 struct Point_t
51 {
52 // inner structure to check duplicates
53 TEvePointSet *fPS; // selected pointset
54 Int_t fIdx; // location in the point set array
55
56 Point_t(TEvePointSet* ps=0, Int_t i=0): fPS(ps), fIdx(i){}
57 Point_t(const Point_t& p) : fPS(p.fPS), fIdx(p.fIdx) {}
58
59 Point_t& operator=(const Point_t& p) {
60 fPS = p.fPS; fIdx = p.fIdx; return *this;
61 }
62
63 bool operator<(const Point_t& o) const {
64 if (fPS != o.fPS) return fPS < o.fPS;
65 return fIdx < o.fIdx;
66 }
67 };
68
4b456ebb 69 typedef std::map<Point_t, Int_t> PointMap_t; // Map of registered points.
e7aa1ed8 70
71 TVirtualFitter* fLine3DFitter; // 3D straight line fitter
72
73 Bool_t fConnected; // object connected to pointset Ctrl-shift signal
74
75 PointMap_t fSPMap; // map of selected points from different PointSet
76
77 TGraph *fGraphPicked1; // graph of selected points debug info
78 TGraphErrors *fGraphLinear1; // graph of fitted points for debug info
79 TGraph *fGraphPicked2; // graph of selected points debug info
80 TGraphErrors *fGraphLinear2; // graph of fitted points for debug info
81 TGraph2D *fGraphPicked3; // graph of selected points debug info
82 TGraph2DErrors *fGraphLinear3; // graph of fitted points for debug info
83
4b456ebb 84private:
85 AliEveCosmicRayFitter(const AliEveCosmicRayFitter&); // Not implemented
86 AliEveCosmicRayFitter& operator=(const AliEveCosmicRayFitter&); // Not implemented
e7aa1ed8 87
88 ClassDef(AliEveCosmicRayFitter, 0); // Interface to TEvePointSet allowing 3D straight linear fit.
4b456ebb 89};
e7aa1ed8 90
91#endif