#ifndef ALIEVE_CosmicRayFitter_H
#define ALIEVE_CosmicRayFitter_H
#include <TEvePointSet.h>
#include <map>
class TEveTrackList;
class TGraphErrors;
class TGraph;
class TGraph2DErrors;
class TGraph2D;
class TLinearFitter;
class AliEveCosmicRayFitter : public TEvePointSet
{
public:
AliEveCosmicRayFitter(const Text_t* name = "CosmicRayFitter", Int_t n_points=0);
virtual ~AliEveCosmicRayFitter();
void AddFitPoint(Int_t);
virtual void Start();
virtual void Stop();
virtual void FitTrack();
virtual void Reset(Int_t n_points=0, Int_t n_int_ids=0);
Bool_t GetConnected() { return fConnected; }
void DrawDebugGraph();
virtual void DestroyElements();
static Double_t Distance3D(Double_t x, Double_t y, Double_t z, Double_t *p);
static void SumDistance3D(Int_t &, Double_t *, Double_t & sum, Double_t * par, Int_t );
private:
AliEveCosmicRayFitter(const AliEveCosmicRayFitter&);
AliEveCosmicRayFitter& operator=(const AliEveCosmicRayFitter&);
protected:
struct Point_t
{
TEvePointSet *fPS;
Int_t fIdx;
Point_t(TEvePointSet* ps=0, Int_t i=0): fPS(ps), fIdx(i){}
Point_t(const Point_t& p) : fPS(p.fPS), fIdx(p.fIdx) {}
Point_t& operator=(const Point_t& p) {
fPS = p.fPS; fIdx = p.fIdx; return *this;
}
bool operator<(const Point_t& o) const {
if (fPS != o.fPS) return fPS < o.fPS;
return fIdx < o.fIdx;
}
};
typedef std::map<Point_t, Int_t> PointMap_t;
TLinearFitter* fLineFitter1;
TLinearFitter* fLineFitter2;
Bool_t fConnected;
PointMap_t fSPMap;
TEveTrackList* fTrackList;
TGraph *fGraphPicked1;
TGraphErrors *fGraphLinear1;
TGraph *fGraphPicked2;
TGraphErrors *fGraphLinear2;
ClassDef(AliEveCosmicRayFitter, 0);
};
#endif
AliEveCosmicRayFitter.h:1 AliEveCosmicRayFitter.h:2 AliEveCosmicRayFitter.h:3 AliEveCosmicRayFitter.h:4 AliEveCosmicRayFitter.h:5 AliEveCosmicRayFitter.h:6 AliEveCosmicRayFitter.h:7 AliEveCosmicRayFitter.h:8 AliEveCosmicRayFitter.h:9 AliEveCosmicRayFitter.h:10 AliEveCosmicRayFitter.h:11 AliEveCosmicRayFitter.h:12 AliEveCosmicRayFitter.h:13 AliEveCosmicRayFitter.h:14 AliEveCosmicRayFitter.h:15 AliEveCosmicRayFitter.h:16 AliEveCosmicRayFitter.h:17 AliEveCosmicRayFitter.h:18 AliEveCosmicRayFitter.h:19 AliEveCosmicRayFitter.h:20 AliEveCosmicRayFitter.h:21 AliEveCosmicRayFitter.h:22 AliEveCosmicRayFitter.h:23 AliEveCosmicRayFitter.h:24 AliEveCosmicRayFitter.h:25 AliEveCosmicRayFitter.h:26 AliEveCosmicRayFitter.h:27 AliEveCosmicRayFitter.h:28 AliEveCosmicRayFitter.h:29 AliEveCosmicRayFitter.h:30 AliEveCosmicRayFitter.h:31 AliEveCosmicRayFitter.h:32 AliEveCosmicRayFitter.h:33 AliEveCosmicRayFitter.h:34 AliEveCosmicRayFitter.h:35 AliEveCosmicRayFitter.h:36 AliEveCosmicRayFitter.h:37 AliEveCosmicRayFitter.h:38 AliEveCosmicRayFitter.h:39 AliEveCosmicRayFitter.h:40 AliEveCosmicRayFitter.h:41 AliEveCosmicRayFitter.h:42 AliEveCosmicRayFitter.h:43 AliEveCosmicRayFitter.h:44 AliEveCosmicRayFitter.h:45 AliEveCosmicRayFitter.h:46 AliEveCosmicRayFitter.h:47 AliEveCosmicRayFitter.h:48 AliEveCosmicRayFitter.h:49 AliEveCosmicRayFitter.h:50 AliEveCosmicRayFitter.h:51 AliEveCosmicRayFitter.h:52 AliEveCosmicRayFitter.h:53 AliEveCosmicRayFitter.h:54 AliEveCosmicRayFitter.h:55 AliEveCosmicRayFitter.h:56 AliEveCosmicRayFitter.h:57 AliEveCosmicRayFitter.h:58 AliEveCosmicRayFitter.h:59 AliEveCosmicRayFitter.h:60 AliEveCosmicRayFitter.h:61 AliEveCosmicRayFitter.h:62 AliEveCosmicRayFitter.h:63 AliEveCosmicRayFitter.h:64 AliEveCosmicRayFitter.h:65 AliEveCosmicRayFitter.h:66 AliEveCosmicRayFitter.h:67 AliEveCosmicRayFitter.h:68 AliEveCosmicRayFitter.h:69 AliEveCosmicRayFitter.h:70 AliEveCosmicRayFitter.h:71 AliEveCosmicRayFitter.h:72 AliEveCosmicRayFitter.h:73 AliEveCosmicRayFitter.h:74 AliEveCosmicRayFitter.h:75 AliEveCosmicRayFitter.h:76 AliEveCosmicRayFitter.h:77 AliEveCosmicRayFitter.h:78 AliEveCosmicRayFitter.h:79 AliEveCosmicRayFitter.h:80 AliEveCosmicRayFitter.h:81 AliEveCosmicRayFitter.h:82 AliEveCosmicRayFitter.h:83 AliEveCosmicRayFitter.h:84 AliEveCosmicRayFitter.h:85 AliEveCosmicRayFitter.h:86 AliEveCosmicRayFitter.h:87 AliEveCosmicRayFitter.h:88 AliEveCosmicRayFitter.h:89