]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/JCORRAN/AliJEbePercentile.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / Correlations / JCORRAN / AliJEbePercentile.cxx
1 #include <TGrid.h>
2 #include  "AliJEbePercentile.h"
3
4 //______________________________________________________________________________
5 AliJEbePercentile::AliJEbePercentile():
6         fFile(NULL),
7         fCard(NULL)
8 {
9 }
10 //______________________________________________________________________________
11 AliJEbePercentile::AliJEbePercentile(const AliJEbePercentile& obj):
12         fFile(obj.fFile),
13         fCard(obj.fCard)
14 {
15         // copy constructor
16 }
17
18 AliJEbePercentile::AliJEbePercentile(AliJCard *fcard, TString input):
19         fFile(NULL),
20         fCard(NULL)
21 {
22
23         fCard = fcard;
24         cout << input << endl;
25         
26         if (TString(input).BeginsWith("alien:"))  TGrid::Connect("alien:");
27         fFile = TFile::Open(input);
28
29         fFile->Print();
30
31         for(int ibv = 0; ibv < NBVn ; ibv++){
32                 vnPercentile[ibv] = ibv*1.0/NBVn;
33         }
34
35         TString name;
36         int NH = 4;
37         for(int ic = 0; ic<fCard->GetNoOfBins(kCentrType);ic++){
38                 for(int ih=2;ih<NH;ih++) {
39                         name = "hVnObsVector";
40                         vnobs[ih][ic] = (TH1D*)fFile->Get(name.Append(Form("%02d%02d",ic,ih)));
41                 }
42         }
43
44         double entr;
45         double sum;
46         int found[NBVn];
47
48         for(int ic = 0 ; ic < fCard->GetNoOfBins(kCentrType); ic++){
49                 for(int ih = 2; ih < NH ; ih++){
50                         vnLimit[ih][ic][0]=1;
51                         vnLimit[ih][ic][NBVn-1]=0;
52                         for(int ibv = 1 ; ibv < NBVn ; ibv++){
53                                 found[ibv] = 0;
54                         }
55                         sum = 0;
56                         entr = vnobs[ih][ic]->GetEntries();
57                         //cout << "Centrality " << ic << " of " << NC ;
58                         //cout << " Harmonic " << ih << " of " << NH << endl;
59                         for(int ib = 1; ib < vnobs[ih][ic]->GetNbinsX() +1 ; ib++){
60                                 sum = sum + vnobs[ih][ic]->GetBinContent(ib);
61                                 for(int ibv = 1; ibv < NBVn ; ibv++){
62                                         if( sum/entr > 1- vnPercentile[ibv] && found[ibv] == 0){
63                                                 //cout << "top " << vnpercentile[ibv]*100 << "% limit: " << vnobs[ih][ic]->GetBinCenter(ib) << endl;
64                                                 found[ibv] = 1;
65                                                 vnLimit[ih][ic][ibv] = vnobs[ih][ic]->GetBinCenter(ib);
66                                         }
67                                 }
68
69                         }
70                 }
71         }
72 }
73
74
75
76
77 //______________________________________________________________________________
78 AliJEbePercentile& AliJEbePercentile::operator=(const AliJEbePercentile& obj){
79         // copy constructor
80         JUNUSED(obj);
81         return *this;
82 }
83
84
85 double AliJEbePercentile::GetEbeFlowPercentile(int cBin, int ih, double vn){
86         double pecentile = -1;
87         for(int ibv = 0 ; ibv < NBVn ; ibv++){
88                 if(vn > vnLimit[cBin][ih][ibv]){
89                         pecentile = vnPercentile[ibv];
90                 }
91         }
92         return pecentile;
93 }
94