StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
t0_ana.C
1 // $Id: t0_ana.C,v 1.4 2009/12/09 14:41:49 jcs Exp $
2 //
3 // $Log: t0_ana.C,v $
4 // Revision 1.4 2009/12/09 14:41:49 jcs
5 // delta_t0 and delta_gas can now both = 0
6 //
7 // Revision 1.3 2008/05/16 18:36:56 jcs
8 // update FTPC calibration macros
9 //
10 // Revision 1.2 2006/03/15 15:14:06 jcs
11 // add lines for listing CVS update info
12 //
13 
14 void t0_ana(TString input)
15 {
16 
17  // plain Style
18  gROOT->Reset();
19  gStyle->SetTitleOffset(1.25);
20  gStyle->SetCanvasBorderMode(0);
21  gStyle->SetPadBorderMode(0);
22  gStyle->SetPadColor(0);
23  gStyle->SetCanvasColor(0);
24  gStyle->SetTitleColor(0);
25  gStyle->SetStatColor(0);
26  gStyle->SetPalette(1);
27  gStyle->SetOptStat(0);
28  gStyle->SetOptFit();
29 
30  float delta=0.5;
31  float minrad=5;
32 
33  TCanvas *c1 = new TCanvas("c1","RadialStep West",200,10,700,500);
34  TCanvas *c2 = new TCanvas("c2","RadialStep East",230,40,730,530);
35  TCanvas *c3 = new TCanvas("c3","RadialStep East/West (fit)",260,70,760,560);
36  TCanvas *c4 = new TCanvas("c4","Diff. RadialStep East/West (fit)",290,100,790,590);
37  //TPostScript *fps=new TPostScript("central.ps",112);
38 
39  cout<<endl;
40  cout<<"T0 summary..."<<endl;
41  //cout<<endl;
42 
43  TLegend *leg;
44  leg = new TLegend(0.126,0.5,0.3,0.9);
45  leg->SetTextSize(0.03);
46 
47  int mindt=-8;
48  int maxdt=1;
49  //int anz=abs(maxdt-mindt);
50 
51  const int anz=10;
52  const Float_t rinner=7.73;
53 
54  Float_t stepw[anz],dt[anz],stepe[anz];
55  Float_t dstepw[anz], dstepe[anz];
56 
57  int zaehl=0;
58 
59  for (int i=mindt;i<=maxdt;i++)
60  {
61 
62  TString filename=input;
63 
64  float step=i/10.0;
65 
66  dt[zaehl]=step;
67 
68  char t[3];
69 
70  if (i==0)
71  {
72  filename +="_";
73  filename += "0";
74  filename +="_0_t0.root";
75 
76  sprintf(t,"%.2f",step);
77  }
78  else
79  {
80  sprintf(t,"%.2f",step);
81 
82  filename +="_";
83  filename += t;
84  filename +="_0_t0.root";
85  }
86 
87  cout<<"Process file "<<filename<<endl;
88 
89  TFile *f = new TFile(filename);
90 
91  f->ls();
92  //rstep[i]=new TH1F();
93 
94 
95  TH1F *rstep=new TH1F();
96  TH1F *rstep2=new TH1F();
97 
98  TString title="#Delta_{t0} = ";
99  title +=t;
100  //cout<<title<<endl;
101 
102  rstep=(TH1F*) f->Get("rad_west");
103  rstep->SetName(title);
104 
105 
106  //cout<<"Nach Hist get ..."<<endl;
107 
108  rstep2=(TH1F*) f->Get("rad_east");
109  rstep2->SetName(title);
110 
111  //cout<<"Nach Hist get ..."<<endl;
112 
113  //TString title2=rstep->GetTitle();
114  //title2 += t;
115 
116  //rstep->SetTitle(title2);
117 
118  rstep->SetMarkerStyle(22);
119  rstep2->SetMarkerStyle(22);
120  if (i<0)
121  {
122  //rstep->SetMarkerColor(abs(i)+1);
123  //rstep->SetLineColor(abs(i)+1);
124  //rstep2->SetMarkerColor(abs(i)+1);
125  //rstep2->SetLineColor(abs(i)+1);
126  rstep->SetMarkerColor((i)+10);
127  rstep->SetLineColor((i)+10);
128  rstep2->SetMarkerColor((i)+10);
129  rstep2->SetLineColor((i)+10);
130  }
131  else
132  {
133  //rstep->SetMarkerColor(abs(i)+40);
134  //rstep->SetLineColor(abs(i)+40);
135  //rstep2->SetMarkerColor(abs(i)+40);
136  //rstep2->SetLineColor(abs(i)+40);
137  rstep->SetMarkerColor((i)+40);
138  rstep->SetLineColor((i)+40);
139  rstep2->SetMarkerColor((i)+40);
140  rstep2->SetLineColor((i)+40);
141 
142  }
143 
144 
145  //rstep->Scale(1/rstep->GetEntries());
146 
147  if (i==mindt)
148  {
149  c1->cd();
150  rstep->DrawCopy("h");
151  c2->cd();
152  rstep2->DrawCopy("h");
153  }
154  else
155  {
156  c1->cd();
157  rstep->DrawCopy("hsame");
158  c2->cd();
159  rstep2->DrawCopy("hsame");
160  }
161 
162  leg->AddEntry(title,title,"l");
163 
164  // fit radial step (east/west);
165 
166  Float_t maxrad=rstep->GetXaxis()->GetBinCenter(rstep->GetMaximumBin());
167  Float_t maxrad2=rstep->GetXaxis()->GetBinCenter(rstep2->GetMaximumBin());
168 
169  /*
170  TF1 *gfit;
171 
172  if (maxrad+delta<12)
173  gfit=new TF1("gfit","gaus",minrad,maxrad+delta);
174  else
175  gfit=new TF1("gfit","gaus",minrad,12);
176  */
177 
178  TF1 *gfit=new TF1("gfit","gaus",minrad,maxrad+delta);
179  //if (i<5)
180  rstep->Fit(gfit,"NQR");
181  //cout<<t<<" "<<maxrad<<" "<<gfit->GetParameter(1)-gfit->GetParameter(2)<<endl;
182  stepw[zaehl]=(gfit->GetParameter(1)-gfit->GetParameter(2));
183  dstepw[zaehl]=fabs(rinner-(gfit->GetParameter(1)-gfit->GetParameter(2)));
184  delete gfit;
185 
186  TF1 *gfit2=new TF1("gfit2","gaus",minrad,maxrad2+delta);
187  //if (i<5)
188  rstep2->Fit(gfit2,"NQR");
189  //cout<<t<<" "<<maxrad<<" "<<gfit2->GetParameter(1)-gfit2->GetParameter(2)<<endl;
190  stepe[zaehl]=(gfit2->GetParameter(1)-gfit2->GetParameter(2));
191  dstepe[zaehl]=fabs(rinner-(gfit2->GetParameter(1)-gfit2->GetParameter(2)));
192  delete gfit2;
193 
194 
195  //delete rstep; delete rstep2;
196 
197  zaehl++;
198 
199  f->Close();
200  }
201 
202  c1->cd();
203  leg->Draw();
204  c2->cd();
205  leg->Draw();
206 
207  c3->cd();
208 
209  TH2F *hr=new TH2F("hr","RadiusStep vs. #Delta_{t0} (read=east/ black=west)",100,(mindt/10.0)-0.25,int (maxdt/10)+0.25,100,5,10);
210  hr->DrawCopy();
211 
212  TLine *inner=new TLine(mindt/10.0,7.73,((maxdt)/10.0),7.73);inner->SetLineColor(3);inner->Draw("same");
213 
214  TGraph *gw=new TGraph(anz,dt,stepw);
215  gw->SetMarkerStyle(21);
216  gw->SetMarkerSize(1);
217  gw->SetMarkerColor(1);
218  gw->SetLineColor(1);
219 
220  TGraph *ge=new TGraph(anz,dt,stepe);
221  ge->SetMarkerStyle(21);
222  ge->SetMarkerSize(1);
223  ge->SetMarkerColor(2);
224  ge->SetLineColor(2);
225 
226  gw->Draw("P");
227  ge->Draw("P");
228 
229  c4->cd();
230 
231  TH2F *hr1=new TH2F("hr1","abs(Radius_{inner}-RadiusStep) vs. #Delta_{t0} (read=east/ black=west)",100,(mindt/10.0)-0.25,int (maxdt/10)+0.25,100,-0.25,1.25);
232  hr1->DrawCopy();
233 
234  TGraph *gwd=new TGraph(anz,dt,dstepw);
235  gwd->SetMarkerStyle(21);
236  gwd->SetMarkerSize(1);
237  gwd->SetMarkerColor(1);
238  gwd->SetLineColor(1);
239 
240  TGraph *ged=new TGraph(anz,dt,dstepe);
241  ged->SetMarkerStyle(21);
242  ged->SetMarkerSize(1);
243  ged->SetMarkerColor(2);
244  ged->SetLineColor(2);
245 
246  gwd->Draw("P");
247  ged->Draw("P");
248 
249  cout<<endl;
250 
251 }
252