simulate partial acceptance
[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   void SetFirstSectorPhiMin(Double_t dPhiMin1) {this->fPhiMin1 = dPhiMin1;}
99   Double_t GetFirstSectorPhiMin() const {return this->fPhiMin1;} 
100   
101   void SetFirstSectorPhiMax(Double_t dPhiMax1) {this->fPhiMax1 = dPhiMax1;}
102   Double_t GetFirstSectorPhiMax() const {return this->fPhiMax1;}
103   
104   void SetFirstSectorProbability(Double_t dProbability1) {this->fProbability1 = dProbability1;}
105   Double_t GetFirstProbability() const {return this->fProbability1;}  
106   
107   void SetSecondSectorPhiMin(Double_t dPhiMin2) {this->fPhiMin2 = dPhiMin2;}
108   Double_t GetSecondSectorPhiMin() const {return this->fPhiMin2;} 
109   
110   void SetSecondSectorPhiMax(Double_t dPhiMax2) {this->fPhiMax2 = dPhiMax2;}
111   Double_t GetSecondSectorPhiMax() const {return this->fPhiMax2;}
112   
113   void SetSecondSectorProbability(Double_t dProbability2) {this->fProbability2 = dProbability2;}
114   Double_t GetSecondProbability() const {return this->fProbability2;}  
115   //................................................................................................
116   
117   void SetNoOfLoops(Int_t noofl) {this->fNoOfLoops = noofl;}
118   Int_t GetNoOfLoops() const {return this->fNoOfLoops;} 
119
120  private:
121  
122   AliFlowEventSimpleMakerOnTheFly(const AliFlowEventSimpleMakerOnTheFly& anAnalysis);            // copy constructor
123   AliFlowEventSimpleMakerOnTheFly& operator=(const AliFlowEventSimpleMakerOnTheFly& anAnalysis); // assignment operator
124   
125   //................................................................................................
126   // global parameters:
127   Bool_t    fMultDistrOfRPsIsGauss;  // 1.) if kTRUE  = multiplicitiy of RPs is sampled e-b-e from Gaussian distribution with
128                                      //                 mean = fMultiplicityOfRP and spread = fMultiplicitySpreadOfRP
129                                      // 2.) if kFALSE = multiplicitiy of RPs is sampled e-b-e uniformly from 
130                                      //                 interval [fMinMultOfRP,fMaxMultOfRP]
131   Int_t     fMultiplicityOfRP;       // mean multiplicity of RPs (if sampled from Gaussian)
132   Double_t  fMultiplicitySpreadOfRP; // multiplicity spread of RPs (if sampled from Gaussian)
133   Int_t     fMinMultOfRP;            // minimal multiplicity of RPs (if sampled uniformly)
134   Int_t     fMaxMultOfRP;            // maximum multiplicity of RPs (if sampled uniformly)
135   Double_t  fTemperatureOfRP;        // "temperature" of RPs in GeV/c (increase this parameter to get more high pt RPs) 
136   Bool_t    fUseConstantHarmonics;   // harmonics V1, V2, V4... are constant (kTRUE) or functions of pt and eta (kFALSE)     
137   // constant harmonics: 
138   Double_t  fV1RP;                   // directed flow of RPs
139   Double_t  fV1SpreadRP;             // directed flow spread of RPs
140   
141   Bool_t    fV2DistrOfRPsIsGauss;    // 1.) if kTRUE  = elliptic flow of RPs is sampled e-b-e from Gaussian distribution with
142                                      //                 mean = fV2RP and spread = fV2SpreadRP
143                                      // 2.) if kFALSE = elliptic flow of RPs is sampled e-b-e uniformly from 
144                                      //                 interval [fMinV2RP,fMaxV2RP]
145   Double_t  fV2RP;                   // mean elliptic flow of RPs (if sampled from Gaussian)
146   Double_t  fV2SpreadRP;             // elliptic flow spread of RPs (if sampled from Gaussian)
147   Double_t  fMinV2RP;                // minimal elliptic flow of RPs (if sampled uniformly)
148   Double_t  fMaxV2RP;                // minimal elliptic flow of RPs (if sampled uniformly)
149   
150   Double_t  fV4RP;                   // harmonic V4 of RPs
151   Double_t  fV4SpreadRP;             // harmonic V4's spread of RPs
152   // (pt,eta) dependent harmonics:
153   Double_t  fV2RPMax;                // elliptic flow of RPs
154   Double_t  fPtCutOff;               // elliptic flow spread of RPs
155   // non-uniform acceptance:
156   Double_t  fPhiMin1;                // first non-uniform sector starts at azimuth fPhiMin1
157   Double_t  fPhiMax1;                // first non-uniform sector ends at azimuth fPhiMax1
158   Double_t  fProbability1;           // particles emitted in fPhiMin1 < phi < fPhiMax1 are taken with probability fProbability1 
159   Double_t  fPhiMin2;                // second non-uniform sector starts at azimuth fPhiMin2
160   Double_t  fPhiMax2;                // second non-uniform sector starts at azimuth fPhiMax2
161   Double_t  fProbability2;           // particles emitted in fPhiMin2 < phi < fPhiMax2 are taken with probability fProbability2
162   //................................................................................................
163   
164   //................................................................................................
165   // equations for distributions: 
166   TF1*      fPtSpectra;  // transverse momentum distribution
167   TF1*      fPhiDistribution; // azimuthal distribution
168   //................................................................................................
169   
170   TRandom3* fMyTRandom3; // our TRandom3 generator
171   Int_t     fCount;      // count number of events 
172   Int_t     fNoOfLoops;  // number of times to use the same particle (nonflow)
173   
174   ClassDef(AliFlowEventSimpleMakerOnTheFly,0) // macro for rootcint
175 };
176  
177 #endif
178
179
180