ROOT logo
void RP(){

  gStyle->SetOptFit(0);
  gStyle->SetOptStat(0);

  TFile *f = new TFile("../flow11h.root");

  if(!f->IsOpen()){
    printf("No such file\n");
    return 1;
  }

  char key[55] ;
//Get histograms 

  //Read resolution
  TH2F * hcos2AC = (TH2F*)f->Get("cos2AC");
  TH2F * hcos2V0AC = (TH2F*)f->Get("cos2V0AC");
  TH2F * hcos2V0ATPC = (TH2F*)f->Get("cos2V0ATPC");
  TH2F * hcos2V0CTPC = (TH2F*)f->Get("cos2V0CTPC");

//  TH1F * hresCh = (TH1F*)f2->Get("hEvPlResEta4");  

  TH1D * hres = 0 ;
  TH1D * hresF = 0 ;

  TH1D* rpT2  = new TH1D("rpTPC", "rpTPC 2 sub", hcos2AC->GetNbinsY(),0,100.);
  TH1D* rpT3 = new TH1D("rpTPC2", "rpTPC 3 sub", hcos2AC->GetNbinsY(),0,100.);
  TH1D* rpA  = new TH1D("rpV0A", "rpV0A", hcos2AC->GetNbinsY(),0,100.);
  TH1D* rpC  = new TH1D("rpV0C", "rpV0C", hcos2AC->GetNbinsY(),0,100.);

  Double_t resT2, resTA, resTC, resAC;

  for(int i=0;i<hcos2AC->GetNbinsY();i++){
    hres = hcos2AC->ProjectionX("res",i,i) ;
    resT2 = GetRes(hres);
    if(resT2>0)rpT2->SetBinContent(i, resT2);

    hresF = hcos2V0AC->ProjectionX("res2",i,i) ;
    resAC = GetCos(hresF);
    hres = hcos2V0ATPC->ProjectionX("res3",i,i) ;
    resTA = GetCos(hres);
    hres = hcos2V0CTPC->ProjectionX("res4",i,i) ;
    resTC = GetCos(hres);

    if(resAC>0)rpT3->SetBinContent(i, TMath::Sqrt(resTA*resTC/resAC));
    if(resTC>0)rpA->SetBinContent(i, TMath::Sqrt(resTA*resAC/resTC));
    if(resTA>0)rpC->SetBinContent(i, TMath::Sqrt(resTC*resAC/resTA));

//cout<<"i="<<i<<", rpA="<<TMath::Sqrt(resTA*resAC/resTC)<< endl;
  }

  rpT2->SetTitle("Reaction plane resolution with different ALICE detectors");
  rpT2->GetXaxis()->SetTitle("centrality percentage");
  rpT2->GetYaxis()->SetTitle("resolution");

  rpT2->SetMarkerStyle(20);
  rpT2->SetMarkerColor(2);
  rpT2->SetLineColor(2);
  rpT2->Draw("p");

  rpT3->SetMarkerStyle(21);
  rpT3->SetMarkerColor(2);
  rpT3->SetLineColor(2);
  rpT3->Draw("psame");

  rpA->SetMarkerStyle(22);
  rpA->SetMarkerColor(kMagenta);
  rpA->SetLineColor(kMagenta);
  rpA->Draw("psame");

  rpC->SetMarkerStyle(22);
  rpC->SetMarkerColor(kGreen);
  rpC->SetLineColor(kGreen);
  rpC->Draw("psame");

/*
  hresCh->SetMarkerStyle(21);
  hresCh->SetMarkerColor(kBlue);
  hresCh->SetLineColor(kBlue);
  hresCh->Draw("same");
*/

  TLegend * l = new TLegend(0.12,0.15,0.6,0.35) ;
  l->SetFillColor(0) ;
  l->SetTextSize(0.03) ;
  l->AddEntry(rpT2,"RPRes with TPC 2 subs","p") ;
  l->AddEntry(rpT3,"RPRes with TPC 3 subs","p") ;
  l->AddEntry(rpA,"RPRes with V0A","p") ;
  l->AddEntry(rpC,"RPRes with V0C","p") ;
//  l->AddEntry(hresCh,"RPRes TPC (Alex Dobrin)","p") ;
  l->Draw() ;

}

