#include "AliGenerator.h"
-class AliLegoGenerator : public AliGenerator
+class AliLegoGenerator:
+public AliGenerator
{
-public:
- AliLegoGenerator() {}
- AliLegoGenerator(Int_t ntheta, Float_t themin, Float_t themax,
- Int_t nphi, Float_t phimin, Float_t phimax,
- Float_t rmin, Float_t rmax, Float_t zmax);
- void Generate();
- Float_t CurTheta() const {return fCurTheta;}
- Int_t ThetaBin() const {return fThetaBin;}
- Float_t CurPhi() const {return fCurPhi;}
- Float_t ZMax() const {return fZMax;}
- Float_t RadMax() const {return fRadMax;}
- Int_t PhiBin() const {return fPhiBin;}
- Int_t Nphi() const {return fNphi;}
- Int_t Ntheta() const {return fNtheta;}
- Float_t PropagateCylinder(Float_t *x, Float_t *v, Float_t r, Float_t z);
-private:
- Float_t fRadMin; //Generation radius
- Float_t fRadMax; //Maximum tracking radius
- Float_t fZMax; //Maximum tracking Z
- Int_t fNtheta; //Number of bins in Theta
- Int_t fNphi; //Number of bins in Phi
- Int_t fThetaBin; //Current theta bin
- Int_t fPhiBin; //Current phi bin
- Float_t fCurTheta; //Current theta of track
- Float_t fCurPhi; //Current phi of track
-
- ClassDef(AliLegoGenerator,1) //Lego generator
+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; // Generation radius
+ Float_t fRadMax; // Maximum tracking radius
+ Float_t fZMax; // Maximum tracking Z
+ Int_t fNCoor1; // Number of bins in Coor1
+ Int_t fNCoor2; // Number of bins in Coor2
+
+ Float_t fCoor1Min; // Minimum Coor1
+ Float_t fCoor1Max; // Maximum Coor1
+ Float_t fCoor2Min; // Minimum Coor2
+ Float_t fCoor2Max; // Maximum Coor2
+
+ Int_t fCoor1Bin; //Current Coor1 bin
+ Int_t fCoor2Bin; //Current Coor2 bin
+ Float_t fCurCoor1; //Current Coor1 of track
+ Float_t fCurCoor2; //Current c2 of track
+
+ ClassDef(AliLegoGenerator,1) //Lego generator
};
#endif