///////////////////////////////////////////////////////////////////////
//
// Base class for modifying seeds before using in the current fitting
// method.
//
// Author: Matt Mottram <m.mottram@qmul.ac.uk>
//
// REVISION HISTORY:
// - 2015-10-19: M Mottram - first instance
//
///////////////////////////////////////////////////////////////////////

#ifndef __RAT_Seed_SeedModifier__
#define __RAT_Seed_SeedModifier__

#include <string>
#include <RAT/FitterComponent.hh>

namespace RAT
{

  namespace DS
  {
    class EV;
    class FitResult;
  }

  namespace SeedModifiers
  {

    class SeedModifier: public FitterComponent
    {

    public:

      // Constructor and destructor
      SeedModifier() {};
      virtual ~SeedModifier() {};

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

      // Main function to modify seed before passing to fitter method
      virtual DS::FitResult ModifySeed(const DS::EV& ev, const DS::FitResult& seed) = 0;

    };

  }

}

#endif