]>
Commit | Line | Data |
---|---|---|
69d0af30 | 1 | #if !defined(__CINT__) || defined(__MAKECINT__) |
2 | #include "TList.h" | |
3 | #include "TGraphErrors.h" | |
4 | #include "TH1.h" | |
5 | #include "TObjArray.h" | |
6 | #include "TFile.h" | |
7 | #include "TPad.h" | |
8 | #endif | |
9 | ||
10 | TGraphErrors *gr[20]; | |
11 | double mnX=1e6,mnY=1e6,mxX=-1e6,mxY=-1e6; | |
12 | int nbTot = 0; | |
13 | int nbc = 0; | |
14 | TH1* hbase = 0; | |
15 | ||
16 | void Compose(char* fL="resMult/res137366_eta_m0875_p0875_zv_m7_p7_V0_10bins_CutEta-0.9_0.9_Zv-7.0_7.0_bgInj_Shape_wdst_mcLB0_cutSig1.5_cutBg5.0.root", | |
17 | char* fM="resMult/res137366_eta_m1875_m0625_zv_p6_p13_V0_10bins_CutEta-1.9_-0.6_Zv6.0_13.0_bgInj_Shape_wdst_mcLB0_cutSig1.5_cutBg5.0.root", | |
18 | char* fR="resMult/res137366_eta_p0625_p1875_zv_m13_m6_V0_10bins_CutEta0.6_1.9_Zv-13.0_-6.0_bgInj_Shape_wdst_mcLB0_cutSig1.5_cutBg5.0.root") | |
19 | ||
20 | { | |
21 | TObjArray *arr[3]; | |
22 | TFile* fl = TFile::Open(fL); | |
23 | arr[0] = (TObjArray*)fl->Get("TObjArray"); | |
24 | TFile* fm = TFile::Open(fM); | |
25 | arr[1] = (TObjArray*)fm->Get("TObjArray"); | |
26 | TFile* fr = TFile::Open(fR); | |
27 | arr[2] = (TObjArray*)fr->Get("TObjArray"); | |
28 | // | |
29 | for (int ia=0;ia<3;ia++) nbTot += ((TH1*)arr[ia]->At(0))->GetNbinsX(); | |
30 | nbc = arr[0]->GetEntriesFast(); | |
31 | // | |
32 | for (int ic=0;ic<nbc;ic++) { | |
33 | gr[ic] = new TGraphErrors(nbTot); | |
34 | gr[ic]->SetMarkerStyle(20+ic); | |
35 | gr[ic]->SetMarkerColor(kRed); | |
36 | gr[ic]->SetLineColor(kRed); | |
37 | int npg = 0; | |
38 | for (int ia=0;ia<3;ia++) { | |
39 | TH1* hh = (TH1*)arr[ia]->At(ic); | |
40 | int nbh = hh->GetNbinsX(); | |
41 | for (int ib=1;ib<=nbh;ib++) { | |
42 | double vl = hh->GetBinContent(ib); | |
43 | double vle = hh->GetBinError(ib); | |
44 | double x = hh->GetBinCenter(ib); | |
45 | double xe = hh->GetBinWidth(ib)/2; | |
46 | // | |
47 | if (mnX>x-xe) mnX = x-xe; | |
48 | if (mxX<x+xe) mxX = x+xe; | |
49 | if (mnY>vl-vle) mnY = vl-vle; | |
50 | if (mxY<vl+vle) mxY = vl+vle; | |
51 | // | |
52 | gr[ic]->SetPoint(npg, x,vl); | |
53 | gr[ic]->SetPointError(npg, xe,vle); | |
54 | npg++; | |
55 | // | |
56 | } | |
57 | } | |
58 | } | |
59 | // | |
60 | double del = mxX-mnX; | |
61 | mnX -= 0.05*del; | |
62 | mxX += 0.05*del; | |
63 | del = mxY-mnY; | |
64 | mnY -= 0.1*del; | |
65 | mxY += 0.1*del; | |
66 | hbase = new TH1F("hbase","",100,mnX,mxX); | |
67 | hbase->SetMinimum(mnY); | |
68 | hbase->SetMaximum(mxY); | |
69 | // | |
70 | hbase->Draw(); | |
71 | for (int i=0;i<nbc;i++) { | |
72 | gr[i]->Draw("p"); | |
73 | } | |
74 | gPad->SetGrid(); | |
75 | } |