FairRoot/PandaRoot
Functions
SenseAlign.C File Reference
#include <TFile.h>
#include <TH1.h>
#include <TH2.h>
#include <TString.h>
#include <TCanvas.h>
#include <iostream>
#include <sstream>
#include <cmath>

Go to the source code of this file.

Functions

int SenseAlign (TString pathG="/home/karavdina/soft/pandaroot/macro/lmd/testPixelAlignSIM_LIMITS_10000/mom_15/")
 

Function Documentation

int SenseAlign ( TString  pathG = "/home/karavdina/soft/pandaroot/macro/lmd/testPixelAlignSIM_LIMITS_10000/mom_15/")

Theta resolution--------------------------------------------------------------------------------——

END (Theta resolution) ------------------------------------------------------------—

Definition at line 10 of file SenseAlign.C.

References c1, f, f1, f3, fabs(), i, name1, name2, name3, out, and TString.

12 {
13  // gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
14  gStyle->SetOptStat(0);
15  gStyle->SetLabelSize(0.045,"xyz");
16  gStyle->SetTitleYSize(0.04);
17  gStyle->SetTitleXSize(0.04);
18  const int nParDa=11;
19  double v_Da[nParDa]={0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5};
20  TString sv_Da[nParDa]={"0","0_5","1","1_5","2","2_5","3","3_5","4","4_5","5"};
21  // const int nParDt=15;
22  // double v_Dt[nParDt]={0,5,10,15,20,25,30,35,40,50,100,150,200,250,300};
23  const int nParDt=41;
24  double v_Dt[nParDt];
25  for(int i=0;i<nParDt;i++)
26  v_Dt[i] = i*5;
27 
28  const int nS=1;
29 
30  //How to save data
31  TString resname= pathG+"/ResultsLimitsSummary_BOX";
32  TString resname_pdf = resname+".pdf";
33  TString resname_pdf_o = resname_pdf+"(";
34  TString resname_pdf_c = resname_pdf+")";
35 
36 
37  // double theta_mean_b[nParDa][nParDt], theta_mean_r[nParDa][nParDt];
38  // double theta_rms_b[nParDa][nParDt], theta_rms_r[nParDa][nParDt];
39  // double phi_mean_b[nParDa][nParDt], phi_mean_r[nParDa][nParDt];
40  // double phi_rms_b[nParDa][nParDt], phi_rms_r[nParDa][nParDt];
41  // double X_mean_b[nParDa][nParDt], X_mean_r[nParDa][nParDt];
42  // double X_rms_b[nParDa][nParDt], X_rms_r[nParDa][nParDt];
43  // double Y_mean_b[nParDa][nParDt], Y_mean_r[nParDa][nParDt];
44  // double Y_rms_b[nParDa][nParDt], Y_rms_r[nParDa][nParDt];
45 
46 
47  double theta_mean_b, theta_mean_r;
48  double theta_rms_b, theta_rms_r;
49  double phi_mean_b, phi_mean_r;
50  double phi_rms_b, phi_rms_r;
51  double X_mean_b, X_mean_r;
52  double X_rms_b, X_rms_r;
53  double Y_mean_b, Y_mean_r;
54  double Y_rms_b, Y_rms_r;
55  // for(int ipart=0;ipart<nParDa;ipart++){
56  // for(int i=0;i<nParDt;i++){
57  // theta_mean_b[ipart][i] = 0;
58  // theta_mean_r[ipart][i] = 0;
59  // theta_rms_b[ipart][i] = 0;
60  // theta_rms_r[ipart][i] = 0;
61 
62  // phi_mean_b[ipart][i] = 0;
63  // phi_mean_r[ipart][i] = 0;
64  // phi_rms_b[ipart][i] = 0;
65  // phi_rms_r[ipart][i] = 0;
66 
67  // X_mean_b[ipart][i] = 0;
68  // X_mean_r[ipart][i] = 0;
69  // X_rms_b[ipart][i] = 0;
70  // X_rms_r[ipart][i] = 0;
71 
72  // Y_mean_b[ipart][i] = 0;
73  // Y_mean_r[ipart][i] = 0;
74  // Y_rms_b[ipart][i] = 0;
75  // Y_rms_r[ipart][i] = 0;
76 
77  // }
78  // }
79 
80 TH2D *htheta_mean = new TH2D("htheta_mean","#theta_{MEAN}; #Delta_{t}, #mum;#Delta_{r}, mrad",4e1,0,v_Dt[nParDt-1],1e1,0,v_Da[nParDa-1]);
81  TH2D *htheta_rms = new TH2D("htheta_rms","#theta_{RMS}; #Delta_{t}, #mum;#Delta_{r}, mrad",4e1,0,v_Dt[nParDt-1],1e1,0,v_Da[nParDa-1]);
82  TH2D *hphi_mean = new TH2D("hphi_mean","#phi_{MEAN}; #Delta_{t}, #mum;#Delta_{r}, mrad",4e1,0,v_Dt[nParDt-1],1e1,0,v_Da[nParDa-1]);
83  TH2D *hphi_rms = new TH2D("hphi_rms","#phi_{RMS}; #Delta_{t}, #mum;#Delta_{r}, mrad",4e1,0,v_Dt[nParDt-1],1e1,0,v_Da[nParDa-1]);
84  TH2D *hX_mean = new TH2D("hX_mean","X_{MEAN}; #Delta_{t}, #mum;#Delta_{r}, mrad",4e1,0,v_Dt[nParDt-1],1e1,0,v_Da[nParDa-1]);
85  TH2D *hX_rms = new TH2D("hX_rms","X_{RMS}; #Delta_{t}, #mum;#Delta_{r}, mrad",4e1,0,v_Dt[nParDt-1],1e1,0,v_Da[nParDa-1]);
86  TH2D *hY_mean = new TH2D("hY_mean","Y_{MEAN}; #Delta_{t}, #mum;#Delta_{r}, mrad",4e1,0,v_Dt[nParDt-1],1e1,0,v_Da[nParDa-1]);
87  TH2D *hY_rms = new TH2D("hY_rms","Y_{RMS}; #Delta_{t}, #mum;#Delta_{r}, mrad",4e1,0,v_Dt[nParDt-1],1e1,0,v_Da[nParDa-1]);
88  for(int ipart=0;ipart<nParDa;ipart++){
89  for(int i=0;i<nParDt;i++){
90  double tr_sc = v_Dt[i];
91  // rt_sc= v_Da[ipart];
92  TString rt_sc= sv_Da[ipart];
93  //Where search for files
94  TString path = pathG+"/";
95  path+=tr_sc;
96  path+="mkm_";
97  path+=rt_sc;
98  path+="mrad/";
99 
101  TString name1 = path + "/Lumi_QA_before.root";
102  TString name2 = path + "/Lumi_QA_after.root";
103  TString name3 = pathG+"/0mkm_0mrad";
104  name3+="/Lumi_QA_before.root";
105  // cout<<name1<<endl;
106 
107  // TH1 *hbefore;
108  // TH1 *hafter;
109  // TH1 *hrefer;
110 
111  TFile *f1 = new TFile(name1,"READ");
112  if (f1->IsZombie()) {
113  std::cout << "!!! Error opening file " <<name1<< std::endl;
114  continue;
115  // return;
116  }
117 
118 
119 
120  TH1 *hbefore = (TH1*)f1->Get("NearIP/hResTheta");
121  theta_mean_b = 1e3*(hbefore->GetMean());
122  theta_rms_b = 1e3*(hbefore->GetRMS());
123  hbefore = (TH1*)f1->Get("NearIP/hResPhi");
124  phi_mean_b = 1e3*(hbefore->GetMean());
125  phi_rms_b = 1e3*(hbefore->GetRMS());
126  hbefore = (TH1*)f1->Get("NearIP/hResPointX");
127  X_mean_b = 1e4*(hbefore->GetMean());
128  X_rms_b = 1e4*(hbefore->GetRMS());
129  hbefore = (TH1*)f1->Get("NearIP/hResPointY");
130  Y_mean_b = 1e4*(hbefore->GetMean());
131  Y_rms_b = 1e4*(hbefore->GetRMS());
132 
133  if(ipart==0 && i==0){
134  theta_mean_b += 1e-6;
135  theta_rms_b += 1e-6;
136  phi_mean_b += 1e-6;
137  phi_rms_b += 1e-6;
138  X_mean_b += 1e-6;
139  X_rms_b += 1e-6;
140  Y_mean_b += 1e-6;
141  Y_rms_b += 1e-6;
142  }
143 
144 
145  TFile *f3 = new TFile(name3,"READ");
146  if (f3->IsZombie()) {
147  std::cout << "!!! Error opening file " <<name2<< std::endl;
148  continue;
149  // return;
150  }
151  TH1 *hrefer = (TH1F*)f3->Get("NearIP/hResTheta");
152  theta_mean_r = 1e3*(hrefer->GetMean());
153  theta_rms_r = 1e3*(hrefer->GetRMS());
154  hrefer = (TH1*)f3->Get("NearIP/hResPhi");
155  phi_mean_r = 1e3*(hrefer->GetMean());
156  phi_rms_r = 1e3*(hrefer->GetRMS());
157  hrefer = (TH1*)f3->Get("NearIP/hResPointX");
158  X_mean_r = 1e4*(hrefer->GetMean());
159  X_rms_r = 1e4*(hrefer->GetRMS());
160  hrefer = (TH1*)f3->Get("NearIP/hResPointY");
161  Y_mean_r = 1e4*(hrefer->GetMean());
162  Y_rms_r = 1e4*(hrefer->GetRMS());
163  // cout<<"theta_mean_r["<<v_Da[ipart]<<"]["<<v_Dt[i]<<"]="<<theta_mean_r<<endl;
165 
166 
167  htheta_mean->Fill(v_Dt[i],v_Da[ipart],fabs((theta_mean_b-theta_mean_r)/theta_mean_r));
168  htheta_rms->Fill(v_Dt[i],v_Da[ipart],fabs((theta_rms_b-theta_rms_r)/theta_rms_r));
169  hphi_mean->Fill(v_Dt[i],v_Da[ipart],fabs((phi_mean_b-phi_mean_r)/phi_mean_r));
170  hphi_rms->Fill(v_Dt[i],v_Da[ipart],fabs((phi_rms_b-phi_rms_r)/phi_rms_r));
171  hX_mean->Fill(v_Dt[i],v_Da[ipart],fabs((X_mean_b -X_mean_r)/X_mean_r));
172  hX_rms->Fill(v_Dt[i],v_Da[ipart],fabs((X_rms_b -X_rms_r)/X_rms_r));
173  hY_mean->Fill(v_Dt[i],v_Da[ipart],fabs((Y_mean_b -Y_mean_r)/Y_mean_r));
174  hY_rms->Fill(v_Dt[i],v_Da[ipart],fabs((Y_rms_b -Y_rms_r)/Y_rms_r));
175  // f2->Close();
176  f3->Close();
177  // hrefer->Clear();
178  f1->Close();
179  // hbefore->Clear();
180  }// trans
181  }// rotation
182 
183  // Draw results --------------------------------
184 
185  cout<<"Let's draw!"<<endl;
186  TCanvas c1;
187  htheta_mean->GetZaxis()->SetRangeUser(0,2);
188  htheta_mean->Draw("colz");
189  c1.Print(resname_pdf_o); //write canvas and keep the ps file open
190  c1.Clear();
191  htheta_rms->GetZaxis()->SetRangeUser(0,2);
192  htheta_rms->Draw("colz");
193  c1.Print(resname_pdf_o); //write canvas and keep the ps file open
194  c1.Clear();
195  hphi_mean->GetZaxis()->SetRangeUser(0,2);
196  hphi_mean->Draw("colz");
197  c1.Print(resname_pdf_o); //write canvas and keep the ps file open
198  c1.Clear();
199  hphi_rms->GetZaxis()->SetRangeUser(0,2);
200  hphi_rms->Draw("colz");
201  c1.Print(resname_pdf_o); //write canvas and keep the ps file open
202  c1.Clear();
203  hX_mean->GetZaxis()->SetRangeUser(0,2);
204  hX_mean->Draw("colz");
205  c1.Print(resname_pdf_o); //write canvas and keep the ps file open
206  c1.Clear();
207  hX_rms->GetZaxis()->SetRangeUser(0,2);
208  hX_rms->Draw("colz");
209  c1.Print(resname_pdf_o); //write canvas and keep the ps file open
210  c1.Clear();
211  hY_mean->GetZaxis()->SetRangeUser(0,2);
212  hY_mean->Draw("colz");
213  c1.Print(resname_pdf_o); //write canvas and keep the ps file open
214  c1.Clear();
215  hY_rms->GetZaxis()->SetRangeUser(0,2);
216  hY_rms->Draw("colz");
217  c1.Print(resname_pdf_c); //write canvas and keep the ps file open
218  c1.Clear();
219  TString out = resname+".root";
220  TFile *f = new TFile(out,"RECREATE");
221  htheta_mean->Write();
222  htheta_rms->Write();
223  hphi_mean->Write();
224  hphi_rms->Write();
225  hX_mean->Write();
226  hX_rms->Write();
227  hY_mean->Write();
228  hY_rms->Write();
229  f->Write();
230  f->Close();
231  return 0;
232 }
Int_t i
Definition: run_full.C:25
TF1 * f1
Definition: reco_analys2.C:50
TFile * f3
TFile * f
Definition: bump_analys.C:12
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
TFile * out
Definition: reco_muo.C:20
c1
Definition: plot_dirc.C:35