#pragma once#include<vector>#include<Eigen/Core>#include"itkParticlePositionReader.h"#include"Shapeworks.h"namespaceshapeworks{classParticleSystem{public:ParticleSystem(conststd::vector<std::string>&paths);// Initialize particle system from eigen matrix (rows=dimensions, cols=num_samples)ParticleSystem(constEigen::MatrixXd&matrix);constEigen::MatrixXd&Particles()const{returnP;};conststd::vector<std::string>&Paths()const{returnpaths;}intN()const{returnP.cols();}intD()const{returnP.rows();}boolExactCompare(constParticleSystem&other)const;boolEvaluationCompare(constParticleSystem&other)const;staticboolReadParticleFile(std::stringfilename,Eigen::VectorXd&points);private:friendstructSharedCommandData;ParticleSystem(){}// only for use by SharedCommandData since a ParticleSystem should always be valid, never "empty"Eigen::MatrixXdP;std::vector<std::string>paths;};}