#include <TNamed.h>
#include <TH1D.h>
#include <TString.h>
#include <TFile.h>
#include <TMath.h>
#include <TROOT.h>
#include <TH2F.h>
#include <TProfile.h>
#include <TF1.h>
#include <TStyle.h>
#include <TGraphErrors.h>
#include <vector>
#include <TMap.h>
#include <map>
#include "AliCentralityByFunction.h"
ClassImp(AliCentralityByFunction)
AliCentralityByFunction::AliCentralityByFunction() :
finrootfile(0),
foutrootfilename(0),
foutrootfile(0),
fhistnames(),
fpercentXsec(0),
fitfunc(),
fitter()
{
fitter["fitf_pol2"] = new TF1("pol2",0,1,3);
fitter["fitf_pol2"]->SetLineColor(kRed);
fitter["fitf_pol3"] = new TF1("pol3",0,1,4);
fitter["fitf_pol3"]->SetLineColor(kRed);
fitter["fitf_pol4"] = new TF1("pol4",0,1,5);
fitter["fitf_pol4"]->SetLineColor(kRed);
fitter["fitf_pol6"] = new TF1("pol6",0,1,6);
fitter["fitf_pol6"]->SetLineColor(kRed);
}
void AliCentralityByFunction::SetFitFunction(TString distribution, TString func, Double_t xmin, Double_t xmax)
{
fitfunc[distribution] = func;
fitter[fitfunc[distribution]]->SetRange(xmin,xmax);
}
void AliCentralityByFunction::MakePercentiles(TString infilename)
{
TH1D *hpercentile;
finrootfile = new TFile(infilename);
foutrootfile = new TFile(foutrootfilename,"RECREATE");
std::vector<TString>::const_iterator hni;
for(hni=fhistnames.begin(); hni!=fhistnames.end(); hni++) {
hpercentile = FitHisto(*hni);
foutrootfile->cd();
hpercentile->Write();
}
finrootfile->Close();
foutrootfile->Close();
}
TH1D *AliCentralityByFunction::FitHisto(TString hdistributionName)
{
TH2D *hdist = (TH2D*) (finrootfile->Get(hdistributionName));
TProfile *profile =hdist->ProfileX();
profile->Fit(fitter[fitfunc[hdistributionName]], "RNM");
foutrootfile->cd();
profile->Write();
fitter[fitfunc[hdistributionName]]->Write(hdistributionName.Append("_fit"));
return MakePercentHisto(hdist);
}
TH1D * AliCentralityByFunction::MakePercentHisto(TH2D *histo)
{
TH2D *htemp = (TH2D*)histo->Clone("htemp");
TString hdistributionName = htemp->GetTitle();
const int num_DIVISION=500;
TH1D *hpercent = new TH1D("","",num_DIVISION,0,htemp->GetXaxis()->GetBinCenter(htemp->GetNbinsX()));
hpercent->Reset();
double xpoint, ypoint, xcomp, ycomp, count;
double xmax = htemp->GetXaxis()->GetBinCenter(htemp->GetNbinsX());
double xmin = 0;
double delta = (xmax - xmin) / num_DIVISION;
double slopePerp;
double slopeFunction;
std::cout << "Start Percentile Histo for distribution " << hdistributionName << " with fit function " << fitfunc[hdistributionName] << std::endl;
for (int i = 0; i <= num_DIVISION; i++) {
xcomp = xmin + i * delta;
ycomp = fitter[fitfunc[hdistributionName]]->Eval(xcomp);
count = 0.0;
slopeFunction = fitter[fitfunc[hdistributionName]]->Derivative(xcomp,NULL,0.0001);
slopePerp = -1.0 /slopeFunction;
for (int ibiny = 1; ibiny < htemp->GetNbinsY(); ibiny++) {
ypoint = htemp->GetYaxis()->GetBinCenter(ibiny);
double xonLine =(ypoint - ycomp)/slopePerp + xcomp;
for (int ibinx = 1; ibinx < htemp->GetNbinsX(); ibinx++) {
xpoint = htemp->GetXaxis()->GetBinCenter(ibinx);
if ((xpoint > xonLine && xpoint > xcomp - 0.5)||
(xpoint > xcomp + 0.2)) {
count += htemp->GetBinContent(ibinx,ibiny);
}
}
}
count = count/htemp->Integral() * 100.0;
hpercent->SetBinContent(i, count);
}
hpercent->SetName(hdistributionName.Append("_percentile"));
return hpercent;
}
AliCentralityByFunction.cxx:1 AliCentralityByFunction.cxx:2 AliCentralityByFunction.cxx:3 AliCentralityByFunction.cxx:4 AliCentralityByFunction.cxx:5 AliCentralityByFunction.cxx:6 AliCentralityByFunction.cxx:7 AliCentralityByFunction.cxx:8 AliCentralityByFunction.cxx:9 AliCentralityByFunction.cxx:10 AliCentralityByFunction.cxx:11 AliCentralityByFunction.cxx:12 AliCentralityByFunction.cxx:13 AliCentralityByFunction.cxx:14 AliCentralityByFunction.cxx:15 AliCentralityByFunction.cxx:16 AliCentralityByFunction.cxx:17 AliCentralityByFunction.cxx:18 AliCentralityByFunction.cxx:19 AliCentralityByFunction.cxx:20 AliCentralityByFunction.cxx:21 AliCentralityByFunction.cxx:22 AliCentralityByFunction.cxx:23 AliCentralityByFunction.cxx:24 AliCentralityByFunction.cxx:25 AliCentralityByFunction.cxx:26 AliCentralityByFunction.cxx:27 AliCentralityByFunction.cxx:28 AliCentralityByFunction.cxx:29 AliCentralityByFunction.cxx:30 AliCentralityByFunction.cxx:31 AliCentralityByFunction.cxx:32 AliCentralityByFunction.cxx:33 AliCentralityByFunction.cxx:34 AliCentralityByFunction.cxx:35 AliCentralityByFunction.cxx:36 AliCentralityByFunction.cxx:37 AliCentralityByFunction.cxx:38 AliCentralityByFunction.cxx:39 AliCentralityByFunction.cxx:40 AliCentralityByFunction.cxx:41 AliCentralityByFunction.cxx:42 AliCentralityByFunction.cxx:43 AliCentralityByFunction.cxx:44 AliCentralityByFunction.cxx:45 AliCentralityByFunction.cxx:46 AliCentralityByFunction.cxx:47 AliCentralityByFunction.cxx:48 AliCentralityByFunction.cxx:49 AliCentralityByFunction.cxx:50 AliCentralityByFunction.cxx:51 AliCentralityByFunction.cxx:52 AliCentralityByFunction.cxx:53 AliCentralityByFunction.cxx:54 AliCentralityByFunction.cxx:55 AliCentralityByFunction.cxx:56 AliCentralityByFunction.cxx:57 AliCentralityByFunction.cxx:58 AliCentralityByFunction.cxx:59 AliCentralityByFunction.cxx:60 AliCentralityByFunction.cxx:61 AliCentralityByFunction.cxx:62 AliCentralityByFunction.cxx:63 AliCentralityByFunction.cxx:64 AliCentralityByFunction.cxx:65 AliCentralityByFunction.cxx:66 AliCentralityByFunction.cxx:67 AliCentralityByFunction.cxx:68 AliCentralityByFunction.cxx:69 AliCentralityByFunction.cxx:70 AliCentralityByFunction.cxx:71 AliCentralityByFunction.cxx:72 AliCentralityByFunction.cxx:73 AliCentralityByFunction.cxx:74 AliCentralityByFunction.cxx:75 AliCentralityByFunction.cxx:76 AliCentralityByFunction.cxx:77 AliCentralityByFunction.cxx:78 AliCentralityByFunction.cxx:79 AliCentralityByFunction.cxx:80 AliCentralityByFunction.cxx:81 AliCentralityByFunction.cxx:82 AliCentralityByFunction.cxx:83 AliCentralityByFunction.cxx:84 AliCentralityByFunction.cxx:85 AliCentralityByFunction.cxx:86 AliCentralityByFunction.cxx:87 AliCentralityByFunction.cxx:88 AliCentralityByFunction.cxx:89 AliCentralityByFunction.cxx:90 AliCentralityByFunction.cxx:91 AliCentralityByFunction.cxx:92 AliCentralityByFunction.cxx:93 AliCentralityByFunction.cxx:94 AliCentralityByFunction.cxx:95 AliCentralityByFunction.cxx:96 AliCentralityByFunction.cxx:97 AliCentralityByFunction.cxx:98 AliCentralityByFunction.cxx:99 AliCentralityByFunction.cxx:100 AliCentralityByFunction.cxx:101 AliCentralityByFunction.cxx:102 AliCentralityByFunction.cxx:103 AliCentralityByFunction.cxx:104 AliCentralityByFunction.cxx:105 AliCentralityByFunction.cxx:106 AliCentralityByFunction.cxx:107 AliCentralityByFunction.cxx:108 AliCentralityByFunction.cxx:109 AliCentralityByFunction.cxx:110 AliCentralityByFunction.cxx:111 AliCentralityByFunction.cxx:112 AliCentralityByFunction.cxx:113 AliCentralityByFunction.cxx:114 AliCentralityByFunction.cxx:115 AliCentralityByFunction.cxx:116 AliCentralityByFunction.cxx:117 AliCentralityByFunction.cxx:118 AliCentralityByFunction.cxx:119 AliCentralityByFunction.cxx:120 AliCentralityByFunction.cxx:121 AliCentralityByFunction.cxx:122 AliCentralityByFunction.cxx:123 AliCentralityByFunction.cxx:124 AliCentralityByFunction.cxx:125 AliCentralityByFunction.cxx:126 AliCentralityByFunction.cxx:127 AliCentralityByFunction.cxx:128 AliCentralityByFunction.cxx:129 AliCentralityByFunction.cxx:130 AliCentralityByFunction.cxx:131 AliCentralityByFunction.cxx:132 AliCentralityByFunction.cxx:133 AliCentralityByFunction.cxx:134 AliCentralityByFunction.cxx:135 AliCentralityByFunction.cxx:136 AliCentralityByFunction.cxx:137 AliCentralityByFunction.cxx:138 AliCentralityByFunction.cxx:139 AliCentralityByFunction.cxx:140 AliCentralityByFunction.cxx:141 AliCentralityByFunction.cxx:142 AliCentralityByFunction.cxx:143 AliCentralityByFunction.cxx:144 AliCentralityByFunction.cxx:145 AliCentralityByFunction.cxx:146 AliCentralityByFunction.cxx:147 AliCentralityByFunction.cxx:148 AliCentralityByFunction.cxx:149 AliCentralityByFunction.cxx:150 AliCentralityByFunction.cxx:151 AliCentralityByFunction.cxx:152 AliCentralityByFunction.cxx:153 AliCentralityByFunction.cxx:154 AliCentralityByFunction.cxx:155 AliCentralityByFunction.cxx:156 AliCentralityByFunction.cxx:157 AliCentralityByFunction.cxx:158 AliCentralityByFunction.cxx:159 AliCentralityByFunction.cxx:160 AliCentralityByFunction.cxx:161 AliCentralityByFunction.cxx:162 AliCentralityByFunction.cxx:163 AliCentralityByFunction.cxx:164 AliCentralityByFunction.cxx:165 AliCentralityByFunction.cxx:166 AliCentralityByFunction.cxx:167 AliCentralityByFunction.cxx:168 AliCentralityByFunction.cxx:169