2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
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 **************************************************************************/
10 #ifndef ALIEVE_CosmicRayFitter_H
11 #define ALIEVE_CosmicRayFitter_H
13 #include <TEvePointSet.h>
25 class AliEveCosmicRayFitter : public TEvePointSet
28 AliEveCosmicRayFitter(const Text_t* name = "CosmicRayFitter", Int_t n_points=0);
29 virtual ~AliEveCosmicRayFitter();
31 void AddFitPoint(Int_t); // slot for PointSelected() signal
35 virtual void FitTrack();
36 virtual void Reset(Int_t n_points=0, Int_t n_int_ids=0);
38 Bool_t GetConnected() { return fConnected; }
40 void DrawDebugGraph();
42 virtual void DestroyElements(); // *MENU*
43 static Double_t Distance3D(Double_t x, Double_t y, Double_t z, Double_t *p);
44 static void SumDistance3D(Int_t &, Double_t *, Double_t & sum, Double_t * par, Int_t );
47 AliEveCosmicRayFitter(const AliEveCosmicRayFitter&); // Not implemented
48 AliEveCosmicRayFitter& operator=(const AliEveCosmicRayFitter&); // Not implemented
53 // inner structure to check duplicates
54 TEvePointSet *fPS; // selected pointset
55 Int_t fIdx; // location in the point set array
57 Point_t(TEvePointSet* ps=0, Int_t i=0): fPS(ps), fIdx(i){}
58 Point_t(const Point_t& p) : fPS(p.fPS), fIdx(p.fIdx) {}
60 Point_t& operator=(const Point_t& p) {
61 fPS = p.fPS; fIdx = p.fIdx; return *this;
64 bool operator<(const Point_t& o) const {
65 if (fPS != o.fPS) return fPS < o.fPS;
70 typedef std::map<Point_t, Int_t> PointMap_t; // Map of registered points.
72 TLinearFitter* fLineFitter1; // 2D straight line fitter
73 TLinearFitter* fLineFitter2; // 2D straight line fitter
75 Bool_t fConnected; // object connected to pointset Ctrl-shift signal
77 PointMap_t fSPMap; // map of selected points from different PointSet
79 TEveTrackList* fTrackList; // list of tracks removed in the destructor
81 TGraph *fGraphPicked1; // graph of selected points debug info
82 TGraphErrors *fGraphLinear1; // graph of fitted points for debug info
83 TGraph *fGraphPicked2; // graph of selected points debug info
84 TGraphErrors *fGraphLinear2; // graph of fitted points for debug info
86 ClassDef(AliEveCosmicRayFitter, 0); // Interface to TEvePointSet allowing 3D straight linear fit.