]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/FORWARD/analysis/AliFMDAnaCalibEnergyDistribution.cxx
Major refactoring of the code.
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis / AliFMDAnaCalibEnergyDistribution.cxx
CommitLineData
1b418b63 1//
2// Object to store energy distribution corrections as used in the FMD
3// analysis.
c341c2ed 4//
5//
b82e76e0 6#include "AliFMDAnaCalibEnergyDistribution.h"
6289b3e8 7#include "TAxis.h"
8#include <AliLog.h>
9#include <iostream>
c3f07455 10#include "TH2F.h"
7c1a1f1d 11#include <TBrowser.h>
c3f07455 12#include "AliFMDAnaParameters.h"
b82e76e0 13ClassImp(AliFMDAnaCalibEnergyDistribution)
1b418b63 14#if 0
15; // This is for Emacs
16#endif
b82e76e0 17
1b418b63 18//____________________________________________________________________
19AliFMDAnaCalibEnergyDistribution::AliFMDAnaCalibEnergyDistribution()
20: TObject(),
6289b3e8 21 fArray(),
c3f07455 22 fEmptyArray(),
23 fRingArray(),
6289b3e8 24 fIsInit(kFALSE),
25 fNetaBins(0),
26 fEtaMax(0),
7c1a1f1d 27 fEtaMin(0)
28{
1b418b63 29
b82e76e0 30
31}
32//____________________________________________________________________
1b418b63 33void AliFMDAnaCalibEnergyDistribution::Init()
34{
c341c2ed 35 //Init object
6289b3e8 36 if(fNetaBins == 0)
37 AliFatal("Set Eta bins before doing Init or anything else");
38
b82e76e0 39 fArray.SetOwner();
7c1a1f1d 40 fArray.SetName("etaBins");
c3f07455 41 fEmptyArray.SetOwner();
7c1a1f1d 42 fEmptyArray.SetName("empty");
43 fRingArray.SetName("rings");
44
c3f07455 45 for(Int_t i = 0; i<fNetaBins; i++) {
6289b3e8 46 TObjArray* etaArray = new TObjArray();
7c1a1f1d 47 etaArray->SetName(Form("etabin_%03d", i+1));
6289b3e8 48 fArray.AddAtAndExpand(etaArray,i);
49 for(Int_t det = 1; det<=3;det++) {
50 TObjArray* detArray = new TObjArray();
7c1a1f1d 51 detArray->SetName(Form("FMD%d", det));
6289b3e8 52 etaArray->AddAtAndExpand(detArray,det);
6289b3e8 53 }
b82e76e0 54 }
c3f07455 55
56
57
58 for(Int_t det = 1; det<=3;det++) {
59 TObjArray* detArray = new TObjArray();
7c1a1f1d 60 detArray->SetName(Form("FMD%d", det));
c3f07455 61 fEmptyArray.AddAtAndExpand(detArray,det);
62 }
63
64 for(Int_t det = 1; det<=3;det++) {
65 TObjArray* detArray = new TObjArray();
7c1a1f1d 66 detArray->SetName(Form("FMD%d", det));
c3f07455 67 fRingArray.AddAtAndExpand(detArray,det);
68 }
69
70
b82e76e0 71 fIsInit = kTRUE;
72}
73
74
75//____________________________________________________________________
1b418b63 76TH1F*
77AliFMDAnaCalibEnergyDistribution::GetEnergyDistribution(Int_t det,
78 Char_t ring,
79 Float_t eta) {
c341c2ed 80
81 //Get Energy dist
c3f07455 82 //TAxis testaxis(fNetaBins,fEtaMin,fEtaMax);
83 // Int_t binnumber = testaxis.FindBin(eta);
84 AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
85
1b418b63 86 Int_t binnumber = pars->GetEtaBin(eta);
6289b3e8 87
1b418b63 88 Int_t ringNumber = (ring == 'I' ? 0 : 1);
89 TObjArray* etaArray = (TObjArray*)fArray.At(binnumber);
90 TObjArray* detArray = (TObjArray*)etaArray->At(det);
91 TH1F* hEdist = (TH1F*)detArray->At(ringNumber);
b82e76e0 92
93 return hEdist;
94}
b82e76e0 95//____________________________________________________________________
1b418b63 96TH1F*
97AliFMDAnaCalibEnergyDistribution::GetEmptyEnergyDistribution(Int_t det,
98 Char_t ring)
99{
c341c2ed 100 //Get e dist of empty
c3f07455 101 Int_t ringNumber = (ring == 'I' ? 0 : 1);
102
103 TObjArray* detArray = (TObjArray*)fEmptyArray.At(det);
104 TH1F* hEdist = (TH1F*)detArray->At(ringNumber);
105
106 return hEdist;
107}
108//____________________________________________________________________
1b418b63 109TH1F*
110AliFMDAnaCalibEnergyDistribution::GetRingEnergyDistribution(Int_t det,
111 Char_t ring) {
c341c2ed 112 // Get E dist of ring
c3f07455 113 Int_t ringNumber = (ring == 'I' ? 0 : 1);
114
115 TObjArray* detArray = (TObjArray*)fRingArray.At(det);
116 TH1F* hEdist = (TH1F*)detArray->At(ringNumber);
117
118 return hEdist;
119}
120//____________________________________________________________________
1b418b63 121void
122AliFMDAnaCalibEnergyDistribution::SetEnergyDistributionUser(Int_t det,
123 Char_t ring,
124 Float_t eta,
125 TH1F* edist)
126{
c341c2ed 127 //Set E dist (user)
c3f07455 128 AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
aa303f0c 129 Int_t binnumber = pars->GetEtaBin(eta);
130 //std::cout<<binnumber<<std::endl;
c3f07455 131 SetEnergyDistribution(det, ring, binnumber, edist );
132}
133//____________________________________________________________________
1b418b63 134void
135AliFMDAnaCalibEnergyDistribution::SetEnergyDistribution(Int_t det,
136 Char_t ring,
137 Int_t etabin,
138 TH1F* edist)
139{
c341c2ed 140 //Set E dist
1b418b63 141 if(!fIsInit) Init();
6289b3e8 142
b82e76e0 143 Int_t ringNumber = (ring == 'I' ? 0 : 1);
c3f07455 144 TObjArray* etaArray = (TObjArray*)fArray.At(etabin);
6289b3e8 145 TObjArray* detArray = (TObjArray*)etaArray->At(det);
146
b82e76e0 147 detArray->AddAtAndExpand(edist,ringNumber);
b82e76e0 148}
149
c3f07455 150//____________________________________________________________________
1b418b63 151void
152AliFMDAnaCalibEnergyDistribution::SetEmptyEnergyDistribution(Int_t det,
153 Char_t ring,
154 TH1F* edist)
155{
c341c2ed 156 //Set the empty dist
c3f07455 157 if(!fIsInit)
158 Init();
159
160 Int_t ringNumber = (ring == 'I' ? 0 : 1);
161 TObjArray* detArray = (TObjArray*)fEmptyArray.At(det);
162
163 detArray->AddAtAndExpand(edist,ringNumber);
164
165
166}
167//____________________________________________________________________
1b418b63 168void AliFMDAnaCalibEnergyDistribution::SetRingEnergyDistribution(Int_t det,
169 Char_t ring,
170 TH1F* edist)
171{
c341c2ed 172 // Set E dist of ring
1b418b63 173 if(!fIsInit) Init();
c3f07455 174
175 Int_t ringNumber = (ring == 'I' ? 0 : 1);
176 TObjArray* detArray = (TObjArray*)fRingArray.At(det);
177
178 detArray->AddAtAndExpand(edist,ringNumber);
c3f07455 179}
7c1a1f1d 180//____________________________________________________________________
181void AliFMDAnaCalibEnergyDistribution::Browse(TBrowser* b)
182{
c341c2ed 183 //Browse object
7c1a1f1d 184 for(Int_t i = 0; i<fNetaBins; i++) {
185 TObjArray* etaArray = static_cast<TObjArray*>(fArray.At(i));
186 etaArray->SetName(Form("etabin_%03d", i+1));
187 for(Int_t det = 1; det<=3;det++) {
188 TObjArray* detArray = static_cast<TObjArray*>(etaArray->At(det));
189 detArray->SetName(Form("FMD%d", det));
190 }
191 }
192
193 for(Int_t det = 1; det<=3;det++) {
194 TObjArray* detArray = static_cast<TObjArray*>(fEmptyArray.At(det));
195 detArray->SetName(Form("FMD%d", det));
196 }
197
198 for(Int_t det = 1; det<=3;det++) {
199 TObjArray* detArray = static_cast<TObjArray*>(fRingArray.At(det));
200 detArray->SetName(Form("FMD%d", det));
201 }
202
203 b->Add(&fArray, "etabins");
204 b->Add(&fEmptyArray,"empty");
205 b->Add(&fRingArray, "rings");
206}
207
b82e76e0 208//____________________________________________________________________
209//
210// EOF
211//