9 AliLog::SetGlobalDebugLevel(0);
12 AliCFDataGrid *measured = (AliCFDataGrid*) GetMeasuredSpectrum();
13 AliCFDataGrid *generated = (AliCFDataGrid*) GetGeneratedSpectrum();
14 AliCFEffGrid *efficiency = (AliCFEffGrid*) GetEfficiency();
15 THnSparse *response = (THnSparse*) GetResponseMatrix();
17 // create a guessed "a priori" distribution using binning of MC
18 THnSparse* guessed = CreateGuessed(((AliCFGridSparse*)generated->GetData())->GetGrid()) ;
21 TF2* fit2D = new TF2("fit2D","[0]*([2]+[3]*y+[4]*y*y)*x*TMath::Exp(-x/[1])",0.1,0.8,-1.5,1.5);
22 fit2D->SetParameter(0,1);
23 fit2D->SetParameter(1,1);
24 fit2D->SetParameter(2,1);
25 fit2D->SetParameter(3,1);
26 fit2D->SetParameter(4,1);
27 fit2D->SetParLimits(1,0,1);
29 AliCFUnfolding unfolding("unfolding","",2,response,efficiency->GetGrid(),((AliCFGridSparse*)measured->GetData())->GetGrid()/*,guessed*/);
30 unfolding.SetMaxNumberOfIterations(100);
31 unfolding.SetMaxChi2PerDOF(1.e-07);
32 unfolding.UseSmoothing(fit2D,"ren");
33 //unfolding.UseSmoothing();
43 TH2D* h_gen = generated->Project(0,1);
44 h_gen->SetTitle("generated");
46 canvas->SaveAs("/tmp/generated.eps");
47 canvas->SaveAs("/tmp/generated.gif");
49 TH2D* h_meas = measured->Project(0,1);
50 h_meas->SetTitle("measured");
51 h_meas->Draw("lego2");
52 canvas->SaveAs("/tmp/measured.eps");
53 canvas->SaveAs("/tmp/measured.gif");
55 TH2D* h_guessed = unfolding.GetOriginalPrior()->Projection(1,0);
56 h_guessed->SetTitle("a priori");
57 h_guessed->Draw("lego2");
58 canvas->SaveAs("/tmp/apriori.eps");
59 canvas->SaveAs("/tmp/apriori.gif");
61 TH2D* h_eff = efficiency->Project(0,1);
62 h_eff->SetTitle("efficiency");
65 TH2D* h_unf = unfolding.GetUnfolded()->Projection(1,0);
66 h_unf->SetTitle("unfolded");
68 fit2D->Draw("surf same");
70 canvas->SaveAs("/tmp/unfolded.eps");
71 canvas->SaveAs("/tmp/unfolded.gif");
74 TH2D* ratio = (TH2D*)h_unf->Clone();
75 ratio->SetTitle("unfolded / generated");
76 ratio->Divide(h_unf,h_gen,1,1);
77 ratio->GetZaxis()->SetRangeUser(0.5,1.5);
78 //ratio->Draw("cont4z");
81 // ratio->ProjectionY()->Draw();
82 canvas->SaveAs("/tmp/ratio.eps");
83 canvas->SaveAs("/tmp/ratio.gif");
87 TH2* orig = unfolding.GetOriginalPrior()->Projection(1,0);
88 orig->SetTitle("original prior");
92 TH2D* h_est = (TH2D*) unfolding.GetEstMeasured()->Projection(1,0);
93 h_est->SetTitle("est. measured");
97 unfolding.GetUnfolded()->Projection(0)->Draw();
100 unfolding.GetUnfolded()->Projection(1)->Draw();
103 h_gen->ProjectionX()->Draw();
106 h_gen->ProjectionY()->Draw();
113 // ====================================================================
117 gSystem->Load("libANALYSIS");
118 gSystem->Load("libCORRFW");
119 gStyle->SetPalette(1);
120 gStyle->SetOptStat(0);
121 TCanvas * canvas = new TCanvas("canvas","",600,400);
122 canvas->SetFillColor(10);
123 canvas->SetFrameFillColor(10);
126 TObject* GetMeasuredSpectrum() {
127 TFile * f = TFile::Open("test/output.root","read");
128 AliCFContainer* c = (AliCFContainer*)f->Get("container");
129 AliCFDataGrid* data = new AliCFDataGrid("data","",*c);
130 data->SetMeasured(1);
133 TObject* GetGeneratedSpectrum() {
134 TFile * f = TFile::Open("test/output.root","read");
135 AliCFContainer* c = (AliCFContainer*)f->Get("container");
136 AliCFDataGrid* data = new AliCFDataGrid("data","",*c);
137 data->SetMeasured(0);
140 TObject* GetEfficiency() {
141 TFile * f = TFile::Open("test/output.root","read");
142 AliCFContainer* c = (AliCFContainer*)f->Get("container");
143 AliCFEffGrid* eff = new AliCFEffGrid("eff","",*c);
144 eff->CalculateEfficiency(2,0);
147 THnSparse* GetResponseMatrix() {
148 TFile * f = TFile::Open("test/output.root","read");
149 THnSparse* h = (THnSparse*)f->Get("correlation");
152 THnSparse* CreateGuessed(const THnSparse* h) {
153 THnSparse* guessed = (THnSparse*) h->Clone();