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