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