////////////////////////////////////////////////////////////////////////
/// \class RAT::Optimisers::MetaSphereSeed
///
/// \brief  Alter the seed N times and optimise
///
/// \author Phil G Jones <p.jones22@physics.ox.ac.uk>
/// \author Matt Mottram < m.mottram@qmul.ac.uk> -- contact person
///
/// REVISION HISTORY:\n
///     06/08/2011 : P G Jones - New file \n
///
/// \details Alters the seed such that the vertex remains within the acrylic
///         vessel radius (Could be any radius if desired).
///
////////////////////////////////////////////////////////////////////////

#ifndef __RAT_Optimiser_MetaSphereSeed_
#define __RAT_Optimiser_MetaSphereSeed_

#include <RAT/MetaNSeed.hh>

#include <string>
#include <vector>

namespace RAT
{

namespace Optimisers
{

class MetaSphereSeed : public MetaNSeed
{
public:
  virtual std::string GetName() const { return MetaSphereSeed::Name(); }

  static std::string Name() { return std::string( "metaSphereSeed" ); }

  virtual void Initialise( const std::string& param );

  virtual void SetD( const std::string& param,
                     const double value );

protected:
  virtual DS::FitResult NewSeed( const DS::FitResult& startSeed );

  double fRadius; ///< Radius to generate events within, defaults to AV radius
};

} //::Optimiser

} //::RAT

#endif