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
00014
00015 class CorrelatedData{
00016 public:
00017 CorrelatedData(int);
00018 ~CorrelatedData() {delete m_randomEngine;}
00019 vector<double> generate(const HepMatrix& matrix) const;
00020 double generate(double) const;
00021 HepMatrix root(const HepMatrix& matrix)const;
00022
00023
00024 private:
00025 pair<double,double> m_ellipse;
00026 pair<double,double> m_stFactors;
00027 pair<double,double> m_abFactors;
00028 HepRandomEngine* m_randomEngine;
00029
00030 vector<double> normal(int nDev)const;
00031 bool makeDeviate(pair<double,double> randoms,
00032 double& deviate)const;
00033
00034 };
00035
00036 }
00037
00038 #endif
00039
00040