]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FLOW/macros/extractFlowVZERO.C
new selections for LHC11h
[u/mrichter/AliRoot.git] / PWGCF / FLOW / macros / extractFlowVZERO.C
1 extractFlowVZERO(Int_t icentr,Int_t spec,Int_t arm=2,Bool_t isMC=kFALSE){
2   // NUA correction currently are missing
3   char name[100];
4   snprintf(name,100,"outVZEROv%i.root",arm);
5   TFile *fo = new TFile(name);
6   snprintf(name,100,"contVZEROv%i",arm);
7   TList *cont = (TList *) fo->Get(name);
8
9   Float_t xMin[5] = {icentr,-1,0,-10,0};
10   Float_t xMax[5] = {icentr,1,1,10,1.5};
11
12   cont->ls();
13
14   TProfile *p1 = cont->At(2);
15   TProfile *p2 = cont->At(3);
16   TProfile *p3 = cont->At(4);
17
18   Float_t res1=0,res2=0,res3=0; 
19   Float_t eres1=0,eres2=0,eres3=0; 
20
21   Int_t i = icentr;
22   if(p1->GetBinError(i+1)){
23     eres1 += 1./p1->GetBinError(i+1)/p1->GetBinError(i+1);
24     res1 += p1->GetBinContent(i+1)/p1->GetBinError(i+1)/p1->GetBinError(i+1);      
25   }
26   if(p2->GetBinError(i+1)){
27     eres2 += 1./p2->GetBinError(i+1)/p2->GetBinError(i+1);
28     res2 += p2->GetBinContent(i+1)/p2->GetBinError(i+1)/p2->GetBinError(i+1);      
29     }
30   if(p3->GetBinError(i+1)){
31     eres3 += 1./p3->GetBinError(i+1)/p3->GetBinError(i+1);
32     res3 += p3->GetBinContent(i+1)/p3->GetBinError(i+1)/p3->GetBinError(i+1);      
33   }
34   
35   res1 /= eres1;
36   res2 /= eres2;
37   res3 /= eres3;
38   
39   AliFlowVZEROResults *a = (AliFlowVZEROResults *) cont->At(0);
40   AliFlowVZEROResults *b = (AliFlowVZEROResults *) cont->At(1);
41   TProfile *pp = a->GetV2(spec,xMin,xMax);
42   TProfile *pp2 = b->GetV2(spec,xMin,xMax);
43     
44   
45   Float_t scaling = sqrt(res1*res3/res2);
46   pp->Scale(1./scaling);
47   
48   printf("resolution V0A = %f\n",scaling);
49   Float_t err1_2 = eres1*eres1/res1/res1/4 +
50     eres2*eres2/res2/res2/4 +
51     eres3*eres3/res3/res3/4;
52   Float_t err2_2 = err1_2;
53   err1_2 /= scaling*scaling;
54   scaling = sqrt(res2*res3/res1);
55   err2_2 /= scaling*scaling;
56   pp2->Scale(1./scaling);
57   printf("resolution V0C =%f\n",scaling);
58
59   pp->SetName("V0A");
60   pp2->SetName("V0C");
61
62   pp->Draw();
63   pp2->Draw("SAME");
64
65   if(arm == 2 && isMC){
66     snprintf(name,100,"outVZEROmc.root");
67     fo = new TFile(name);
68     snprintf(name,100,"contVZEROmc");
69     cont = (TList *) fo->Get(name);
70     AliFlowVZEROResults *c = (AliFlowVZEROResults *) cont->At(0);
71     c->GetV2(spec,xMin,xMax)->Draw("SAME");
72   }
73 }