#ifndef StHbtPythia6DstReader_hh
#define StHbtPythia6DstReader_hh

#include "StMaker.h"
#include "StChain.h"
#include "StHbtMaker/Base/StHbtEventReader.hh"
#include "StHbtMaker/Base/StHbtEventCut.h"
#include "StHbtMaker/Base/StHbtTrackCut.h"
#include "StHbtMaker/Base/StHbtV0Cut.h"
#include "TPythia6.h"

//_________________
class StHbtPythia6DstReader : public StHbtEventReader {

 public:
  //genVersion: 0-all events, 1-select identical pairs
  StHbtPythia6DstReader(TPythia6* pythiaDst, Int_t genVersion = 0);
  ~StHbtPythia6DstReader();

  StHbtEvent* ReturnHbtEvent();
  void RandomGeneration(StHbtEvent *mHbtEvent);
  void PrimaryTrackGeneration(StHbtEvent *mHbtEvent);
  void V0Generation(StHbtEvent *mHbtEvent);
  Double_t dedxMean(Double_t mass, Double_t momentum);

  int  Init(const char* ReadWrite, StHbtString& Message);
  void Finish();
  void clear();
  void SetParticleId(Int_t partId);

 private:

  Int_t        mGenVersion;
  TPythia6*    mPythiaDst;  //Generated event
  Int_t        mEventCounter;
  long         mEventTries;
  Int_t        mPartId;
  Int_t        mSelPartNum;

  Bool_t  mEventIsGood;

  ClassDef(StHbtPythia6DstReader, 1)
};

inline void StHbtPythia6DstReader::SetParticleId(Int_t partId) {
  mPartId = partId; }
#endif
