]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/Upgrade/macros/CheckConsistency_DistCorr.C
o update macro
[u/mrichter/AliRoot.git] / TPC / Upgrade / macros / CheckConsistency_DistCorr.C
1 #include "TString.h"
2 #include "TFile.h"
3 #include "TCanvas.h"
4 #include "TMath.h"
5 #include "TTree.h"
6 #include "TTreeStream.h"
7 #include "TROOT.h"
8 #include "TSystem.h"
9 #include "TStyle.h"
10 #include "AliTPCCorrection.h"
11 #include "AliTPCCorrectionLookupTable.h"
12
13 void makeComparisonTree(TString filename, TString addToName)
14 {
15   TFile fn(filename.Data());
16   gROOT->cd();
17   AliTPCCorrectionLookupTable *fTPCCorrection=(AliTPCCorrectionLookupTable*)fn.Get("map");
18   fn.Close();
19 //   fTPCCorrection->BuildExactInverse();
20
21 //   TFile f("/tmp/corrTest.Root","recreate");
22 //   fTPCCorrection->Write("map");
23 //   f.Close();
24   
25   TString outFile=addToName;
26   outFile.Append(".root");
27   TTreeSRedirector *sred=new TTreeSRedirector(outFile.Data());
28   
29   Float_t dx[3]={0,0,0};
30   
31   for (Float_t iz=-245; iz<=245; iz+=10) {
32     Short_t roc=(iz>=0)?0:18;
33     for (Float_t ir=86; ir<250; ir+=10) {
34       for (Float_t iphi=0; iphi<TMath::TwoPi(); iphi+=10*TMath::DegToRad()){
35         Float_t x=ir*(Float_t)TMath::Cos(iphi);
36         Float_t y=ir*(Float_t)TMath::Sin(iphi);
37         Float_t x3[3]={x,y,iz};
38         (*sred) << "t" <<
39         "r="   << ir <<
40         "phi=" << iphi <<
41         "x=" << x <<
42         "y=" << y <<
43         "z=" << iz;
44         
45         //distortions
46         fTPCCorrection->GetDistortion(x3,roc,dx);
47         Float_t xd   = x+dx[0];
48         Float_t yd   = y+dx[1];
49         Float_t zd   = iz+dx[2];
50         Float_t rd   = TMath::Sqrt(xd*xd+yd*yd);
51         Float_t phid = TMath::ATan2(yd,xd);
52         if (phid<0) phid+=TMath::TwoPi();
53         (*sred) << "t" <<
54         "xd="   << xd <<
55         "yd="   << yd <<
56         "zd="   << zd <<
57         "rd="   << rd <<
58         "phid=" << phid;
59         
60         // correct back distorted point
61         Float_t xd3[3]={xd,yd,zd};
62         
63         fTPCCorrection->GetCorrection(xd3,roc,dx);
64         Float_t xdc   = xd+dx[0];
65         Float_t ydc   = yd+dx[1];
66         Float_t zdc   = zd+dx[2];
67         Float_t rdc   = TMath::Sqrt(xdc*xdc+ydc*ydc);
68         Float_t phidc = TMath::ATan2(ydc,xdc);
69         if (phidc<0) phidc+=TMath::TwoPi();
70         
71         (*sred)  << "t" <<
72         "xdc="   << xdc <<
73         "ydc="   << ydc <<
74         "zdc="   << zdc <<
75         "rdc="   << rdc <<
76         "phidc=" << phidc;
77         
78         // write current point
79         (*sred) << "t" <<
80         "\n";
81         
82       }
83     }
84   }
85   
86   delete sred;
87 }
88
89 void makeAllComparisonTrees()
90 {
91   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2_eps5_50kHz_precal.lookup.root","LUT_05");
92   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2_eps10_50kHz_precal.lookup.root","LUT_10");
93   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2_eps20_50kHz_precal.lookup.root","LUT_20");
94 }
95
96 void makeAllComparisonTreesNew()
97 {
98   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps5_50kHz_precal.lookup.root","LUT_05");
99   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps10_50kHz_precal.lookup.root","LUT_10");
100   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_20");
101   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_25");
102   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_30");
103   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_35");
104   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_40");
105 }
106
107 void makeAllComparisonTreesOld()
108 {
109   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps5_50kHz_precal.lookup.root","LUT_05");
110   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps10_50kHz_precal.lookup.root","LUT_10");
111   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_20");
112   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_25");
113   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_30");
114   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_35");
115   makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_40");
116 }
117
118 TCanvas *GetCanvas(TString addToName);
119
120 void makeHistos(TString addToName) {
121   TString fileName; //("test_");
122   fileName.Append(addToName.Data());
123   fileName.Append(".root");
124   TFile f(fileName.Data());
125   gROOT->cd();
126   TTree *t=(TTree*)f.Get("t");
127   gStyle->SetTitleX(0.18);
128   gStyle->SetTitleW(1-.18-.1);
129
130   t->SetMarkerStyle(20);
131   t->SetMarkerSize(.8);
132
133   TCanvas *c=0x0;
134   c=GetCanvas(addToName+"_zRes");
135   t->Draw("zdc-z:z:r","","colz");
136   c->SaveAs(Form("%s_zRes.png",addToName.Data()));
137   //
138   c=GetCanvas(addToName+"_rRes");
139   t->Draw("rdc-r:z:r","","colz");
140   c->SaveAs(Form("%s_rRes.png",addToName.Data()));
141   //
142   c=GetCanvas(addToName+"_phiRes");
143   t->SetAlias("phiFix","-((phidc-phi)>4)*2*TMath::Pi()+((phidc-phi)<-4)*2*TMath::Pi()");
144   t->Draw("phidc-phi+phiFix:z:r","","colz");
145   c->SaveAs(Form("%s_phiRes.png",addToName.Data()));
146   //
147   c=GetCanvas(addToName+"_rphiRes");
148   t->Draw("(phidc*rdc)-(phi*r):z+(r-84)/(254-84)*18:r","abs(phidc-phi)<1","colz");
149   c->SaveAs(Form("%s_rphiRes.png",addToName.Data()));
150
151   TCanvas *c2=0x0;
152   c2=GetCanvas(addToName+"_Res_1D");
153   c2->Divide(2,2);
154   
155   c2->cd(1);
156   t->Draw("zdc-z","","");
157   //
158   c2->cd(2);
159   t->Draw("rdc-r","","");
160   //
161   c2->cd(3);
162   t->SetAlias("phiFix","-((phidc-phi)>4)*2*TMath::Pi()+((phidc-phi)<-4)*2*TMath::Pi()");
163   t->Draw("phidc-phi+phiFix","","");
164   //
165   c2->cd(4);
166   t->Draw("(phidc*rdc)-(phi*r)","abs(phidc-phi)<1","");
167
168   c2->SaveAs(Form("%s_Res_1D.png",addToName.Data()));
169   
170   f.Close();
171 }
172
173 void makeHistosDist(TString addToName) {
174   TString fileName; //("test_");
175   fileName.Append(addToName.Data());
176   fileName.Append(".root");
177   TFile f(fileName.Data());
178   gROOT->cd();
179   TTree *t=(TTree*)f.Get("t");
180   gStyle->SetTitleX(0.18);
181   gStyle->SetTitleW(1-.18-.1);
182   
183   t->SetMarkerStyle(20);
184   t->SetMarkerSize(.8);
185   
186   TCanvas *c=0x0;
187   c=GetCanvas(addToName+"_zResDist");
188   t->Draw("zd-z:z:r","","colz");
189   c->SaveAs(Form("%s_zResDist.png",addToName.Data()));
190   //
191   c=GetCanvas(addToName+"_rResDist");
192   t->Draw("rd-r:z:r","","colz");
193   c->SaveAs(Form("%s_rResDist.png",addToName.Data()));
194   //
195   c=GetCanvas(addToName+"_phiResDist");
196   t->Draw("phid-phi:z:r","abs(phid-phi)<1","colz");
197   c->SaveAs(Form("%s_phiResDist.png",addToName.Data()));
198   //
199   c=GetCanvas(addToName+"_rphiResDist");
200   t->Draw("(phid*rd)-(phi*r):z+(r-84)/(254-84)*18:r","abs(phid-phi)<1","colz");
201   c->SaveAs(Form("%s_rphiResDist.png",addToName.Data()));
202   
203   f.Close();
204 }
205
206
207 void makeAllHistos() {
208   makeHistos("LUT_05");
209   makeHistos("LUT_10");
210   makeHistos("LUT_20");
211   makeHistos("LUT_25");
212   makeHistos("LUT_30");
213   makeHistos("LUT_35");
214   makeHistos("LUT_40");
215   
216 }
217
218 void makeAllHistosDist() {
219   makeHistosDist("LUT_05");
220   makeHistosDist("LUT_10");
221   makeHistosDist("LUT_20");
222   makeHistosDist("LUT_25");
223   makeHistosDist("LUT_30");
224   makeHistosDist("LUT_35");
225   makeHistosDist("LUT_40");
226   
227 }
228
229 TCanvas *GetCanvas(TString addToName)
230 {
231   TString cName(addToName);
232   cName.Prepend("c_");
233   TCanvas *c=(TCanvas*)gROOT->GetListOfCanvases()->FindObject(cName.Data());
234   if (!c) c=new TCanvas(cName.Data(),addToName.Data());
235   c->Clear();
236   c->cd();
237   return c;
238 }
239
240
241