/* * SurfaceRandomInserter.hpp * * Created on: Apr 03, 2012 * Author: heber */ #ifndef SURFACERANDOMINSERTER_HPP_ #define SURFACERANDOMINSERTER_HPP_ // include config.h #ifdef HAVE_CONFIG_H #include #endif #include "Filling/Inserter/RandomInserter.hpp" #include "LinearAlgebra/Vector.hpp" #include "Shapes/Shape.hpp" /** SurfaceRandomInserter extends RandomInserter such that the given \a Cluster * is inserted at the given position in such a way as to be aligned perpendicularly * away from the surface (but with the usual random displacements) * * \note We assume that cluster is aligned along the Z axis. * */ class SurfaceRandomInserter : public RandomInserter { public: SurfaceRandomInserter( const Shape & _s, const Vector &_alignedAxis, const double _MaxAtomComponent, const double _MaxMoleculeComponent); ~SurfaceRandomInserter(); bool operator()(ClusterInterface::Cluster_impl cluster, const Vector &offset) const; private: const Shape shape; const Vector alignedAxis; }; #endif /* SURFACERANDOMINSERTER_HPP_ */