//____________________________________________________________________________
/*!

\class   genie::InteractionListGeneratorI

\brief   Defines the InteractionListGeneratorI interface.
         Concrete implementations of this interface generate a list of all
         Interaction (= event summary) objects that can be generated by
         EventGeneratorI subclasses.

\author  Costas Andreopoulos <costas.andreopoulos \at stfc.ac.uk>
         STFC, Rutherford Appleton Laboratory

\created May 13, 2005

\cpright Copyright (c) 2003-2009, GENIE Neutrino MC Generator Collaboration
         For the full text of the license visit http://copyright.genie-mc.org
         or see $GENIE/LICENSE
*/
//____________________________________________________________________________

#ifndef _INTERACTION_LIST_GENERATOR_I_H_
#define _INTERACTION_LIST_GENERATOR_I_H_

#include "Algorithm/Algorithm.h"

namespace genie {

class InteractionList;
class InitialState;

class InteractionListGeneratorI : public Algorithm {

public :

  //-- define the InteractionListGeneratorI interface

  virtual InteractionList *
                 CreateInteractionList(const InitialState & init) const = 0;

protected :

  InteractionListGeneratorI();
  InteractionListGeneratorI(string name);
  InteractionListGeneratorI(string name, string config);
  ~InteractionListGeneratorI();
};

}      // genie namespace

#endif // _INTERACTION_LIST_GENERATOR_I_H_
