6 #include "TTreeStream.h"
10 #include "AliTPCCorrection.h"
11 #include "AliTPCCorrectionLookupTable.h"
13 void makeComparisonTree(TString filename, TString addToName)
16 AliTPCCorrectionLookupTable *fTPCCorrection2=0x0;
18 if (filename.Contains(":")) {
19 TObjArray *arr=filename.Tokenize(":");
20 TFile f2(arr->At(1)->GetName());
22 fTPCCorrection2=(AliTPCCorrectionLookupTable*)fn.Get("map");
24 filename=arr->At(0)->GetName();
27 TFile fn(filename.Data());
29 AliTPCCorrectionLookupTable *fTPCCorrection=(AliTPCCorrectionLookupTable*)fn.Get("map");
31 // fTPCCorrection->BuildExactInverse();
33 // TFile f("/tmp/corrTest.Root","recreate");
34 // fTPCCorrection->Write("map");
37 TString outFile=addToName;
38 outFile.Append(".root");
39 TTreeSRedirector *sred=new TTreeSRedirector(outFile.Data());
41 Float_t dx[3]={0,0,0};
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};
58 fTPCCorrection->GetDistortion(x3,roc,dx);
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();
72 // correct back distorted point
73 Float_t xd3[3]={xd,yd,zd};
75 if (fTPCCorrection2) {
76 fTPCCorrection2->GetCorrection(xd3,roc,dx);
78 fTPCCorrection->GetCorrection(xd3,roc,dx);
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();
94 // write current point
105 void makeAllComparisonTrees()
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");
112 void makeAllComparisonTreesNew()
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");
123 void makeAllComparisonTreesOld()
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");
134 TCanvas *GetCanvas(TString addToName);
136 void makeHistos(TString addToName) {
137 TString filename; //("test_");
138 filename.Append(addToName.Data());
139 filename.Append(".root");
140 TFile f(filename.Data());
142 TTree *t=(TTree*)f.Get("t");
143 gStyle->SetTitleX(0.18);
144 gStyle->SetTitleW(1-.18-.1);
146 t->SetMarkerStyle(20);
147 t->SetMarkerSize(.8);
150 c=GetCanvas(addToName+"_zRes");
151 t->Draw("zdc-z:z:r","","colz");
152 c->SaveAs(Form("%s_zRes.png",addToName.Data()));
154 c=GetCanvas(addToName+"_rRes");
155 t->Draw("rdc-r:z:r","","colz");
156 c->SaveAs(Form("%s_rRes.png",addToName.Data()));
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()));
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()));
168 c2=GetCanvas(addToName+"_Res_1D");
172 t->Draw("zdc-z","","");
175 t->Draw("rdc-r","","");
178 t->SetAlias("phiFix","-((phidc-phi)>4)*2*TMath::Pi()+((phidc-phi)<-4)*2*TMath::Pi()");
179 t->Draw("phidc-phi+phiFix","","");
182 t->Draw("(phidc*rdc)-(phi*r)","abs(phidc-phi)<1","");
184 c2->SaveAs(Form("%s_Res_1D.png",addToName.Data()));
189 void makeHistosDist(TString addToName) {
190 TString filename; //("test_");
191 filename.Append(addToName.Data());
192 filename.Append(".root");
193 TFile f(filename.Data());
195 TTree *t=(TTree*)f.Get("t");
196 gStyle->SetTitleX(0.18);
197 gStyle->SetTitleW(1-.18-.1);
199 t->SetMarkerStyle(20);
200 t->SetMarkerSize(.8);
203 c=GetCanvas(addToName+"_zResDist");
204 t->Draw("zd-z:z:r","","colz");
205 c->SaveAs(Form("%s_zResDist.png",addToName.Data()));
207 c=GetCanvas(addToName+"_rResDist");
208 t->Draw("rd-r:z:r","","colz");
209 c->SaveAs(Form("%s_rResDist.png",addToName.Data()));
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()));
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()));
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");
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");
245 TCanvas *GetCanvas(TString addToName)
247 TString cName(addToName);
249 TCanvas *c=(TCanvas*)gROOT->GetListOfCanvases()->FindObject(cName.Data());
250 if (!c) c=new TCanvas(cName.Data(),addToName.Data());