#include "AliAODForwardMult.h"
#include <TBrowser.h>
#include <iostream>
#include <TMath.h>
#include <TObjString.h>
#include <TObjArray.h>
#include "AliLog.h"
ClassImp(AliAODForwardMult)
#ifdef DOXY_INPUT
;
#endif
const Float_t AliAODForwardMult::fgkInvalidIpZ = 1e6;
AliAODForwardMult::AliAODForwardMult()
: fIsMC(false),
fHist(),
fTriggers(0),
fIpZ(fgkInvalidIpZ),
fCentrality(-1),
fNClusters(0)
{
}
AliAODForwardMult::AliAODForwardMult(Bool_t isMC)
: fIsMC(isMC),
fHist("forwardMult", "d^{2}N_{ch}/d#etad#varphi in the forward regions",
200, -4, 6, 20, 0, 2*TMath::Pi()),
fTriggers(0),
fIpZ(fgkInvalidIpZ),
fCentrality(-1),
fNClusters(0)
{
fHist.SetXTitle("#eta");
fHist.SetYTitle("#varphi [radians]");
fHist.SetZTitle("#frac{d^{2}N_{ch}}{d#etad#varphi}");
fHist.SetDirectory(0);
fHist.Sumw2();
}
void
AliAODForwardMult::Init(const TAxis& etaAxis)
{
fHist.SetBins(etaAxis.GetNbins(), etaAxis.GetXmin(), etaAxis.GetXmax(),
20, 0, 2*TMath::Pi());
}
void
AliAODForwardMult::Clear(Option_t* option)
{
fHist.Reset(option);
fTriggers = 0;
fIpZ = fgkInvalidIpZ;
fNClusters = 0;
}
void
AliAODForwardMult::SetSNN(UShort_t snn)
{
fHist.SetBinContent(0,0,snn);
}
void
AliAODForwardMult::SetSystem(UShort_t sys)
{
fHist.SetBinContent(fHist.GetNbinsX()+1,0,sys);
}
Bool_t
AliAODForwardMult::HasIpZ() const
{
return TMath::Abs(fIpZ - fgkInvalidIpZ) > 1;
}
UShort_t
AliAODForwardMult::GetSNN() const
{
return UShort_t(fHist.GetBinContent(0,0));
}
UShort_t
AliAODForwardMult::GetSystem() const
{
return UShort_t(fHist.GetBinContent(fHist.GetNbinsX()+1,0));
}
void
AliAODForwardMult::Browse(TBrowser* b)
{
static TObjString ipz;
static TObjString trg;
static TObjString cnt;
static TObjString ncl;
ipz = Form("ip_z=%fcm", fIpZ);
trg = GetTriggerString(fTriggers);
cnt = Form("%+6.1f%%", fCentrality);
ncl = Form("%d clusters", fNClusters);
b->Add(&fHist);
b->Add(&ipz);
b->Add(&trg);
b->Add(&cnt);
b->Add(&ncl);
}
namespace {
void AppendAnd(TString& trg, const TString& what)
{
if (!trg.IsNull()) trg.Append(" & ");
trg.Append(what);
}
}
const Char_t*
AliAODForwardMult::GetTriggerString(UInt_t mask)
{
static TString trg;
trg = "";
if ((mask & kInel) != 0x0) AppendAnd(trg, "MBOR");
if ((mask & kInelGt0) != 0x0) AppendAnd(trg, "INEL>0");
if ((mask & kNSD) != 0x0) AppendAnd(trg, "MBAND");
if ((mask & kV0AND) != 0x0) AppendAnd(trg, "V0AND");
if ((mask & kA) != 0x0) AppendAnd(trg, "A");
if ((mask & kB) != 0x0) AppendAnd(trg, "B");
if ((mask & kC) != 0x0) AppendAnd(trg, "C");
if ((mask & kE) != 0x0) AppendAnd(trg, "E");
if ((mask & kMCNSD) != 0x0) AppendAnd(trg, "MCNSD");
if ((mask & kNClusterGt0) != 0x0) AppendAnd(trg, "NCluster>0");
if ((mask & kSatellite) != 0x0) AppendAnd(trg, "Satellite");
if ((mask & kOffline) != 0x0) AppendAnd(trg, "Offline");
return trg.Data();
}
TH1I*
AliAODForwardMult::MakeTriggerHistogram(const char* name, Int_t mask)
{
TString sel("");
TString andSel("");
if (mask > 0) {
sel = GetTriggerString(mask);
andSel = GetTriggerString(mask & ~kB);
andSel.Prepend(" & ");
}
TH1I* ret = new TH1I(name, "Triggers", kAccepted+1, -.5, kAccepted+.5);
ret->SetYTitle("Events");
ret->SetFillColor(kRed+1);
ret->SetFillStyle(3001);
ret->GetXaxis()->SetBinLabel(kBinAll, "All events");
ret->GetXaxis()->SetBinLabel(kBinB, Form("B (Coll.)%s",
andSel.Data()));
ret->GetXaxis()->SetBinLabel(kBinA, Form("A%s", andSel.Data()));
ret->GetXaxis()->SetBinLabel(kBinC, Form("C%s", andSel.Data()));
ret->GetXaxis()->SetBinLabel(kBinE, Form("E%s", andSel.Data()));
ret->GetXaxis()->SetBinLabel(kBinInel, "Coll. & MBOR");
ret->GetXaxis()->SetBinLabel(kBinInelGt0, "Coll. & MBOR&&nTracklet>0");
ret->GetXaxis()->SetBinLabel(kBinNSD, "Coll. & V0AND||FASTOR>5");
ret->GetXaxis()->SetBinLabel(kBinV0AND, "Coll. & V0AND");
ret->GetXaxis()->SetBinLabel(kBinMCNSD, "NSD (MC truth)");
ret->GetXaxis()->SetBinLabel(kBinSatellite, "Satellite");
ret->GetXaxis()->SetBinLabel(kBinPileUp, "w/Pileup");
ret->GetXaxis()->SetBinLabel(kBinOffline, "w/Offline");
ret->GetXaxis()->SetBinLabel(kBinNClusterGt0, "w/N_{cluster}>1");
ret->GetXaxis()->SetBinLabel(kWithVertex, "w/Vertex");
ret->GetXaxis()->SetBinLabel(kWithTrigger, Form("w/Selected trigger (%s)",
sel.Data()));
ret->GetXaxis()->SetBinLabel(kAccepted, "Accepted by cut");
ret->GetXaxis()->SetNdivisions(kAccepted, false);
ret->SetStats(0);
return ret;
}
TH1I*
AliAODForwardMult::MakeStatusHistogram(const char* name)
{
TH1I* ret = new TH1I(name, "Event selection status",
kWrongVertex+1, -.5, kWrongVertex+.5);
ret->SetYTitle("Events");
ret->SetFillColor(kBlue+1);
ret->SetFillStyle(3001);
ret->GetXaxis()->SetBinLabel(kGoodEvent+1, "Good");
ret->GetXaxis()->SetBinLabel(kWrongCentrality+1, "Out-of-range centrality");
ret->GetXaxis()->SetBinLabel(kWrongTrigger+1, "Wrong trigger");
ret->GetXaxis()->SetBinLabel(kIsPileup+1, "Pile-up");
ret->GetXaxis()->SetBinLabel(kNoVertex+1, "No IP_{z}");
ret->GetXaxis()->SetBinLabel(kWrongVertex+1, "Out-or-range IP_{z}");
ret->GetXaxis()->SetNdivisions(kWrongVertex, false);
ret->SetStats(0);
return ret;
}
UInt_t
AliAODForwardMult::MakeTriggerMask(const char* what)
{
UShort_t trgMask = 0;
TString trgs(what);
trgs.ToUpper();
TObjArray* parts = trgs.Tokenize("&");
TObjString* trg;
TIter next(parts);
while ((trg = static_cast<TObjString*>(next()))) {
TString s(trg->GetString());
s.Strip(TString::kBoth, ' ');
s.ToUpper();
if (s.IsNull()) continue;
if (s.CompareTo("INEL") == 0) trgMask |= kInel;
else if (s.CompareTo("MBOR") == 0) trgMask |= kInel;
else if (s.CompareTo("INEL>0") == 0) trgMask |= kInelGt0;
else if (s.CompareTo("INELGT0") == 0) trgMask |= kInelGt0;
else if (s.CompareTo("MBAND") == 0) trgMask |= kNSD;
else if (s.CompareTo("NSD") == 0) trgMask |= kV0AND;
else if (s.CompareTo("V0AND") == 0) trgMask |= kV0AND;
else if (s.CompareTo("MCNSD") == 0) trgMask |= kMCNSD;
else if (s.CompareTo("B") == 0) trgMask |= kB;
else if (s.CompareTo("A") == 0) trgMask |= kA;
else if (s.CompareTo("C") == 0) trgMask |= kC;
else if (s.CompareTo("SAT") == 0) trgMask |= kSatellite;
else if (s.CompareTo("E") == 0) trgMask |= kE;
else if (s.CompareTo("NCLUSTER>0") == 0) trgMask |= kNClusterGt0;
else if (s.CompareTo("CENT") == 0) trgMask |= kInel;
else if (s.CompareTo("OFFLINE") == 0) trgMask |= kOffline;
else
AliWarningGeneral("MakeTriggerMask",
Form("Unknown trigger %s", s.Data()));
}
delete parts;
return trgMask;
}
Bool_t
AliAODForwardMult::CheckEvent(Int_t triggerMask,
Double_t vzMin, Double_t vzMax,
UShort_t cMin, UShort_t cMax,
TH1* hist, TH1* status,
Bool_t removePileup) const
{
if (cMin < cMax && (cMin > fCentrality || cMax <= fCentrality)) {
if (status) status->Fill(kWrongCentrality);
return false;
}
if (hist) {
Int_t tmp = triggerMask & ~kB;
hist->AddBinContent(kBinAll);
if (IsTriggerBits(kB|tmp)) hist->AddBinContent(kBinB);
if (IsTriggerBits(kA|tmp)) hist->AddBinContent(kBinA);
if (IsTriggerBits(kC|tmp)) hist->AddBinContent(kBinC);
if (IsTriggerBits(kE|tmp)) hist->AddBinContent(kBinE);
if (IsTriggerBits(kB|kInel)) hist->AddBinContent(kBinInel);
if (IsTriggerBits(kB|kInelGt0)) hist->AddBinContent(kBinInelGt0);
if (IsTriggerBits(kB|kNSD)) hist->AddBinContent(kBinNSD);
if (IsTriggerBits(kB|kV0AND)) hist->AddBinContent(kBinV0AND);
if (IsTriggerBits(kPileUp)) hist->AddBinContent(kBinPileUp);
if (IsTriggerBits(kMCNSD)) hist->AddBinContent(kBinMCNSD);
if (IsTriggerBits(kOffline)) hist->AddBinContent(kBinOffline);
if (IsTriggerBits(kNClusterGt0)) hist->AddBinContent(kBinNClusterGt0);
if (IsTriggerBits(kSatellite)) hist->AddBinContent(kBinSatellite);
if (IsTriggerBits(triggerMask) && !IsTriggerBits(kB|tmp))
Warning("CheckEvent", "event: 0x%x, mask: 0x%x, tmp: 0x%x, tmp|b: 0x%x",
fTriggers, triggerMask, tmp, tmp|kB);
}
Int_t mask = triggerMask;
if (!IsTriggerBits(mask)) {
if (status) status->Fill(kWrongTrigger);
return false;
}
if (IsTriggerBits(kPileUp)) {
if (status) status->Fill(kIsPileup);
if (removePileup) return false;
}
if (hist) hist->AddBinContent(kWithTrigger);
if (vzMin < vzMax && !HasIpZ()) {
if (status) status->Fill(kNoVertex);
return false;
}
if (hist) hist->AddBinContent(kWithVertex);
if (vzMin < vzMax && !InRange(vzMin, vzMax)) {
if (status) status->Fill(kWrongVertex);
return false;
}
if (hist) hist->AddBinContent(kAccepted);
if (status) status->Fill(kGoodEvent);
return true;
}
void
AliAODForwardMult::Print(Option_t* option) const
{
fHist.Print(option);
UShort_t sys = GetSystem();
TString str = "unknown";
switch (sys) {
case 1: str = "pp"; break;
case 2: str = "PbPb"; break;
case 3: str = "pPb" ; break;
}
std::cout << "Ipz: " << fIpZ << "cm " << (HasIpZ() ? "" : "in")
<< "valid\n"
<< "Triggers: " << GetTriggerString(fTriggers) << "\n"
<< "sNN: " << GetSNN() << "GeV\n"
<< "System: " << str << "\n"
<< "Centrality: " << fCentrality << "%"
<< std::endl;
}
AliAODForwardMult.cxx:100 AliAODForwardMult.cxx:101 AliAODForwardMult.cxx:102 AliAODForwardMult.cxx:103 AliAODForwardMult.cxx:104 AliAODForwardMult.cxx:105 AliAODForwardMult.cxx:106 AliAODForwardMult.cxx:107 AliAODForwardMult.cxx:108 AliAODForwardMult.cxx:109 AliAODForwardMult.cxx:110 AliAODForwardMult.cxx:111 AliAODForwardMult.cxx:112 AliAODForwardMult.cxx:113 AliAODForwardMult.cxx:114 AliAODForwardMult.cxx:115 AliAODForwardMult.cxx:116 AliAODForwardMult.cxx:117 AliAODForwardMult.cxx:118 AliAODForwardMult.cxx:119 AliAODForwardMult.cxx:120 AliAODForwardMult.cxx:121 AliAODForwardMult.cxx:122 AliAODForwardMult.cxx:123 AliAODForwardMult.cxx:124 AliAODForwardMult.cxx:125 AliAODForwardMult.cxx:126 AliAODForwardMult.cxx:127 AliAODForwardMult.cxx:128 AliAODForwardMult.cxx:129 AliAODForwardMult.cxx:130 AliAODForwardMult.cxx:131 AliAODForwardMult.cxx:132 AliAODForwardMult.cxx:133 AliAODForwardMult.cxx:134 AliAODForwardMult.cxx:135 AliAODForwardMult.cxx:136 AliAODForwardMult.cxx:137 AliAODForwardMult.cxx:138 AliAODForwardMult.cxx:139 AliAODForwardMult.cxx:140 AliAODForwardMult.cxx:141 AliAODForwardMult.cxx:142 AliAODForwardMult.cxx:143 AliAODForwardMult.cxx:144 AliAODForwardMult.cxx:145 AliAODForwardMult.cxx:146 AliAODForwardMult.cxx:147 AliAODForwardMult.cxx:148 AliAODForwardMult.cxx:149 AliAODForwardMult.cxx:150 AliAODForwardMult.cxx:151 AliAODForwardMult.cxx:152 AliAODForwardMult.cxx:153 AliAODForwardMult.cxx:154 AliAODForwardMult.cxx:155 AliAODForwardMult.cxx:156 AliAODForwardMult.cxx:157 AliAODForwardMult.cxx:158 AliAODForwardMult.cxx:159 AliAODForwardMult.cxx:160 AliAODForwardMult.cxx:161 AliAODForwardMult.cxx:162 AliAODForwardMult.cxx:163 AliAODForwardMult.cxx:164 AliAODForwardMult.cxx:165 AliAODForwardMult.cxx:166 AliAODForwardMult.cxx:167 AliAODForwardMult.cxx:168 AliAODForwardMult.cxx:169 AliAODForwardMult.cxx:170 AliAODForwardMult.cxx:171 AliAODForwardMult.cxx:172 AliAODForwardMult.cxx:173 AliAODForwardMult.cxx:174 AliAODForwardMult.cxx:175 AliAODForwardMult.cxx:176 AliAODForwardMult.cxx:177 AliAODForwardMult.cxx:178 AliAODForwardMult.cxx:179 AliAODForwardMult.cxx:180 AliAODForwardMult.cxx:181 AliAODForwardMult.cxx:182 AliAODForwardMult.cxx:183 AliAODForwardMult.cxx:184 AliAODForwardMult.cxx:185 AliAODForwardMult.cxx:186 AliAODForwardMult.cxx:187 AliAODForwardMult.cxx:188 AliAODForwardMult.cxx:189 AliAODForwardMult.cxx:190 AliAODForwardMult.cxx:191 AliAODForwardMult.cxx:192 AliAODForwardMult.cxx:193 AliAODForwardMult.cxx:194 AliAODForwardMult.cxx:195 AliAODForwardMult.cxx:196 AliAODForwardMult.cxx:197 AliAODForwardMult.cxx:198 AliAODForwardMult.cxx:199 AliAODForwardMult.cxx:200 AliAODForwardMult.cxx:201 AliAODForwardMult.cxx:202 AliAODForwardMult.cxx:203 AliAODForwardMult.cxx:204 AliAODForwardMult.cxx:205 AliAODForwardMult.cxx:206 AliAODForwardMult.cxx:207 AliAODForwardMult.cxx:208 AliAODForwardMult.cxx:209 AliAODForwardMult.cxx:210 AliAODForwardMult.cxx:211 AliAODForwardMult.cxx:212 AliAODForwardMult.cxx:213 AliAODForwardMult.cxx:214 AliAODForwardMult.cxx:215 AliAODForwardMult.cxx:216 AliAODForwardMult.cxx:217 AliAODForwardMult.cxx:218 AliAODForwardMult.cxx:219 AliAODForwardMult.cxx:220 AliAODForwardMult.cxx:221 AliAODForwardMult.cxx:222 AliAODForwardMult.cxx:223 AliAODForwardMult.cxx:224 AliAODForwardMult.cxx:225 AliAODForwardMult.cxx:226 AliAODForwardMult.cxx:227 AliAODForwardMult.cxx:228 AliAODForwardMult.cxx:229 AliAODForwardMult.cxx:230 AliAODForwardMult.cxx:231 AliAODForwardMult.cxx:232 AliAODForwardMult.cxx:233 AliAODForwardMult.cxx:234 AliAODForwardMult.cxx:235 AliAODForwardMult.cxx:236 AliAODForwardMult.cxx:237 AliAODForwardMult.cxx:238 AliAODForwardMult.cxx:239 AliAODForwardMult.cxx:240 AliAODForwardMult.cxx:241 AliAODForwardMult.cxx:242 AliAODForwardMult.cxx:243 AliAODForwardMult.cxx:244 AliAODForwardMult.cxx:245 AliAODForwardMult.cxx:246 AliAODForwardMult.cxx:247 AliAODForwardMult.cxx:248 AliAODForwardMult.cxx:249 AliAODForwardMult.cxx:250 AliAODForwardMult.cxx:251 AliAODForwardMult.cxx:252 AliAODForwardMult.cxx:253 AliAODForwardMult.cxx:254 AliAODForwardMult.cxx:255 AliAODForwardMult.cxx:256 AliAODForwardMult.cxx:257 AliAODForwardMult.cxx:258 AliAODForwardMult.cxx:259 AliAODForwardMult.cxx:260 AliAODForwardMult.cxx:261 AliAODForwardMult.cxx:262 AliAODForwardMult.cxx:263 AliAODForwardMult.cxx:264 AliAODForwardMult.cxx:265 AliAODForwardMult.cxx:266 AliAODForwardMult.cxx:267 AliAODForwardMult.cxx:268 AliAODForwardMult.cxx:269 AliAODForwardMult.cxx:270 AliAODForwardMult.cxx:271 AliAODForwardMult.cxx:272 AliAODForwardMult.cxx:273 AliAODForwardMult.cxx:274 AliAODForwardMult.cxx:275 AliAODForwardMult.cxx:276 AliAODForwardMult.cxx:277 AliAODForwardMult.cxx:278 AliAODForwardMult.cxx:279 AliAODForwardMult.cxx:280 AliAODForwardMult.cxx:281 AliAODForwardMult.cxx:282 AliAODForwardMult.cxx:283 AliAODForwardMult.cxx:284 AliAODForwardMult.cxx:285 AliAODForwardMult.cxx:286 AliAODForwardMult.cxx:287 AliAODForwardMult.cxx:288 AliAODForwardMult.cxx:289 AliAODForwardMult.cxx:290 AliAODForwardMult.cxx:291 AliAODForwardMult.cxx:292 AliAODForwardMult.cxx:293 AliAODForwardMult.cxx:294 AliAODForwardMult.cxx:295 AliAODForwardMult.cxx:296 AliAODForwardMult.cxx:297 AliAODForwardMult.cxx:298 AliAODForwardMult.cxx:299 AliAODForwardMult.cxx:300 AliAODForwardMult.cxx:301 AliAODForwardMult.cxx:302 AliAODForwardMult.cxx:303 AliAODForwardMult.cxx:304 AliAODForwardMult.cxx:305 AliAODForwardMult.cxx:306 AliAODForwardMult.cxx:307 AliAODForwardMult.cxx:308 AliAODForwardMult.cxx:309 AliAODForwardMult.cxx:310 AliAODForwardMult.cxx:311 AliAODForwardMult.cxx:312 AliAODForwardMult.cxx:313 AliAODForwardMult.cxx:314 AliAODForwardMult.cxx:315 AliAODForwardMult.cxx:316 AliAODForwardMult.cxx:317 AliAODForwardMult.cxx:318 AliAODForwardMult.cxx:319 AliAODForwardMult.cxx:320 AliAODForwardMult.cxx:321 AliAODForwardMult.cxx:322 AliAODForwardMult.cxx:323 AliAODForwardMult.cxx:324 AliAODForwardMult.cxx:325 AliAODForwardMult.cxx:326 AliAODForwardMult.cxx:327 AliAODForwardMult.cxx:328 AliAODForwardMult.cxx:329 AliAODForwardMult.cxx:330 AliAODForwardMult.cxx:331 AliAODForwardMult.cxx:332 AliAODForwardMult.cxx:333 AliAODForwardMult.cxx:334 AliAODForwardMult.cxx:335 AliAODForwardMult.cxx:336 AliAODForwardMult.cxx:337 AliAODForwardMult.cxx:338 AliAODForwardMult.cxx:339 AliAODForwardMult.cxx:340 AliAODForwardMult.cxx:341 AliAODForwardMult.cxx:342 AliAODForwardMult.cxx:343 AliAODForwardMult.cxx:344 AliAODForwardMult.cxx:345 AliAODForwardMult.cxx:346 AliAODForwardMult.cxx:347 AliAODForwardMult.cxx:348 AliAODForwardMult.cxx:349 AliAODForwardMult.cxx:350 AliAODForwardMult.cxx:351 AliAODForwardMult.cxx:352 AliAODForwardMult.cxx:353 AliAODForwardMult.cxx:354 AliAODForwardMult.cxx:355 AliAODForwardMult.cxx:356 AliAODForwardMult.cxx:357 AliAODForwardMult.cxx:358 AliAODForwardMult.cxx:359 AliAODForwardMult.cxx:360 AliAODForwardMult.cxx:361 AliAODForwardMult.cxx:362 AliAODForwardMult.cxx:363 AliAODForwardMult.cxx:364 AliAODForwardMult.cxx:365 AliAODForwardMult.cxx:366 AliAODForwardMult.cxx:367 AliAODForwardMult.cxx:368 AliAODForwardMult.cxx:369 AliAODForwardMult.cxx:370 AliAODForwardMult.cxx:371 AliAODForwardMult.cxx:372 AliAODForwardMult.cxx:373 AliAODForwardMult.cxx:374 AliAODForwardMult.cxx:375 AliAODForwardMult.cxx:376 AliAODForwardMult.cxx:377 AliAODForwardMult.cxx:378 AliAODForwardMult.cxx:379 AliAODForwardMult.cxx:380 AliAODForwardMult.cxx:381 AliAODForwardMult.cxx:382 AliAODForwardMult.cxx:383 AliAODForwardMult.cxx:384 AliAODForwardMult.cxx:385 AliAODForwardMult.cxx:386 AliAODForwardMult.cxx:387 AliAODForwardMult.cxx:388 AliAODForwardMult.cxx:389 AliAODForwardMult.cxx:390 AliAODForwardMult.cxx:391 AliAODForwardMult.cxx:392 AliAODForwardMult.cxx:393 AliAODForwardMult.cxx:394 AliAODForwardMult.cxx:395 AliAODForwardMult.cxx:396 AliAODForwardMult.cxx:397 AliAODForwardMult.cxx:398 AliAODForwardMult.cxx:399 AliAODForwardMult.cxx:400 AliAODForwardMult.cxx:401 AliAODForwardMult.cxx:402 AliAODForwardMult.cxx:403 AliAODForwardMult.cxx:404 AliAODForwardMult.cxx:405 AliAODForwardMult.cxx:406 AliAODForwardMult.cxx:407 AliAODForwardMult.cxx:408 AliAODForwardMult.cxx:409 AliAODForwardMult.cxx:410 AliAODForwardMult.cxx:411 AliAODForwardMult.cxx:412 AliAODForwardMult.cxx:413 AliAODForwardMult.cxx:414 AliAODForwardMult.cxx:415 AliAODForwardMult.cxx:416 AliAODForwardMult.cxx:417 AliAODForwardMult.cxx:418 AliAODForwardMult.cxx:419 AliAODForwardMult.cxx:420 AliAODForwardMult.cxx:421 AliAODForwardMult.cxx:422 AliAODForwardMult.cxx:423 AliAODForwardMult.cxx:424 AliAODForwardMult.cxx:425 AliAODForwardMult.cxx:426 AliAODForwardMult.cxx:427 AliAODForwardMult.cxx:428 AliAODForwardMult.cxx:429 AliAODForwardMult.cxx:430 AliAODForwardMult.cxx:431 AliAODForwardMult.cxx:432 AliAODForwardMult.cxx:433 AliAODForwardMult.cxx:434 AliAODForwardMult.cxx:435 AliAODForwardMult.cxx:436 AliAODForwardMult.cxx:437 AliAODForwardMult.cxx:438 AliAODForwardMult.cxx:439 AliAODForwardMult.cxx:440 AliAODForwardMult.cxx:441 AliAODForwardMult.cxx:442 AliAODForwardMult.cxx:443 AliAODForwardMult.cxx:444 AliAODForwardMult.cxx:445 AliAODForwardMult.cxx:446 AliAODForwardMult.cxx:447 AliAODForwardMult.cxx:448 AliAODForwardMult.cxx:449 AliAODForwardMult.cxx:450 AliAODForwardMult.cxx:451 AliAODForwardMult.cxx:452 AliAODForwardMult.cxx:453