#ifndef EXTAMP_Main_Process_Group_H
#define EXTAMP_Main_Process_Group_H

#include "PHASIC++/Process/Process_Group.H"

namespace EXTAMP {

  class Process_Group: public PHASIC::Process_Group {


    /* Pure virtuals from PHASIC::Process_Group */

    /* Instantiate a PARTONIC process (i.e. pi specifies a
       'Single_Process'). This being a method of a 'Process_Group'
       does not make any sense, but need comply with legacy structure.
       Just call the appropriate method of the external ME
       interface. */
    
    PHASIC::Process_Base *GetProcess(const PHASIC::Process_Info &pi) const {
      /* This returns NULL if the partonic channel does not exist, as
	 required by PHASIC::Process_Group. */

      PHASIC::Process_Info cpi(pi);
      if(!External_ME_Interface::PartonicProcessExists(cpi)) return NULL;
      return External_ME_Interface::InstantiatePartonicProcess(cpi);
    }

    bool Initialize(Process_Base *const proc)
    {
      proc->SetParent((PHASIC::Process_Base*)this);
      return true;
    };

  };

  
}
#endif