#ifndef ALILEGOGENERATOR_H
#define ALILEGOGENERATOR_H
#include "AliGenerator.h"
class AliLegoGenerator:
public AliGenerator
{
public:
AliLegoGenerator();
AliLegoGenerator(Int_t nc1, Float_t c1min, Float_t c1max,
Int_t nc2, Float_t c2min, Float_t c2max,
Float_t rmin, Float_t rmax, Float_t zmax);
virtual ~AliLegoGenerator() {}
virtual void Generate();
virtual void SetCoor1Range(Int_t nbin, Float_t c1min, Float_t c1max)
{fNCoor1=nbin; fCoor1Min=c1min; fCoor1Max=c1max;}
virtual Float_t CurCoor1() const {return fCurCoor1;}
virtual Int_t Coor1Bin() const {return fCoor1Bin;}
virtual void SetCoor2Range(Int_t nbin, Float_t c2min, Float_t c2max)
{fNCoor2=nbin; fCoor2Min=c2min; fCoor2Max=c2max;}
virtual Float_t CurCoor2() const {return fCurCoor2;}
virtual Int_t Coor2Bin() const {return fCoor2Bin;}
virtual void SetRadiusRange(Float_t rmin, Float_t rmax)
{fRadMin=rmin; fRadMax=rmax;}
virtual void SetZMax(Float_t zmax)
{fZMax=zmax;}
virtual Float_t ZMax() const {return fZMax;}
virtual Float_t RadMax() const {return fRadMax;}
virtual Int_t NCoor1() const {return fNCoor1;}
virtual Int_t NCoor2() const {return fNCoor2;}
virtual void Coor1Range(Float_t &c1min, Float_t &c1max) const
{c1min = fCoor1Min; c1max = fCoor1Max;}
virtual void Coor2Range(Float_t &c2min, Float_t &c2max) const
{c2min = fCoor2Min; c2max = fCoor2Max;}
Float_t PropagateCylinder(Float_t *x, Float_t *v, Float_t r, Float_t z);
protected:
Float_t fRadMin;
Float_t fRadMax;
Float_t fZMax;
Int_t fNCoor1;
Int_t fNCoor2;
Float_t fCoor1Min;
Float_t fCoor1Max;
Float_t fCoor2Min;
Float_t fCoor2Max;
Int_t fCoor1Bin;
Int_t fCoor2Bin;
Float_t fCurCoor1;
Float_t fCurCoor2;
ClassDef(AliLegoGenerator,1)
};
#endif