ROOT logo
static const Int_t nCentralityBins = 9;
TString strCentrality[nCentralityBins] = {"0-5","5-10","10-20",
                                          "20-30","30-40","40-50",
                                          "50-60","60-70","70-80"};
TString strCentralityBinsLabel[nCentralityBins] = {"Centrality: 0-5%",
						   "Centrality: 5-10%",
						   "Centrality: 10-20%",
						   "Centrality: 20-30%",
						   "Centrality: 30-40%",
						   "Centrality: 40-50%",
						   "Centrality: 50-60%",
						   "Centrality: 60-70%",
						   "Centrality: 70-80%"};

//void drawCorrection(const char* filenameEffCont = "AnalysisResults_HIJING.root"){  

void drawCorrection(const char* filenameEffCont = "mergedAnalysisResults_proofPbPb_128.root"){

  gStyle->SetOptTitle(1);
  gStyle->SetOptStat(0);
  //gSystem->Load("libANALYSIS.so");
  //gSystem->Load("libANALYSISalice.so");
  Int_t markerStyle = 20;
  Int_t markerColor = 1;
  Int_t fillColor   = 9;

  //_______________________________________________________________//
  //Open the input file
  TFile *f = TFile::Open(filenameEffCont);
  if(!f->IsOpen()) {
    Printf("File not found!!!");
    break;
  }
  
  //_______________________________________________________________//
  //Get the TDirectoryFile
  TDirectoryFile *dirEffCont = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionEffContAnalysis"));
  if(!dirEffCont) {
    Printf("TDirectoryFile not found!!!");
    break;
  }

  //_______________________________________________________________//
  TList *listEffCont[nCentralityBins];
  TString listName;
  TString listName1;
  TString histName;
  TString histName1;

  TH3D* h1d[nCentralityBins];
  TH3D* h1n[nCentralityBins];
  TH3D* h2d[nCentralityBins];
  TH3D* h2n[nCentralityBins];
  TH3F* h3d[nCentralityBins];
  TH3F* h4d[nCentralityBins];
  TH3F* fHistCorrectionPlus[nCentralityBins];
  TH3F* fHistCorrectionMinus[nCentralityBins];

  TCanvas *correctionMatrix[nCentralityBins]; 
  TString canvasName;

  for(Int_t iBin = 0; iBin < nCentralityBins; iBin++) {
    Printf("================Centrality: %s================",  strCentrality[iBin].Data());
    
    listName = "listEffContBF_V0M_"; listName += strCentrality[iBin].Data(); listName +="_10";
    listName1 = "listQA_V0M_"; listName1 += strCentrality[iBin].Data(); listName1 +="_10";
    listEffCont[iBin] = dynamic_cast<TList *>(dirEffCont->Get(listName.Data()));
    listEffCont[iBin]->ls();

    //____________Efficiency Plus
    //correction->cd(1);
    h1d[iBin] = dynamic_cast<TH3D*>(listEffCont[iBin]->FindObject("fHistGeneratedEtaPtPhiPlus"));
    h1d[iBin]->Sumw2();
    h1n[iBin] = dynamic_cast<TH3D*>(listEffCont[iBin]->FindObject("fHistSurvivedEtaPtPhiPlus"));
    h1n[iBin]->Sumw2();
    h1n[iBin]->Divide(h1d[iBin]);
    //h1d->GetYaxis()->SetTitleOffset(1.5);
    //h1d->SetTitle("Efficiency (+)");
    //h1d->SetName("fHistEfficiencyPlus");
    //h1d->Draw("P");
    
    //____________Efficiency Minus
    //correction->cd(2);
    h2d[iBin] = dynamic_cast<TH3D*>(listEffCont[iBin]->FindObject("fHistGeneratedEtaPtPhiMinus"));
    h2d[iBin]->Sumw2();
    h2n[iBin] = dynamic_cast<TH3D*>(listEffCont[iBin]->FindObject("fHistSurvivedEtaPtPhiMinus"));
    h2n[iBin]->Sumw2();
    h2n[iBin]->Divide(h2d[iBin]);
    //h2d->GetYaxis()->SetTitleOffset(1.5);
    //h2d->SetTitle("Efficiency (-)");
    //h2d->SetName("fHistEfficiencyMinus");
    //h2d->Draw("P");
    
    //__________Contamination
    //correction->cd(3);
    h4d[iBin] = dynamic_cast<TH3F*>(listEffCont[iBin]->FindObject("fHistContaminationPrimaries"));
    h4d[iBin]->SetName("fHistContaminationPrimaries");
    h4d[iBin]->Sumw2();
  
    h3d[iBin] = dynamic_cast<TH3F*>(listEffCont[iBin]->FindObject("fHistContaminationSecondaries"));
    h3d[iBin]->SetName("fHistContaminationSecondaries");
    h3d[iBin]->Sumw2();

    h4d[iBin]->Add(h3d[iBin]);
    h3d[iBin]->Divide(h4d[iBin]);
    //h3d->GetYaxis()->SetTitleOffset(2.0);
    //h3d->GetXaxis()->SetTitleOffset(1.5);
    //h3d->SetTitle("Contamination Secondaries");
    //h3d->Draw("P");
 
    //_____________________________________________________________
    //CORRECTION

    Int_t binsX = h3d[0]->GetNbinsX();
    Int_t binsY = h3d[0]->GetNbinsY();
    Int_t binsZ = h3d[0]->GetNbinsZ();

    for (Int_t iHistBinsX = 1; iHistBinsX <binsX+1 ; iHistBinsX++) {
      for (Int_t iHistBinsY = 1; iHistBinsY <binsY+1 ; iHistBinsY++) {
	for (Int_t iHistBinsZ = 1; iHistBinsZ <binsZ+1 ; iHistBinsZ++) {
	  h3d[iBin]->SetBinContent(iHistBinsX,iHistBinsY,iHistBinsZ,1 - h3d[iBin]->GetBinContent(iHistBinsX,iHistBinsY,iHistBinsZ));
	}
      }
    }
        
    correctionMatrix[iBin] = new TCanvas(canvasName.Data(),canvasName.Data(),0,0+iBin*50,1400,1000);
    correctionMatrix[iBin]->Divide(2,1);
    
    //Correction Maps Plus 
    histName = "fHistCorrectionPlus"; 
    histName += strCentrality[iBin].Data();
    correctionMatrix[iBin]->cd(1);
    fHistCorrectionPlus[iBin] = dynamic_cast<TH3F *>(h3d[iBin]->Clone());
    fHistCorrectionPlus[iBin]->Divide(h1n[iBin]);  
    fHistCorrectionPlus[iBin]->SetName(histName.Data());
    fHistCorrectionPlus[iBin]->GetYaxis()->SetTitleOffset(2.0);
    fHistCorrectionPlus[iBin]->GetXaxis()->SetTitleOffset(1.5);
    fHistCorrectionPlus[iBin]->GetZaxis()->SetTitleOffset(2.0);
    fHistCorrectionPlus[iBin]->SetTitle("Correction Plus");
    fHistCorrectionPlus[iBin]->DrawCopy("");
    
    //Correction Maps Minus 
    histName1 = "fHistCorrectionMinus"; 
    histName1 += strCentrality[iBin].Data();
    correctionMatrix[iBin]->cd(2);
    fHistCorrectionMinus[iBin] = dynamic_cast<TH3F *>(h3d[iBin]->Clone());
    fHistCorrectionMinus[iBin]->Divide(h2n[iBin]);
    fHistCorrectionMinus[iBin]->SetName(histName1.Data());
    fHistCorrectionMinus[iBin]->GetYaxis()->SetTitleOffset(2.0);
    fHistCorrectionMinus[iBin]->GetXaxis()->SetTitleOffset(1.5);
    fHistCorrectionMinus[iBin]->GetZaxis()->SetTitleOffset(2.0);
    fHistCorrectionMinus[iBin]->SetTitle("Correction Minus");
    fHistCorrectionMinus[iBin]->DrawCopy("");
  }
  
  //____________________________________________________________
  //Output files
  TFile *fCorrectionMaps = TFile::Open("CorrectionMaps.root",
					  "recreate");
  
  for(Int_t iBin = 0; iBin < nCentralityBins; iBin++) {
    fHistCorrectionPlus[iBin]->Write();
    fHistCorrectionMinus[iBin]->Write();
  }
  fCorrectionMaps->Close();  
}
 drawCorrection.C:1
 drawCorrection.C:2
 drawCorrection.C:3
 drawCorrection.C:4
 drawCorrection.C:5
 drawCorrection.C:6
 drawCorrection.C:7
 drawCorrection.C:8
 drawCorrection.C:9
 drawCorrection.C:10
 drawCorrection.C:11
 drawCorrection.C:12
 drawCorrection.C:13
 drawCorrection.C:14
 drawCorrection.C:15
 drawCorrection.C:16
 drawCorrection.C:17
 drawCorrection.C:18
 drawCorrection.C:19
 drawCorrection.C:20
 drawCorrection.C:21
 drawCorrection.C:22
 drawCorrection.C:23
 drawCorrection.C:24
 drawCorrection.C:25
 drawCorrection.C:26
 drawCorrection.C:27
 drawCorrection.C:28
 drawCorrection.C:29
 drawCorrection.C:30
 drawCorrection.C:31
 drawCorrection.C:32
 drawCorrection.C:33
 drawCorrection.C:34
 drawCorrection.C:35
 drawCorrection.C:36
 drawCorrection.C:37
 drawCorrection.C:38
 drawCorrection.C:39
 drawCorrection.C:40
 drawCorrection.C:41
 drawCorrection.C:42
 drawCorrection.C:43
 drawCorrection.C:44
 drawCorrection.C:45
 drawCorrection.C:46
 drawCorrection.C:47
 drawCorrection.C:48
 drawCorrection.C:49
 drawCorrection.C:50
 drawCorrection.C:51
 drawCorrection.C:52
 drawCorrection.C:53
 drawCorrection.C:54
 drawCorrection.C:55
 drawCorrection.C:56
 drawCorrection.C:57
 drawCorrection.C:58
 drawCorrection.C:59
 drawCorrection.C:60
 drawCorrection.C:61
 drawCorrection.C:62
 drawCorrection.C:63
 drawCorrection.C:64
 drawCorrection.C:65
 drawCorrection.C:66
 drawCorrection.C:67
 drawCorrection.C:68
 drawCorrection.C:69
 drawCorrection.C:70
 drawCorrection.C:71
 drawCorrection.C:72
 drawCorrection.C:73
 drawCorrection.C:74
 drawCorrection.C:75
 drawCorrection.C:76
 drawCorrection.C:77
 drawCorrection.C:78
 drawCorrection.C:79
 drawCorrection.C:80
 drawCorrection.C:81
 drawCorrection.C:82
 drawCorrection.C:83
 drawCorrection.C:84
 drawCorrection.C:85
 drawCorrection.C:86
 drawCorrection.C:87
 drawCorrection.C:88
 drawCorrection.C:89
 drawCorrection.C:90
 drawCorrection.C:91
 drawCorrection.C:92
 drawCorrection.C:93
 drawCorrection.C:94
 drawCorrection.C:95
 drawCorrection.C:96
 drawCorrection.C:97
 drawCorrection.C:98
 drawCorrection.C:99
 drawCorrection.C:100
 drawCorrection.C:101
 drawCorrection.C:102
 drawCorrection.C:103
 drawCorrection.C:104
 drawCorrection.C:105
 drawCorrection.C:106
 drawCorrection.C:107
 drawCorrection.C:108
 drawCorrection.C:109
 drawCorrection.C:110
 drawCorrection.C:111
 drawCorrection.C:112
 drawCorrection.C:113
 drawCorrection.C:114
 drawCorrection.C:115
 drawCorrection.C:116
 drawCorrection.C:117
 drawCorrection.C:118
 drawCorrection.C:119
 drawCorrection.C:120
 drawCorrection.C:121
 drawCorrection.C:122
 drawCorrection.C:123
 drawCorrection.C:124
 drawCorrection.C:125
 drawCorrection.C:126
 drawCorrection.C:127
 drawCorrection.C:128
 drawCorrection.C:129
 drawCorrection.C:130
 drawCorrection.C:131
 drawCorrection.C:132
 drawCorrection.C:133
 drawCorrection.C:134
 drawCorrection.C:135
 drawCorrection.C:136
 drawCorrection.C:137
 drawCorrection.C:138
 drawCorrection.C:139
 drawCorrection.C:140
 drawCorrection.C:141
 drawCorrection.C:142
 drawCorrection.C:143
 drawCorrection.C:144
 drawCorrection.C:145
 drawCorrection.C:146
 drawCorrection.C:147
 drawCorrection.C:148
 drawCorrection.C:149
 drawCorrection.C:150
 drawCorrection.C:151
 drawCorrection.C:152
 drawCorrection.C:153
 drawCorrection.C:154
 drawCorrection.C:155
 drawCorrection.C:156
 drawCorrection.C:157
 drawCorrection.C:158
 drawCorrection.C:159
 drawCorrection.C:160
 drawCorrection.C:161
 drawCorrection.C:162
 drawCorrection.C:163
 drawCorrection.C:164
 drawCorrection.C:165
 drawCorrection.C:166
 drawCorrection.C:167