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