- Base class now
[u/mrichter/AliRoot.git] / STEER / AliLegoGenerator.h
1 #ifndef ALILEGOGENERATOR_H
2 #define ALILEGOGENERATOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ///////////////////////////////////////////////////////////////////////////////
9 //                                                                           //
10 //                                                                           //
11 //    Utility class to compute and draw Radiation Length Map                 //
12 //                                                                           //
13 //                                                                           //
14 ///////////////////////////////////////////////////////////////////////////////
15
16 #include "AliGenerator.h"
17
18 class AliLegoGenerator:
19 public AliGenerator
20 {
21
22 public: 
23     AliLegoGenerator();
24     
25     AliLegoGenerator(Int_t nc1, Float_t c1min, Float_t c1max,
26                      Int_t nc2, Float_t c2min, Float_t c2max,
27                      Float_t rmin, Float_t rmax, Float_t zmax);
28     virtual void    Generate();
29     virtual void    SetCoor1Range(Int_t nbin, Float_t c1min, Float_t c1max)
30         {fNCoor1=nbin; fCoor1Min=c1min; fCoor1Max=c1max;}
31     virtual Float_t CurCoor1() const {return fCurCoor1;}
32     virtual Int_t   Coor1Bin() const {return fCoor1Bin;}
33     virtual void    SetCoor2Range(Int_t nbin, Float_t c2min, Float_t c2max)
34         {fNCoor2=nbin; fCoor2Min=c2min; fCoor2Max=c2max;}    
35     virtual Float_t CurCoor2() const {return fCurCoor2;}
36     virtual Int_t   Coor2Bin() const {return fCoor2Bin;}
37
38     virtual void    SetRadiusRange(Float_t rmin, Float_t rmax) 
39         {fRadMin=rmin; fRadMax=rmax;}
40     virtual void    SetZMax(Float_t zmax) 
41         {fZMax=zmax;}
42             
43     virtual Float_t ZMax()   const {return fZMax;}
44     virtual Float_t RadMax() const {return fRadMax;}
45     virtual Int_t   NCoor1() const {return fNCoor1;}
46     virtual Int_t   NCoor2() const {return fNCoor2;}
47     virtual void    Coor1Range(Float_t &c1min, Float_t &c1max) const
48         {c1min =  fCoor1Min; c1max =  fCoor1Max;}
49     virtual void    Coor2Range(Float_t &c2min, Float_t &c2max) const
50         {c2min =  fCoor2Min; c2max =  fCoor2Max;}
51             
52     Float_t         PropagateCylinder(Float_t *x, Float_t *v, Float_t r, Float_t z);
53  protected:
54     Float_t    fRadMin;             // Generation radius
55     Float_t    fRadMax;             // Maximum tracking radius
56     Float_t    fZMax;               // Maximum tracking Z
57     Int_t      fNCoor1;             // Number of bins in Coor1
58     Int_t      fNCoor2;             // Number of bins in Coor2
59
60     Float_t    fCoor1Min;           // Minimum Coor1
61     Float_t    fCoor1Max;           // Maximum Coor1
62     Float_t    fCoor2Min;           // Minimum Coor2
63     Float_t    fCoor2Max;           // Maximum Coor2 
64     
65     Int_t      fCoor1Bin;           //Current Coor1 bin
66     Int_t      fCoor2Bin;           //Current Coor2 bin
67     Float_t    fCurCoor1;           //Current Coor1 of track
68     Float_t    fCurCoor2;           //Current c2 of track
69     
70     ClassDef(AliLegoGenerator,1) //Lego generator
71 };
72
73 #endif
74