]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/FLOW/Base/AliFlowEventSimpleMakerOnTheFly.h
patching flow cuts (Panos)
[u/mrichter/AliRoot.git] / PWG / FLOW / Base / AliFlowEventSimpleMakerOnTheFly.h
CommitLineData
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
18class TF1;
5b8dccde 19class TRandom3;
4aae2a93 20class TH3F;
93ff27bd 21
2701c4bc 22class AliFlowEventSimple;
23class AliFlowTrackSimple;
24class AliFlowTrackSimpleCuts;
25
93417736 26class 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