00001 #ifndef CORRELDAT
00002 #define CORRELDAT
00003
00004 #include "CLHEP/Random/JamesRandom.h"
00005 #include "CLHEP/Matrix/Matrix.h"
00006 #include <vector>
00007 #include <utility>
00008
00009 namespace Atlfast
00010 {
00011
00012 class CorrelatedData
00013 {
00014 public:
00015 CorrelatedData(int);
00016 ~CorrelatedData() {delete m_randomEngine;}
00017 vector<double> generate(const HepMatrix& matrix) const;
00018 double generate(double) const;
00019 HepMatrix root(const HepMatrix& matrix)const;
00020
00021
00022 private:
00023 pair<double,double> m_ellipse;
00024 pair<double,double> m_stFactors;
00025 pair<double,double> m_abFactors;
00026 HepRandomEngine* m_randomEngine;
00027
00028 vector<double> normal(int nDev)const;
00029 bool makeDeviate(pair<double,double> randoms,
00030 double& deviate)const;
00031
00032 };
00033
00034 }
00035
00036 #endif
00037
00038