LCOV - code coverage report
Current view: top level - STEER/STEERBase - AliTRDTKDInterpolator.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 2 9 22.2 %
Date: 2016-06-14 17:26:59 Functions: 2 17 11.8 %

          Line data    Source code
       1             : #ifndef ROOT_ALITRDTKDINTERPOLATOR_H
       2             : #define ROOT_ALITRDTKDINTERPOLATOR_H
       3             : 
       4             : #ifndef ROOT_TKDTree
       5             : #include "TKDTree.h"
       6             : #endif
       7             : 
       8             : #ifndef ROOT_TObject
       9             : #include "TObject.h"
      10             : #endif
      11             : 
      12             : #include "TVectorD.h"
      13             : #include "TMatrixD.h"
      14             : #include "TH2Poly.h"
      15             : class TClonesArray;
      16             : 
      17             : class AliTRDTKDInterpolator : public TKDTreeIF
      18             : {
      19             : 
      20             : public:
      21             :     enum TRDTKDMode{
      22             :         kInterpolation=0,
      23             :         kMinError=1,
      24             :         kNodeVal=2
      25             :     };
      26             : 
      27             :       // Bucket Object class
      28             :     class AliTRDTKDNodeInfo : public TObject
      29             :     {
      30             :         friend class AliTRDTKDInterpolator;
      31             :     public:
      32             : 
      33             :         AliTRDTKDNodeInfo(Int_t ndim = 0);
      34             :         AliTRDTKDNodeInfo(const AliTRDTKDInterpolator::AliTRDTKDNodeInfo &ref);
      35             :         AliTRDTKDInterpolator::AliTRDTKDNodeInfo& operator=(const AliTRDTKDInterpolator::AliTRDTKDNodeInfo &ref);
      36             :         virtual ~AliTRDTKDNodeInfo();
      37             :         Bool_t        CookPDF(const Double_t *point, Double_t &result, Double_t &error,TRDTKDMode mod=kInterpolation) const;
      38             :         Bool_t Has(const Float_t *p) const;
      39             :         void          Print(const Option_t * = "") const;
      40             :         void          Store(TVectorD const *par, TMatrixD const *cov,Bool_t storeCov);
      41             : 
      42             :     private:
      43             :         Int_t fNDim;              // Dimension of Points
      44             :         Int_t fNBounds;           // 2* Dimension of Points
      45             :         Int_t fNPar;            // Number of Parameters
      46             :         Int_t fNCov;            // Size of Cov Matrix
      47             :         Float_t   *fData;         //[fNDim] Data Point
      48             :         Float_t *fBounds;         //[fNBounds] Boundaries
      49             :         Float_t   fVal[2];        //measured value for node
      50             :         Double_t  *fPar;          //[fNPar] interpolator parameters
      51             :         Double_t  *fCov;          //[fNCov] interpolator covariance matrix
      52             : 
      53         176 :         ClassDef(AliTRDTKDNodeInfo, 1)  // node info for interpolator
      54             :     };
      55             : 
      56             : public:
      57             : 
      58             :     AliTRDTKDInterpolator();
      59             :     AliTRDTKDInterpolator(Int_t npoints, Int_t ndim, UInt_t bsize, Float_t **data);
      60             :     ~AliTRDTKDInterpolator();
      61             : 
      62             :     Bool_t        Eval(const Double_t *point, Double_t &result, Double_t &error);
      63             :     void          Print(const Option_t *opt="") const;
      64             : 
      65             :     TH2Poly *     Projection(Int_t xdim,Int_t ydim);
      66             : 
      67           0 :     Int_t         GetNDIM() const {return fNDim;}
      68             :     Bool_t        GetRange(Int_t idim,Float_t range[2]) const;
      69             :   
      70           0 :     void          SetNPointsInterpolation(Int_t np){fNPointsI=np;};
      71           0 :     Int_t         GetNPointsInterpolation(){return fNPointsI;};
      72             : 
      73           0 :     void          SetUseWeights(Bool_t k=kTRUE){fUseWeights=k;}
      74           0 :     void          SetPDFMode(TRDTKDMode mod){fPDFMode=mod;}
      75           0 :     void          SetStoreCov(Bool_t k){fStoreCov=k;}
      76             : 
      77             :     Bool_t        Build();
      78             : 
      79           0 :     void          SetUseHelperNodes(Bool_t k){fUseHelperNodes=k;}
      80             : 
      81             : private:
      82             : 
      83             :     Int_t         GetNodeIndex(const Float_t *p);
      84             :     AliTRDTKDInterpolator::AliTRDTKDNodeInfo*  GetNodeInfo(Int_t inode) const;
      85             :     Int_t         GetNTNodes() const;
      86             :     void          BuildInterpolation();
      87             :     void          BuildBoundaryNodes();
      88             :     AliTRDTKDInterpolator(const AliTRDTKDInterpolator &ref);
      89             :     AliTRDTKDInterpolator &operator=(const AliTRDTKDInterpolator &ref);
      90             : 
      91             :     Int_t fNDataNodes;         // Number of filled nodes (total-zero nodes)
      92             :     TClonesArray  *fNodes;     //interpolation nodes
      93             :     UChar_t       fLambda;      // number of parameters in polynom
      94             :     Int_t         fNPointsI;    // number of points for interpolation
      95             :     Bool_t        fUseHelperNodes; // Build Helper nodes to ensure boundary conditions
      96             :     Bool_t fUseWeights; // Use tricubic weights
      97             :     TRDTKDMode    fPDFMode; // Mode for PDF calculation
      98             :     Bool_t        fStoreCov;
      99             : 
     100         176 :     ClassDef(AliTRDTKDInterpolator, 2)   // data interpolator based on KD tree
     101             : };
     102             : 
     103             : #endif

Generated by: LCOV version 1.11