]>
Commit | Line | Data |
---|---|---|
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 | 13 | ClassImp(AliFMDAnaCalibEnergyDistribution) |
1b418b63 | 14 | #if 0 |
15 | ; // This is for Emacs | |
16 | #endif | |
b82e76e0 | 17 | |
1b418b63 | 18 | //____________________________________________________________________ |
19 | AliFMDAnaCalibEnergyDistribution::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 | 33 | void 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 | 76 | TH1F* |
77 | AliFMDAnaCalibEnergyDistribution::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 | 96 | TH1F* |
97 | AliFMDAnaCalibEnergyDistribution::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 | 109 | TH1F* |
110 | AliFMDAnaCalibEnergyDistribution::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 | 121 | void |
122 | AliFMDAnaCalibEnergyDistribution::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 | 134 | void |
135 | AliFMDAnaCalibEnergyDistribution::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 | 151 | void |
152 | AliFMDAnaCalibEnergyDistribution::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 | 168 | void 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 | //____________________________________________________________________ |
181 | void 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 | // |