added uniform flow fluctuations
[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 SetV2DistrOfRPsIsGauss(Bool_t const v2dorig) {this->fV2DistrOfRPsIsGauss = v2dorig;};
71   Bool_t GetV2DistrOfRPsIsGauss() const {return this->fV2DistrOfRPsIsGauss;};
72   
73   void SetV2RP(Double_t dV2RP) {this->fV2RP = dV2RP;}
74   Double_t GetV2RP() const {return this->fV2RP;} 
75   
76   void SetV2SpreadRP(Double_t dV2SpreadRP) {this->fV2SpreadRP = dV2SpreadRP;}
77   Double_t GetV2SpreadRP() const {return this->fV2SpreadRP;} 
78   
79   void SetMinV2RP(Double_t dMinV2RP) {this->fMinV2RP = dMinV2RP;}
80   Double_t GetMinV2RP() const {return this->fMinV2RP;} 
81   
82   void SetMaxV2RP(Double_t dMaxV2RP) {this->fMaxV2RP = dMaxV2RP;}
83   Double_t GetMaxV2RP() const {return this->fMaxV2RP;} 
84   
85   void SetV4RP(Double_t dV4RP) {this->fV4RP = dV4RP;}
86   Double_t GetV4RP() const {return this->fV4RP;} 
87   
88   void SetV4SpreadRP(Double_t dV4SpreadRP) {this->fV4SpreadRP = dV4SpreadRP;}
89   Double_t GetV4SpreadRP() const {return this->fV4SpreadRP;} 
90   
91   // (pt,eta) dependent harmonics:
92   void SetV2RPMax(Double_t dV2RPMax) {this->fV2RPMax = dV2RPMax;}
93   Double_t GetV2RPMax() const {return this->fV2RPMax;} 
94   
95   void SetPtCutOff(Double_t dPtCutOff) {this->fPtCutOff = dPtCutOff;}
96   Double_t GetPtCutOff() const {return this->fPtCutOff;} 
97   //................................................................................................
98   
99   void SetNoOfLoops(Int_t noofl) {this->fNoOfLoops = noofl;}
100   Int_t GetNoOfLoops() const {return this->fNoOfLoops;} 
101
102  private:
103  
104   AliFlowEventSimpleMakerOnTheFly(const AliFlowEventSimpleMakerOnTheFly& anAnalysis);            // copy constructor
105   AliFlowEventSimpleMakerOnTheFly& operator=(const AliFlowEventSimpleMakerOnTheFly& anAnalysis); // assignment operator
106   
107   //................................................................................................
108   // global parameters:
109   Bool_t    fMultDistrOfRPsIsGauss;  // 1.) if kTRUE  = multiplicitiy of RPs is sampled e-b-e from Gaussian distribution with
110                                      //                 mean = fMultiplicityOfRP and spread = fMultiplicitySpreadOfRP
111                                      // 2.) if kFALSE = multiplicitiy of RPs is sampled e-b-e uniformly from 
112                                      //                 interval [fMinMultOfRP,fMaxMultOfRP]
113   Int_t     fMultiplicityOfRP;       // mean multiplicity of RPs (if sampled from Gaussian)
114   Double_t  fMultiplicitySpreadOfRP; // multiplicity spread of RPs (if sampled from Gaussian)
115   Int_t     fMinMultOfRP;            // minimal multiplicity of RPs (if sampled uniformly)
116   Int_t     fMaxMultOfRP;            // maximum multiplicity of RPs (if sampled uniformly)
117   Double_t  fTemperatureOfRP;        // "temperature" of RPs in GeV/c (increase this parameter to get more high pt RPs) 
118   Bool_t    fUseConstantHarmonics;   // harmonics V1, V2, V4... are constant (kTRUE) or functions of pt and eta (kFALSE)     
119   // constant harmonics: 
120   Double_t  fV1RP;                   // directed flow of RPs
121   Double_t  fV1SpreadRP;             // directed flow spread of RPs
122   
123   Bool_t    fV2DistrOfRPsIsGauss;    // 1.) if kTRUE  = elliptic flow of RPs is sampled e-b-e from Gaussian distribution with
124                                      //                 mean = fV2RP and spread = fV2SpreadRP
125                                      // 2.) if kFALSE = elliptic flow of RPs is sampled e-b-e uniformly from 
126                                      //                 interval [fMinV2RP,fMaxV2RP]
127   Double_t  fV2RP;                   // mean elliptic flow of RPs (if sampled from Gaussian)
128   Double_t  fV2SpreadRP;             // elliptic flow spread of RPs (if sampled from Gaussian)
129   Double_t  fMinV2RP;                // minimal elliptic flow of RPs (if sampled uniformly)
130   Double_t  fMaxV2RP;                // minimal elliptic flow of RPs (if sampled uniformly)
131   
132   Double_t  fV4RP;                   // harmonic V4 of RPs
133   Double_t  fV4SpreadRP;             // harmonic V4's spread of RPs
134   // (pt,eta) dependent harmonics:
135   Double_t  fV2RPMax;                // elliptic flow of RPs
136   Double_t  fPtCutOff;               // elliptic flow spread of RPs
137   //................................................................................................
138   
139   //................................................................................................
140   // equations for distributions: 
141   TF1*      fPtSpectra;  // transverse momentum distribution
142   TF1*      fPhiDistribution; // azimuthal distribution
143   //................................................................................................
144   
145   TRandom3* fMyTRandom3; // our TRandom3 generator
146   Int_t     fCount;      // count number of events 
147   Int_t     fNoOfLoops;  // number of times to use the same particle (nonflow)
148   
149   ClassDef(AliFlowEventSimpleMakerOnTheFly,0) // macro for rootcint
150 };
151  
152 #endif
153
154
155