]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ACORDE/AliGenACORDE.h
2D Centrality files
[u/mrichter/AliRoot.git] / ACORDE / AliGenACORDE.h
1 #ifndef ALIGENACORDE_H
2 #define ALIGENACORDE_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 #include "AliGenerator.h"
9 #include "AliACORDEConstants.h"
10
11 class TClonesArray;
12 class TF1;
13
14 class AliGenACORDE : public AliGenerator {
15  public:
16   AliGenACORDE();
17   AliGenACORDE(Int_t npart);
18   virtual ~AliGenACORDE();
19
20   virtual void Init();
21   virtual void Generate();
22   virtual void SetPart(Int_t part) {fIpart = part;}
23
24   void SetMode(ECRMode mode) {fCRMode = mode;}
25   const TString*  GetMode() const {return fCRModeName;}
26
27   void SetZenithalAngleRange(Float_t min,Float_t max=0) {fZenithMin=min;fZenithMax=max;}
28   void SetAzimuthalAngleRange(Float_t min, Float_t max=0) {fAzimuthMin=min;fAzimuthMax=max;}
29
30   void SetGridRange(Int_t nx,Float_t xwidth, Int_t nz, Float_t zwidth);
31   Float_t GetMomentumResolution() const {return fPResolution;}
32
33   void SetMomentumDistrubutionFunction(TF1 *func) {fMomentumDist=func;}
34   void SetZenithalDistributionFunction(TF1 *func) {fZenithDist = func;}
35   void SetMomentumResolution(Float_t res=1.) {fPResolution=res;}
36
37   Float_t GetMomentum() const;
38   Float_t GetZenithAngle(Float_t mom) const;
39
40
41   void SetNumberOfParticles(Int_t nParticles) {fNParticles = nParticles;}
42
43   // The following methods are for testing pourpuses
44   TF1* GetMomentumDistibution() const {return fMomentumDist;}
45   TF1* GetUnfoldedDistribution() const {return fUnfoldedMomentumDist;}
46
47   TClonesArray* GetArray() const {return fPDist;}
48
49  protected:
50   void InitApWeightFactors();
51   void InitMomentumGeneration();
52   void InitZenithalAngleGeneration();
53   void GenerateOneMuonBundle();
54   void GenerateOneSingleMuon(Bool_t withFlatMomentum=kFALSE);
55
56  private:
57   AliGenACORDE(const AliGenACORDE& gen);
58   AliGenACORDE& operator= (const AliGenACORDE& gen);
59
60   Int_t    fIpart;              //! Particle type.
61   ECRMode  fCRMode;             //! Cosmic muons generation method flag
62   TString* fCRModeName;         //! Cosmic muons generation mode name
63
64   Float_t  fXwidth;             //! X width of the grid
65   Int_t    fNx;                 //! Number of divisions in x
66   Float_t  fZwidth;             //! Z widht of the  grid
67   Int_t    fNz;                 //! Number of divisions in z
68   Bool_t   fMuonGrid;           //! Flag for method (Muon-bundles) checkout
69
70   Float_t  fZenithMin;          //! Minimum zenithal angle.
71   Float_t  fZenithMax;          //! Maximum zenithal angle.
72
73   Float_t  fAzimuthMin;         //! Minimum azimuthal angle.
74   Float_t  fAzimuthMax;         //! Maximum azimuthal angle.
75
76   Float_t  fPRange;             //! Cosmic muon momentum range width in GeVs.
77   Float_t  fPResolution;        //! Momentum resolution in GeVs.
78
79   TArrayF* fAp;                 //! a(p) correction factors for the ang. dist.
80
81   TF1*     fMomentumDist;       //! Function to generate the momentum dist.
82   TF1*     fUnfoldedMomentumDist; //!
83   TF1*     fZenithDist;         //! Function to generate the zenith angle dist.
84
85   TClonesArray* fPDist;         //! Array of fZenithDist, to be used by a(p).
86
87   Int_t fNParticles;            //! Fixed number of particles per event
88
89   ClassDef(AliGenACORDE, 1) // Generator for AliACORDE class
90 };
91
92 typedef AliGenACORDE AliGenCRT; // for backward compatibility
93
94 #endif // ALIGENACORDE_H