13 #include <Eigen/Dense>
17 #include <TMatrixTBase.h>
54 class MultivariateNormalGenerator {
87 Eigen::VectorXd x(
m_mean.rows());
88 for (
int i = 0; i <
m_mean.rows(); ++i) x(i) = gRandom->Gaus();
104 for (
int i = 0; i < x.rows(); ++i) { output[i] = x(i); }
116 TVector3 output(0, 0, 0);
117 for (
unsigned int i = 0; i < std::min(3u, (
unsigned int)
size()); ++i) {
129 TVectorD output(x.rows());
130 output.SetElements(x.data());
143 bool setMeanCov(
int n,
const double* mean,
const double* cov);
150 bool setMeanCov(
const Eigen::VectorXd& mean,
const Eigen::MatrixXd& cov);
158 template<
class value_type>
bool setMeanCov(
const TVectorT<value_type>& mean,
159 const TMatrixTBase<value_type>& cov);
167 template<
class value_type>
bool setMeanCov(
const TVector3& mean,
168 const TMatrixTBase<value_type>& cov);
178 const TVectorT<value_type>& mean,
const TMatrixTBase<value_type>& cov)
180 Eigen::VectorXd emean(mean.GetNrows());
181 Eigen::MatrixXd ecov(cov.GetNrows(), cov.GetNcols());
182 for (
int i = 0; i < mean.GetNrows(); ++i) { emean(i) = mean(i); }
183 for (
int i = 0; i < cov.GetNrows(); ++i) {
184 for (
int j = 0; j < cov.GetNcols(); ++j) {
185 ecov(i, j) = cov(i, j);
192 const TVector3& mean,
const TMatrixTBase<value_type>& cov)
194 TVectorT<value_type> tmean(3);
195 for (
int i = 0; i < 3; ++i) {