]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliLegoGenerator.h
Patch for the AOD filters (Laurent)
[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 ~AliLegoGenerator() {}
29     virtual void    Generate();
30     virtual void    SetCoor1Range(Int_t nbin, Float_t c1min, Float_t c1max)
31         {fNCoor1=nbin; fCoor1Min=c1min; fCoor1Max=c1max;}
32     virtual Float_t CurCoor1() const {return fCurCoor1;}
33     virtual Int_t   Coor1Bin() const {return fCoor1Bin;}
34     virtual void    SetCoor2Range(Int_t nbin, Float_t c2min, Float_t c2max)
35         {fNCoor2=nbin; fCoor2Min=c2min; fCoor2Max=c2max;}    
36     virtual Float_t CurCoor2() const {return fCurCoor2;}
37     virtual Int_t   Coor2Bin() const {return fCoor2Bin;}
38
39     virtual void    SetRadiusRange(Float_t rmin, Float_t rmax) 
40         {fRadMin=rmin; fRadMax=rmax;}
41     virtual void    SetZMax(Float_t zmax) 
42         {fZMax=zmax;}
43             
44     virtual Float_t ZMax()   const {return fZMax;}
45     virtual Float_t RadMax() const {return fRadMax;}
46     virtual Int_t   NCoor1() const {return fNCoor1;}
47     virtual Int_t   NCoor2() const {return fNCoor2;}
48     virtual void    Coor1Range(Float_t &c1min, Float_t &c1max) const
49         {c1min =  fCoor1Min; c1max =  fCoor1Max;}
50     virtual void    Coor2Range(Float_t &c2min, Float_t &c2max) const
51         {c2min =  fCoor2Min; c2max =  fCoor2Max;}
52             
53     Float_t         PropagateCylinder(Float_t *x, Float_t *v, Float_t r, Float_t z);
54  protected:
55     Float_t    fRadMin;             // Generation radius
56     Float_t    fRadMax;             // Maximum tracking radius
57     Float_t    fZMax;               // Maximum tracking Z
58     Int_t      fNCoor1;             // Number of bins in Coor1
59     Int_t      fNCoor2;             // Number of bins in Coor2
60
61     Float_t    fCoor1Min;           // Minimum Coor1
62     Float_t    fCoor1Max;           // Maximum Coor1
63     Float_t    fCoor2Min;           // Minimum Coor2
64     Float_t    fCoor2Max;           // Maximum Coor2 
65     
66     Int_t      fCoor1Bin;           //Current Coor1 bin
67     Int_t      fCoor2Bin;           //Current Coor2 bin
68     Float_t    fCurCoor1;           //Current Coor1 of track
69     Float_t    fCurCoor2;           //Current c2 of track
70     
71     ClassDef(AliLegoGenerator,1) //Lego generator
72 };
73
74 #endif
75