StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
doBsmdSpread.C
1 void doBsmdSpread(char *f_20,char *f_10,char *f_30){
2 
3  gStyle->SetErrorX(0);
4 
5  TFile *f_nom=new TFile(f_20,"OPEN");
6  TH1F *h_effMB=f_nom->Get("h_effMB");
7  TH1F *h_effHT1=f_nom->Get("h_effHT1");
8  TH1F *h_effHT2=f_nom->Get("h_effHT2");
9 
10  TFile *f_plus=new TFile(f_10,"OPEN");
11  TH1F *h_effMB_plus=f_plus->Get("h_effMB");
12  TH1F *h_effHT1_plus=f_plus->Get("h_effHT1");
13  TH1F *h_effHT2_plus=f_plus->Get("h_effHT2");
14 
15  TFile *f_min=new TFile(f_30,"OPEN");
16  TH1F *h_effMB_min=f_min->Get("h_effMB");
17  TH1F *h_effHT1_min=f_min->Get("h_effHT1");
18  TH1F *h_effHT2_min=f_min->Get("h_effHT2");
19 
20  h_effMB_plus->Divide(h_effMB);
21  h_effHT1_plus->Divide(h_effHT1);
22  h_effHT2_plus->Divide(h_effHT2);
23 
24  h_effMB_min->Divide(h_effMB);
25  h_effHT1_min->Divide(h_effHT1);
26  h_effHT2_min->Divide(h_effHT2);
27 
28  TF1 *sub=new TF1("sub","1.",0.,20.);
29  TF1 *mult=new TF1("mult","-1.",0.,20.);
30  h_effMB_plus->Add(sub,-1.);
31  h_effHT1_plus->Add(sub,-1.);
32  h_effHT2_plus->Add(sub,-1.);
33  h_effMB_min->Add(sub,-1.);
34  h_effHT1_min->Add(sub,-1.);
35  h_effHT2_min->Add(sub,-1.);
36  h_effMB_plus->Multiply(mult);
37  h_effHT1_plus->Multiply(mult);
38  h_effHT2_plus->Multiply(mult);
39  h_effMB_min->Multiply(mult);
40  h_effHT1_min->Multiply(mult);
41  h_effHT2_min->Multiply(mult);
42 
43 
44 
45  TGraphErrors *gMB_plus=new TGraphErrors(h_effMB_plus);
46  gMB_plus->SetName("gMB_plus");
47  TGraphErrors *gHT1_plus=new TGraphErrors(h_effHT1_plus);
48  gHT1_plus->SetName("gHT1_plus");
49  TGraphErrors *gHT2_plus=new TGraphErrors(h_effHT2_plus);
50  gHT2_plus->SetName("gHT2_plus");
51 
52  TGraphErrors *gMB_min=new TGraphErrors(h_effMB_min);
53  gMB_min->SetName("gMB_min");
54  TGraphErrors *gHT1_min=new TGraphErrors(h_effHT1_min);
55  gHT1_min->SetName("gHT1_min");
56  TGraphErrors *gHT2_min=new TGraphErrors(h_effHT2_min);
57  gHT2_min->SetName("gHT2_min");
58 
59  TCanvas *c=new TCanvas("c","c",400,250);
60  TMultiGraph *m=new TMultiGraph();
61  TMultiGraph *mm=new TMultiGraph();
62 
63  gMB_plus->SetLineColor(1);
64  gMB_min->SetLineColor(1);
65  gHT1_plus->SetLineColor(4);
66  gHT1_min->SetLineColor(4);
67  gHT2_plus->SetLineColor(2);
68  gHT2_min->SetLineColor(2);
69 
70  gMB_plus->RemovePoint(0);
71  gMB_plus->RemovePoint(0);
72  gHT1_plus->RemovePoint(0);
73  gHT1_plus->RemovePoint(0);
74  gHT1_plus->RemovePoint(0);
75  gHT1_plus->RemovePoint(0);
76  gHT2_plus->RemovePoint(0);
77  gHT2_plus->RemovePoint(0);
78  gHT2_plus->RemovePoint(0);
79  gHT2_plus->RemovePoint(0);
80  gHT2_plus->RemovePoint(0);
81  gHT2_plus->RemovePoint(0);
82 
83  gMB_min->RemovePoint(0);
84  gMB_min->RemovePoint(0);
85  gHT1_min->RemovePoint(0);
86  gHT1_min->RemovePoint(0);
87  gHT1_min->RemovePoint(0);
88  gHT1_min->RemovePoint(0);
89  gHT2_min->RemovePoint(0);
90  gHT2_min->RemovePoint(0);
91  gHT2_min->RemovePoint(0);
92  gHT2_min->RemovePoint(0);
93  gHT2_min->RemovePoint(0);
94  gHT2_min->RemovePoint(0);
95 
96  TF1 *fit=new TF1("fit","[0]+[1]*exp([2]*x)",1.,15.);
97  fit->SetParameters(0.,1.,-1.);
98  TF1 *fit2=new TF1("fit2","[0]+[1]*exp([2]*x)",1.,15.);
99  fit2->SetParameters(0.,1.,-1.);
100 
101  m->Add(gMB_plus);
102  m->Add(gHT1_plus);
103  m->Add(gHT2_plus);
104  m->Fit(fit,"R0");
105 
106  mm->Add(gMB_min);
107  mm->Add(gHT1_min);
108  mm->Add(gHT2_min);
109  mm->Fit(fit2,"R0");
110 
111  m->Add(gMB_min);
112  m->Add(gHT1_min);
113  m->Add(gHT2_min);
114 
115  m->SetMinimum(-1.);
116  m->SetMaximum(1.);
117 
118  m->Draw("ap");
119  fit->Draw("same");
120  fit2->Draw("same");
121 
122  TLegend *leg=new TLegend(0.5,0.5,0.7,0.7);
123  leg->AddEntry(gMB_min,"minimum bias, BSMD #sigma(C)/C=30%","p");
124  leg->AddEntry(gHT1_min,"hightower 1","p");
125  leg->AddEntry(gHT2_min,"hightower 2","p");
126  leg->AddEntry(gMB_plus,"BSMD #sigma(C)/C=10%","p");
127  leg->Draw();
128 
129  c->SaveAs("bsmd_spread_pp.eps");
130  c->SaveAs("bsmd_spread_pp.root");
131 
132 }