6 AliCFDataGrid *measured = (AliCFDataGrid*) GetMeasuredSpectrum();
7 AliCFDataGrid *generated = (AliCFDataGrid*) GetGeneratedSpectrum();
8 AliCFEffGrid *efficiency = (AliCFEffGrid*) GetEfficiency();
9 THnSparse *response = (THnSparse*) GetResponseMatrix();
11 // create a guessed "a priori" distribution using binning of MC
12 THnSparse* guessed = CreateGuessed(((AliCFGridSparse*)generated->GetData())->GetGrid()) ;
14 AliCFUnfolding unfolding("unfolding","",2,response,efficiency->GetGrid(),((AliCFGridSparse*)measured->GetData())->GetGrid(),guessed);
15 unfolding.SetMaxNumberOfIterations(100);
16 unfolding.SetMaxChi2PerDOF(1.e-07);
17 //unfolding.UseSmoothing();
20 THnSparse* result = unfolding.GetUnfolded();
23 TCanvas * canvas = new TCanvas("canvas","",1000,700);
27 TH2D* h_gen = generated->Project(0,1);
28 h_gen->SetTitle("generated");
32 TH2D* h_meas = measured->Project(0,1);
33 h_meas->SetTitle("measured");
34 h_meas->Draw("lego2");
37 TH2D* h_guessed = guessed->Projection(1,0);
38 h_guessed->SetTitle("a priori");
39 h_guessed->Draw("lego2");
42 TH2D* h_eff = efficiency->Project(0,1);
43 h_eff->SetTitle("efficiency");
47 TH2D* h_unf = result->Projection(1,0);
48 h_unf->SetTitle("unfolded");
52 TH2D* ratio = (TH2D*)h_unf->Clone();
53 ratio->SetTitle("unfolded / generated");
54 ratio->Divide(h_unf,h_gen,1,1);
55 // ratio->Draw("cont4z");
56 // ratio->Draw("surf2");
60 TH2* orig = unfolding.GetOriginalPrior()->Projection(1,0);
61 orig->SetTitle("original prior");
65 AliCFDataGrid* corrected = (AliCFDataGrid*)measured->Clone();
66 corrected->ApplyEffCorrection(*efficiency);
67 TH2D* corr = corrected->Project(0,1);
68 corr->SetTitle("simple correction");
72 TH2D* ratio2 = (TH2D*) corr->Clone();
73 ratio2->Divide(corr,h_gen,1,1);
74 ratio2->SetTitle("simple correction / generated");
75 ratio2->Draw("cont4z");
80 // ====================================================================
84 gSystem->Load("libANALYSIS");
85 gSystem->Load("libCORRFW");
86 gStyle->SetPalette(1);
87 gStyle->SetOptStat(0);
90 TObject* GetMeasuredSpectrum() {
91 TFile * f = TFile::Open("test/output.root","read");
92 AliCFContainer* c = (AliCFContainer*)f->Get("container");
93 AliCFDataGrid* data = new AliCFDataGrid("data","",*c);
97 TObject* GetGeneratedSpectrum() {
98 TFile * f = TFile::Open("test/output.root","read");
99 AliCFContainer* c = (AliCFContainer*)f->Get("container");
100 AliCFDataGrid* data = new AliCFDataGrid("data","",*c);
101 data->SetMeasured(0);
104 TObject* GetEfficiency() {
105 TFile * f = TFile::Open("test/output.root","read");
106 AliCFContainer* c = (AliCFContainer*)f->Get("container");
107 AliCFEffGrid* eff = new AliCFEffGrid("eff","",*c);
108 eff->CalculateEfficiency(2,0);
111 THnSparse* GetResponseMatrix() {
112 TFile * f = TFile::Open("test/output.root","read");
113 THnSparse* h = (THnSparse*)f->Get("correlation");
116 THnSparse* CreateGuessed(const THnSparse* h) {
117 THnSparse* guessed = (THnSparse*) h->Clone();