// 
// Adapted from similar file in  Gismo 2

// define the HEPEVT commom
#ifndef NLD_READSTDFILE_H
#define NLD_READSTDFILE_H

#include <assert.h>
#include "TObjArray.h"
#include "Event.h"
#include "McPart.h"
#include "EventSource.h"

extern "C"{
#include "../stdHEP/src/inc/stdhep.h"

float stdchg_( int* );

int StdHepXdrReadInit(char*, int, int);

int StdHepXdrReadOpen(char*, int, int);

int StdHepXdrRead(int*, int);

int StdHepXdrReadMulti(int*, int);

int StdHepXdrWriteInit(char*, char*, int, int);

int StdHepXdrWriteOpen(char*, char*, int, int);

int StdHepXdrWrite(int, int);

int StdHepXdrWriteCM(int, int);

int StdHepXdrWriteEvent(int, int);

void StdHepXdrEnd(int);

void StdHepZero(void);
#include "../stdHEP/src/inc/stdlun.h"
#include "../stdHEP/src/inc/stdcnt.h"
}



class readStdFile : public EventSource
{
public:

  readStdFile():istr(0){};
  readStdFile(Char_t*);
  // constructor that reads from an open stream

  ~readStdFile();

  Int_t getEvent(Event* event);
  // creates structure with next event

private:
  Int_t makeMCs(Event* event);
  // creates structure with current event

  Int_t readEvent();
  // fill the common from input file. failed if n()==0

  ClassDef(readStdFile,0) // for Cint dictionary

private:

  Event* m_event;    // current event
  Char_t* inputfile; // stdHEP file from which we read
  Int_t ierr;        // last IO status
  Int_t istr;
};

#endif

