]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/macros/drawCorrection.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / drawCorrection.C
1 static const Int_t nCentralityBins = 9;
2 TString strCentrality[nCentralityBins] = {"0-5","5-10","10-20",
3                                           "20-30","30-40","40-50",
4                                           "50-60","60-70","70-80"};
5 TString strCentralityBinsLabel[nCentralityBins] = {"Centrality: 0-5%",
6                                                    "Centrality: 5-10%",
7                                                    "Centrality: 10-20%",
8                                                    "Centrality: 20-30%",
9                                                    "Centrality: 30-40%",
10                                                    "Centrality: 40-50%",
11                                                    "Centrality: 50-60%",
12                                                    "Centrality: 60-70%",
13                                                    "Centrality: 70-80%"};
14
15 //void drawCorrection(const char* filenameEffCont = "AnalysisResults_HIJING.root"){  
16
17 void drawCorrection(const char* filenameEffCont = "mergedAnalysisResults_proofPbPb_128.root"){
18
19   gStyle->SetOptTitle(1);
20   gStyle->SetOptStat(0);
21   //gSystem->Load("libANALYSIS");
22   //gSystem->Load("libANALYSISalice");
23   Int_t markerStyle = 20;
24   Int_t markerColor = 1;
25   Int_t fillColor   = 9;
26
27   //_______________________________________________________________//
28   //Open the input file
29   TFile *f = TFile::Open(filenameEffCont);
30   if(!f->IsOpen()) {
31     Printf("File not found!!!");
32     break;
33   }
34   
35   //_______________________________________________________________//
36   //Get the TDirectoryFile
37   TDirectoryFile *dirEffCont = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionEffContAnalysis"));
38   if(!dirEffCont) {
39     Printf("TDirectoryFile not found!!!");
40     break;
41   }
42
43   //_______________________________________________________________//
44   TList *listEffCont[nCentralityBins];
45   TString listName;
46   TString listName1;
47   TString histName;
48   TString histName1;
49
50   TH3D* h1d[nCentralityBins];
51   TH3D* h1n[nCentralityBins];
52   TH3D* h2d[nCentralityBins];
53   TH3D* h2n[nCentralityBins];
54   TH3F* h3d[nCentralityBins];
55   TH3F* h4d[nCentralityBins];
56   TH3F* fHistCorrectionPlus[nCentralityBins];
57   TH3F* fHistCorrectionMinus[nCentralityBins];
58
59   TCanvas *correctionMatrix[nCentralityBins]; 
60   TString canvasName;
61
62   for(Int_t iBin = 0; iBin < nCentralityBins; iBin++) {
63     Printf("================Centrality: %s================",  strCentrality[iBin].Data());
64     
65     listName = "listEffContBF_V0M_"; listName += strCentrality[iBin].Data(); listName +="_10";
66     listName1 = "listQA_V0M_"; listName1 += strCentrality[iBin].Data(); listName1 +="_10";
67     listEffCont[iBin] = dynamic_cast<TList *>(dirEffCont->Get(listName.Data()));
68     listEffCont[iBin]->ls();
69
70     //____________Efficiency Plus
71     //correction->cd(1);
72     h1d[iBin] = dynamic_cast<TH3D*>(listEffCont[iBin]->FindObject("fHistGeneratedEtaPtPhiPlus"));
73     h1d[iBin]->Sumw2();
74     h1n[iBin] = dynamic_cast<TH3D*>(listEffCont[iBin]->FindObject("fHistSurvivedEtaPtPhiPlus"));
75     h1n[iBin]->Sumw2();
76     h1n[iBin]->Divide(h1d[iBin]);
77     //h1d->GetYaxis()->SetTitleOffset(1.5);
78     //h1d->SetTitle("Efficiency (+)");
79     //h1d->SetName("fHistEfficiencyPlus");
80     //h1d->Draw("P");
81     
82     //____________Efficiency Minus
83     //correction->cd(2);
84     h2d[iBin] = dynamic_cast<TH3D*>(listEffCont[iBin]->FindObject("fHistGeneratedEtaPtPhiMinus"));
85     h2d[iBin]->Sumw2();
86     h2n[iBin] = dynamic_cast<TH3D*>(listEffCont[iBin]->FindObject("fHistSurvivedEtaPtPhiMinus"));
87     h2n[iBin]->Sumw2();
88     h2n[iBin]->Divide(h2d[iBin]);
89     //h2d->GetYaxis()->SetTitleOffset(1.5);
90     //h2d->SetTitle("Efficiency (-)");
91     //h2d->SetName("fHistEfficiencyMinus");
92     //h2d->Draw("P");
93     
94     //__________Contamination
95     //correction->cd(3);
96     h4d[iBin] = dynamic_cast<TH3F*>(listEffCont[iBin]->FindObject("fHistContaminationPrimaries"));
97     h4d[iBin]->SetName("fHistContaminationPrimaries");
98     h4d[iBin]->Sumw2();
99   
100     h3d[iBin] = dynamic_cast<TH3F*>(listEffCont[iBin]->FindObject("fHistContaminationSecondaries"));
101     h3d[iBin]->SetName("fHistContaminationSecondaries");
102     h3d[iBin]->Sumw2();
103
104     h4d[iBin]->Add(h3d[iBin]);
105     h3d[iBin]->Divide(h4d[iBin]);
106     //h3d->GetYaxis()->SetTitleOffset(2.0);
107     //h3d->GetXaxis()->SetTitleOffset(1.5);
108     //h3d->SetTitle("Contamination Secondaries");
109     //h3d->Draw("P");
110  
111     //_____________________________________________________________
112     //CORRECTION
113
114     Int_t binsX = h3d[0]->GetNbinsX();
115     Int_t binsY = h3d[0]->GetNbinsY();
116     Int_t binsZ = h3d[0]->GetNbinsZ();
117
118     for (Int_t iHistBinsX = 1; iHistBinsX <binsX+1 ; iHistBinsX++) {
119       for (Int_t iHistBinsY = 1; iHistBinsY <binsY+1 ; iHistBinsY++) {
120         for (Int_t iHistBinsZ = 1; iHistBinsZ <binsZ+1 ; iHistBinsZ++) {
121           h3d[iBin]->SetBinContent(iHistBinsX,iHistBinsY,iHistBinsZ,1 - h3d[iBin]->GetBinContent(iHistBinsX,iHistBinsY,iHistBinsZ));
122         }
123       }
124     }
125         
126     correctionMatrix[iBin] = new TCanvas(canvasName.Data(),canvasName.Data(),0,0+iBin*50,1400,1000);
127     correctionMatrix[iBin]->Divide(2,1);
128     
129     //Correction Maps Plus 
130     histName = "fHistCorrectionPlus"; 
131     histName += strCentrality[iBin].Data();
132     correctionMatrix[iBin]->cd(1);
133     fHistCorrectionPlus[iBin] = dynamic_cast<TH3F *>(h3d[iBin]->Clone());
134     fHistCorrectionPlus[iBin]->Divide(h1n[iBin]);  
135     fHistCorrectionPlus[iBin]->SetName(histName.Data());
136     fHistCorrectionPlus[iBin]->GetYaxis()->SetTitleOffset(2.0);
137     fHistCorrectionPlus[iBin]->GetXaxis()->SetTitleOffset(1.5);
138     fHistCorrectionPlus[iBin]->GetZaxis()->SetTitleOffset(2.0);
139     fHistCorrectionPlus[iBin]->SetTitle("Correction Plus");
140     fHistCorrectionPlus[iBin]->DrawCopy("");
141     
142     //Correction Maps Minus 
143     histName1 = "fHistCorrectionMinus"; 
144     histName1 += strCentrality[iBin].Data();
145     correctionMatrix[iBin]->cd(2);
146     fHistCorrectionMinus[iBin] = dynamic_cast<TH3F *>(h3d[iBin]->Clone());
147     fHistCorrectionMinus[iBin]->Divide(h2n[iBin]);
148     fHistCorrectionMinus[iBin]->SetName(histName1.Data());
149     fHistCorrectionMinus[iBin]->GetYaxis()->SetTitleOffset(2.0);
150     fHistCorrectionMinus[iBin]->GetXaxis()->SetTitleOffset(1.5);
151     fHistCorrectionMinus[iBin]->GetZaxis()->SetTitleOffset(2.0);
152     fHistCorrectionMinus[iBin]->SetTitle("Correction Minus");
153     fHistCorrectionMinus[iBin]->DrawCopy("");
154   }
155   
156   //____________________________________________________________
157   //Output files
158   TFile *fCorrectionMaps = TFile::Open("CorrectionMaps.root",
159                                           "recreate");
160   
161   for(Int_t iBin = 0; iBin < nCentralityBins; iBin++) {
162     fHistCorrectionPlus[iBin]->Write();
163     fHistCorrectionMinus[iBin]->Write();
164   }
165   fCorrectionMaps->Close();  
166 }