]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STAT/TKDNodeInfo.h
Added CPU and RealTime collection per task when the mgr->AddStatisticsTask is called...
[u/mrichter/AliRoot.git] / STAT / TKDNodeInfo.h
index 198aaba0ab1da5f7ee1742b6b5fb39d5a3d5ee55..e68822909b893a22dea29a447b53131e7f570cc5 100644 (file)
@@ -22,7 +22,7 @@
 #endif
 
 template <typename Value> class TVectorT;
-typedef struct TVectorT<Double_t> TVectorD;
+typedef class TVectorT<Double_t> TVectorD;
 template <typename Value> class TMatrixT;
 typedef class TMatrixT<Double_t> TMatrixD;
 class TKDNodeInfo : public TObject
@@ -50,33 +50,42 @@ public:
   TKDNodeInfo(const TKDNodeInfo & ref);
   TKDNodeInfo& operator=(const TKDNodeInfo & ref);
   virtual ~TKDNodeInfo();
-  Double_t      CookPDF(const Double_t *point, Double_t &result, Double_t &error);
+  Bool_t        CookPDF(const Double_t *point, Double_t &result, Double_t &error) const;
   inline void   GetBoundary(Int_t ax, Float_t &min, Float_t &max) const;
   inline void   GetCOG(Float_t* &p) const;
   Int_t         GetDimension() const { return fNDim/3; }
   void          GetPDF(Float_t &pdf, Float_t &error) const {pdf=fVal[0]; error=fVal[1];}
   Int_t         GetSize() const { return fNDim; }
+  Int_t         GetNcov() const { return fNcov; }
+  Int_t         GetNpar() const { return fNpar; }
   inline Bool_t Has(const Float_t *p) const;
   void          Print(const Option_t * = "") const;
-  void          Store(const TVectorD &par, const TMatrixD &cov);
+  void          Store(TVectorD const *par, TMatrixD const *cov=NULL);
 
-  TMatrixD*     Cov() const  { return fCov; }
-  TVectorD*     Par() const  { return fPar; }
+  Double_t*      Cov() const  { return fCov; }
+  Double_t*      Par() const  { return fPar; }
 
   void          SetNode(Int_t ndim, Float_t *data, Float_t *pdf);
 protected:
+  void          Bootstrap();
+  void          Build(Int_t ndim);
+  void          SetNcov() { fNcov=Int_t(.5*fNpar*(fNpar+1.));}
+  void          SetNpar() { Int_t dim=Int_t(fNDim/3); fNpar=Int_t(1 + dim + .5*dim*(dim+1));}
   Float_t*      Data() { return fData;}
   Float_t*      Val()  { return &fVal[0]; }
-  void          Build(Int_t ndim);
+
 
 private:
-  Int_t     fNDim;          // 3 times data dimension
-  Float_t   *fData;         //[fNDim] node's data
-  Float_t   fVal[2];        // measured value for node
-  TMatrixD  *fCov;          // interpolator covariance matrix
-  TVectorD  *fPar;          // interpolator parameters
+  Int_t     fNDim;          //! 3 times data dimension
+  Float_t   *fData;         //![fNDim] node's data
+  Float_t   fVal[2];        //!measured value for node
+  Int_t     fNpar;          //number of parameters
+  Int_t     fNcov;          //number of covarince elements
+  Double_t  *fPar;          //[fNpar] interpolator parameters
+  Double_t  *fCov;          //[fNcov] interpolator covariance matrix
+
 
-  ClassDef(TKDNodeInfo, 1)  // node info for interpolator
+  ClassDef(TKDNodeInfo, 2)  // node info for interpolator
 };
 
 //_____________________________________________________________________