LCOV - code coverage report
Current view: top level - STEER/CDB - AliSplineFit.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 8 12.5 %
Date: 2016-06-14 17:26:59 Functions: 2 12 16.7 %

          Line data    Source code
       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();
      27             :   AliSplineFit& operator=(const 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           0 :   Int_t      GetKnots() const {return fN;}
      37           0 :   Double_t*  GetX() const {return fX;}
      38           0 :   Double_t*  GetY0() const {return fY0;}
      39           0 :   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           0 :   void SetGraph (TGraph* graph) { fGraph=graph; }
      53           0 :   void SetMinPoints (Int_t minPoints) { fMinPoints=minPoints;}
      54           0 :   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;   //! initial graph
      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        3344 :   ClassDef(AliSplineFit, 2);
      86             : };
      87             : #endif

Generated by: LCOV version 1.11