Generation of N gaussian numbers through a known covariance matrix. It probably will...
[u/mrichter/AliRoot.git] / STEER / AliGausCorr.h
1 #ifndef ALIGAUSCORR_H
2 #define ALIGAUSCORR_H
3 /* Copyright(c) 2001-2002, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5 #include <TMatrixD.h>
6 class TArrayD;
7
8
9 class AliGausCorr : public TObject {
10 ////////////////////////////////////////////////////////////////////////
11 // Class used to generate correlated gaussian numbers with mean
12 // zero and known covariance matrix.
13 // Adapted from the Fortran code in Cernlib V122 (corset, corgen)
14 // F. James, Monte Carlo theory and practice, 
15 // Rep. Prog. Phys. 43 (1980) 1145-1189. 
16 // M.Masera 14.03.2001 19:30 - last mod. 26.02.2002 17:45
17 ////////////////////////////////////////////////////////////////////////
18  public:
19   //
20   AliGausCorr();
21   AliGausCorr(const TMatrixD & cov, Int_t size);
22   AliGausCorr(const AliGausCorr & tgcorr);
23   virtual ~AliGausCorr();
24   void GetGaussN(TArrayD &vec) const;
25   TMatrixD GetSqrtMatrix() const { return *fCv;}
26   void PrintCv() const;
27   AliGausCorr & operator=(const AliGausCorr & tgcorr);
28   //
29  private:
30   //
31   Int_t fSize;   // number of correlated gaussian random numbers
32   TMatrixD *fCv; // 'square root' of the covariance matrix
33
34   ClassDef(AliGausCorr,1)  
35 };
36
37
38 #endif
39
40
41