#ifndef __TRANSLATOR__
#define __TRANSLATOR__

#define STRSIZE 1024
#define MAXINOUT 10
#define PARTNAMLEN 5

typedef struct {
  double benergy[2];
  double bmass[2];
  int pdfid[2];
  int pdfgr[2];
  int bkfcode[2];
  char * bname[2];
  char * pdfname[2];
  char * pdfversion[2];
  char * pdffile[2];
}
beams;

typedef struct {
  int stat;
  int kfcode;
  double mass;
  char name[PARTNAMLEN];
}
parton;

typedef struct {
  int stat;
  double min;
  double max;
  char * name;
  char * filename;
}
cut;

typedef struct {
  int id;
  int nparton;
  int master;
  int nevents;
  int ncuts;
  int qcdnl;
  int qcdnflv;
  double crossec;
  double crossecerr;
  double mult;
  double maxW;
  double qcdlambda;
  double sqrtS;
  double rapidity;
  char pdf[2][STRSIZE];
  parton prt[MAXINOUT];
  cut * cut;
  char * genname;
  char * genversion;
  char * name;
}
process;

typedef struct {
  int procnumber;
  int nin;
  int nout;
  double scale;
  double pvect[400];
  char * colorchain;
}
event;

extern int read_event_old_format (event * ev, FILE * f, int * nnout, int Nproc);
extern int write_event_new_format (event * ev, FILE * f);
extern process * read_subproc_info (process * pr, FILE * f);
extern beams * fillbeams (beams * b, process * pr);
extern void freebeams(beams * b);
extern void freeproc(process * b);
extern void freecut(cut * c);

extern void ShowHelp (int N);

#endif
