]>
Commit | Line | Data |
---|---|---|
93ff27bd | 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 | ||
93417736 | 7 | /************************************ |
8 | * Create an event and perform full * | |
9 | * flow analysis 'on the fly'. * | |
10 | * * | |
11 | * author: Ante Bilandzic * | |
12 | * (abilandzic@gmail.com) * | |
13 | ************************************/ | |
93ff27bd | 14 | |
15 | #ifndef ALIFLOWEVENTSIMPLEMAKERONTHEFLY_H | |
16 | #define ALIFLOWEVENTSIMPLEMAKERONTHEFLY_H | |
17 | ||
18 | class TF1; | |
5b8dccde | 19 | class TRandom3; |
4aae2a93 | 20 | class TH3F; |
93ff27bd | 21 | |
2701c4bc | 22 | class AliFlowEventSimple; |
23 | class AliFlowTrackSimple; | |
24 | class AliFlowTrackSimpleCuts; | |
25 | ||
93417736 | 26 | class AliFlowEventSimpleMakerOnTheFly{ |
93ff27bd | 27 | public: |
93417736 | 28 | AliFlowEventSimpleMakerOnTheFly(UInt_t uiSeed = 0); // constructor |
93ff27bd | 29 | virtual ~AliFlowEventSimpleMakerOnTheFly(); // destructor |
93417736 | 30 | virtual void Init(); |
31 | Bool_t AcceptOrNot(AliFlowTrackSimple *pTrack); | |
2701c4bc | 32 | AliFlowEventSimple* CreateEventOnTheFly(AliFlowTrackSimpleCuts const *cutsRP, AliFlowTrackSimpleCuts const *cutsPOI); |
93417736 | 33 | // Setters and getters: |
34 | void SetMinMult(Int_t iMinMult) {this->fMinMult = iMinMult;} | |
35 | Int_t GetMinMult() const {return this->fMinMult;} | |
36 | void SetMaxMult(Int_t iMaxMult) {this->fMaxMult = iMaxMult;} | |
37 | Int_t GetMaxMult() const {return this->fMaxMult;} | |
38 | void SetMass(Double_t dMass) {this->fMass = dMass;} | |
39 | Double_t GetMass() const {return this->fMass;} | |
40 | void SetTemperature(Double_t dT) {this->fTemperature = dT;} | |
41 | Double_t GetTemperature() const {return this->fTemperature;} | |
42 | void SetV1(Double_t dV1) {this->fV1 = dV1;} | |
43 | Double_t GetV1() const {return this->fV1;} | |
44 | void SetV2(Double_t dV2) {this->fV2 = dV2;} | |
45 | Double_t GetV2() const {return this->fV2;} | |
46 | void SetV3(Double_t dV3) {this->fV3 = dV3;} | |
47 | Double_t GetV3() const {return this->fV3;} | |
48 | void SetV4(Double_t dV4) {this->fV4 = dV4;} | |
49 | Double_t GetV4() const {return this->fV4;} | |
dd1d2f85 | 50 | void SetV5(Double_t dV5) {this->fV5 = dV5;} |
51 | Double_t GetV5() const {return this->fV5;} | |
52 | void SetV6(Double_t dV6) {this->fV6 = dV6;} | |
53 | Double_t GetV6() const {return this->fV6;} | |
93417736 | 54 | void SetUniformFluctuationsV2(Bool_t b) {this->fUniformFluctuationsV2 = b;} |
55 | Bool_t GetUniformFluctuationsV2() const {return this->fUniformFluctuationsV2;} | |
56 | void SetMinV2(Double_t dMinV2) {this->fMinV2 = dMinV2;} | |
57 | Double_t GetMinV2() const {return this->fMinV2;} | |
58 | void SetMaxV2(Double_t dMaxV2) {this->fMaxV2 = dMaxV2;} | |
59 | Double_t GetMaxV2() const {return this->fMaxV2;} | |
60 | void SetPtDependentV2(Bool_t b) {this->fPtDependentV2 = b;} | |
61 | Bool_t GetPtDependentV2() const {return this->fPtDependentV2;} | |
62 | void SetV2vsPtCutOff(Double_t dV2vsPtCutOff) {this->fV2vsPtCutOff = dV2vsPtCutOff;} | |
63 | Double_t GetV2vsPtCutOff() const {return this->fV2vsPtCutOff;} | |
64 | void SetV2vsPtMax(Double_t dV2vsPtMax) {this->fV2vsPtMax = dV2vsPtMax;} | |
65 | Double_t GetV2vsPtMax() const {return this->fV2vsPtMax;} | |
66 | void SetSubeventEtaRange(Double_t minA, Double_t maxA, Double_t minB, Double_t maxB) | |
67 | {this->fEtaMinA = minA;this->fEtaMaxA = maxA;this->fEtaMinB = minB;this->fEtaMaxB = maxB;}; | |
68 | void SetNTimes(Int_t nt) {this->fNTimes = nt;} | |
69 | Int_t GetNTimes() const {return this->fNTimes;} | |
70 | void SetUniformAcceptance(Bool_t ua) {this->fUniformAcceptance = ua;} | |
71 | Bool_t GetUniformAcceptance() const {return this->fUniformAcceptance;} | |
e23cbd39 | 72 | void SetFirstSectorPhiMin(Double_t dPhiMin1) {this->fPhiMin1 = dPhiMin1;} |
73 | Double_t GetFirstSectorPhiMin() const {return this->fPhiMin1;} | |
e23cbd39 | 74 | void SetFirstSectorPhiMax(Double_t dPhiMax1) {this->fPhiMax1 = dPhiMax1;} |
93417736 | 75 | Double_t GetFirstSectorPhiMax() const {return this->fPhiMax1;} |
e23cbd39 | 76 | void SetFirstSectorProbability(Double_t dProbability1) {this->fProbability1 = dProbability1;} |
93417736 | 77 | Double_t GetFirstSectorProbability() const {return this->fProbability1;} |
e23cbd39 | 78 | void SetSecondSectorPhiMin(Double_t dPhiMin2) {this->fPhiMin2 = dPhiMin2;} |
79 | Double_t GetSecondSectorPhiMin() const {return this->fPhiMin2;} | |
e23cbd39 | 80 | void SetSecondSectorPhiMax(Double_t dPhiMax2) {this->fPhiMax2 = dPhiMax2;} |
81 | Double_t GetSecondSectorPhiMax() const {return this->fPhiMax2;} | |
e23cbd39 | 82 | void SetSecondSectorProbability(Double_t dProbability2) {this->fProbability2 = dProbability2;} |
93417736 | 83 | Double_t GetSecondSectorProbability() const {return this->fProbability2;} |
4aae2a93 | 84 | |
85 | //Acceptance - simulate detector effects/inefficiencies | |
86 | void SimulateDetectorEffects() {fSimulateDetectorEffects = kTRUE;} | |
87 | void SetNumberOfInefficientSectorsInPhi(Int_t numberOfInefficientSectors) { | |
88 | fNumberOfInefficientSectors = numberOfInefficientSectors; | |
89 | fInefficiencyFactorInPhi = 0.5;} | |
90 | void SetInefficiencyFactor(Double_t gInefficiencyFactorInPhi) { | |
91 | fInefficiencyFactorInPhi = gInefficiencyFactorInPhi;} | |
92 | void SetNumberOfDeadSectorsInPhi(Int_t numberOfDeadSectors) { | |
93 | fNumberOfDeadSectors = numberOfDeadSectors;} | |
94 | void EnableEfficiencyDropNearEtaEdges() { | |
95 | fEfficiencyDropNearEtaEdges = kTRUE;} | |
96 | ||
93ff27bd | 97 | private: |
93417736 | 98 | AliFlowEventSimpleMakerOnTheFly(const AliFlowEventSimpleMakerOnTheFly& anAnalysis); // copy constructor |
93ff27bd | 99 | AliFlowEventSimpleMakerOnTheFly& operator=(const AliFlowEventSimpleMakerOnTheFly& anAnalysis); // assignment operator |
4aae2a93 | 100 | |
101 | void SetupEfficiencyMatrix(); | |
102 | ||
93417736 | 103 | Int_t fCount; // count number of events |
104 | Int_t fMinMult; // uniformly sampled multiplicity is >= iMinMult | |
105 | Int_t fMaxMult; // uniformly sampled multiplicity is < iMaxMult | |
106 | TF1 *fPtSpectra; // transverse momentum distribution (pt is sampled from hardwired Boltzmann distribution) | |
107 | Double_t fMass; // mass in pt distribution (hardwired is Boltzmann pt distribution) | |
108 | Double_t fTemperature; // "temperature" in pt distribution (hardwired is Boltzmann pt distribution) | |
109 | TF1 *fPhiDistribution; // azimuthal distribution (phi is sampled from hardwired Fourier-like distribution) | |
110 | Double_t fV1; // harmonic v1 | |
111 | Double_t fV2; // harmonic v2 | |
112 | Double_t fV3; // harmonic v3 | |
113 | Double_t fV4; // harmonic v4 | |
dd1d2f85 | 114 | Double_t fV5; // harmonic v5 |
115 | Double_t fV6; // harmonic v6 | |
93417736 | 116 | Bool_t fUniformFluctuationsV2; // v2 is sampled uniformly for each event and for all particles from [fMinV2,fMaxV2] |
117 | Double_t fMinV2; // if v2 is sampled uniformly for each event, this is lower boundary on its value | |
118 | Double_t fMaxV2; // if v2 is sampled uniformly for each event, this is upper boundary on its value | |
119 | Bool_t fPtDependentV2; // v2 is pt-dependent | |
120 | Double_t fV2vsPtCutOff; // if v2 is pt-dependent: for v2 < fV2vsPtCutOff v2 is growing linearly, otherwise v2 = fV2vsPtMax | |
121 | Double_t fV2vsPtMax; // if v2 is pt-dependent: v2 = fV2vsPtMax for v2 >= fV2vsPtCutOff | |
122 | Double_t fEtaMinA; // minimum eta of subevent A | |
123 | Double_t fEtaMaxA; // maximum eta of subevent A | |
124 | Double_t fEtaMinB; // minimum eta of subevent B | |
125 | Double_t fEtaMaxB; // maximum eta of subevent B | |
126 | Int_t fNTimes; // number of times to use the same particle in the analysis (simulating nonflow) | |
127 | Bool_t fUniformAcceptance; // detector has uniform azimuthal acceptance or not | |
128 | Double_t fPhiMin1; // first sector with non-uniform acceptance starts at azimuth fPhiMin1 | |
129 | Double_t fPhiMax1; // first sector with non-uniform acceptance ends at azimuth fPhiMax1 | |
130 | Double_t fProbability1; // particles emitted in fPhiMin1 < phi < fPhiMax1 are taken with probability fProbability1 | |
131 | Double_t fPhiMin2; // second sector with non-uniform acceptance starts at azimuth fPhiMin2 | |
132 | Double_t fPhiMax2; // second sector with non-uniform acceptance ends at azimuth fPhiMax2 | |
133 | Double_t fProbability2; // particles emitted in fPhiMin2 < phi < fPhiMax2 are taken with probability fProbability2 | |
134 | Double_t fPi; // pi | |
809f4e8b | 135 | |
4aae2a93 | 136 | //Simulate detector effects |
137 | Bool_t fSimulateDetectorEffects;//simulate detector effects in pT | |
138 | Int_t fNumberOfInefficientSectors;//inefficient secotrs in phi | |
139 | Double_t fInefficiencyFactorInPhi;//efficiency factor < 1 | |
140 | Int_t fNumberOfDeadSectors;//number of dead sectors | |
141 | Bool_t fEfficiencyDropNearEtaEdges;//efficiency drop in eta edges | |
142 | TH3F *fEfficiencyMatrix; //efficiency matrix in eta-pt-phi | |
143 | ||
93417736 | 144 | ClassDef(AliFlowEventSimpleMakerOnTheFly,1) // macro for rootcint |
93ff27bd | 145 | }; |
146 | ||
147 | #endif | |
148 | ||
149 | ||
150 |