]>
Commit | Line | Data |
---|---|---|
587d006a | 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]; | |
d6a1c304 | 4 | snprintf(name,100,"outVZEROv%i.root",arm); |
587d006a | 5 | TFile *fo = new TFile(name); |
d6a1c304 | 6 | snprintf(name,100,"contVZEROv%i",arm); |
587d006a | 7 | TList *cont = (TList *) fo->Get(name); |
afa8df58 | 8 | |
587d006a | 9 | Float_t xMin[5] = {icentr,-1,0,-10,0}; |
10 | Float_t xMax[5] = {icentr,1,1,10,1.5}; | |
afa8df58 | 11 | |
587d006a | 12 | cont->ls(); |
afa8df58 | 13 | |
587d006a | 14 | TProfile *p1 = cont->At(2); |
15 | TProfile *p2 = cont->At(3); | |
16 | TProfile *p3 = cont->At(4); | |
afa8df58 | 17 | |
afa8df58 | 18 | Float_t res1=0,res2=0,res3=0; |
19 | Float_t eres1=0,eres2=0,eres3=0; | |
20 | ||
587d006a | 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); | |
afa8df58 | 25 | } |
587d006a | 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); | |
afa8df58 | 29 | } |
587d006a | 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); | |
afa8df58 | 33 | } |
587d006a | 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 | ||
afa8df58 | 45 | Float_t scaling = sqrt(res1*res3/res2); |
46 | pp->Scale(1./scaling); | |
587d006a | 47 | |
afa8df58 | 48 | printf("resolution V0A = %f\n",scaling); |
49 | Float_t err1_2 = eres1*eres1/res1/res1/4 + | |
587d006a | 50 | eres2*eres2/res2/res2/4 + |
51 | eres3*eres3/res3/res3/4; | |
afa8df58 | 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 | ||
587d006a | 59 | pp->SetName("V0A"); |
60 | pp2->SetName("V0C"); | |
afa8df58 | 61 | |
587d006a | 62 | pp->Draw(); |
63 | pp2->Draw("SAME"); | |
afa8df58 | 64 | |
587d006a | 65 | if(arm == 2 && isMC){ |
d6a1c304 | 66 | snprintf(name,100,"outVZEROmc.root"); |
587d006a | 67 | fo = new TFile(name); |
d6a1c304 | 68 | snprintf(name,100,"contVZEROmc"); |
587d006a | 69 | cont = (TList *) fo->Get(name); |
70 | AliFlowVZEROResults *c = (AliFlowVZEROResults *) cont->At(0); | |
71 | c->GetV2(spec,xMin,xMax)->Draw("SAME"); | |
afa8df58 | 72 | } |
afa8df58 | 73 | } |