Double_t Ollitrault(Double_t chi){
  Double_t x = 0.25*chi*chi;
  Double_t resk1 = 0.626657 * chi * exp(-x) * (TMath::BesselI0((float)x) + TMath::BesselI1((float)x));
  Double_t resk2 = 0.626657 * chi * exp(-x) * (TMath::Sqrt(2./TMath::Pi()/x)*TMath::SinH(x) + TMath::Sqrt(2./TMath::Pi()/x)*(TMath::CosH(x) - TMath::SinH(x)/x));

  return resk1;
}

Double_t GetCos(TH1D* hres){
  Double_t resMean = hres->GetMean() ;
  cout<<resMean<<endl;
  if(resMean>0)return resMean ;
  else return 0. ;
}

Double_t GetRes(TH1D* hres){
  Double_t resMean = hres->GetMean() ;
  Double_t resOld=0 ;
  if(resMean>0)resOld=1./TMath::Sqrt(resMean) ;

  float rxn2=resMean;

  double chi = 2;
  for(int j=0; j<15; j++){
    double resSub = sqrt(rxn2);
    Double_t resEve = Ollitrault(chi);
    chi= (resEve < resSub) ? chi+1.0*pow(0.5, j) : chi-1.0*pow(0.5, j);
  }
  return Ollitrault(TMath::Sqrt(2)*chi);
}

 RP.C:1
 RP.C:2
 RP.C:3
 RP.C:4
 RP.C:5
 RP.C:6
 RP.C:7
 RP.C:8
 RP.C:9
 RP.C:10
 RP.C:11
 RP.C:12
 RP.C:13
 RP.C:14
 RP.C:15
 RP.C:16
 RP.C:17
 RP.C:18
 RP.C:19
 RP.C:20
 RP.C:21
 RP.C:22
 RP.C:23
 RP.C:24
 RP.C:25
 RP.C:26
 RP.C:27
 RP.C:28
 RP.C:29
 RP.C:30
 RP.C:31
 RP.C:32
 RP.C:33
 RP.C:34
 RP.C:35
 RP.C:36
 RP.C:37
 RP.C:38
 RP.C:39
 RP.C:40
 RP.C:41
 RP.C:42
 RP.C:43
 RP.C:44
 RP.C:45
 RP.C:46
 RP.C:47
 RP.C:48
 RP.C:49
 RP.C:50
 RP.C:51
 RP.C:52
 RP.C:53
 RP.C:54
 RP.C:55
 RP.C:56
 RP.C:57
 RP.C:58
 RP.C:59
 RP.C:60
 RP.C:61
 RP.C:62
 RP.C:63
 RP.C:64
 RP.C:65
 RP.C:66
 RP.C:67
 RP.C:68
 RP.C:69
 RP.C:70
 RP.C:71
 RP.C:72
 RP.C:73
 RP.C:74
 RP.C:75
 RP.C:76
 RP.C:77
 RP.C:78
 RP.C:79
 RP.C:80
 RP.C:81
 RP.C:82
 RP.C:83
 RP.C:84
 RP.C:85
 RP.C:86
 RP.C:87
 RP.C:88
 RP.C:89
 RP.C:90
 RP.C:91
 RP.C:92
 RP.C:93
 RP.C:94
 RP.C:95
 RP.C:96
 RP.C:97
 RP.C:98
 RP.C:99
 RP.C:100
 RP.C:101
 RP.C:102
 RP.C:103
 RP.C:104
 RP.C:105
 RP.C:106
 RP.C:107
 RP.C:108
 RP.C:109
 RP.C:110
 RP.C:111
 RP.C:112
 RP.C:113
 RP.C:114
 RP.C:115
 RP.C:116
 RP.C:117
 RP.C:118
 RP.C:119
 RP.C:120
 RP.C:121
 RP.C:122
 RP.C:123
 RP.C:124
 RP.C:125
 RP.C:126
 RP.C:127