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