#include "AliFMDCorrSecondaryMap.h"
#include <TBrowser.h>
#include <TH2D.h>
#include <AliLog.h>
#include <iostream>
AliFMDCorrSecondaryMap::AliFMDCorrSecondaryMap()
: fRingArray(),
fVertexAxis(0,0,0),
fEtaAxis(0,0,0)
{
fRingArray.SetOwner(kTRUE);
fRingArray.SetName("rings");
fVertexAxis.SetName("vertexAxis");
fVertexAxis.SetTitle("v_{z} [cm]");
fEtaAxis.SetName("etaAxis");
fEtaAxis.SetTitle("#eta");
}
AliFMDCorrSecondaryMap::AliFMDCorrSecondaryMap(const
AliFMDCorrSecondaryMap& o)
: TObject(o),
fRingArray(o.fRingArray),
fVertexAxis(o.fVertexAxis.GetNbins(), o.fVertexAxis.GetXmin(),
o.fVertexAxis.GetXmax()),
fEtaAxis(o.fEtaAxis.GetNbins(), o.fEtaAxis.GetXmin(),
o.fEtaAxis.GetXmax())
{
fVertexAxis.SetName("vertexAxis");
fVertexAxis.SetTitle("v_{z} [cm]");
fEtaAxis.SetName("etaAxis");
fEtaAxis.SetTitle("v_{z} [cm]");
}
AliFMDCorrSecondaryMap::~AliFMDCorrSecondaryMap()
{
fRingArray.Clear();
}
AliFMDCorrSecondaryMap&
AliFMDCorrSecondaryMap::operator=(const AliFMDCorrSecondaryMap& o)
{
fRingArray = o.fRingArray;
SetVertexAxis(o.fVertexAxis);
SetEtaAxis(o.fEtaAxis);
return *this;
}
TH2D*
AliFMDCorrSecondaryMap::GetCorrection(UShort_t d, Char_t r, Double_t v) const
{
Int_t b = FindVertexBin(v);
if (b <= 0) return 0;
return GetCorrection(d, r, UShort_t(b));
}
TH2D*
AliFMDCorrSecondaryMap::GetCorrection(UShort_t d, Char_t r, UShort_t b) const
{
TObjArray* ringArray = GetRingArray(d, r);
if (!ringArray) return 0;
if (b <= 0 || b > ringArray->GetEntriesFast()) {
AliWarning(Form("vertex bin %d out of range [1,%d]",
b, ringArray->GetEntriesFast()));
return 0;
}
TObject* o = ringArray->At(b-1);
if (!o) {
AliWarning(Form("No secondary map found for FMD%d%c in vertex bin %d",
d,r,b));
return 0;
}
return static_cast<TH2D*>(o);
}
Int_t
AliFMDCorrSecondaryMap::FindVertexBin(Double_t v) const
{
if (fVertexAxis.GetNbins() <= 0) {
AliWarning("No vertex array defined");
return 0;
}
Int_t bin = const_cast<TAxis&>(fVertexAxis).FindBin(v);
if (bin <= 0 || bin > fVertexAxis.GetNbins()) {
AliWarning(Form("vertex %+8.4f out of range [%+8.4f,%+8.4f]",
v, fVertexAxis.GetXmin(), fVertexAxis.GetXmax()));
return 0;
}
return bin;
}
Int_t
AliFMDCorrSecondaryMap::GetRingIndex(UShort_t d, Char_t r) const
{
switch (d) {
case 1: return 0;
case 2: return (r == 'I' || r == 'i' ? 1 : 2); break;
case 3: return (r == 'I' || r == 'i' ? 3 : 4); break;
}
AliWarning(Form("Index for FMD%d%c not found", d, r));
return -1;
}
TObjArray*
AliFMDCorrSecondaryMap::GetRingArray(UShort_t d, Char_t r) const
{
Int_t idx = GetRingIndex(d,r);
if (idx < 0) return 0;
TObject* o = fRingArray.At(idx);
if (!o) {
AliWarning(Form("No array found for FMD%d%c", d, r));
return 0;
}
return static_cast<TObjArray*>(o);
}
TObjArray*
AliFMDCorrSecondaryMap::GetOrMakeRingArray(UShort_t d, Char_t r)
{
Int_t idx = GetRingIndex(d,r);
if (idx < 0) return 0;
TObject* o = fRingArray.At(idx);
if (!o) {
TObjArray* a = new TObjArray(fVertexAxis.GetNbins());
a->SetName(Form("FMD%d%c", d, r));
a->SetOwner(kTRUE);
fRingArray.AddAtAndExpand(a, idx);
return a;
}
return static_cast<TObjArray*>(fRingArray.At(idx));
}
Bool_t
AliFMDCorrSecondaryMap::SetCorrection(UShort_t d, Char_t r,
UShort_t b, TH2D* h)
{
TObjArray* ringArray = GetOrMakeRingArray(d, r);
if (!ringArray) return false;
if (b <= 0 || b > fVertexAxis.GetNbins()) {
AliWarning(Form("Vertex bin %3d out of range [1,%3d]",
b, fVertexAxis.GetNbins()));
return false;
}
h->SetName(Form("FMD%d%c_vtxbin%03d", d, r, b));
h->SetTitle(Form("Secondary map correction for FMD%d%c "
"in vertex bin %d [%+8.4f,%+8.4f]",
d, r, b, fVertexAxis.GetBinLowEdge(b),
fVertexAxis.GetBinUpEdge(b)));
h->SetXTitle("#eta");
h->SetYTitle("#phi [radians]");
h->SetZTitle("#sum_{i} N_{ch,i,primary} / #sum_{i} N_{ch,i,FMD}");
h->SetDirectory(0);
h->SetStats(0);
ringArray->AddAtAndExpand(h, b-1);
return kTRUE;
}
Bool_t
AliFMDCorrSecondaryMap::SetCorrection(UShort_t d, Char_t r,
Double_t v, TH2D* h)
{
Int_t b = FindVertexBin(v);
if (b <= 0 || b > fVertexAxis.GetNbins()) {
AliWarning(Form("Vertex %+8.4f out of range [%+8.4f,%+8.4f]",
v, fVertexAxis.GetXmin(), fVertexAxis.GetXmax()));
return false;
}
return SetCorrection(d, r, UShort_t(b), h);
}
void
AliFMDCorrSecondaryMap::Browse(TBrowser* b)
{
b->Add(&fRingArray);
b->Add(&fVertexAxis);
b->Add(&fEtaAxis);
}
void
AliFMDCorrSecondaryMap::Print(Option_t* option) const
{
std::cout << "Secondary correction map" << std::endl;
fRingArray.Print(option);
fVertexAxis.Print(option);
fEtaAxis.Print(option);
}
AliFMDCorrSecondaryMap.cxx:1 AliFMDCorrSecondaryMap.cxx:2 AliFMDCorrSecondaryMap.cxx:3 AliFMDCorrSecondaryMap.cxx:4 AliFMDCorrSecondaryMap.cxx:5 AliFMDCorrSecondaryMap.cxx:6 AliFMDCorrSecondaryMap.cxx:7 AliFMDCorrSecondaryMap.cxx:8 AliFMDCorrSecondaryMap.cxx:9 AliFMDCorrSecondaryMap.cxx:10 AliFMDCorrSecondaryMap.cxx:11 AliFMDCorrSecondaryMap.cxx:12 AliFMDCorrSecondaryMap.cxx:13 AliFMDCorrSecondaryMap.cxx:14 AliFMDCorrSecondaryMap.cxx:15 AliFMDCorrSecondaryMap.cxx:16 AliFMDCorrSecondaryMap.cxx:17 AliFMDCorrSecondaryMap.cxx:18 AliFMDCorrSecondaryMap.cxx:19 AliFMDCorrSecondaryMap.cxx:20 AliFMDCorrSecondaryMap.cxx:21 AliFMDCorrSecondaryMap.cxx:22 AliFMDCorrSecondaryMap.cxx:23 AliFMDCorrSecondaryMap.cxx:24 AliFMDCorrSecondaryMap.cxx:25 AliFMDCorrSecondaryMap.cxx:26 AliFMDCorrSecondaryMap.cxx:27 AliFMDCorrSecondaryMap.cxx:28 AliFMDCorrSecondaryMap.cxx:29 AliFMDCorrSecondaryMap.cxx:30 AliFMDCorrSecondaryMap.cxx:31 AliFMDCorrSecondaryMap.cxx:32 AliFMDCorrSecondaryMap.cxx:33 AliFMDCorrSecondaryMap.cxx:34 AliFMDCorrSecondaryMap.cxx:35 AliFMDCorrSecondaryMap.cxx:36 AliFMDCorrSecondaryMap.cxx:37 AliFMDCorrSecondaryMap.cxx:38 AliFMDCorrSecondaryMap.cxx:39 AliFMDCorrSecondaryMap.cxx:40 AliFMDCorrSecondaryMap.cxx:41 AliFMDCorrSecondaryMap.cxx:42 AliFMDCorrSecondaryMap.cxx:43 AliFMDCorrSecondaryMap.cxx:44 AliFMDCorrSecondaryMap.cxx:45 AliFMDCorrSecondaryMap.cxx:46 AliFMDCorrSecondaryMap.cxx:47 AliFMDCorrSecondaryMap.cxx:48 AliFMDCorrSecondaryMap.cxx:49 AliFMDCorrSecondaryMap.cxx:50 AliFMDCorrSecondaryMap.cxx:51 AliFMDCorrSecondaryMap.cxx:52 AliFMDCorrSecondaryMap.cxx:53 AliFMDCorrSecondaryMap.cxx:54 AliFMDCorrSecondaryMap.cxx:55 AliFMDCorrSecondaryMap.cxx:56 AliFMDCorrSecondaryMap.cxx:57 AliFMDCorrSecondaryMap.cxx:58 AliFMDCorrSecondaryMap.cxx:59 AliFMDCorrSecondaryMap.cxx:60 AliFMDCorrSecondaryMap.cxx:61 AliFMDCorrSecondaryMap.cxx:62 AliFMDCorrSecondaryMap.cxx:63 AliFMDCorrSecondaryMap.cxx:64 AliFMDCorrSecondaryMap.cxx:65 AliFMDCorrSecondaryMap.cxx:66 AliFMDCorrSecondaryMap.cxx:67 AliFMDCorrSecondaryMap.cxx:68 AliFMDCorrSecondaryMap.cxx:69 AliFMDCorrSecondaryMap.cxx:70 AliFMDCorrSecondaryMap.cxx:71 AliFMDCorrSecondaryMap.cxx:72 AliFMDCorrSecondaryMap.cxx:73 AliFMDCorrSecondaryMap.cxx:74 AliFMDCorrSecondaryMap.cxx:75 AliFMDCorrSecondaryMap.cxx:76 AliFMDCorrSecondaryMap.cxx:77 AliFMDCorrSecondaryMap.cxx:78 AliFMDCorrSecondaryMap.cxx:79 AliFMDCorrSecondaryMap.cxx:80 AliFMDCorrSecondaryMap.cxx:81 AliFMDCorrSecondaryMap.cxx:82 AliFMDCorrSecondaryMap.cxx:83 AliFMDCorrSecondaryMap.cxx:84 AliFMDCorrSecondaryMap.cxx:85 AliFMDCorrSecondaryMap.cxx:86 AliFMDCorrSecondaryMap.cxx:87 AliFMDCorrSecondaryMap.cxx:88 AliFMDCorrSecondaryMap.cxx:89 AliFMDCorrSecondaryMap.cxx:90 AliFMDCorrSecondaryMap.cxx:91 AliFMDCorrSecondaryMap.cxx:92 AliFMDCorrSecondaryMap.cxx:93 AliFMDCorrSecondaryMap.cxx:94 AliFMDCorrSecondaryMap.cxx:95 AliFMDCorrSecondaryMap.cxx:96 AliFMDCorrSecondaryMap.cxx:97 AliFMDCorrSecondaryMap.cxx:98 AliFMDCorrSecondaryMap.cxx:99 AliFMDCorrSecondaryMap.cxx:100 AliFMDCorrSecondaryMap.cxx:101 AliFMDCorrSecondaryMap.cxx:102 AliFMDCorrSecondaryMap.cxx:103 AliFMDCorrSecondaryMap.cxx:104 AliFMDCorrSecondaryMap.cxx:105 AliFMDCorrSecondaryMap.cxx:106 AliFMDCorrSecondaryMap.cxx:107 AliFMDCorrSecondaryMap.cxx:108 AliFMDCorrSecondaryMap.cxx:109 AliFMDCorrSecondaryMap.cxx:110 AliFMDCorrSecondaryMap.cxx:111 AliFMDCorrSecondaryMap.cxx:112 AliFMDCorrSecondaryMap.cxx:113 AliFMDCorrSecondaryMap.cxx:114 AliFMDCorrSecondaryMap.cxx:115 AliFMDCorrSecondaryMap.cxx:116 AliFMDCorrSecondaryMap.cxx:117 AliFMDCorrSecondaryMap.cxx:118 AliFMDCorrSecondaryMap.cxx:119 AliFMDCorrSecondaryMap.cxx:120 AliFMDCorrSecondaryMap.cxx:121 AliFMDCorrSecondaryMap.cxx:122 AliFMDCorrSecondaryMap.cxx:123 AliFMDCorrSecondaryMap.cxx:124 AliFMDCorrSecondaryMap.cxx:125 AliFMDCorrSecondaryMap.cxx:126 AliFMDCorrSecondaryMap.cxx:127 AliFMDCorrSecondaryMap.cxx:128 AliFMDCorrSecondaryMap.cxx:129 AliFMDCorrSecondaryMap.cxx:130 AliFMDCorrSecondaryMap.cxx:131 AliFMDCorrSecondaryMap.cxx:132 AliFMDCorrSecondaryMap.cxx:133 AliFMDCorrSecondaryMap.cxx:134 AliFMDCorrSecondaryMap.cxx:135 AliFMDCorrSecondaryMap.cxx:136 AliFMDCorrSecondaryMap.cxx:137 AliFMDCorrSecondaryMap.cxx:138 AliFMDCorrSecondaryMap.cxx:139 AliFMDCorrSecondaryMap.cxx:140 AliFMDCorrSecondaryMap.cxx:141 AliFMDCorrSecondaryMap.cxx:142 AliFMDCorrSecondaryMap.cxx:143 AliFMDCorrSecondaryMap.cxx:144 AliFMDCorrSecondaryMap.cxx:145 AliFMDCorrSecondaryMap.cxx:146 AliFMDCorrSecondaryMap.cxx:147 AliFMDCorrSecondaryMap.cxx:148 AliFMDCorrSecondaryMap.cxx:149 AliFMDCorrSecondaryMap.cxx:150 AliFMDCorrSecondaryMap.cxx:151 AliFMDCorrSecondaryMap.cxx:152 AliFMDCorrSecondaryMap.cxx:153 AliFMDCorrSecondaryMap.cxx:154 AliFMDCorrSecondaryMap.cxx:155 AliFMDCorrSecondaryMap.cxx:156 AliFMDCorrSecondaryMap.cxx:157 AliFMDCorrSecondaryMap.cxx:158 AliFMDCorrSecondaryMap.cxx:159 AliFMDCorrSecondaryMap.cxx:160 AliFMDCorrSecondaryMap.cxx:161 AliFMDCorrSecondaryMap.cxx:162 AliFMDCorrSecondaryMap.cxx:163 AliFMDCorrSecondaryMap.cxx:164 AliFMDCorrSecondaryMap.cxx:165 AliFMDCorrSecondaryMap.cxx:166 AliFMDCorrSecondaryMap.cxx:167 AliFMDCorrSecondaryMap.cxx:168 AliFMDCorrSecondaryMap.cxx:169 AliFMDCorrSecondaryMap.cxx:170 AliFMDCorrSecondaryMap.cxx:171 AliFMDCorrSecondaryMap.cxx:172 AliFMDCorrSecondaryMap.cxx:173 AliFMDCorrSecondaryMap.cxx:174 AliFMDCorrSecondaryMap.cxx:175 AliFMDCorrSecondaryMap.cxx:176 AliFMDCorrSecondaryMap.cxx:177 AliFMDCorrSecondaryMap.cxx:178 AliFMDCorrSecondaryMap.cxx:179 AliFMDCorrSecondaryMap.cxx:180 AliFMDCorrSecondaryMap.cxx:181 AliFMDCorrSecondaryMap.cxx:182 AliFMDCorrSecondaryMap.cxx:183 AliFMDCorrSecondaryMap.cxx:184 AliFMDCorrSecondaryMap.cxx:185 AliFMDCorrSecondaryMap.cxx:186 AliFMDCorrSecondaryMap.cxx:187 AliFMDCorrSecondaryMap.cxx:188 AliFMDCorrSecondaryMap.cxx:189 AliFMDCorrSecondaryMap.cxx:190 AliFMDCorrSecondaryMap.cxx:191 AliFMDCorrSecondaryMap.cxx:192 AliFMDCorrSecondaryMap.cxx:193 AliFMDCorrSecondaryMap.cxx:194 AliFMDCorrSecondaryMap.cxx:195 AliFMDCorrSecondaryMap.cxx:196 AliFMDCorrSecondaryMap.cxx:197 AliFMDCorrSecondaryMap.cxx:198 AliFMDCorrSecondaryMap.cxx:199 AliFMDCorrSecondaryMap.cxx:200 AliFMDCorrSecondaryMap.cxx:201 AliFMDCorrSecondaryMap.cxx:202 AliFMDCorrSecondaryMap.cxx:203 AliFMDCorrSecondaryMap.cxx:204 AliFMDCorrSecondaryMap.cxx:205 AliFMDCorrSecondaryMap.cxx:206 AliFMDCorrSecondaryMap.cxx:207 AliFMDCorrSecondaryMap.cxx:208 AliFMDCorrSecondaryMap.cxx:209 AliFMDCorrSecondaryMap.cxx:210 AliFMDCorrSecondaryMap.cxx:211 AliFMDCorrSecondaryMap.cxx:212 AliFMDCorrSecondaryMap.cxx:213 AliFMDCorrSecondaryMap.cxx:214 AliFMDCorrSecondaryMap.cxx:215 AliFMDCorrSecondaryMap.cxx:216 AliFMDCorrSecondaryMap.cxx:217 AliFMDCorrSecondaryMap.cxx:218 AliFMDCorrSecondaryMap.cxx:219 AliFMDCorrSecondaryMap.cxx:220 AliFMDCorrSecondaryMap.cxx:221 AliFMDCorrSecondaryMap.cxx:222 AliFMDCorrSecondaryMap.cxx:223 AliFMDCorrSecondaryMap.cxx:224 AliFMDCorrSecondaryMap.cxx:225 AliFMDCorrSecondaryMap.cxx:226 AliFMDCorrSecondaryMap.cxx:227 AliFMDCorrSecondaryMap.cxx:228 AliFMDCorrSecondaryMap.cxx:229 AliFMDCorrSecondaryMap.cxx:230 AliFMDCorrSecondaryMap.cxx:231 AliFMDCorrSecondaryMap.cxx:232 AliFMDCorrSecondaryMap.cxx:233 AliFMDCorrSecondaryMap.cxx:234 AliFMDCorrSecondaryMap.cxx:235 AliFMDCorrSecondaryMap.cxx:236 AliFMDCorrSecondaryMap.cxx:237 AliFMDCorrSecondaryMap.cxx:238 AliFMDCorrSecondaryMap.cxx:239 AliFMDCorrSecondaryMap.cxx:240 AliFMDCorrSecondaryMap.cxx:241 AliFMDCorrSecondaryMap.cxx:242 AliFMDCorrSecondaryMap.cxx:243 AliFMDCorrSecondaryMap.cxx:244 AliFMDCorrSecondaryMap.cxx:245 AliFMDCorrSecondaryMap.cxx:246 AliFMDCorrSecondaryMap.cxx:247 AliFMDCorrSecondaryMap.cxx:248 AliFMDCorrSecondaryMap.cxx:249 AliFMDCorrSecondaryMap.cxx:250 AliFMDCorrSecondaryMap.cxx:251 AliFMDCorrSecondaryMap.cxx:252 AliFMDCorrSecondaryMap.cxx:253 AliFMDCorrSecondaryMap.cxx:254 AliFMDCorrSecondaryMap.cxx:255 AliFMDCorrSecondaryMap.cxx:256 AliFMDCorrSecondaryMap.cxx:257 AliFMDCorrSecondaryMap.cxx:258 AliFMDCorrSecondaryMap.cxx:259 AliFMDCorrSecondaryMap.cxx:260 AliFMDCorrSecondaryMap.cxx:261 AliFMDCorrSecondaryMap.cxx:262 AliFMDCorrSecondaryMap.cxx:263 AliFMDCorrSecondaryMap.cxx:264 AliFMDCorrSecondaryMap.cxx:265 AliFMDCorrSecondaryMap.cxx:266 AliFMDCorrSecondaryMap.cxx:267 AliFMDCorrSecondaryMap.cxx:268 AliFMDCorrSecondaryMap.cxx:269 AliFMDCorrSecondaryMap.cxx:270 AliFMDCorrSecondaryMap.cxx:271 AliFMDCorrSecondaryMap.cxx:272 AliFMDCorrSecondaryMap.cxx:273 AliFMDCorrSecondaryMap.cxx:274 AliFMDCorrSecondaryMap.cxx:275 AliFMDCorrSecondaryMap.cxx:276 AliFMDCorrSecondaryMap.cxx:277 AliFMDCorrSecondaryMap.cxx:278 AliFMDCorrSecondaryMap.cxx:279 AliFMDCorrSecondaryMap.cxx:280 AliFMDCorrSecondaryMap.cxx:281 AliFMDCorrSecondaryMap.cxx:282 AliFMDCorrSecondaryMap.cxx:283 AliFMDCorrSecondaryMap.cxx:284 AliFMDCorrSecondaryMap.cxx:285 AliFMDCorrSecondaryMap.cxx:286 AliFMDCorrSecondaryMap.cxx:287 AliFMDCorrSecondaryMap.cxx:288 AliFMDCorrSecondaryMap.cxx:289 AliFMDCorrSecondaryMap.cxx:290 AliFMDCorrSecondaryMap.cxx:291 AliFMDCorrSecondaryMap.cxx:292 AliFMDCorrSecondaryMap.cxx:293 AliFMDCorrSecondaryMap.cxx:294 AliFMDCorrSecondaryMap.cxx:295 AliFMDCorrSecondaryMap.cxx:296 AliFMDCorrSecondaryMap.cxx:297 AliFMDCorrSecondaryMap.cxx:298 AliFMDCorrSecondaryMap.cxx:299 AliFMDCorrSecondaryMap.cxx:300 AliFMDCorrSecondaryMap.cxx:301 AliFMDCorrSecondaryMap.cxx:302 AliFMDCorrSecondaryMap.cxx:303 AliFMDCorrSecondaryMap.cxx:304 AliFMDCorrSecondaryMap.cxx:305 AliFMDCorrSecondaryMap.cxx:306 AliFMDCorrSecondaryMap.cxx:307 AliFMDCorrSecondaryMap.cxx:308 AliFMDCorrSecondaryMap.cxx:309 AliFMDCorrSecondaryMap.cxx:310 AliFMDCorrSecondaryMap.cxx:311 AliFMDCorrSecondaryMap.cxx:312 AliFMDCorrSecondaryMap.cxx:313 AliFMDCorrSecondaryMap.cxx:314 AliFMDCorrSecondaryMap.cxx:315 AliFMDCorrSecondaryMap.cxx:316 AliFMDCorrSecondaryMap.cxx:317 AliFMDCorrSecondaryMap.cxx:318 AliFMDCorrSecondaryMap.cxx:319 AliFMDCorrSecondaryMap.cxx:320 AliFMDCorrSecondaryMap.cxx:321 AliFMDCorrSecondaryMap.cxx:322 AliFMDCorrSecondaryMap.cxx:323 AliFMDCorrSecondaryMap.cxx:324 AliFMDCorrSecondaryMap.cxx:325 AliFMDCorrSecondaryMap.cxx:326 AliFMDCorrSecondaryMap.cxx:327 AliFMDCorrSecondaryMap.cxx:328 AliFMDCorrSecondaryMap.cxx:329 AliFMDCorrSecondaryMap.cxx:330 AliFMDCorrSecondaryMap.cxx:331