#ifndef ALIGENZDC_H
#define ALIGENZDC_H
#include <TMath.h>
#include "AliGenerator.h"
class AliGenZDC : public AliGenerator {
public:
AliGenZDC();
AliGenZDC(Int_t npart);
virtual ~AliGenZDC() {}
void Init();
void Generate();
void FermiTwoGaussian(Float_t A);
void ExtractFermi(Int_t id, Double_t *ddp);
void BeamDivCross(Int_t icross, Double_t *pLab);
void AddAngle(Double_t theta1, Double_t phi1, Double_t theta2,
Double_t phi2, Double_t *angle);
void SetParticle(Int_t ipart) {fIpart=ipart;};
void SetMomentum(Float_t ptot) {fPMin=ptot; fPMax=ptot;};
void SetDirection(Float_t zpsrp, Float_t cosx, Float_t cosy, Float_t cosz)
{fPseudoRapidity=zpsrp; fCosx=cosx; fCosy=cosy; fCosz=cosz;};
void SetFermi(Int_t Fflag) {fFermiflag=Fflag;};
void SetDiv(Float_t bmdiv, Float_t bmcra, Int_t iflcr)
{fBeamDiv=bmdiv; fBeamCrossAngle=bmcra; fBeamCrossPlane=iflcr;};
void SetDebug(Int_t idebu) {fDebugOpt = idebu;};
Double_t GetFermi2p(Int_t key) const {return fProbintp[key];}
Double_t GetFermi2n(Int_t key) const {return fProbintn[key];}
protected:
Int_t fIpart;
Float_t fCosx;
Float_t fCosy;
Float_t fCosz;
Float_t fPseudoRapidity;
Int_t fFermiflag;
Float_t fBeamDiv;
Float_t fBeamCrossAngle;
Int_t fBeamCrossPlane;
Double_t fProbintp[201];
Double_t fProbintn[201];
Double_t fPp[201];
Int_t fDebugOpt;
private:
AliGenZDC(const AliGenZDC & gen);
AliGenZDC & operator=(const AliGenZDC & gen);
ClassDef(AliGenZDC,1)
};
#endif