#include <TNamed.h>
#include <TH1D.h>
#include <TString.h>
#include <TFile.h>
#include <TMath.h>
#include <TROOT.h>
#include <TH2F.h>
#include <TF1.h>
#include <TNtuple.h>
#include <TStyle.h>
#include <TGraphErrors.h>
#include <vector>
#include <TMinuit.h>
#include <TStopwatch.h>
#include <TRandom.h>
#include "AliCentralityGlauberFit.h"
#include "AliLog.h"
ClassImp(AliCentralityGlauberFit)
AliCentralityGlauberFit::AliCentralityGlauberFit(const char *filename) :
fNmu(0),
fMulow(0),
fMuhigh(0),
fNk(0),
fKlow(0),
fKhigh(0),
fNalpha(0),
fAlphalow(0),
fAlphahigh(0),
fRebinFactor(0),
fScalemin(0),
fMultmin(0),
fMultmax(0),
fGlauntuple(0),
fNpart(0),
fNcoll(0),
fB(0),
fTaa(0),
fEffi(0),
fhEffi(0),
fTempHist(0),
fGlauberHist(0),
fFastFit(0),
fAncestor(2),
fNBD(0),
fUseChi2(kTRUE),
fUseAverage(kFALSE),
fhAncestor(0),
fNevents(100000),
fNtrials(100),
fInrootfilename(0),
fInntuplename(0),
fOutrootfilename(0),
fOutntuplename(0),
fAncfilename("ancestor_hists.root"),
fHistnames()
{
TFile *f = 0;
if (filename) {
f = TFile::Open(filename);
fGlauntuple = (TNtuple*) f->Get("nt_Pb_Pb");
fGlauntuple->SetBranchAddress("Npart",&fNpart);
fGlauntuple->SetBranchAddress("Ncoll",&fNcoll);
fGlauntuple->SetBranchAddress("B",&fB);
fGlauntuple->SetBranchAddress("tAA",&fTaa);
}
fNBD = new TF1 ("fNBD", AliCentralityGlauberFit::NBDFunc, 0, 100,2);
}
void AliCentralityGlauberFit::SetRangeToFit(Double_t fmultmin, Double_t fmultmax)
{
fMultmin=fmultmin;
fMultmax=fmultmax;
}
void AliCentralityGlauberFit::SetRangeToScale(Double_t fscalemin)
{
fScalemin=fscalemin;
}
void AliCentralityGlauberFit::SetGlauberParam(
Int_t Nmu,
Double_t mulow,
Double_t muhigh,
Int_t Nk,
Double_t klow,
Double_t khigh,
Int_t Nalpha,
Double_t alphalow,
Double_t alphahigh)
{
fNmu=Nmu;
fMulow=mulow;
fMuhigh=muhigh;
fNk=Nk;
fKlow=klow;
fKhigh=khigh;
fNalpha=Nalpha;
fAlphalow=alphalow;
fAlphahigh=alphahigh;
}
void AliCentralityGlauberFit::MakeFits()
{
TH1F *hDATA;
TH1F *thistGlau;
TFile *inrootfile;
TFile *outrootfile;
std::cout << "input file " << fInrootfilename << std::endl;
std::cout << "output file " << fOutrootfilename << std::endl;
inrootfile = new TFile(fInrootfilename,"OPEN");
outrootfile = new TFile(fOutrootfilename,"RECREATE");
std::vector<TString>::const_iterator hni;
for(hni=fHistnames.begin(); hni!=fHistnames.end(); hni++) {
hDATA = (TH1F*) (inrootfile->Get(*hni));
if (!hDATA) {
TList *list = (TList*) (inrootfile->Get("CentralityStat"));
hDATA = (TH1F*) (list->FindObject(*hni));
}
hDATA->Rebin(fRebinFactor);
Double_t chi2min = 9999999.0;
Double_t alpha_min=-1;
Double_t mu_min=-1;
Double_t k_min=-1;
Double_t alpha, mu, k, chi2;
for (Int_t nalpha=0;nalpha<fNalpha;nalpha++) {
alpha = fAlphalow + ((Double_t) nalpha ) * (fAlphahigh - fAlphalow ) / fNalpha;
mu=0.0;
for (Int_t nmu=0; nmu<fNmu; nmu++) {
mu = fMulow + ((Double_t) nmu ) * (fMuhigh - fMulow ) / fNmu;
for (Int_t nk=0; nk<fNk; nk++) {
k = fKlow + ((Double_t) nk ) * (fKhigh - fKlow ) / fNk;
thistGlau = GlauberHisto(mu,k,alpha,hDATA,kFALSE);
chi2 = CalculateChi2(hDATA,thistGlau);
if ( chi2 < chi2min ) {
chi2min = chi2;
alpha_min=alpha;
mu_min=mu;
k_min=k;
}
}
}
}
thistGlau = GlauberHisto(mu_min,k_min,alpha_min,hDATA,kTRUE);
TH1F * hGLAU = 0x0;
hGLAU = (TH1F *) thistGlau->Clone("hGLAU");
hGLAU->SetName( ((TString)hDATA->GetName()).Append(Form("_GLAU")));
hGLAU->SetTitle( ((TString)hDATA->GetName()).Append(Form("_GLAU_%.3f_%.3f_%.3f",
mu_min,k_min,alpha_min)));
Double_t mcintegral = hGLAU->Integral(hGLAU->FindBin(fScalemin),hGLAU->GetNbinsX());
Double_t scale = (hDATA->Integral(hDATA->FindBin(fScalemin),hDATA->GetNbinsX())/mcintegral);
hGLAU->Scale(scale);
fhEffi = GetTriggerEfficiencyFunction(hDATA, hGLAU);
SaveHisto(hDATA,hGLAU,fhEffi,outrootfile);
std::cout << "chi2 min is " << chi2min << std::endl;
std::cout << "fitted " << hGLAU->Integral(hGLAU->FindBin(fMultmin),
hGLAU->FindBin(fMultmax))/hGLAU->Integral()
<< " of the total cross section" << std::endl;
fTempHist=hDATA;
fGlauberHist=hGLAU;
}
inrootfile->Close();
outrootfile->Close();
}
void AliCentralityGlauberFit::MakeFitsMinuitNBD(Double_t alpha, Double_t mu, Double_t k)
{
if (alpha<0)
alpha = fAlphalow;
if (mu<0)
mu = fMulow;
if (k<0)
k = fKlow;
printf("Calling Minuit with starting values: %f %f %f\n", alpha, mu, k);
TH1F *hDATA;
TH1F *thistGlau;
TFile *inrootfile;
TFile *outrootfile;
std::cout << "input file " << fInrootfilename << std::endl;
std::cout << "output file " << fOutrootfilename << std::endl;
inrootfile = new TFile(fInrootfilename,"OPEN");
outrootfile = new TFile(fOutrootfilename,"RECREATE");
std::vector<TString>::const_iterator hni;
for(hni=fHistnames.begin(); hni!=fHistnames.end(); hni++) {
hDATA = (TH1F*) (inrootfile->Get(*hni));
if (!hDATA) {
TList *list = (TList*) (inrootfile->Get("CentralityStat"));
hDATA = (TH1F*) (list->FindObject(*hni));
}
hDATA->Rebin(fRebinFactor);
fTempHist=hDATA;
TH1F *hGLAU = new TH1F("hGLAU","hGLAU",hDATA->GetNbinsX(),0,hDATA->GetNbinsX()*hDATA->GetBinWidth(1));
hGLAU->Sumw2();
if(gMinuit) delete gMinuit;
new TMinuit(3);
gMinuit->mncler();
gMinuit->SetFCN(AliCentralityGlauberFit::MinuitFcnNBD);
gMinuit->SetObjectFit(this);
Double_t arglist[2]={0};
Int_t ierflg;
if (fUseChi2) arglist[0] = 1;
else arglist[0] = 0.5;
gMinuit->mnexcm("SET ERR",arglist, 1, ierflg);
gMinuit->mnparm(0,"alpha", alpha, (fAlphahigh-fAlphalow)/fNalpha, fAlphalow, fAlphahigh, ierflg);
gMinuit->mnparm(1,"mu" , mu, (fMuhigh-fMulow)/fNmu, fMulow, fMuhigh, ierflg);
gMinuit->mnparm(2,"k" , k, (fKhigh-fKlow)/fNk, fKlow, fKhigh, ierflg);
arglist[0] = 100;
arglist[1] = 0.1;
gMinuit->mnexcm("SIMPLEX",arglist, 2, ierflg);
arglist[0] = 1000;
arglist[1] = 0.1;
gMinuit->mnexcm("MIGrad",arglist, 2, ierflg);
if (ierflg != 0) {
AliWarning("Abnormal termination of minimization.");
}
Double_t amin,edm,errdef;
Int_t nvpar, nparx, icstat;
gMinuit->mnstat(amin,edm,errdef,nvpar,nparx,icstat);
Double_t chi2min = amin;
std::cout << "Fit status " << icstat << std::endl;
Double_t alpha_min, mu_min, k_min;
Double_t alpha_mine, mu_mine, k_mine;
gMinuit->GetParameter(0, alpha_min , alpha_mine );
gMinuit->GetParameter(1, mu_min , mu_mine );
gMinuit->GetParameter(2, k_min , k_mine );
std::cout << "chi2 min is " << chi2min << ", " << alpha_min << ", "<< mu_min<< ", "
<< k_min << std::endl;
thistGlau = GlauberHisto(mu_min,k_min,alpha_min,hDATA,kTRUE);
hGLAU = (TH1F *) thistGlau->Clone("hGLAU");
hGLAU->SetName( ((TString)hDATA->GetName()).Append(Form("_GLAU")));
hGLAU->SetTitle( ((TString)hDATA->GetName()).Append(Form("_GLAU_%.3f_%.3f_%.3f",
mu_min,k_min,alpha_min)));
std::cout << "fitted " << hGLAU->Integral(hGLAU->FindBin(fMultmin),
hGLAU->FindBin(fMultmax))/hGLAU->Integral()
<< " of the total cross section" << std::endl;
Double_t mcintegral = hGLAU->Integral(hGLAU->FindBin(fScalemin),hGLAU->GetNbinsX());
Double_t scale = (hDATA->Integral(hDATA->FindBin(fScalemin),hDATA->GetNbinsX())/mcintegral);
hGLAU->Scale(scale);
std::cout << "Chi2 final " << CalculateChi2(hDATA,hGLAU) << std::endl;
fhEffi = GetTriggerEfficiencyFunction(hDATA, hGLAU);
SaveHisto(hDATA,hGLAU,fhEffi,outrootfile);
fGlauberHist=hGLAU;
}
inrootfile->Close();
outrootfile->Close();
}
TH1F *AliCentralityGlauberFit::GlauberHisto(Double_t mu, Double_t k, Double_t alpha,
TH1F *hDATA, Bool_t save)
{
static TH1F *h1 = (TH1F*)hDATA->Clone();
h1->Reset();
h1->SetName(Form("fit_%.3f_%.3f_%.3f",mu,k,alpha));
if (fUseAverage) {
fhAncestor = MakeAncestor(alpha);
for (Int_t np=1; np<=fhAncestor->GetNbinsX(); ++np) {
Double_t nanc = fhAncestor->GetBinCenter(np);
Double_t weights = fhAncestor->GetBinContent(np);
if (weights <= 0) continue;
Int_t trials = (Int_t) (20 * nanc * (Int_t) mu);
if (trials <=0) continue;
for (Int_t j=0; j<trials; j++) {
Double_t nbdvalue = NBD(j, mu * nanc, k * nanc);
h1->Fill((Double_t) j, nbdvalue * weights);
}
}
return h1;
}
TH1F *hSample = fFastFit != 2 ? NBDhist(mu,k) : 0;
TFile *outFile = NULL;
TNtuple *ntuple = NULL;
if (save) {
outFile = new TFile(fOutntuplename,"RECREATE");
ntuple = new TNtuple("gnt", "Glauber ntuple", "Npart:Ncoll:B:tAA:ntot");
}
Int_t nents = 0;
if (fGlauntuple)
nents = fGlauntuple->GetEntries();
for (Int_t i=0;i<fNevents;++i) {
if (fGlauntuple)
fGlauntuple->GetEntry(i % nents);
else {
fNpart = 2;
fNcoll = 1;
}
Int_t n=0;
if (fAncestor == 1) n = (Int_t)(TMath::Power(fNpart,alpha));
else if (fAncestor == 2) n = (Int_t)(alpha * fNpart + (1-alpha) * fNcoll);
else if (fAncestor == 3) n = (Int_t)((1-alpha) * fNpart/2 + alpha * fNcoll);
Int_t ntot=0;
if (fFastFit == 1) {
ntot = (Int_t)(n*hSample->GetRandom());
}
else if (fFastFit == 2) {
Double_t sigma = k*TMath::Sqrt(n*mu);
ntot = (Int_t)(gRandom->Gaus(n*mu,sigma));
}
else {
for(Int_t j = 0; j<(Int_t)n; ++j)
ntot += (Int_t)hSample->GetRandom();
}
h1->Fill(ntot);
if (save)
ntuple->Fill(fNpart,fNcoll,fB,fTaa,ntot);
}
if (save) {
ntuple->Write();
outFile->Close();
}
if (fFastFit != 2) delete hSample;
return h1;
}
Double_t AliCentralityGlauberFit::CalculateChi2(TH1F *hDATA, TH1F *thistGlau)
{
Int_t lowchibin = hDATA->FindBin(fMultmin);
Int_t highchibin = hDATA->FindBin(fMultmax);
Double_t mcintegral = thistGlau->Integral(1,thistGlau->GetNbinsX());
Double_t scale = (hDATA->Integral(1,hDATA->GetNbinsX())/mcintegral);
thistGlau->Scale(scale);
if (fUseChi2) {
Double_t chi2 = 0.0;
for (Int_t i=lowchibin; i<=highchibin; i++) {
if (hDATA->GetBinContent(i) < 1.0) continue;
Double_t diff = TMath::Power((thistGlau->GetBinContent(i) - hDATA->GetBinContent(i)),2);
diff = diff / (TMath::Power(hDATA->GetBinError(i),2) + TMath::Power(thistGlau->GetBinError(i),2));
chi2 += diff;
}
chi2 = chi2 / (highchibin - lowchibin + 1);
return chi2;
}
else {
std::cout << "LL" << std::endl;
Double_t ll = 0.0;
for (Int_t i=lowchibin; i<=highchibin; i++) {
Double_t data = hDATA ->GetBinContent(i);
Double_t mc = thistGlau->GetBinContent(i);
Int_t idata = TMath::Nint(data);
if (mc < 1.e-9) mc = 1.e-9;
Double_t fsub = - mc + idata * TMath::Log(mc);
Double_t fobs = 0;
if (idata > 0) {
for(Int_t istep = 0; istep < idata; istep++){
if (istep > 1)
fobs += TMath::Log(istep);
}
}
fsub -= fobs;
ll -= fsub ;
}
return 2*ll;
}
}
TH1F *AliCentralityGlauberFit::GetTriggerEfficiencyFunction(TH1F *hist1, TH1F *hist2)
{
fhEffi = (TH1F*)hist1->Clone("heffi");
fhEffi->Divide(hist2);
return fhEffi;
}
Double_t AliCentralityGlauberFit::GetTriggerEfficiencyIntegral(TH1F *hist1, TH1F *hist2)
{
fEffi = hist1->Integral()/hist2->Integral();
return fEffi;
}
void AliCentralityGlauberFit::SaveHisto(TH1F *hist1, TH1F *hist2, TH1F *heffi, TFile *outrootfile)
{
outrootfile->cd();
hist1->Write();
hist2->Write();
heffi->Write();
}
Double_t AliCentralityGlauberFit::NBD(Int_t n, Double_t mu, Double_t k) const
{
Double_t F;
Double_t f;
if (n+k > 100.0) {
F = TMath::LnGamma(n + k)- TMath::LnGamma(n + 1.)- TMath::LnGamma(k);
f = n * TMath::Log(mu/k) - (n + k) * TMath::Log(1.0 + mu/k);
F = F+f;
F = TMath::Exp(F);
} else {
F = TMath::Gamma(n + k) / ( TMath::Gamma(n + 1.) * TMath::Gamma(k) );
f = n * TMath::Log(mu/k) - (n + k) * TMath::Log(1.0 + mu/k);
f = TMath::Exp(f);
F *= f;
}
return F;
}
TH1F *AliCentralityGlauberFit::NBDhist(Double_t mu, Double_t k)
{
TH1F *h = new TH1F("htemp","",100,-0.5,299.5);
h->SetName(Form("nbd_%f_%f",mu,k));
h->SetDirectory(0);
for (Int_t i=0;i<300;++i) {
Double_t val = NBD(i,mu,k);
if (val>1e-20) h->Fill(i,val);
}
return h;
}
void AliCentralityGlauberFit::MinuitFcnNBD(Int_t &, Double_t *, Double_t &f, Double_t *par, Int_t )
{
Double_t alpha = par[0];
Double_t mu = par[1];
Double_t k = par[2];
AliCentralityGlauberFit * obj = (AliCentralityGlauberFit *) gMinuit->GetObjectFit();
TH1F * thistGlau = obj->GlauberHisto(mu,k,alpha,obj->GetTempHist(),kFALSE);
f = obj->CalculateChi2(obj->GetTempHist(),thistGlau);
Printf("Minuit step: chi2=%f, alpha=%f, mu=%f, k=%f\n",f,alpha,mu,k);
}
Double_t AliCentralityGlauberFit::NBDFunc(const Double_t *x, const Double_t *par)
{
Double_t mu = par[0];
Double_t k = par[1];
Double_t n = x[0];
Double_t ret = exp( TMath::LnGamma(n+k) - TMath::LnGamma(k) - TMath::LnGamma(n+1) ) *
TMath::Power(mu/(mu+k),n) * TMath::Power(1-mu/(mu+k),k);
return ret;
}
TH1F *AliCentralityGlauberFit::MakeAncestor(Double_t alpha)
{
TString hname(Form("fhAncestor_%.3f",alpha));
if (fhAncestor) {
if (hname.CompareTo(fhAncestor->GetName())==0)
return fhAncestor;
}
delete fhAncestor;
fhAncestor = 0;
TFile *ancfile = TFile::Open(fAncfilename,"read");
if (ancfile && ancfile->IsOpen()) {
fhAncestor = dynamic_cast<TH1F*>(ancfile->Get(hname));
if (fhAncestor) {
fhAncestor->SetDirectory(0);
delete ancfile;
return fhAncestor;
}
}
delete ancfile;
fhAncestor = new TH1F(hname,hname,3000,0,3000);
fhAncestor->SetDirectory(0);
Int_t nents = fGlauntuple->GetEntries();
for (Int_t i=0;i<nents;++i) {
fGlauntuple->GetEntry(i % nents);
Int_t n=0;
if (fAncestor == 1) n = (Int_t) (TMath::Power(fNpart,alpha));
else if (fAncestor == 2) n = (Int_t) (alpha * fNpart + (1-alpha) * fNcoll);
else if (fAncestor == 3) n = (Int_t) ((1-alpha) * fNpart/2 + alpha * fNcoll);
fhAncestor->Fill(n);
}
ancfile = TFile::Open(fAncfilename,"update");
if (ancfile && ancfile->IsOpen()) {
fhAncestor->Write();
}
delete ancfile;
return fhAncestor;
}
AliCentralityGlauberFit.cxx:1 AliCentralityGlauberFit.cxx:2 AliCentralityGlauberFit.cxx:3 AliCentralityGlauberFit.cxx:4 AliCentralityGlauberFit.cxx:5 AliCentralityGlauberFit.cxx:6 AliCentralityGlauberFit.cxx:7 AliCentralityGlauberFit.cxx:8 AliCentralityGlauberFit.cxx:9 AliCentralityGlauberFit.cxx:10 AliCentralityGlauberFit.cxx:11 AliCentralityGlauberFit.cxx:12 AliCentralityGlauberFit.cxx:13 AliCentralityGlauberFit.cxx:14 AliCentralityGlauberFit.cxx:15 AliCentralityGlauberFit.cxx:16 AliCentralityGlauberFit.cxx:17 AliCentralityGlauberFit.cxx:18 AliCentralityGlauberFit.cxx:19 AliCentralityGlauberFit.cxx:20 AliCentralityGlauberFit.cxx:21 AliCentralityGlauberFit.cxx:22 AliCentralityGlauberFit.cxx:23 AliCentralityGlauberFit.cxx:24 AliCentralityGlauberFit.cxx:25 AliCentralityGlauberFit.cxx:26 AliCentralityGlauberFit.cxx:27 AliCentralityGlauberFit.cxx:28 AliCentralityGlauberFit.cxx:29 AliCentralityGlauberFit.cxx:30 AliCentralityGlauberFit.cxx:31 AliCentralityGlauberFit.cxx:32 AliCentralityGlauberFit.cxx:33 AliCentralityGlauberFit.cxx:34 AliCentralityGlauberFit.cxx:35 AliCentralityGlauberFit.cxx:36 AliCentralityGlauberFit.cxx:37 AliCentralityGlauberFit.cxx:38 AliCentralityGlauberFit.cxx:39 AliCentralityGlauberFit.cxx:40 AliCentralityGlauberFit.cxx:41 AliCentralityGlauberFit.cxx:42 AliCentralityGlauberFit.cxx:43 AliCentralityGlauberFit.cxx:44 AliCentralityGlauberFit.cxx:45 AliCentralityGlauberFit.cxx:46 AliCentralityGlauberFit.cxx:47 AliCentralityGlauberFit.cxx:48 AliCentralityGlauberFit.cxx:49 AliCentralityGlauberFit.cxx:50 AliCentralityGlauberFit.cxx:51 AliCentralityGlauberFit.cxx:52 AliCentralityGlauberFit.cxx:53 AliCentralityGlauberFit.cxx:54 AliCentralityGlauberFit.cxx:55 AliCentralityGlauberFit.cxx:56 AliCentralityGlauberFit.cxx:57 AliCentralityGlauberFit.cxx:58 AliCentralityGlauberFit.cxx:59 AliCentralityGlauberFit.cxx:60 AliCentralityGlauberFit.cxx:61 AliCentralityGlauberFit.cxx:62 AliCentralityGlauberFit.cxx:63 AliCentralityGlauberFit.cxx:64 AliCentralityGlauberFit.cxx:65 AliCentralityGlauberFit.cxx:66 AliCentralityGlauberFit.cxx:67 AliCentralityGlauberFit.cxx:68 AliCentralityGlauberFit.cxx:69 AliCentralityGlauberFit.cxx:70 AliCentralityGlauberFit.cxx:71 AliCentralityGlauberFit.cxx:72 AliCentralityGlauberFit.cxx:73 AliCentralityGlauberFit.cxx:74 AliCentralityGlauberFit.cxx:75 AliCentralityGlauberFit.cxx:76 AliCentralityGlauberFit.cxx:77 AliCentralityGlauberFit.cxx:78 AliCentralityGlauberFit.cxx:79 AliCentralityGlauberFit.cxx:80 AliCentralityGlauberFit.cxx:81 AliCentralityGlauberFit.cxx:82 AliCentralityGlauberFit.cxx:83 AliCentralityGlauberFit.cxx:84 AliCentralityGlauberFit.cxx:85 AliCentralityGlauberFit.cxx:86 AliCentralityGlauberFit.cxx:87 AliCentralityGlauberFit.cxx:88 AliCentralityGlauberFit.cxx:89 AliCentralityGlauberFit.cxx:90 AliCentralityGlauberFit.cxx:91 AliCentralityGlauberFit.cxx:92 AliCentralityGlauberFit.cxx:93 AliCentralityGlauberFit.cxx:94 AliCentralityGlauberFit.cxx:95 AliCentralityGlauberFit.cxx:96 AliCentralityGlauberFit.cxx:97 AliCentralityGlauberFit.cxx:98 AliCentralityGlauberFit.cxx:99 AliCentralityGlauberFit.cxx:100 AliCentralityGlauberFit.cxx:101 AliCentralityGlauberFit.cxx:102 AliCentralityGlauberFit.cxx:103 AliCentralityGlauberFit.cxx:104 AliCentralityGlauberFit.cxx:105 AliCentralityGlauberFit.cxx:106 AliCentralityGlauberFit.cxx:107 AliCentralityGlauberFit.cxx:108 AliCentralityGlauberFit.cxx:109 AliCentralityGlauberFit.cxx:110 AliCentralityGlauberFit.cxx:111 AliCentralityGlauberFit.cxx:112 AliCentralityGlauberFit.cxx:113 AliCentralityGlauberFit.cxx:114 AliCentralityGlauberFit.cxx:115 AliCentralityGlauberFit.cxx:116 AliCentralityGlauberFit.cxx:117 AliCentralityGlauberFit.cxx:118 AliCentralityGlauberFit.cxx:119 AliCentralityGlauberFit.cxx:120 AliCentralityGlauberFit.cxx:121 AliCentralityGlauberFit.cxx:122 AliCentralityGlauberFit.cxx:123 AliCentralityGlauberFit.cxx:124 AliCentralityGlauberFit.cxx:125 AliCentralityGlauberFit.cxx:126 AliCentralityGlauberFit.cxx:127 AliCentralityGlauberFit.cxx:128 AliCentralityGlauberFit.cxx:129 AliCentralityGlauberFit.cxx:130 AliCentralityGlauberFit.cxx:131 AliCentralityGlauberFit.cxx:132 AliCentralityGlauberFit.cxx:133 AliCentralityGlauberFit.cxx:134 AliCentralityGlauberFit.cxx:135 AliCentralityGlauberFit.cxx:136 AliCentralityGlauberFit.cxx:137 AliCentralityGlauberFit.cxx:138 AliCentralityGlauberFit.cxx:139 AliCentralityGlauberFit.cxx:140 AliCentralityGlauberFit.cxx:141 AliCentralityGlauberFit.cxx:142 AliCentralityGlauberFit.cxx:143 AliCentralityGlauberFit.cxx:144 AliCentralityGlauberFit.cxx:145 AliCentralityGlauberFit.cxx:146 AliCentralityGlauberFit.cxx:147 AliCentralityGlauberFit.cxx:148 AliCentralityGlauberFit.cxx:149 AliCentralityGlauberFit.cxx:150 AliCentralityGlauberFit.cxx:151 AliCentralityGlauberFit.cxx:152 AliCentralityGlauberFit.cxx:153 AliCentralityGlauberFit.cxx:154 AliCentralityGlauberFit.cxx:155 AliCentralityGlauberFit.cxx:156 AliCentralityGlauberFit.cxx:157 AliCentralityGlauberFit.cxx:158 AliCentralityGlauberFit.cxx:159 AliCentralityGlauberFit.cxx:160 AliCentralityGlauberFit.cxx:161 AliCentralityGlauberFit.cxx:162 AliCentralityGlauberFit.cxx:163 AliCentralityGlauberFit.cxx:164 AliCentralityGlauberFit.cxx:165 AliCentralityGlauberFit.cxx:166 AliCentralityGlauberFit.cxx:167 AliCentralityGlauberFit.cxx:168 AliCentralityGlauberFit.cxx:169 AliCentralityGlauberFit.cxx:170 AliCentralityGlauberFit.cxx:171 AliCentralityGlauberFit.cxx:172 AliCentralityGlauberFit.cxx:173 AliCentralityGlauberFit.cxx:174 AliCentralityGlauberFit.cxx:175 AliCentralityGlauberFit.cxx:176 AliCentralityGlauberFit.cxx:177 AliCentralityGlauberFit.cxx:178 AliCentralityGlauberFit.cxx:179 AliCentralityGlauberFit.cxx:180 AliCentralityGlauberFit.cxx:181 AliCentralityGlauberFit.cxx:182 AliCentralityGlauberFit.cxx:183 AliCentralityGlauberFit.cxx:184 AliCentralityGlauberFit.cxx:185 AliCentralityGlauberFit.cxx:186 AliCentralityGlauberFit.cxx:187 AliCentralityGlauberFit.cxx:188 AliCentralityGlauberFit.cxx:189 AliCentralityGlauberFit.cxx:190 AliCentralityGlauberFit.cxx:191 AliCentralityGlauberFit.cxx:192 AliCentralityGlauberFit.cxx:193 AliCentralityGlauberFit.cxx:194 AliCentralityGlauberFit.cxx:195 AliCentralityGlauberFit.cxx:196 AliCentralityGlauberFit.cxx:197 AliCentralityGlauberFit.cxx:198 AliCentralityGlauberFit.cxx:199 AliCentralityGlauberFit.cxx:200 AliCentralityGlauberFit.cxx:201 AliCentralityGlauberFit.cxx:202 AliCentralityGlauberFit.cxx:203 AliCentralityGlauberFit.cxx:204 AliCentralityGlauberFit.cxx:205 AliCentralityGlauberFit.cxx:206 AliCentralityGlauberFit.cxx:207 AliCentralityGlauberFit.cxx:208 AliCentralityGlauberFit.cxx:209 AliCentralityGlauberFit.cxx:210 AliCentralityGlauberFit.cxx:211 AliCentralityGlauberFit.cxx:212 AliCentralityGlauberFit.cxx:213 AliCentralityGlauberFit.cxx:214 AliCentralityGlauberFit.cxx:215 AliCentralityGlauberFit.cxx:216 AliCentralityGlauberFit.cxx:217 AliCentralityGlauberFit.cxx:218 AliCentralityGlauberFit.cxx:219 AliCentralityGlauberFit.cxx:220 AliCentralityGlauberFit.cxx:221 AliCentralityGlauberFit.cxx:222 AliCentralityGlauberFit.cxx:223 AliCentralityGlauberFit.cxx:224 AliCentralityGlauberFit.cxx:225 AliCentralityGlauberFit.cxx:226 AliCentralityGlauberFit.cxx:227 AliCentralityGlauberFit.cxx:228 AliCentralityGlauberFit.cxx:229 AliCentralityGlauberFit.cxx:230 AliCentralityGlauberFit.cxx:231 AliCentralityGlauberFit.cxx:232 AliCentralityGlauberFit.cxx:233 AliCentralityGlauberFit.cxx:234 AliCentralityGlauberFit.cxx:235 AliCentralityGlauberFit.cxx:236 AliCentralityGlauberFit.cxx:237 AliCentralityGlauberFit.cxx:238 AliCentralityGlauberFit.cxx:239 AliCentralityGlauberFit.cxx:240 AliCentralityGlauberFit.cxx:241 AliCentralityGlauberFit.cxx:242 AliCentralityGlauberFit.cxx:243 AliCentralityGlauberFit.cxx:244 AliCentralityGlauberFit.cxx:245 AliCentralityGlauberFit.cxx:246 AliCentralityGlauberFit.cxx:247 AliCentralityGlauberFit.cxx:248 AliCentralityGlauberFit.cxx:249 AliCentralityGlauberFit.cxx:250 AliCentralityGlauberFit.cxx:251 AliCentralityGlauberFit.cxx:252 AliCentralityGlauberFit.cxx:253 AliCentralityGlauberFit.cxx:254 AliCentralityGlauberFit.cxx:255 AliCentralityGlauberFit.cxx:256 AliCentralityGlauberFit.cxx:257 AliCentralityGlauberFit.cxx:258 AliCentralityGlauberFit.cxx:259 AliCentralityGlauberFit.cxx:260 AliCentralityGlauberFit.cxx:261 AliCentralityGlauberFit.cxx:262 AliCentralityGlauberFit.cxx:263 AliCentralityGlauberFit.cxx:264 AliCentralityGlauberFit.cxx:265 AliCentralityGlauberFit.cxx:266 AliCentralityGlauberFit.cxx:267 AliCentralityGlauberFit.cxx:268 AliCentralityGlauberFit.cxx:269 AliCentralityGlauberFit.cxx:270 AliCentralityGlauberFit.cxx:271 AliCentralityGlauberFit.cxx:272 AliCentralityGlauberFit.cxx:273 AliCentralityGlauberFit.cxx:274 AliCentralityGlauberFit.cxx:275 AliCentralityGlauberFit.cxx:276 AliCentralityGlauberFit.cxx:277 AliCentralityGlauberFit.cxx:278 AliCentralityGlauberFit.cxx:279 AliCentralityGlauberFit.cxx:280 AliCentralityGlauberFit.cxx:281 AliCentralityGlauberFit.cxx:282 AliCentralityGlauberFit.cxx:283 AliCentralityGlauberFit.cxx:284 AliCentralityGlauberFit.cxx:285 AliCentralityGlauberFit.cxx:286 AliCentralityGlauberFit.cxx:287 AliCentralityGlauberFit.cxx:288 AliCentralityGlauberFit.cxx:289 AliCentralityGlauberFit.cxx:290 AliCentralityGlauberFit.cxx:291 AliCentralityGlauberFit.cxx:292 AliCentralityGlauberFit.cxx:293 AliCentralityGlauberFit.cxx:294 AliCentralityGlauberFit.cxx:295 AliCentralityGlauberFit.cxx:296 AliCentralityGlauberFit.cxx:297 AliCentralityGlauberFit.cxx:298 AliCentralityGlauberFit.cxx:299 AliCentralityGlauberFit.cxx:300 AliCentralityGlauberFit.cxx:301 AliCentralityGlauberFit.cxx:302 AliCentralityGlauberFit.cxx:303 AliCentralityGlauberFit.cxx:304 AliCentralityGlauberFit.cxx:305 AliCentralityGlauberFit.cxx:306 AliCentralityGlauberFit.cxx:307 AliCentralityGlauberFit.cxx:308 AliCentralityGlauberFit.cxx:309 AliCentralityGlauberFit.cxx:310 AliCentralityGlauberFit.cxx:311 AliCentralityGlauberFit.cxx:312 AliCentralityGlauberFit.cxx:313 AliCentralityGlauberFit.cxx:314 AliCentralityGlauberFit.cxx:315 AliCentralityGlauberFit.cxx:316 AliCentralityGlauberFit.cxx:317 AliCentralityGlauberFit.cxx:318 AliCentralityGlauberFit.cxx:319 AliCentralityGlauberFit.cxx:320 AliCentralityGlauberFit.cxx:321 AliCentralityGlauberFit.cxx:322 AliCentralityGlauberFit.cxx:323 AliCentralityGlauberFit.cxx:324 AliCentralityGlauberFit.cxx:325 AliCentralityGlauberFit.cxx:326 AliCentralityGlauberFit.cxx:327 AliCentralityGlauberFit.cxx:328 AliCentralityGlauberFit.cxx:329 AliCentralityGlauberFit.cxx:330 AliCentralityGlauberFit.cxx:331 AliCentralityGlauberFit.cxx:332 AliCentralityGlauberFit.cxx:333 AliCentralityGlauberFit.cxx:334 AliCentralityGlauberFit.cxx:335 AliCentralityGlauberFit.cxx:336 AliCentralityGlauberFit.cxx:337 AliCentralityGlauberFit.cxx:338 AliCentralityGlauberFit.cxx:339 AliCentralityGlauberFit.cxx:340 AliCentralityGlauberFit.cxx:341 AliCentralityGlauberFit.cxx:342 AliCentralityGlauberFit.cxx:343 AliCentralityGlauberFit.cxx:344 AliCentralityGlauberFit.cxx:345 AliCentralityGlauberFit.cxx:346 AliCentralityGlauberFit.cxx:347 AliCentralityGlauberFit.cxx:348 AliCentralityGlauberFit.cxx:349 AliCentralityGlauberFit.cxx:350 AliCentralityGlauberFit.cxx:351 AliCentralityGlauberFit.cxx:352 AliCentralityGlauberFit.cxx:353 AliCentralityGlauberFit.cxx:354 AliCentralityGlauberFit.cxx:355 AliCentralityGlauberFit.cxx:356 AliCentralityGlauberFit.cxx:357 AliCentralityGlauberFit.cxx:358 AliCentralityGlauberFit.cxx:359 AliCentralityGlauberFit.cxx:360 AliCentralityGlauberFit.cxx:361 AliCentralityGlauberFit.cxx:362 AliCentralityGlauberFit.cxx:363 AliCentralityGlauberFit.cxx:364 AliCentralityGlauberFit.cxx:365 AliCentralityGlauberFit.cxx:366 AliCentralityGlauberFit.cxx:367 AliCentralityGlauberFit.cxx:368 AliCentralityGlauberFit.cxx:369 AliCentralityGlauberFit.cxx:370 AliCentralityGlauberFit.cxx:371 AliCentralityGlauberFit.cxx:372 AliCentralityGlauberFit.cxx:373 AliCentralityGlauberFit.cxx:374 AliCentralityGlauberFit.cxx:375 AliCentralityGlauberFit.cxx:376 AliCentralityGlauberFit.cxx:377 AliCentralityGlauberFit.cxx:378 AliCentralityGlauberFit.cxx:379 AliCentralityGlauberFit.cxx:380 AliCentralityGlauberFit.cxx:381 AliCentralityGlauberFit.cxx:382 AliCentralityGlauberFit.cxx:383 AliCentralityGlauberFit.cxx:384 AliCentralityGlauberFit.cxx:385 AliCentralityGlauberFit.cxx:386 AliCentralityGlauberFit.cxx:387 AliCentralityGlauberFit.cxx:388 AliCentralityGlauberFit.cxx:389 AliCentralityGlauberFit.cxx:390 AliCentralityGlauberFit.cxx:391 AliCentralityGlauberFit.cxx:392 AliCentralityGlauberFit.cxx:393 AliCentralityGlauberFit.cxx:394 AliCentralityGlauberFit.cxx:395 AliCentralityGlauberFit.cxx:396 AliCentralityGlauberFit.cxx:397 AliCentralityGlauberFit.cxx:398 AliCentralityGlauberFit.cxx:399 AliCentralityGlauberFit.cxx:400 AliCentralityGlauberFit.cxx:401 AliCentralityGlauberFit.cxx:402 AliCentralityGlauberFit.cxx:403 AliCentralityGlauberFit.cxx:404 AliCentralityGlauberFit.cxx:405 AliCentralityGlauberFit.cxx:406 AliCentralityGlauberFit.cxx:407 AliCentralityGlauberFit.cxx:408 AliCentralityGlauberFit.cxx:409 AliCentralityGlauberFit.cxx:410 AliCentralityGlauberFit.cxx:411 AliCentralityGlauberFit.cxx:412 AliCentralityGlauberFit.cxx:413 AliCentralityGlauberFit.cxx:414 AliCentralityGlauberFit.cxx:415 AliCentralityGlauberFit.cxx:416 AliCentralityGlauberFit.cxx:417 AliCentralityGlauberFit.cxx:418 AliCentralityGlauberFit.cxx:419 AliCentralityGlauberFit.cxx:420 AliCentralityGlauberFit.cxx:421 AliCentralityGlauberFit.cxx:422 AliCentralityGlauberFit.cxx:423 AliCentralityGlauberFit.cxx:424 AliCentralityGlauberFit.cxx:425 AliCentralityGlauberFit.cxx:426 AliCentralityGlauberFit.cxx:427 AliCentralityGlauberFit.cxx:428 AliCentralityGlauberFit.cxx:429 AliCentralityGlauberFit.cxx:430 AliCentralityGlauberFit.cxx:431 AliCentralityGlauberFit.cxx:432 AliCentralityGlauberFit.cxx:433 AliCentralityGlauberFit.cxx:434 AliCentralityGlauberFit.cxx:435 AliCentralityGlauberFit.cxx:436 AliCentralityGlauberFit.cxx:437 AliCentralityGlauberFit.cxx:438 AliCentralityGlauberFit.cxx:439 AliCentralityGlauberFit.cxx:440 AliCentralityGlauberFit.cxx:441 AliCentralityGlauberFit.cxx:442 AliCentralityGlauberFit.cxx:443 AliCentralityGlauberFit.cxx:444 AliCentralityGlauberFit.cxx:445 AliCentralityGlauberFit.cxx:446 AliCentralityGlauberFit.cxx:447 AliCentralityGlauberFit.cxx:448 AliCentralityGlauberFit.cxx:449 AliCentralityGlauberFit.cxx:450 AliCentralityGlauberFit.cxx:451 AliCentralityGlauberFit.cxx:452 AliCentralityGlauberFit.cxx:453 AliCentralityGlauberFit.cxx:454 AliCentralityGlauberFit.cxx:455 AliCentralityGlauberFit.cxx:456 AliCentralityGlauberFit.cxx:457 AliCentralityGlauberFit.cxx:458 AliCentralityGlauberFit.cxx:459 AliCentralityGlauberFit.cxx:460 AliCentralityGlauberFit.cxx:461 AliCentralityGlauberFit.cxx:462 AliCentralityGlauberFit.cxx:463 AliCentralityGlauberFit.cxx:464 AliCentralityGlauberFit.cxx:465 AliCentralityGlauberFit.cxx:466 AliCentralityGlauberFit.cxx:467 AliCentralityGlauberFit.cxx:468 AliCentralityGlauberFit.cxx:469 AliCentralityGlauberFit.cxx:470 AliCentralityGlauberFit.cxx:471 AliCentralityGlauberFit.cxx:472 AliCentralityGlauberFit.cxx:473 AliCentralityGlauberFit.cxx:474 AliCentralityGlauberFit.cxx:475 AliCentralityGlauberFit.cxx:476 AliCentralityGlauberFit.cxx:477 AliCentralityGlauberFit.cxx:478 AliCentralityGlauberFit.cxx:479 AliCentralityGlauberFit.cxx:480 AliCentralityGlauberFit.cxx:481 AliCentralityGlauberFit.cxx:482 AliCentralityGlauberFit.cxx:483 AliCentralityGlauberFit.cxx:484 AliCentralityGlauberFit.cxx:485 AliCentralityGlauberFit.cxx:486 AliCentralityGlauberFit.cxx:487 AliCentralityGlauberFit.cxx:488 AliCentralityGlauberFit.cxx:489 AliCentralityGlauberFit.cxx:490 AliCentralityGlauberFit.cxx:491 AliCentralityGlauberFit.cxx:492 AliCentralityGlauberFit.cxx:493 AliCentralityGlauberFit.cxx:494 AliCentralityGlauberFit.cxx:495 AliCentralityGlauberFit.cxx:496 AliCentralityGlauberFit.cxx:497 AliCentralityGlauberFit.cxx:498 AliCentralityGlauberFit.cxx:499 AliCentralityGlauberFit.cxx:500 AliCentralityGlauberFit.cxx:501 AliCentralityGlauberFit.cxx:502 AliCentralityGlauberFit.cxx:503 AliCentralityGlauberFit.cxx:504 AliCentralityGlauberFit.cxx:505 AliCentralityGlauberFit.cxx:506 AliCentralityGlauberFit.cxx:507 AliCentralityGlauberFit.cxx:508 AliCentralityGlauberFit.cxx:509 AliCentralityGlauberFit.cxx:510 AliCentralityGlauberFit.cxx:511 AliCentralityGlauberFit.cxx:512 AliCentralityGlauberFit.cxx:513 AliCentralityGlauberFit.cxx:514 AliCentralityGlauberFit.cxx:515 AliCentralityGlauberFit.cxx:516 AliCentralityGlauberFit.cxx:517 AliCentralityGlauberFit.cxx:518 AliCentralityGlauberFit.cxx:519 AliCentralityGlauberFit.cxx:520 AliCentralityGlauberFit.cxx:521 AliCentralityGlauberFit.cxx:522 AliCentralityGlauberFit.cxx:523 AliCentralityGlauberFit.cxx:524 AliCentralityGlauberFit.cxx:525 AliCentralityGlauberFit.cxx:526 AliCentralityGlauberFit.cxx:527 AliCentralityGlauberFit.cxx:528 AliCentralityGlauberFit.cxx:529 AliCentralityGlauberFit.cxx:530 AliCentralityGlauberFit.cxx:531 AliCentralityGlauberFit.cxx:532 AliCentralityGlauberFit.cxx:533 AliCentralityGlauberFit.cxx:534 AliCentralityGlauberFit.cxx:535 AliCentralityGlauberFit.cxx:536 AliCentralityGlauberFit.cxx:537 AliCentralityGlauberFit.cxx:538 AliCentralityGlauberFit.cxx:539 AliCentralityGlauberFit.cxx:540 AliCentralityGlauberFit.cxx:541 AliCentralityGlauberFit.cxx:542 AliCentralityGlauberFit.cxx:543 AliCentralityGlauberFit.cxx:544 AliCentralityGlauberFit.cxx:545 AliCentralityGlauberFit.cxx:546 AliCentralityGlauberFit.cxx:547 AliCentralityGlauberFit.cxx:548 AliCentralityGlauberFit.cxx:549 AliCentralityGlauberFit.cxx:550 AliCentralityGlauberFit.cxx:551 AliCentralityGlauberFit.cxx:552 AliCentralityGlauberFit.cxx:553 AliCentralityGlauberFit.cxx:554 AliCentralityGlauberFit.cxx:555 AliCentralityGlauberFit.cxx:556 AliCentralityGlauberFit.cxx:557 AliCentralityGlauberFit.cxx:558 AliCentralityGlauberFit.cxx:559 AliCentralityGlauberFit.cxx:560 AliCentralityGlauberFit.cxx:561 AliCentralityGlauberFit.cxx:562 AliCentralityGlauberFit.cxx:563 AliCentralityGlauberFit.cxx:564 AliCentralityGlauberFit.cxx:565 AliCentralityGlauberFit.cxx:566 AliCentralityGlauberFit.cxx:567 AliCentralityGlauberFit.cxx:568 AliCentralityGlauberFit.cxx:569 AliCentralityGlauberFit.cxx:570 AliCentralityGlauberFit.cxx:571 AliCentralityGlauberFit.cxx:572 AliCentralityGlauberFit.cxx:573 AliCentralityGlauberFit.cxx:574 AliCentralityGlauberFit.cxx:575 AliCentralityGlauberFit.cxx:576 AliCentralityGlauberFit.cxx:577 AliCentralityGlauberFit.cxx:578 AliCentralityGlauberFit.cxx:579 AliCentralityGlauberFit.cxx:580 AliCentralityGlauberFit.cxx:581 AliCentralityGlauberFit.cxx:582 AliCentralityGlauberFit.cxx:583 AliCentralityGlauberFit.cxx:584 AliCentralityGlauberFit.cxx:585 AliCentralityGlauberFit.cxx:586 AliCentralityGlauberFit.cxx:587 AliCentralityGlauberFit.cxx:588 AliCentralityGlauberFit.cxx:589 AliCentralityGlauberFit.cxx:590 AliCentralityGlauberFit.cxx:591 AliCentralityGlauberFit.cxx:592 AliCentralityGlauberFit.cxx:593 AliCentralityGlauberFit.cxx:594 AliCentralityGlauberFit.cxx:595 AliCentralityGlauberFit.cxx:596 AliCentralityGlauberFit.cxx:597 AliCentralityGlauberFit.cxx:598 AliCentralityGlauberFit.cxx:599 AliCentralityGlauberFit.cxx:600 AliCentralityGlauberFit.cxx:601 AliCentralityGlauberFit.cxx:602 AliCentralityGlauberFit.cxx:603 AliCentralityGlauberFit.cxx:604 AliCentralityGlauberFit.cxx:605 AliCentralityGlauberFit.cxx:606 AliCentralityGlauberFit.cxx:607 AliCentralityGlauberFit.cxx:608