]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskToyModel.h
3ef10297709cdf647f6a0856b45c7854fdb77992
[u/mrichter/AliRoot.git] / PWGCF / EBYE / BalanceFunctions / AliAnalysisTaskToyModel.h
1 #ifndef ALIANALYSISTASKTOYMODEL_CXX\r
2 #define ALIANALYSISTASKTOYMODEL_CXX\r
3 \r
4 // Analysis task for a simple toy model, currently used for the \r
5 // balance function\r
6 // Authors: Panos Christakoglou@nikhef.nl\r
7 \r
8 class TList;\r
9 class TH1F;\r
10 class TH2F;\r
11 class TH3F;\r
12 class TF1;\r
13 \r
14 class AliBalancePsi;\r
15 \r
16 class AliAnalysisTaskToyModel : public TObject {\r
17  public:\r
18   AliAnalysisTaskToyModel();\r
19   virtual ~AliAnalysisTaskToyModel(); \r
20   \r
21   virtual void   Init();\r
22   virtual void   CreateOutputObjects();\r
23   virtual void   Run(Int_t nEvents);\r
24   virtual void   FinishOutput();\r
25   \r
26   void SetDebugFlag() {fUseDebug = kTRUE;}\r
27 \r
28   void SetAnalysisObject(AliBalancePsi *const analysis) {\r
29     fBalance         = analysis;\r
30   }\r
31   void SetShufflingObject(AliBalancePsi *const analysisShuffled) {\r
32     fRunShuffling = kTRUE;\r
33     fShuffledBalance = analysisShuffled;\r
34   }\r
35   void SetMixingObject(AliBalancePsi *const analysisMixed) {\r
36     fRunMixing = kTRUE;\r
37     fMixedBalance = analysisMixed;\r
38   }\r
39 \r
40   //============Toy model: List of setters============//\r
41   void SetTotalMultiplicity(Double_t mean, Double_t sigma) {\r
42     fTotalMultiplicityMean = mean;\r
43     fTotalMultiplicitySigma = sigma;}\r
44   void SetNetCharge(Double_t mean, Double_t sigma) {\r
45     fNetChargeMean = mean;\r
46     fNetChargeSigma = sigma;}\r
47 \r
48   //Acceptance\r
49   void SetKinematicsCutsMC(Double_t ptmin, Double_t ptmax,\r
50                            Double_t etamin, Double_t etamax){\r
51     fPtMin  = ptmin; fPtMax  = ptmax;\r
52     fEtaMin = etamin; fEtaMax = etamax;\r
53   }\r
54 \r
55   //Acceptance filter\r
56   void SetAcceptanceParameterization(TF1 *parameterization) {\r
57     fUseAcceptanceParameterization = kTRUE;\r
58     fAcceptanceParameterization = parameterization;}\r
59 \r
60   //Acceptance - simulate detector effects/inefficiencies\r
61   void SimulateDetectorEffects() {fSimulateDetectorEffects = kTRUE;}\r
62   void SetNumberOfInefficientSectorsInPhi(Int_t numberOfInefficientSectors) {\r
63     fNumberOfInefficientSectors = numberOfInefficientSectors;\r
64     fInefficiencyFactorInPhi = 0.5;}\r
65   void SetInefficiencyFactor(Double_t gInefficiencyFactorInPhi) {\r
66     fInefficiencyFactorInPhi = gInefficiencyFactorInPhi;}\r
67   void SetNumberOfDeadSectorsInPhi(Int_t numberOfDeadSectors) {\r
68     fNumberOfDeadSectors = numberOfDeadSectors;}\r
69   void EnableEfficiencyDropNearEtaEdges() {\r
70     fEfficiencyDropNearEtaEdges = kTRUE;}\r
71 \r
72   //All charges\r
73   void SetSpectraTemperatureForAllCharges(Double_t temperature) {\r
74     fUseAllCharges = kTRUE;\r
75     fTemperatureAllCharges = temperature;}\r
76   void SetDirectedFlowForAllCharges(Double_t v1) {\r
77     fUseAllCharges = kTRUE;\r
78     fDirectedFlowAllCharges = v1;}\r
79   void SetEllipticFlowForAllCharges(Double_t v2) {\r
80     fUseAllCharges = kTRUE;\r
81     fEllipticFlowAllCharges = v2;}\r
82   void SetTriangularFlowForAllCharges(Double_t v3) {\r
83     fUseAllCharges = kTRUE;\r
84     fTriangularFlowAllCharges = v3;}\r
85   void SetQuandrangularFlowForAllCharges(Double_t v4) {\r
86     fUseAllCharges = kTRUE;\r
87     fQuandrangularFlowAllCharges = v4;}\r
88   void SetPentangularFlowForAllCharges(Double_t v5) {\r
89     fUseAllCharges = kTRUE;\r
90     fPentangularFlowAllCharges = v5;}\r
91 \r
92   //Pions\r
93   void SetPionPercentage(Double_t percentage) {\r
94     fPionPercentage = percentage;}\r
95   void SetSpectraTemperatureForPions(Double_t temperature) {\r
96     fTemperaturePions = temperature;}\r
97   void SetDirectedFlowForPions(Double_t v1) {\r
98     fDirectedFlowPions = v1;}\r
99   void SetEllipticFlowForPions(Double_t v2) {\r
100     fEllipticFlowPions = v2;}\r
101   void SetTriangularFlowForPions(Double_t v3) {\r
102     fTriangularFlowPions = v3;}\r
103   void SetQuandrangularFlowForPions(Double_t v4) {\r
104     fQuandrangularFlowPions = v4;}\r
105   void SetPentangularFlowForPions(Double_t v5) {\r
106     fPentangularFlowPions = v5;}\r
107   \r
108   //Kaons\r
109   void SetKaonPercentage(Double_t percentage) {\r
110     fKaonPercentage = percentage;}\r
111   void SetSpectraTemperatureForKaons(Double_t temperature) {\r
112     fTemperatureKaons = temperature;}\r
113   void SetDirectedFlowForKaons(Double_t v1) {\r
114     fDirectedFlowKaons = v1;}\r
115   void SetEllipticFlowForKaons(Double_t v2) {\r
116     fEllipticFlowKaons = v2;}\r
117   void SetTriangularFlowForKaons(Double_t v3) {\r
118     fTriangularFlowKaons = v3;}\r
119   void SetQuandrangularFlowForKaons(Double_t v4) {\r
120     fQuandrangularFlowKaons = v4;}\r
121   void SetPentangularFlowForKaons(Double_t v5) {\r
122     fPentangularFlowKaons = v5;}\r
123 \r
124   //Protons\r
125   void SetProtonPercentage(Double_t percentage) {\r
126     fProtonPercentage = percentage;}\r
127   void SetSpectraTemperatureForProtons(Double_t temperature) {\r
128     fTemperatureProtons = temperature;}\r
129   void SetDirectedFlowForProtons(Double_t v1) {\r
130     fDirectedFlowProtons = v1;}\r
131   void SetEllipticFlowForProtons(Double_t v2) {\r
132     fEllipticFlowProtons = v2;}\r
133   void SetTriangularFlowForProtons(Double_t v3) {\r
134     fTriangularFlowProtons = v3;}\r
135   void SetQuandrangularFlowForProtons(Double_t v4) {\r
136     fQuandrangularFlowProtons = v4;}\r
137   void SetPentangularFlowForProtons(Double_t v5) {\r
138     fPentangularFlowProtons = v5;}\r
139 \r
140   //Dynamical correlations\r
141   void SetCorrelationPercentage(Double_t percentage) {\r
142     fUseDynamicalCorrelations = kTRUE; \r
143     fDynamicalCorrelationsPercentage = percentage;\r
144   }\r
145   //============Toy model: List of setters============//\r
146 \r
147  private:\r
148   void SetupEfficiencyMatrix();\r
149 \r
150   Bool_t fUseDebug; //Debug flag\r
151 \r
152   AliBalancePsi *fBalance; //BF object\r
153   Bool_t fRunShuffling;//run shuffling or not\r
154   AliBalancePsi *fShuffledBalance; //BF object (shuffled)\r
155   Bool_t fRunMixing;//run mixing or not\r
156   AliBalancePsi *fMixedBalance; //BF object (mixed)\r
157   TList *fList; //fList object\r
158   TList *fListBF; //fList object\r
159   TList *fListBFS; //fList object (shuffling)\r
160   TList *fListBFM; //fList object (mixing)\r
161 \r
162   TH1F *fHistEventStats; //event stats\r
163   TH1F *fHistNumberOfAcceptedParticles; //number of accepted particles\r
164   TH1F *fHistReactionPlane; //reaction plane angle\r
165   TH1F *fHistEtaTotal; //pseudo-rapidity (full phase space)\r
166   TH1F *fHistEta; //pseudo-rapidity (acceptance)\r
167   TH2F *fHistEtaPhiPos; //eta-phi pos\r
168   TH2F *fHistEtaPhiNeg; //eta-phi neg\r
169   TH1F *fHistRapidity; //rapidity (acceptance)\r
170   TH1F *fHistRapidityPions; //rapidity (acceptance)\r
171   TH1F *fHistRapidityKaons; //rapidity (acceptance)\r
172   TH1F *fHistRapidityProtons; //rapidity (acceptance)\r
173   TH1F *fHistPhi; //phi (acceptance)\r
174   TH1F *fHistPhiPions; //phi (acceptance)\r
175   TH1F *fHistPhiKaons; //phi (acceptance)\r
176   TH1F *fHistPhiProtons; //phi (acceptance)\r
177   TH1F *fHistPt; //pt (acceptance)\r
178   TH1F *fHistPtPions; //pt (acceptance)\r
179   TH1F *fHistPtKaons; //pt (acceptance)\r
180   TH1F *fHistPtProtons; //pt (acceptance)\r
181 \r
182   //Toy model input\r
183   Double_t fTotalMultiplicityMean; //mean for the total multiplicity\r
184   Double_t fTotalMultiplicitySigma; //sigma for the total multiplicity\r
185   Double_t fNetChargeMean; //mean for the net charge\r
186   Double_t fNetChargeSigma; //sigma for the net charge\r
187   Double_t fPtMin; //pt min for acceptance\r
188   Double_t fPtMax; //pt max for acceptance\r
189   Double_t fEtaMin; //eta min for acceptance\r
190   Double_t fEtaMax; //eta max for acceptance\r
191 \r
192   //Acceptance parameterization\r
193   Bool_t fUseAcceptanceParameterization; //flag acceptance parameterization\r
194   TF1 *fAcceptanceParameterization; //acceptance parameterization\r
195 \r
196   //Simulate detector effects\r
197   Bool_t fSimulateDetectorEffects;//simulate detector effects in pT\r
198   Int_t fNumberOfInefficientSectors;//inefficient secotrs in phi\r
199   Double_t fInefficiencyFactorInPhi;//efficiency factor < 1\r
200   Int_t fNumberOfDeadSectors;//number of dead sectors\r
201   Bool_t fEfficiencyDropNearEtaEdges;//efficiency drop in eta edges\r
202   TH3F *fEfficiencyMatrix; //efficiency matrix in eta-pt-phi\r
203 \r
204   //Kinematics\r
205   Bool_t   fUseAllCharges; //use all charges\r
206   Double_t fParticleMass; //particle mass\r
207   TF1     *fPtSpectraAllCharges; //spectra for all charges\r
208   Double_t fTemperatureAllCharges; //temperature for pt spectra\r
209   Double_t fReactionPlane; //reaction plane angle\r
210   TF1     *fAzimuthalAngleAllCharges; //azimuthal angle\r
211   Double_t fDirectedFlowAllCharges; //directed flow value\r
212   Double_t fEllipticFlowAllCharges; //elliptic flow value\r
213   Double_t fTriangularFlowAllCharges; //triangular flow value\r
214   Double_t fQuandrangularFlowAllCharges; //quadrangular flow value\r
215   Double_t fPentangularFlowAllCharges; //pentangular flow value\r
216 \r
217   Double_t fPionPercentage; //percentage of pions\r
218   Double_t fPionMass; //pion mass\r
219   TF1     *fPtSpectraPions; //spectra for pions\r
220   Double_t fTemperaturePions; //temperature for pt spectra\r
221   TF1     *fAzimuthalAnglePions; //azimuthal angle for pions\r
222   Double_t fDirectedFlowPions; //directed flow value\r
223   Double_t fEllipticFlowPions; //elliptic flow value\r
224   Double_t fTriangularFlowPions; //triangular flow value\r
225   Double_t fQuandrangularFlowPions; //quadrangular flow value\r
226   Double_t fPentangularFlowPions; //pentangular flow value\r
227 \r
228   Double_t fKaonPercentage; //percentage of kaons\r
229   Double_t fKaonMass; //kaon mass\r
230   TF1     *fPtSpectraKaons; //spectra for kaons\r
231   Double_t fTemperatureKaons; //temperature for pt spectra\r
232   TF1     *fAzimuthalAngleKaons; //azimuthal angle for kaons\r
233   Double_t fDirectedFlowKaons; //directed flow value\r
234   Double_t fEllipticFlowKaons; //elliptic flow value\r
235   Double_t fTriangularFlowKaons; //triangular flow value\r
236   Double_t fQuandrangularFlowKaons; //quadrangular flow value\r
237   Double_t fPentangularFlowKaons; //pentangular flow value\r
238 \r
239   Double_t fProtonPercentage; //percentage of protons\r
240   Double_t fProtonMass; //proton mass\r
241   TF1     *fPtSpectraProtons; //spectra for protons\r
242   Double_t fTemperatureProtons; //temperature for pt spectra\r
243   TF1     *fAzimuthalAngleProtons; //azimuthal angle for protons\r
244   Double_t fDirectedFlowProtons; //directed flow value\r
245   Double_t fEllipticFlowProtons; //elliptic flow value\r
246   Double_t fTriangularFlowProtons; //triangular flow value\r
247   Double_t fQuandrangularFlowProtons; //quadrangular flow value\r
248   Double_t fPentangularFlowProtons; //pentangular flow value\r
249 \r
250   Bool_t fUseDynamicalCorrelations; //Usage of dynamical correlations\r
251   Double_t fDynamicalCorrelationsPercentage; //Percentage of correlations\r
252 \r
253   AliAnalysisTaskToyModel(const AliAnalysisTaskToyModel&); // not implemented\r
254   AliAnalysisTaskToyModel& operator=(const AliAnalysisTaskToyModel&); // not implemented\r
255   \r
256   ClassDef(AliAnalysisTaskToyModel, 1); // example of analysis\r
257 };\r
258 \r
259 #endif\r