bugs corrected
[u/mrichter/AliRoot.git] / PWG4 / PartCorr / AliGammaConversionHistograms.cxx
CommitLineData
9fdb2372 1/**************************************************************************\r
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
3 * *\r
4 * Author: Ana Marin, Kathrin Koch, Kenneth Aamodt *\r
5 * Version 1.0 *\r
6 * *\r
7 * Permission to use, copy, modify and distribute this software and its *\r
8 * documentation strictly for non-commercial purposes is hereby granted *\r
9 * without fee, provided that the above copyright notice appears in all *\r
10 * copies and that both the copyright notice and this permission notice *\r
11 * appear in the supporting documentation. The authors make no claims *\r
12 * about the suitability of this software for any purpose. It is *\r
13 * provided "as is" without express or implied warranty. *\r
14 **************************************************************************/\r
15\r
16////////////////////////////////////////////////\r
17//--------------------------------------------- \r
18// Class used to do analysis on conversion pairs\r
19//---------------------------------------------\r
20////////////////////////////////////////////////\r
21\r
22#include "AliGammaConversionHistograms.h"\r
23#include "TMath.h"\r
24#include "TObjString.h"\r
25#include "TMap.h"\r
26#include "TList.h"\r
27#include "TH1F.h"\r
28#include "TH2F.h"\r
29\r
30\r
31using namespace std;\r
32\r
33ClassImp(AliGammaConversionHistograms)\r
34\r
35\r
36AliGammaConversionHistograms::AliGammaConversionHistograms() :\r
37 fHistogramMap(new TMap()),\r
38 fNPhiIndex(0),\r
39 fNRIndex(0),\r
40 fMinRadius(0.),\r
41 fMaxRadius(0.),\r
42 fDeltaR(0.),\r
43 fMinPhi(0.),\r
44 fMaxPhi(0.),\r
a6f44de5 45 fDeltaPhi(0.),\r
46 fMappingContainer(NULL)\r
9fdb2372 47{\r
48 // see header file for documenation\r
49}\r
50\r
51\r
52AliGammaConversionHistograms::AliGammaConversionHistograms(const AliGammaConversionHistograms & original) :\r
53 fHistogramMap(original.fHistogramMap),\r
54 fNPhiIndex(original.fNPhiIndex),\r
55 fNRIndex(original.fNRIndex),\r
56 fMinRadius(original.fMinRadius),\r
57 fMaxRadius(original.fMaxRadius),\r
58 fDeltaR(original.fDeltaR),\r
59 fMinPhi(original.fMinPhi),\r
60 fMaxPhi(original.fMaxPhi),\r
a6f44de5 61 fDeltaPhi(original.fDeltaPhi),\r
62 fMappingContainer(original.fMappingContainer)\r
9fdb2372 63{ \r
64 //see header file for documentation\r
65}\r
66\r
67\r
68AliGammaConversionHistograms & AliGammaConversionHistograms::operator = (const AliGammaConversionHistograms & /*original*/)\r
69{\r
70 // assignment operator\r
71 return *this;\r
72}\r
73\r
74\r
75AliGammaConversionHistograms::~AliGammaConversionHistograms() {\r
76 //destructor\r
77\r
78\r
79}\r
80\r
81void AliGammaConversionHistograms::AddHistogram(TString histogramName, TString histogramTitle, Int_t nXBins, Double_t firstX,Double_t lastX,TString xAxisTitle, TString yAxisTitle){\r
82 // see header file for documentation\r
83 TH1F *tmp = new TH1F(histogramName, histogramTitle,nXBins,firstX,lastX);\r
84 tmp->GetXaxis()->SetTitle(xAxisTitle);\r
85 tmp->GetYaxis()->SetTitle(yAxisTitle);\r
86 TObjString* tobjstring = new TObjString(histogramName.Data());\r
87 fHistogramMap->Add((TObject*)tobjstring,(TObject*)tmp);\r
88}\r
89\r
90void AliGammaConversionHistograms::AddHistogram(TString histogramName, TString histogramTitle, Int_t nXBins, Double_t firstX, Double_t lastX, Int_t nYBins, Double_t firstY, Double_t lastY, TString xAxisTitle, TString yAxisTitle){\r
91 // see header file for documentation\r
92 TH2F *tmp = new TH2F(histogramName, histogramTitle,nXBins,firstX,lastX,nYBins,firstY,lastY);\r
93 tmp->GetXaxis()->SetTitle(xAxisTitle);\r
94 tmp->GetYaxis()->SetTitle(yAxisTitle);\r
95 TObjString *tobjstring = new TObjString(histogramName.Data());\r
96 fHistogramMap->Add((TObject*)tobjstring,(TObject*)tmp);\r
97}\r
98\r
99void AliGammaConversionHistograms::FillHistogram(TString histogramName, Double_t xValue) const{\r
100 //see header file for documentation\r
101 TH1 *tmp = (TH1*)fHistogramMap->GetValue(histogramName.Data());\r
102 if(tmp){\r
103 tmp->Fill(xValue);\r
104 }\r
105 else{\r
a6f44de5 106 cout<<"Histogram does not exist: "<<histogramName.Data()<<endl;\r
9fdb2372 107 }\r
108}\r
109\r
110void AliGammaConversionHistograms::FillHistogram(TString histogramName, Double_t xValue, Double_t yValue) const{\r
111 //see header file for documentation\r
112 TH1 *tmp = (TH1*)fHistogramMap->GetValue(histogramName.Data());\r
113 if(tmp){\r
114 tmp->Fill(xValue, yValue);\r
115 }\r
116 else{\r
a6f44de5 117 cout<<"Histogram does not exist: "<<histogramName.Data()<<endl;\r
9fdb2372 118 }\r
119}\r
120\r
a6f44de5 121void AliGammaConversionHistograms::GetOutputContainer(TList *fOutputContainer){\r
9fdb2372 122 //checking if the container is alrerady created\r
123\r
124 if(fOutputContainer == NULL){\r
125 //print warning\r
126 return;\r
127 }\r
9fdb2372 128\r
a6f44de5 129 if(fHistogramMap != NULL){\r
9fdb2372 130 TIter iter(fHistogramMap);\r
131 TObjString *histogramName;\r
132 while ((histogramName = (TObjString*) iter.Next())) {\r
9fdb2372 133 TString histogramString = histogramName->GetString();\r
a6f44de5 134 if(histogramString.Contains("Mapping")){// means it should be put in the mapping folder\r
135 if(fMappingContainer == NULL){\r
136 fMappingContainer = new TList();\r
137 fMappingContainer->SetName("Mapping histograms");\r
138 }\r
139 if(fMappingContainer != NULL){\r
140 fMappingContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));\r
141 }\r
142 }\r
9fdb2372 143 fOutputContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));\r
144 histogramName = NULL;\r
a6f44de5 145 } // end while\r
146 // fOutputContainer->Add(fMappingContainer);\r
9fdb2372 147 }\r
9fdb2372 148}\r
149\r
150Int_t AliGammaConversionHistograms::GetRBin(Double_t radius) const{\r
151 // see header file for documentation\r
152 Int_t iResult=0;\r
153 if(fDeltaR>0){\r
154 iResult = (Int_t)((radius - fMinRadius)/fDeltaR);\r
155 }\r
156 return iResult;\r
157}\r
158\r
159Int_t AliGammaConversionHistograms::GetPhiBin(Double_t phi) const{\r
160 // see header file for documentation\r
161 Int_t iResult=0;\r
162 if(fDeltaPhi>0){\r
163 if(phi>TMath::Pi()){\r
164 phi-=2*TMath::Pi();\r
165 }\r
166 iResult = (Int_t)((phi - fMinPhi)/fDeltaPhi);\r
167 }\r
168 return iResult;\r
169}\r
170\r
171\r
172\r
173void AliGammaConversionHistograms::InitializeMappingValues(Int_t nPhiIndex, Int_t nRIndex, Int_t nBinsR, Double_t minRadius, Double_t maxRadius,Int_t nBinsPhi, Double_t minPhi, Double_t maxPhi){\r
174 // Initializing the valuse for the mapping\r
175\r
176 fNPhiIndex = nPhiIndex;\r
177 fNRIndex = nRIndex;\r
178 fMinRadius = minRadius;\r
179 fMaxRadius = maxRadius;\r
180 if(nBinsR>0 && nRIndex!=0){\r
181 fDeltaR = (fMaxRadius - fMinRadius)/nRIndex;\r
182 }\r
183 fMinPhi = minPhi;\r
184 fMaxPhi = maxPhi;\r
185 if(nBinsPhi>0 && nPhiIndex!=0){\r
186 fDeltaPhi = (fMaxPhi-fMinPhi)/nPhiIndex;\r
187 }\r
188}\r
189\r
190\r
191//mapping\r
192void AliGammaConversionHistograms::AddMappingHistograms(Int_t nPhiIndex, Int_t nRIndex,Int_t nXBins, Double_t firstX, Double_t lastX, Int_t nYBins, Double_t firstY, Double_t lastY, TString xAxisTitle, TString yAxisTitle){\r
193 // see header file for documentation\r
194 \r
195 for(Int_t phi =0; phi<=fNPhiIndex;phi++){\r
196\r
197 for(Int_t r =0; r<fNRIndex;r++){\r
198\r
a6f44de5 199 // setting axis to "" changes below\r
200 xAxisTitle="";\r
201 yAxisTitle="";\r
9fdb2372 202 //Creating the axis titles\r
203 if(xAxisTitle.Length() == 0){\r
204 xAxisTitle.Form("Phi %02d",phi);\r
205 }\r
206 \r
207 if(yAxisTitle.Length() == 0){\r
208 yAxisTitle.Form("R %02d",phi);\r
209 }\r
210\r
211 //MC\r
212 TString nameMC="";\r
213 nameMC.Form("MC_EP_Mapping-Phi%02d-R%02d",phi,r);\r
214 TString titleMC="";\r
215 titleMC.Form("Electron-Positron MC Mapping-Phi%02d-R%02d",phi,r);\r
216\r
217 AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);\r
218\r
219 //ESD\r
220 TString nameESD="";\r
221 nameESD.Form("ESD_EP_Mapping-Phi%02d-R%02d",phi,r);\r
222 TString titleESD="";\r
223 titleESD.Form("Electron-Positron ESD Mapping-Phi%02d-R%02d",phi,r);\r
224\r
225 AddHistogram(nameESD, titleESD, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);\r
226 }\r
227 }\r
228\r
a6f44de5 229\r
9fdb2372 230 for(Int_t phi =0; phi<=nPhiIndex;phi++){ \r
231\r
a6f44de5 232 // setting axis to "" changes below\r
233 xAxisTitle="";\r
234 yAxisTitle="";\r
9fdb2372 235 //Creating the axis titles\r
236 if(xAxisTitle.Length() == 0){\r
237 xAxisTitle.Form("Phi %02d",phi);\r
238 }\r
239 if(yAxisTitle.Length() == 0){\r
240 yAxisTitle = "Counts";\r
241 }\r
242 \r
243 //MC\r
244 TString nameMC="";\r
245 nameMC.Form("MC_EP_Mapping-Phi%02d",phi);\r
246 TString titleMC="";\r
247 titleMC.Form("Electron-Positron MC Mapping-Phi%02d",phi);\r
248 \r
249 AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);\r
250\r
251 //MC\r
252 TString nameESD="";\r
a6f44de5 253 nameESD.Form("ESD_EP_Mapping-Phi%02d",phi);\r
9fdb2372 254 TString titleESD="";\r
a6f44de5 255 titleESD.Form("Electron-Positron ESD Mapping-Phi%02d",phi);\r
9fdb2372 256 \r
257 AddHistogram(nameESD, titleESD, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);\r
258 }\r
259\r
260\r
261 for(Int_t r =0; r<=nRIndex;r++){\r
a6f44de5 262\r
263 // setting axis to "" changes below\r
264 xAxisTitle="";\r
265 yAxisTitle="";\r
9fdb2372 266 //Creating the axis titles\r
267 if(xAxisTitle.Length() == 0){\r
268 xAxisTitle.Form("R %02d",r);\r
269 }\r
270 if(yAxisTitle.Length() == 0){\r
271 yAxisTitle = "Counts";\r
272 }\r
273 \r
274 //MC\r
275 TString nameMC="";\r
276 nameMC.Form("MC_EP_Mapping-R%02d",r);\r
277 TString titleMC="";\r
278 titleMC.Form("Electron-Positron MC Mapping-R%02d",r);\r
279 \r
280 AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);\r
281\r
282 //ESD\r
283 TString nameESD="";\r
284 nameESD.Form("ESD_EP_Mapping-R%02d",r);\r
285 TString titleESD="";\r
286 titleESD.Form("Electron-Positron ESD Mapping-R%02d",r);\r
287 \r
288 AddHistogram(nameESD, titleESD, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);\r
289\r
290 //Mapping Phi in R\r
291 TString nameMCPhiInR="";\r
a6f44de5 292 nameMCPhiInR.Form("MC_EP_Mapping_Phi_R-%02d",r);\r
9fdb2372 293 TString titleMCPhiInR="";\r
a6f44de5 294 titleMCPhiInR.Form("MC Mapping of Phi in R%02d",r);\r
295 AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);\r
9fdb2372 296\r
a6f44de5 297 //Mapping Phi in R\r
9fdb2372 298 TString nameESDPhiInR="";\r
a6f44de5 299 nameESDPhiInR.Form("ESD_EP_Mapping_Phi_R-%02d",r);\r
9fdb2372 300 TString titleESDPhiInR="";\r
a6f44de5 301 titleESDPhiInR.Form("ESD Mapping of Phi in R%02d",r);\r
302 AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); \r
9fdb2372 303 }\r
304}\r