added fluctuations in multiplicity in fixed range
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowCommon / AliFlowEventSimpleMakerOnTheFly.h
1 /* 
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. 
3  * See cxx source for full Copyright notice 
4  * $Id$ 
5  */
6
7 /********************************** 
8  * create an event and perform    *
9  * flow analysis 'on the fly'     * 
10  *                                * 
11  * authors: Raimond Snellings     *
12  *           (snelling@nikhef.nl) * 
13  *          Ante Bilandzic        * 
14  *           (anteb@nikhef.nl)    *
15  *********************************/ 
16
17 #ifndef ALIFLOWEVENTSIMPLEMAKERONTHEFLY_H
18 #define ALIFLOWEVENTSIMPLEMAKERONTHEFLY_H
19
20 class TF1;
21 class TRandom3;
22
23 #include "AliFlowEventSimple.h"  //needed as include
24     
25 class AliFlowEventSimpleMakerOnTheFly {
26
27  public:
28
29   AliFlowEventSimpleMakerOnTheFly(UInt_t);    // constructor
30   virtual ~AliFlowEventSimpleMakerOnTheFly(); // destructor
31
32   virtual void Init(); 
33   
34   AliFlowEventSimple* CreateEventOnTheFly();  // create an event on the fly
35  
36     
37   //                        *****************************
38   //                        **** SETTERS AND GETTERS ****
39   //                        *****************************
40   //................................................................................................
41   // setters and getters for global parameters:
42   void SetMultDistrOfRPsIsGauss(Bool_t const mdorig) {this->fMultDistrOfRPsIsGauss = mdorig;};
43   Bool_t GetMultDistrOfRPsIsGauss() const {return this->fMultDistrOfRPsIsGauss;};
44   
45   void SetMultiplicityOfRP(Int_t multRP) {this->fMultiplicityOfRP = multRP;}
46   Int_t GetMultiplicityOfRP() const {return this->fMultiplicityOfRP;} 
47   
48   void SetMultiplicitySpreadOfRP(Double_t multSpreadRP) {this->fMultiplicitySpreadOfRP = multSpreadRP;}
49   Double_t GetMultiplicitySpreadOfRP() const {return this->fMultiplicitySpreadOfRP;} 
50   
51   void SetMinMultOfRP(Int_t minmr) {this->fMinMultOfRP = minmr;}
52   Int_t GetMinMultOfRP() const {return this->fMinMultOfRP;} 
53   
54   void SetMaxMultOfRP(Int_t maxmr) {this->fMaxMultOfRP = maxmr;}
55   Int_t GetMaxMultOfRP() const {return this->fMaxMultOfRP;} 
56   
57   void SetTemperatureOfRP(Double_t temperatureRP) {this->fTemperatureOfRP = temperatureRP;}
58   Double_t GetTemperatureOfRP() const {return this->fTemperatureOfRP;} 
59   
60   void SetUseConstantHarmonics(Bool_t const uch) {this->fUseConstantHarmonics = uch;};
61   Bool_t GetUseConstantHarmonics() const {return this->fUseConstantHarmonics;};
62   
63   // constant harmonics:  
64   void SetV1RP(Double_t dV1RP) {this->fV1RP = dV1RP;}
65   Double_t GetV1RP() const {return this->fV1RP;} 
66   
67   void SetV1SpreadRP(Double_t dV1SpreadRP) {this->fV1SpreadRP = dV1SpreadRP;}
68   Double_t GetV1SpreadRP() const {return this->fV1SpreadRP;} 
69   
70   void SetV2RP(Double_t dV2RP) {this->fV2RP = dV2RP;}
71   Double_t GetV2RP() const {return this->fV2RP;} 
72   
73   void SetV2SpreadRP(Double_t dV2SpreadRP) {this->fV2SpreadRP = dV2SpreadRP;}
74   Double_t GetV2SpreadRP() const {return this->fV2SpreadRP;} 
75   
76   void SetV4RP(Double_t dV4RP) {this->fV4RP = dV4RP;}
77   Double_t GetV4RP() const {return this->fV4RP;} 
78   
79   void SetV4SpreadRP(Double_t dV4SpreadRP) {this->fV4SpreadRP = dV4SpreadRP;}
80   Double_t GetV4SpreadRP() const {return this->fV4SpreadRP;} 
81   
82   // (pt,eta) dependent harmonics:
83   void SetV2RPMax(Double_t dV2RPMax) {this->fV2RPMax = dV2RPMax;}
84   Double_t GetV2RPMax() const {return this->fV2RPMax;} 
85   
86   void SetPtCutOff(Double_t dPtCutOff) {this->fPtCutOff = dPtCutOff;}
87   Double_t GetPtCutOff() const {return this->fPtCutOff;} 
88   //................................................................................................
89   
90   void SetNoOfLoops(Int_t noofl) {this->fNoOfLoops = noofl;}
91   Int_t GetNoOfLoops() const {return this->fNoOfLoops;} 
92
93  private:
94  
95   AliFlowEventSimpleMakerOnTheFly(const AliFlowEventSimpleMakerOnTheFly& anAnalysis);            // copy constructor
96   AliFlowEventSimpleMakerOnTheFly& operator=(const AliFlowEventSimpleMakerOnTheFly& anAnalysis); // assignment operator
97   
98   //................................................................................................
99   // global parameters:
100   Bool_t    fMultDistrOfRPsIsGauss;  // 1.) if kTRUE  = multiplicitiy of RPs is sampled e-b-e from Gaussian distribution with
101                                      //                 mean = fMultiplicityOfRP and spread = fMultiplicitySpreadOfRP
102                                      // 2.) if kFALSE = multiplicitiy of RPs is sampled e-b-e uniformly from 
103                                      //                 interval [fMinMultOfRP,fMaxMultOfRP]
104   Int_t     fMultiplicityOfRP;       // mean multiplicity of RPs (if sampled from Gaussian)
105   Double_t  fMultiplicitySpreadOfRP; // multiplicity spread of RPs (if sampled from Gaussian)
106   Int_t     fMinMultOfRP;            // minimal multiplicity of RPs (if sampled uniformly)
107   Int_t     fMaxMultOfRP;            // maximum multiplicity of RPs (if sampled uniformly)
108   Double_t  fTemperatureOfRP;        // "temperature" of RPs in GeV/c (increase this parameter to get more high pt RPs) 
109   Bool_t    fUseConstantHarmonics;   // harmonics V1, V2, V4... are constant (kTRUE) or functions of pt and eta (kFALSE)     
110   // constant harmonics: 
111   Double_t  fV1RP;                   // directed flow of RPs
112   Double_t  fV1SpreadRP;             // directed flow spread of RPs
113   Double_t  fV2RP;                   // elliptic flow of RPs
114   Double_t  fV2SpreadRP;             // elliptic flow spread of RPs
115   Double_t  fV4RP;                   // harmonic V4 of RPs
116   Double_t  fV4SpreadRP;             // harmonic V4's spread of RPs
117   // (pt,eta) dependent harmonics:
118   Double_t  fV2RPMax;                // elliptic flow of RPs
119   Double_t  fPtCutOff;               // elliptic flow spread of RPs
120   //................................................................................................
121   
122   //................................................................................................
123   // equations for distributions: 
124   TF1*      fPtSpectra;  // transverse momentum distribution
125   TF1*      fPhiDistribution; // azimuthal distribution
126   //................................................................................................
127   
128   TRandom3* fMyTRandom3; // our TRandom3 generator
129   Int_t     fCount;      // count number of events 
130   Int_t     fNoOfLoops;  // number of times to use the same particle (nonflow)
131   
132
133   ClassDef(AliFlowEventSimpleMakerOnTheFly,0) // macro for rootcint
134 };
135  
136 #endif
137
138
139