AliRoot Core  3dc7879 (3dc7879)
AliSplineFit.h
Go to the documentation of this file.
1 #ifndef ALISPLINEFIT_H
2 #define ALISPLINEFIT_H
3 /* Copyright(c) 2006-07, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice */
5 
6 #include "TGraph.h"
7 #include "TGraphSmooth.h"
8 #include "TRandom.h"
9 #include "TSpline.h"
10 #include "TLinearFitter.h"
11 #include "TDecompSVD.h"
12 #include "TDecompSparse.h"
13 #include "TMatrixDSparse.h"
14 #include "TF1.h"
15 #include "TH1F.h"
16 #include "TObject.h"
17 #include "TClonesArray.h"
18 #include "TMath.h"
19 
20 #include "TTreeStream.h"
21 
22 class AliSplineFit : public TObject {
23  public:
24  AliSplineFit();
25  AliSplineFit(const AliSplineFit&);
26  ~AliSplineFit();
28  Double_t Eval(Double_t x, Int_t deriv=0) const;
29  void InitKnots(TGraph * graph, Int_t min, Int_t iter, Double_t maxDelta);
30  void MakeKnots0(TGraph * graph, Double_t maxdelta, Int_t minpoints);
31  void SplineFit(Int_t nder);
32  void CopyGraph();
33  void MakeSmooth(TGraph * graph, Float_t ratio, Option_t * type);
34  void Update(TSpline3 *spline, Int_t nknots);
35  void Cleanup();
36  Int_t GetKnots() const {return fN;}
37  Double_t* GetX() const {return fX;}
38  Double_t* GetY0() const {return fY0;}
39  Double_t* GetY1() const {return fY1;}
40  //
41  // Test functions
42  //
43  TGraph * MakeGraph(Double_t xmin, Double_t xmax, Int_t npoints, Int_t deriv=0) const ;
44  TGraph * MakeDiff(TGraph * graph) const ;
45  TH1F * MakeDiffHisto(TGraph * graph) const;
46  //
47  static void Test(Int_t npoints=2000, Int_t ntracks=100, Float_t snoise=0.05);
48  //
49  static TGraph * GenerGraph(Int_t npoints, Double_t fraction, Double_t s1, Double_t s2, Double_t s3, Int_t der=0);
50  static TGraph * GenerNoise(TGraph * graph0, Double_t s0);
51 
52  void SetGraph (TGraph* graph) { fGraph=graph; }
53  void SetMinPoints (Int_t minPoints) { fMinPoints=minPoints;}
54  Int_t GetMinPoints() const { return fMinPoints; }
55 
56  protected:
57 
58  //
59  // working parameters for spline fit
60  //
61  Int_t OptimizeKnots(Int_t nIter);
62  Float_t CheckKnot(Int_t iKnot);
63  Bool_t RefitKnot(Int_t iKnot);
64  //
65  Bool_t fBDump; // dump debug information flag
66  TGraph *fGraph;
67  Int_t fNmin; // number of points per one knot in iteration 0
68  Int_t fMinPoints; // minimum number of points to create AliSplineFit
69  Double_t fSigma; // locally estimated sigma
70  Double_t fMaxDelta;// maximal deviation of the spline fit
71  Int_t fN0; // number of knots in iteration 0
72  TClonesArray *fParams; // object array of parameters in knots
73  TClonesArray *fCovars; // object array of covariance in knots
74  Int_t *fIndex; //[fN0] index of point corresponding to knot
75  static TLinearFitter* fitterStatic(); // static fitter to save processing time
76  //
77  //
78  //
79  Int_t fN; // number of knots after compression
80  Double_t fChi2; // chi2 per degree of freedom
81  Double_t *fX; //[fN] - xknot value
82  Double_t *fY0; //[fN] - y value at X
83  Double_t *fY1; //[fN] - y derivative value at X
84  Double_t *fChi2I; //[fN] - chi2 on interval
85  ClassDef(AliSplineFit, 2);
86 };
87 #endif
Double_t * fChi2I
Definition: AliSplineFit.h:84
Double_t * fY0
Definition: AliSplineFit.h:82
TH1F * MakeDiffHisto(TGraph *graph) const
TGraph * MakeDiff(TGraph *graph) const
Double_t * GetX() const
Definition: AliSplineFit.h:37
Int_t OptimizeKnots(Int_t nIter)
void Update(TSpline3 *spline, Int_t nknots)
AliSplineFit & operator=(const AliSplineFit &)
Double_t * GetY1() const
Definition: AliSplineFit.h:39
TGraph * MakeGraph(Double_t xmin, Double_t xmax, Int_t npoints, Int_t deriv=0) const
Int_t * fIndex
Definition: AliSplineFit.h:74
static void Test(Int_t npoints=2000, Int_t ntracks=100, Float_t snoise=0.05)
npoints
Definition: driftITSTPC.C:85
static TGraph * GenerGraph(Int_t npoints, Double_t fraction, Double_t s1, Double_t s2, Double_t s3, Int_t der=0)
Double_t * fX
Definition: AliSplineFit.h:81
Double_t fChi2
Definition: AliSplineFit.h:80
Bool_t RefitKnot(Int_t iKnot)
void SplineFit(Int_t nder)
void MakeKnots0(TGraph *graph, Double_t maxdelta, Int_t minpoints)
static TLinearFitter * fitterStatic()
TClonesArray * fCovars
Definition: AliSplineFit.h:73
Double_t fSigma
Definition: AliSplineFit.h:69
Int_t fNmin
initial graph
Definition: AliSplineFit.h:67
static TGraph * GenerNoise(TGraph *graph0, Double_t s0)
Double_t Eval(Double_t x, Int_t deriv=0) const
Float_t CheckKnot(Int_t iKnot)
Double_t fMaxDelta
Definition: AliSplineFit.h:70
Int_t fMinPoints
Definition: AliSplineFit.h:68
void SetMinPoints(Int_t minPoints)
Definition: AliSplineFit.h:53
Int_t GetMinPoints() const
Definition: AliSplineFit.h:54
Int_t GetKnots() const
Definition: AliSplineFit.h:36
void SetGraph(TGraph *graph)
Definition: AliSplineFit.h:52
TGraph * fGraph
Definition: AliSplineFit.h:66
Bool_t fBDump
Definition: AliSplineFit.h:65
void MakeSmooth(TGraph *graph, Float_t ratio, Option_t *type)
Double_t * fY1
Definition: AliSplineFit.h:83
Double_t * GetY0() const
Definition: AliSplineFit.h:38
void InitKnots(TGraph *graph, Int_t min, Int_t iter, Double_t maxDelta)
TClonesArray * fParams
Definition: AliSplineFit.h:72