FairRoot/PandaRoot
trickySummaryAlign.C
Go to the documentation of this file.
1 #include <TFile.h>
2 #include <TH1.h>
3 #include <TH2.h>
4 #include <TString.h>
5 #include <TCanvas.h>
6 
7 #include <sstream>
8 using namespace std;
9 int trickySummaryAlign(TString pathGi="/panda/pandaroot/macro/lmd/testPixelAlignSIM_", double tr_sc=0, double rt_sc=0)
10 //void SummaryAlign(TString pathG="/panda/pandaroot/macro/lmd/testPixelAlignSIM_10000/mom_15//", double tr_sc=0, double rt_sc=0)
11 {
12  gStyle->SetLabelSize(0.045,"xyz");
13  gStyle->SetTitleXSize(0.04);
14  gStyle->SetTitleYSize(0.04);
15  gStyle->SetTitleYOffset(1.2);
16  TString pathG1=pathGi+"3000000/mom_15/";
17  TString pathG2=pathGi+"3000000/mom_15/";
18  const int colors[4] = {28,kAzure+2,46,8};
19  const int colors_a[4] = {kViolet-6,kOrange+7,kGreen+3,kRed+1};
20  const int ntrksSample = 1e4;
21  const double i_TrksSimi = 100./ntrksSample; //relative to simulated in %
22  const int nParDt=10;
23  double v_Dt[nParDt]={0, 50, 100, 200, 300, 400, 500, 600, 800, 1000};
24  const int nParDa=4;
25  double v_Da[nParDa]={0,1,3,5};
26  const int nS=1;
27  double TrksSim[nParDa][nParDt];
28 
29  double TrksBef[nParDa][nParDt];
30  double TrksAft[nParDa][nParDt];
31  double TrksDiff[nParDa][nParDt];
32  double TrksKnossos[nParDa][nParDt], errTrksKnossos[nParDa][nParDt];
33  double TrksKnossos0[nParDa][nParDt], errTrksKnossos0[nParDa][nParDt];
34 
35  //How to save data
36  TString resname= pathG1+"/Results1SampleSummary_BOX";
37  TString resname_pdf = resname+".pdf";
38  TString resname_pdf_o = resname_pdf+"(";
39  TString resname_pdf_c = resname_pdf+")";
40 
41  double mis_b[nParDa][6][nParDt];
42  double mis_a[nParDa][6][nParDt];
43  double mis_v_b[nParDa][6][nParDt];
44  double mis_v_a[nParDa][6][nParDt];
45 
46  double theta_mean_b[nParDa][nParDt], theta_mean_a[nParDa][nParDt], theta_mean_r[nParDa][nParDt];
47  double theta_rms_b[nParDa][nParDt], theta_rms_a[nParDa][nParDt], theta_rms_r[nParDa][nParDt];
48 
49  double err_theta_mean_b[nParDa][nParDt], err_theta_mean_a[nParDa][nParDt], err_theta_mean_r[nParDa][nParDt];
50  double err_theta_rms_b[nParDa][nParDt], err_theta_rms_a[nParDa][nParDt], err_theta_rms_r[nParDa][nParDt];
51  // TH1D *hthetabefore = new TH1D("hthetabefore","#theta_{MC}-#theta_{rec};#delta#theta,rad",1e2,-1e-3,1e-3);
52  // TH1D *hthetaafter = new TH1D("hthetaafter","#theta_{MC}-#theta_{rec};#delta#theta,rad",1e2,-1e-3,1e-3);
53  // TH1D *hthetaref = new TH1D("hthetaref","#theta_{MC}-#theta_{rec};#delta#theta,rad",1e2,-1e-3,1e-3);
54  for(int ipart=0;ipart<nParDa;ipart++){
55  for(int i=0;i<nParDt;i++){
56  TrksSim[ipart][i]=ntrksSample ; //ntrksSample events with 1trk/event
57  theta_mean_b[ipart][i] = 0;
58  theta_mean_a[ipart][i] = 0;
59  theta_mean_r[ipart][i] = 0;
60  theta_rms_b[ipart][i] = 0;
61  theta_rms_a[ipart][i] = 0;
62  theta_rms_r[ipart][i] = 0;
63  }
64  }
65 
66  for(int ipart=0;ipart<nParDa;ipart++){
67  for(int i=0;i<nParDt;i++){
68  tr_sc = v_Dt[i];
69  rt_sc= v_Da[ipart];
70  int nTrks = TrksSim[ipart][i];
71  //Where search for files
72  TString pathG = pathG1;
73  if(rt_sc<3) pathG = pathG2;
74  TString path = pathG+"/";
75  path+=tr_sc;
76  path+="mkm_";
77  path+=rt_sc;
78  path+="mrad/";
79 
81  TString name1 = path + "/Lumi_QA_before.root";
82  TString name2 = path + "/Lumi_QA_after.root";
83  // TString name2 = path + "/Lumi_QA_after_";
84  // name2 +=i;
85  // name2 +="SumAlign.root";
86 
87 
88  TString name3 = pathG1+"/0mkm_0mrad";
89  name3+="/Lumi_QA_after.root";
90 
91  // TH1F *hbeforetmp; TH1F *haftertmp;
92  TH1 *hbefore;
93  TH1 *hafter;
94  TH1 *hrefer;
95  // TNtuple *nsectors_b;
96  // TNtuple *nsectors_a;
97  // TNtuple *nsectors_r;
98 
99  TFile *f1 = new TFile(name1,"READ");
100  if (f1->IsZombie()) {
101  std::cout << "!!! Error opening file " <<name1<< std::endl;
102  continue;
103  // return;
104  }
105  cout<<name1<<endl;
106 
107 
108  hbefore = (TH1*)f1->Get("NearIP/hResTheta");
109  //hbefore->Print();
110  hbefore->SetName("hResThetaBefore");
111  hbefore->SetTitle("#theta resolution");
112  // hbefore->Print();
113  TrksBef[ipart][i] = hbefore->GetEntries();
114 
115  theta_mean_b[ipart][i] = 1e3*(hbefore->GetMean());
116  theta_rms_b[ipart][i] = 1e3*(hbefore->GetRMS());
117  err_theta_mean_b[ipart][i] = 1e3*(hbefore->GetMeanError());
118  err_theta_rms_b[ipart][i] = 1e3*(hbefore->GetRMSError());
119  // nsectors_b = (TNtuple*)f1->Get("nsectors");
120  TFile *f2 = new TFile(name2,"READ");
121  if (f2->IsZombie()) {
122  std::cout << "!!! Error opening file " <<name2<< std::endl;
123  continue;
124  // return;
125  }
126  hafter = (TH1F*)f2->Get("NearIP/hResTheta");
127  hafter->SetName("hResThetaAfter");
128  hafter->SetTitle("#theta resolution");
129 
130  TrksAft[ipart][i] = hafter->GetEntries();
131  TrksDiff[ipart][i] = (TrksAft[ipart][i] - TrksBef[ipart][i]);
132 
133  theta_mean_a[ipart][i] = 1e3*(hafter->GetMean());
134  theta_rms_a[ipart][i] = 1e3*(hafter->GetRMS());
135  err_theta_mean_a[ipart][i] = 1e3*(hafter->GetMeanError());
136  err_theta_rms_a[ipart][i] = 3*1e3*(hafter->GetRMSError());
137  //cout<<"err_theta_rms_a[ipart][i] = "<<err_theta_rms_a[ipart][i]<<endl;
138  TFile *f3 = new TFile(name3,"READ");
139  if (f3->IsZombie()) {
140  std::cout << "!!! Error opening file " <<name2<< std::endl;
141  continue;
142  // return;
143  }
144  hrefer = (TH1F*)f3->Get("NearIP/hResTheta");
145  hrefer->SetName("hResThetaRef");
146  hrefer->SetTitle("#theta resolution");
147 
148  theta_mean_r[ipart][i] = 1e3*(hrefer->GetMean());
149  theta_rms_r[ipart][i] = 1e3*(hrefer->GetRMS());
150  err_theta_mean_r[ipart][i] = 1e3*(hrefer->GetMeanError());
151  err_theta_rms_r[ipart][i] = 1e3*(hrefer->GetRMSError());
152 
154  f1->Close();
155  f2->Close();
156  f3->Close();
158  TString namemisc = pathG+"/";
159  namemisc+=tr_sc;
160  namemisc+="mkm_";
161  namemisc+=rt_sc;
162  namemisc+="mrad";
163  namemisc+="/KnossosResults.root";
164  TFile *fmisc = new TFile(namemisc,"READ");
165  if (fmisc->IsZombie()) {
166  std::cout << "!!! Error opening file " <<namemisc<< std::endl;
167  // return;
168  }
169  TH2F *hStatKnossos = (TH2F*)fmisc->Get("haStat_out");
170  TrksKnossos[ipart][i] = hStatKnossos->ProjectionY()->GetMean();
171  errTrksKnossos[ipart][i] = hStatKnossos->ProjectionY()->GetRMS();
172  TH2F *hStatKnossos0 = (TH2F*)fmisc->Get("haStat_in");
173  TrksKnossos0[ipart][i] = hStatKnossos0->ProjectionY()->GetMean();
174  errTrksKnossos0[ipart][i] = hStatKnossos0->ProjectionY()->GetRMS();
175  TH2F *hmis_b_0 = (TH2F*)fmisc->Get("mis_before_0");
176  mis_b[ipart][0][i] = 1e4*(hmis_b_0->ProjectionY()->GetRMS());
177  TH2F *hmis_b_1 = (TH2F*)fmisc->Get("mis_before_1");
178  mis_b[ipart][1][i] = 1e4*(hmis_b_1->ProjectionY()->GetRMS());
179  TH2F *hmis_b_2 = (TH2F*)fmisc->Get("mis_before_2");
180  mis_b[ipart][2][i] = 1e4*(hmis_b_2->ProjectionY()->GetRMS());
181  TH2F *hmis_b_3 = (TH2F*)fmisc->Get("mis_before_3");
182  mis_b[ipart][3][i] = 1e3*(hmis_b_3->ProjectionY()->GetRMS());
183  TH2F *hmis_b_4 = (TH2F*)fmisc->Get("mis_before_4");
184  mis_b[ipart][4][i] = 1e3*(hmis_b_4->ProjectionY()->GetRMS());
185  TH2F *hmis_b_5 = (TH2F*)fmisc->Get("mis_before_5");
186  mis_b[ipart][5][i] = 1e3*(hmis_b_5->ProjectionY()->GetRMS());
187 
188  TH2F *hmis_a_0 = (TH2F*)fmisc->Get("mis_diff_0");
189  mis_a[ipart][0][i] = 1e4*(hmis_a_0->ProjectionY()->GetRMS());
190  TH2F *hmis_a_1 = (TH2F*)fmisc->Get("mis_diff_1");
191  mis_a[ipart][1][i] = 1e4*(hmis_a_1->ProjectionY()->GetRMS());
192  TH2F *hmis_a_2 = (TH2F*)fmisc->Get("mis_diff_2");
193  mis_a[ipart][2][i] = 1e4*(hmis_a_2->ProjectionY()->GetRMS());
194  TH2F *hmis_a_3 = (TH2F*)fmisc->Get("mis_diff_3");
195  mis_a[ipart][3][i] = 1e3*(hmis_a_3->ProjectionY()->GetRMS());
196  TH2F *hmis_a_4 = (TH2F*)fmisc->Get("mis_diff_4");
197  mis_a[ipart][4][i] = 1e3*(hmis_a_4->ProjectionY()->GetRMS());
198  TH2F *hmis_a_5 = (TH2F*)fmisc->Get("mis_diff_5");
199  mis_a[ipart][5][i] = 1e3*(hmis_a_5->ProjectionY()->GetRMS());
200 
201 
202  mis_v_b[ipart][0][i] = 1e4*(hmis_b_0->ProjectionY()->GetMean());
203  mis_v_b[ipart][1][i] = 1e4*(hmis_b_1->ProjectionY()->GetMean());
204  mis_v_b[ipart][2][i] = 1e4*(hmis_b_2->ProjectionY()->GetMean());
205  mis_v_b[ipart][3][i] = 1e3*(hmis_b_3->ProjectionY()->GetMean());
206  mis_v_b[ipart][4][i] = 1e3*(hmis_b_4->ProjectionY()->GetMean());
207  mis_v_b[ipart][5][i] = 1e3*(hmis_b_5->ProjectionY()->GetMean());
208 
209  mis_v_a[ipart][0][i] = 1e4*(hmis_a_0->ProjectionY()->GetMean());
210  mis_v_a[ipart][1][i] = 1e4*(hmis_a_1->ProjectionY()->GetMean());
211  mis_v_a[ipart][2][i] = 1e4*(hmis_a_2->ProjectionY()->GetMean());
212  mis_v_a[ipart][3][i] = 1e3*(hmis_a_3->ProjectionY()->GetMean());
213  mis_v_a[ipart][4][i] = 1e3*(hmis_a_4->ProjectionY()->GetMean());
214  mis_v_a[ipart][5][i] = 1e3*(hmis_a_5->ProjectionY()->GetMean());
215  // cout<<"mis_v_a["<<ipart<<"][5]["<<i<<"] = "<<mis_v_a[ipart][5][i]<<endl;
216  // cout<<"mis_a["<<ipart<<"][5]["<<i<<"] = "<<mis_a[ipart][5][i]<<endl;
218  fmisc->Close();
219  }// trans
220  }// rotation
221 
222  // Draw results --------------------------------
223  double min_theta_mean_b = theta_mean_b[0][0], min_theta_rms_b = theta_rms_b[0][0];
224  double min_theta_mean_a = theta_mean_a[0][0], min_theta_rms_a = theta_rms_a[0][0];
225  double max_theta_mean_b = theta_mean_b[0][0], max_theta_rms_b = theta_rms_b[0][0];
226  double max_theta_mean_a = theta_mean_a[0][0], max_theta_rms_a = theta_rms_a[0][0];
227  for(int ipart=0;ipart<nParDa;ipart++){
228  for(int i=0;i<nParDt;i++){
229  if(min_theta_mean_b>theta_mean_b[ipart][i]) min_theta_mean_b = theta_mean_b[ipart][i];
230  if(max_theta_mean_b<theta_mean_b[ipart][i]) max_theta_mean_b = theta_mean_b[ipart][i];
231  if(min_theta_mean_a>theta_mean_a[ipart][i]) min_theta_mean_a = theta_mean_a[ipart][i];
232  if(max_theta_mean_a<theta_mean_a[ipart][i]) max_theta_mean_a = theta_mean_a[ipart][i];
233 
234  if(min_theta_rms_b>theta_rms_b[ipart][i]) min_theta_rms_b = theta_rms_b[ipart][i];
235  if(max_theta_rms_b<theta_rms_b[ipart][i]) max_theta_rms_b = theta_rms_b[ipart][i];
236  if(min_theta_rms_a>theta_rms_a[ipart][i]) min_theta_rms_a = theta_rms_a[ipart][i];
237  if(max_theta_rms_a<theta_rms_a[ipart][i]) max_theta_rms_a = theta_rms_a[ipart][i];
238  }
239  }
240 
241  for(int ipart=0;ipart<nParDa;ipart++){
242  for(int i=0;i<nParDt;i++){
243 
244  if(min_theta_mean_b>theta_mean_r[ipart][i]) min_theta_mean_b = theta_mean_r[ipart][i];
245  if(max_theta_mean_b<theta_mean_r[ipart][i]) max_theta_mean_b = theta_mean_r[ipart][i];
246  if(min_theta_mean_a>theta_mean_r[ipart][i]) min_theta_mean_a = theta_mean_r[ipart][i];
247  if(max_theta_mean_a<theta_mean_r[ipart][i]) max_theta_mean_a = theta_mean_r[ipart][i];
248 
249  if(min_theta_rms_b>theta_rms_r[ipart][i]) min_theta_rms_b = theta_rms_r[ipart][i];
250  if(max_theta_rms_b<theta_rms_r[ipart][i]) max_theta_rms_b = theta_rms_r[ipart][i];
251  if(min_theta_rms_a>theta_rms_r[ipart][i]) min_theta_rms_a = theta_rms_r[ipart][i];
252  if(max_theta_rms_a<theta_rms_r[ipart][i]) max_theta_rms_a = theta_rms_r[ipart][i];
253  }
254  }
255 
256  TCanvas c1;
257  TLegend *leg_b = new TLegend(0.83,0.65,0.97,0.97);
258  leg_b->SetFillColor(0);
259  TLegend *leg_a = new TLegend(0.83,0.65,0.97,0.97);
260  leg_a->SetFillColor(0);
261  // TLegend *leg_b = new TLegend(0.78,0.51,0.98,0.98);
262  // leg_b->SetFillColor(0);
263 
264  TMultiGraph *mgr_theta = new TMultiGraph();
265  TMultiGraph *mgr_theta_b = new TMultiGraph();
266  TGraphErrors *gr_theta_b[nParDa],*gr_theta_a[nParDa],*gr_theta_r[nParDa];
267  for(int ipart=0;ipart<nParDa;ipart++){// loop over rotaion scale
268  // double [nParDt], theta_mean_a[nParDa][nParDt], theta_mean_r[nParDa][nParDt];
269  // double [nParDt], theta_rms_a[nParDa][nParDt], theta_rms_r[nParDa][nParDt];
270  gr_theta_b[ipart] = new TGraphErrors(nParDt,v_Dt,theta_mean_b[ipart],0,err_theta_mean_b[ipart]);
271  gr_theta_b[ipart]->SetMarkerStyle(20+ipart);
272  // gr_theta_b[ipart]->SetMarkerColor(kGreen-3);
273  // gr_theta_b[ipart]->SetMarkerColor(30*ipart+8);
274  gr_theta_b[ipart]->SetMarkerColor(colors[ipart]);
275  gr_theta_b[ipart]->SetLineColor(colors[ipart]);
276  // gr_theta_b[ipart]->SetLineColor(kGreen-3+ipart);
277  gr_theta_b[ipart]->SetMarkerSize(1.7+ipart*0.3);
278  gr_theta_a[ipart] = new TGraphErrors(nParDt,v_Dt,theta_mean_a[ipart],0,err_theta_mean_a[ipart]);
279  gr_theta_a[ipart]->SetMarkerStyle(20+ipart);
280  //gr_theta_a[ipart]->SetMarkerColor(kOrange+7);
281  gr_theta_a[ipart]->SetMarkerColor(colors_a[ipart]);
282  gr_theta_a[ipart]->SetLineColor(colors_a[ipart]);
283  gr_theta_a[ipart]->SetMarkerSize(1.7+ipart*0.3);
284  mgr_theta_b->Add(gr_theta_b[ipart]);
285  mgr_theta->Add(gr_theta_a[ipart]);
286  if(ipart==0){
287  gr_theta_r[ipart] = new TGraphErrors(nParDt,v_Dt,theta_mean_r[ipart],0,err_theta_mean_r[ipart]);
288  gr_theta_r[ipart]->SetMarkerStyle(20+ipart);
289  gr_theta_r[ipart]->SetMarkerColor(kGray+3);
290  gr_theta_r[ipart]->SetMarkerSize(2.7);
291  mgr_theta_b->Add(gr_theta_r[ipart]);
292  mgr_theta->Add(gr_theta_r[ipart]);
293  // leg->AddEntry(gr_theta_r[ipart],"ideal","lep");
294  leg_b->AddEntry(gr_theta_r[ipart],"ideal","lep");
295  leg_a->AddEntry(gr_theta_r[ipart],"ideal","lep");
296  }
297  TString dRName = "#Delta_{r} = ";
298  dRName +=v_Da[ipart];
299  // TString dRName_b = dRName+ " (BEFORE)";
300  // TString dRName_a = dRName+ " (AFTER)";
301  // leg->AddEntry(gr_theta_b[ipart],dRName_b,"lep");
302  // leg->AddEntry(gr_theta_a[ipart],dRName_a,"lep");
303  TString dRName_b = dRName;
304  leg_b->AddEntry(gr_theta_b[ipart],dRName_b,"lep");
305  leg_a->AddEntry(gr_theta_a[ipart],dRName_b,"lep");
306  }// END loop over rotaion scale
307 
308  mgr_theta_b->Draw("AP");
309  leg_b->Draw();
310  mgr_theta_b->SetTitle("Before");
311  mgr_theta_b->GetXaxis()->SetTitle("#Delta_{t}, #mum");
312  mgr_theta_b->GetYaxis()->SetTitle("#theta_{mean}, #murad");
313  mgr_theta_b->GetHistogram()->SetMaximum(1.1*max_theta_mean_b);
314  mgr_theta_b->GetHistogram()->SetMinimum(0.9*min_theta_mean_b);
315  if(min_theta_mean_b<0) mgr_theta_b->GetHistogram()->SetMinimum(1.1*min_theta_mean_b);
316  if(max_theta_mean_b<0) mgr_theta_b->GetHistogram()->SetMaximum(0.9*max_theta_mean_b);
317  c1.Print(resname_pdf_o); //write canvas and keep the ps file open
318  c1.Clear();
319 
320 
321  mgr_theta->Draw("AP");
322  leg_a->Draw();
323  mgr_theta->SetTitle("After");
324  mgr_theta->GetXaxis()->SetTitle("#Delta_{t}, #mum");
325  mgr_theta->GetYaxis()->SetTitle("#theta_{mean}, #murad");
326  cout<<max_theta_mean_a<<" "<<-0.1*fabs(max_theta_mean_a)<<endl;
327  if(max_theta_mean_a>0) mgr_theta->GetHistogram()->SetMaximum(-0.1*fabs(max_theta_mean_a));
328  else mgr_theta->GetHistogram()->SetMaximum(1.3*max_theta_mean_a);
329  if(min_theta_mean_a<0) mgr_theta->GetHistogram()->SetMinimum(-1.3*fabs(min_theta_mean_a));
330  else mgr_theta->GetHistogram()->SetMinimum(0.7*min_theta_mean_a);
331  c1.Update();
332  c1.Print(resname_pdf_o); //write canvas and keep the ps file open
333  c1.Clear();
335  TMultiGraph *mgr_theta_rms = new TMultiGraph();
336  TMultiGraph *mgr_theta_b_rms = new TMultiGraph();
337  for(int ipart=0;ipart<nParDa;ipart++){// loop over rotaion scale
338  gr_theta_b[ipart] = new TGraphErrors(nParDt,v_Dt,theta_rms_b[ipart],0,err_theta_rms_b[ipart]);
339  gr_theta_b[ipart]->SetMarkerStyle(20+ipart);
340  // gr_theta_b[ipart]->SetMarkerColor(kGreen-3);
341  gr_theta_b[ipart]->SetMarkerColor(colors[ipart]);
342  gr_theta_b[ipart]->SetLineColor(colors[ipart]);
343  gr_theta_b[ipart]->SetMarkerSize(1.7+ipart*0.3);
344  gr_theta_a[ipart] = new TGraphErrors(nParDt,v_Dt,theta_rms_a[ipart],0,err_theta_rms_a[ipart]);
345  gr_theta_a[ipart]->SetMarkerStyle(20+ipart);
346  // gr_theta_a[ipart]->SetMarkerColor(kOrange+7);
347  gr_theta_a[ipart]->SetMarkerColor(colors_a[ipart]);
348  gr_theta_a[ipart]->SetLineColor(colors_a[ipart]);
349  gr_theta_a[ipart]->SetMarkerSize(1.7+ipart*0.3);
350  mgr_theta_b_rms->Add(gr_theta_b[ipart]);
351  mgr_theta_rms->Add(gr_theta_a[ipart]);
352  if(ipart==0){
353  gr_theta_r[ipart] = new TGraphErrors(nParDt,v_Dt,theta_rms_r[ipart],0,err_theta_rms_r[ipart]);
354  gr_theta_r[ipart]->SetMarkerStyle(20+ipart);
355  gr_theta_r[ipart]->SetMarkerColor(kGray+3);
356  gr_theta_r[ipart]->SetMarkerSize(2.7);
357  mgr_theta_b_rms->Add(gr_theta_r[ipart]);
358  mgr_theta_rms->Add(gr_theta_r[ipart]);
359  }
360  }// END loop over rotaion scale
361 
362  mgr_theta_b_rms->Draw("AP");
363  leg_b->Draw();
364  mgr_theta_b_rms->GetXaxis()->SetTitle("#Delta_{t}, #mum");
365  mgr_theta_b_rms->GetYaxis()->SetTitle("#theta_{rms}, #murad");
366  mgr_theta_b_rms->GetHistogram()->SetMaximum(1.1*max_theta_rms_b);
367  mgr_theta_b_rms->GetHistogram()->SetMinimum(0.9*min_theta_rms_b);
368  mgr_theta_b_rms->SetTitle("Before");
369  c1.Print(resname_pdf_o); //write canvas and keep the ps file open
370  c1.Clear();
371 
372 
373  mgr_theta_rms->Draw("AP");
374  leg_a->Draw();
375  mgr_theta_rms->GetXaxis()->SetTitle("#Delta_{t}, #mum");
376  mgr_theta_rms->GetYaxis()->SetTitle("#theta_{rms}, #murad");
377  mgr_theta_rms->GetHistogram()->SetMaximum(1.1*max_theta_rms_a);
378  mgr_theta_rms->GetHistogram()->SetMinimum(0.9*min_theta_rms_a);
379  mgr_theta_rms->SetTitle("After");
380  c1.Print(resname_pdf_o); //write canvas and keep the ps file open
381  c1.Clear();
382 
383  //put together missalignment consts results
384  TGraphErrors *gr_mis_b[6][nParDa];
385  TGraphErrors *gr_mis_a[6][nParDa];
386  TMultiGraph *mgr_mis[6];
387  TMultiGraph *mgr_mis_b[6];
388  for(int ialc=0;ialc<6;ialc++){
389  mgr_mis[ialc] = new TMultiGraph();
390  mgr_mis_b[ialc] = new TMultiGraph();
391  }
392  for(int ipart=0;ipart<nParDa;ipart++){// loop over rotaion scale
393  for(int ialc=0;ialc<6;ialc++){
394  gr_mis_b[ialc][ipart] = new TGraphErrors(nParDt,v_Dt,mis_v_b[ipart][ialc],0,mis_b[ipart][ialc]);
395  gr_mis_b[ialc][ipart]->SetMarkerStyle(20+ipart);
396  gr_mis_b[ialc][ipart]->SetMarkerColor(colors[ipart]);
397  gr_mis_b[ialc][ipart]->SetLineColor(colors[ipart]);
398  gr_mis_b[ialc][ipart]->SetMarkerSize(1.7+ipart*0.3);
399  gr_mis_a[ialc][ipart] = new TGraphErrors(nParDt,v_Dt,mis_v_a[ipart][ialc],0,mis_a[ipart][ialc]);
400  gr_mis_a[ialc][ipart]->SetMarkerStyle(20+ipart);
401  gr_mis_a[ialc][ipart]->SetMarkerColor(colors_a[ipart]);
402  gr_mis_a[ialc][ipart]->SetMarkerSize(1.7+ipart*0.3);
403  gr_mis_a[ialc][ipart]->SetLineColor(colors_a[ipart]);
404  mgr_mis_b[ialc]->Add(gr_mis_b[ialc][ipart]);
405  mgr_mis[ialc]->Add(gr_mis_a[ialc][ipart]);
406  }
407  }// END loop over rotaion scale
408  for(int ialc=0;ialc<6;ialc++){
409  if(ialc<2 || ialc==5){
410  mgr_mis_b[ialc]->Draw("AP");
411  leg_b->Draw();
412  mgr_mis_b[ialc]->GetXaxis()->SetTitle("#Delta_{t}, #mum");
413  mgr_mis_b[ialc]->GetHistogram()->SetMaximum(1200.);
414  mgr_mis_b[ialc]->GetHistogram()->SetMinimum(-1200.);
415  if(ialc==5){
416  mgr_mis_b[ialc]->GetHistogram()->SetMaximum(10.);
417  mgr_mis_b[ialc]->GetHistogram()->SetMinimum(-10.);
418  }
419  mgr_mis_b[ialc]->SetTitle("Before");
420  if(ialc==0) mgr_mis_b[ialc]->GetYaxis()->SetTitle("#Delta_{x}, #mum");
421  if(ialc==1) mgr_mis_b[ialc]->GetYaxis()->SetTitle("#Delta_{y}, #mum");
422  if(ialc==2) mgr_mis_b[ialc]->GetYaxis()->SetTitle("#Delta_{z}, #mum");
423  if(ialc==3) mgr_mis_b[ialc]->GetYaxis()->SetTitle("#Delta_{#alpha}, mrad");
424  if(ialc==4) mgr_mis_b[ialc]->GetYaxis()->SetTitle("#Delta_{#beta}, mrad");
425  if(ialc==5) mgr_mis_b[ialc]->GetYaxis()->SetTitle("#Delta_{#gamma}, mrad");
426  c1.Print(resname_pdf_o); //write canvas and keep the file open
427  c1.Clear();
428 
429  mgr_mis[ialc]->Draw("AP");
430  leg_a->Draw();
431  mgr_mis[ialc]->GetXaxis()->SetTitle("#Delta_{t}, #mum");
432  mgr_mis[ialc]->GetHistogram()->SetMaximum(10.);
433  mgr_mis[ialc]->GetHistogram()->SetMinimum(-10.);
434  if(ialc==5){
435  mgr_mis[ialc]->GetHistogram()->SetMaximum(5.);
436  mgr_mis[ialc]->GetHistogram()->SetMinimum(-5.);
437  }
438  mgr_mis[ialc]->SetTitle("After");
439  if(ialc==0) mgr_mis[ialc]->GetYaxis()->SetTitle("#Delta_{x}, #mum");
440  if(ialc==1) mgr_mis[ialc]->GetYaxis()->SetTitle("#Delta_{y}, #mum");
441  if(ialc==2) mgr_mis[ialc]->GetYaxis()->SetTitle("#Delta_{z}, #mum");
442  if(ialc==3) mgr_mis[ialc]->GetYaxis()->SetTitle("#Delta_{#alpha}, mrad");
443  if(ialc==4) mgr_mis[ialc]->GetYaxis()->SetTitle("#Delta_{#beta}, mrad");
444  if(ialc==5) mgr_mis[ialc]->GetYaxis()->SetTitle("#Delta_{#gamma}, mrad");
445  c1.Print(resname_pdf_o); //write canvas and keep the file open
446  c1.Clear();
447 
448 
449  }
450  }
451 
452  //c1.Print(resname_pdf_c); //write canvas and close the file
453 TLegend *leg2 = new TLegend(0.13,0.13,0.38,0.52);
454  leg2->SetFillColor(0);
455 
456  TMultiGraph *mgr_stat = new TMultiGraph();
457  TMultiGraph *mgr_stat_kn = new TMultiGraph();
458  TGraphErrors *grstatBef[nParDa], *grstatAft[nParDa];
459  TGraphErrors *grstatKnossos[nParDa];
460  TGraphErrors *grstatKnossos0[nParDa];
461  for(int ipart=0;ipart<nParDa;ipart++){// loop over rotaion scale
462  grstatBef[ipart] = new TGraphErrors(nParDt,v_Dt,TrksBef[ipart],0,0);
463  grstatBef[ipart]->SetMarkerStyle(20+ipart);
464  grstatBef[ipart]->SetMarkerColor(colors[ipart]);
465  grstatBef[ipart]->SetMarkerSize(1.7+ipart*0.3);
466 
467  grstatKnossos0[ipart] = new TGraphErrors(nParDt,v_Dt,TrksKnossos0[ipart],0,errTrksKnossos0[ipart]);
468  grstatKnossos0[ipart]->SetMarkerStyle(20+ipart);
469  grstatKnossos0[ipart]->SetMarkerColor(colors[ipart]);
470  grstatKnossos0[ipart]->SetLineColor(colors[ipart]);
471  grstatKnossos0[ipart]->SetMarkerSize(1.7+ipart*0.3);
472  mgr_stat_kn->Add(grstatKnossos0[ipart]);
473  grstatKnossos[ipart] = new TGraphErrors(nParDt,v_Dt,TrksKnossos[ipart],0,errTrksKnossos[ipart]);
474  grstatKnossos[ipart]->SetMarkerStyle(20+ipart);
475  grstatKnossos[ipart]->SetMarkerColor(colors_a[ipart]);
476  grstatKnossos[ipart]->SetLineColor(colors_a[ipart]);
477  grstatKnossos[ipart]->SetMarkerSize(1.7+ipart*0.3);
478  TString dRName = "#Delta_{r} = ";
479  dRName +=v_Da[ipart];
480  TString dRName_b = dRName+ " (input)";
481  TString dRName_a = dRName+ " (last iter)";
482  leg2->AddEntry(grstatKnossos0[ipart],dRName_b,"lep");
483  leg2->AddEntry(grstatKnossos[ipart],dRName_a,"lep");
484 
485  mgr_stat_kn->Add(grstatKnossos[ipart]);
486  grstatAft[ipart] = new TGraphErrors(nParDt,v_Dt,TrksAft[ipart],0,0);
487  grstatAft[ipart]->SetMarkerStyle(20+ipart);
488  grstatAft[ipart]->SetMarkerSize(1.7+ipart*0.3);
489  grstatAft[ipart]->SetMarkerColor(kOrange+7);
490  mgr_stat->Add(grstatBef[ipart]);
491  mgr_stat->Add(grstatAft[ipart]);
492  }// END loop over rotaion scale
493  // mgr_stat->Draw("AP");
494  // mgr_stat->GetXaxis()->SetTitle("#Delta_{t}, #mum");
495  // mgr_stat->GetYaxis()->SetTitle("N_{REC}");
496  // mgr_stat->GetHistogram()->SetMaximum(1e5);
497  // mgr_stat->GetHistogram()->SetMinimum(0);
498  // leg_b->Draw();
499  // c1.Print(resname_pdf_o); //write canvas and keep the file open
500  c1.Clear();
501  mgr_stat_kn->Draw("AP");
502  mgr_stat_kn->SetTitle("#trks used in Millepede (av. per sector)");
503  mgr_stat_kn->GetXaxis()->SetTitle("#Delta_{t}, #mum");
504  mgr_stat_kn->GetYaxis()->SetTitle("N_{REC}");
505  leg2->Draw();
506  c1.Print(resname_pdf_c); //write canvas and close the file
507  //
508  // mgr_stat->GetXaxis()->SetTitle("Number of sim. trks");
509  //
510  // //mgr_stat->SetTitle("Average number of rec. trks (empty = before Knossos; filled = after Knossos)");
511  // c1.Print(resname_pdf_o); //write canvas and keep the file open
512  // c1.Clear();
513  // TGraphErrors *grstatDiff = new TGraphErrors(nS,TrksSim,av_TrksDiff,0,avEr_TrksDiff);
514  // grstatDiff->SetMarkerStyle(22);
515  // grstatDiff->SetMarkerSize(2.5);
516  // grstatDiff->Draw("ALP");
517  // grstatDiff->GetXaxis()->SetTitle("Number of sim. trks");
518  // grstatDiff->GetYaxis()->SetTitle("(N^{ after}_{REC} - N^{ before}_{REC})/N_{SIM}, %");
519  // // grstatDiff->SetTitle("Diff number of rec. trks (after - before), %");
520  // c1.Print(resname_pdf_c); //write canvas and close ps file
521  // c1.Close();
522  // TString out = resname+".root";
523  // TFile *f = new TFile(out,"RECREATE");
524  // // for (int g=0;g<6;g++){
525  // // gr_mis_b[g]->Write();
526  // // gr_mis_a[g]->Write();
527  // // mgr_mis[g]->Write();
528  // // }
529  // gr_theta_b->Write();
530  // gr_theta_r->Write();
531  // gr_theta_a->Write();
532  // mgr_theta->Write();
533  // gr_theta_rms_b->Write();
534  // gr_theta_rms_r->Write();
535  // gr_theta_rms_a->Write();
536  // mgr_theta_rms->Write();
537 
538  // for(int ialc=0;ialc<6;ialc++){
539  // gr_mis_b[ialc]->Write();
540  // gr_mis_a[ialc]->Write();
541  // mgr_mis[ialc]->Write();
542  // }
543  // mgr_stat->Write();
544  // grstatDiff->Write();
545  // f->Write();
546  // f->Close();
547  // }
548  // }
549  return 0;
550 }
Int_t i
Definition: run_full.C:25
TF1 * f1
Definition: reco_analys2.C:50
int trickySummaryAlign(TString pathGi="/panda/pandaroot/macro/lmd/testPixelAlignSIM_", double tr_sc=0, double rt_sc=0)
TFile * f3
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
c1
Definition: plot_dirc.C:35
TFile * f2