6 #include "TTreeStream.h"
10 #include "AliTPCCorrection.h"
11 #include "AliTPCCorrectionLookupTable.h"
12 #include <AliToyMCEventGenerator.h>
16 void makeComparisonTree(TString filename, TString addToName)
19 AliTPCCorrectionLookupTable *fTPCCorrection2=0x0;
21 Bool_t doScaling=kTRUE;
22 if (filename.Contains(":")) {
23 TObjArray *arr=filename.Tokenize(":");
24 TString s2(arr->At(1)->GetName());
25 if (s2.Contains("-scale")) {
27 s2.ReplaceAll("-scale","");
31 fTPCCorrection2=(AliTPCCorrectionLookupTable*)f2.Get("map");
33 filename=arr->At(0)->GetName();
36 TFile fn(filename.Data());
38 AliTPCCorrectionLookupTable *fTPCCorrection=(AliTPCCorrectionLookupTable*)fn.Get("map");
40 if (fTPCCorrection2 && doScaling) {
42 fTPCCorrection2->SetCorrScaleFactor(AliToyMCEventGenerator::GetSCScalingFactor(fTPCCorrection, fTPCCorrection2,dummy));
45 // fTPCCorrection->BuildExactInverse();
47 // TFile f("/tmp/corrTest.Root","recreate");
48 // fTPCCorrection->Write("map");
51 TString outFile=addToName;
52 outFile.Append(".root");
53 TTreeSRedirector *sred=new TTreeSRedirector(outFile.Data());
55 Float_t dx[3]={0,0,0};
57 for (Float_t iz=-245; iz<=245; iz+=10) {
58 Short_t roc=(iz>=0)?0:18;
59 for (Float_t ir=86; ir<250; ir+=10) {
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};
72 fTPCCorrection->GetDistortion(x3,roc,dx);
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();
86 // correct back distorted point
87 Float_t xd3[3]={xd,yd,zd};
89 if (fTPCCorrection2) {
90 fTPCCorrection2->GetCorrection(xd3,roc,dx);
92 fTPCCorrection->GetCorrection(xd3,roc,dx);
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();
108 // write current point
119 void makeAllComparisonTrees()
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");
126 void makeAllComparisonTreesNew()
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");
137 void makeAllComparisonTreesOld()
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");
148 TCanvas *GetCanvas(TString addToName);
150 void makeHistos(TString addToName) {
151 TString filename; //("test_");
152 filename.Append(addToName.Data());
153 filename.Append(".root");
154 TFile f(filename.Data());
156 TTree *t=(TTree*)f.Get("t");
157 gStyle->SetTitleX(0.18);
158 gStyle->SetTitleW(1-.18-.1);
160 t->SetMarkerStyle(20);
161 t->SetMarkerSize(.8);
164 c=GetCanvas(addToName+"_zRes");
165 t->Draw("zdc-z:z:r","","colz");
166 c->SaveAs(Form("%s_zRes.png",addToName.Data()));
168 c=GetCanvas(addToName+"_rRes");
169 t->Draw("rdc-r:z:r","","colz");
170 c->SaveAs(Form("%s_rRes.png",addToName.Data()));
172 c=GetCanvas(addToName+"_phiRes");
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");
175 c->SaveAs(Form("%s_phiRes.png",addToName.Data()));
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()));
182 c2=GetCanvas(addToName+"_Res_1D");
186 t->Draw("zdc-z","","");
189 t->Draw("rdc-r","","");
192 t->SetAlias("phiFix","-((phidc-phi)>4)*2*TMath::Pi()+((phidc-phi)<-4)*2*TMath::Pi()");
193 t->SetAlias("phiRes","phidc-phi+phiFix");
194 t->Draw("phiRes","","");
197 t->Draw("(phidc*rdc)-(phi*r)","abs(phidc-phi)<1","");
199 c2->SaveAs(Form("%s_Res_1D.png",addToName.Data()));
204 void makeHistosDist(TString addToName) {
205 TString filename; //("test_");
206 filename.Append(addToName.Data());
207 filename.Append(".root");
208 TFile f(filename.Data());
210 TTree *t=(TTree*)f.Get("t");
211 gStyle->SetTitleX(0.18);
212 gStyle->SetTitleW(1-.18-.1);
214 t->SetMarkerStyle(20);
215 t->SetMarkerSize(.8);
218 c=GetCanvas(addToName+"_zResDist");
219 t->Draw("zd-z:z:r","","colz");
220 c->SaveAs(Form("%s_zResDist.png",addToName.Data()));
222 c=GetCanvas(addToName+"_rResDist");
223 t->Draw("rd-r:z:r","","colz");
224 c->SaveAs(Form("%s_rResDist.png",addToName.Data()));
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()));
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()));
238 void makeAllHistos() {
239 makeHistos("LUT_05");
240 makeHistos("LUT_10");
241 makeHistos("LUT_20");
242 makeHistos("LUT_25");
243 makeHistos("LUT_30");
244 makeHistos("LUT_35");
245 makeHistos("LUT_40");
249 void makeAllHistosDist() {
250 makeHistosDist("LUT_05");
251 makeHistosDist("LUT_10");
252 makeHistosDist("LUT_20");
253 makeHistosDist("LUT_25");
254 makeHistosDist("LUT_30");
255 makeHistosDist("LUT_35");
256 makeHistosDist("LUT_40");
260 TCanvas *GetCanvas(TString addToName)
262 TString cName(addToName);
264 TCanvas *c=(TCanvas*)gROOT->GetListOfCanvases()->FindObject(cName.Data());
265 if (!c) c=new TCanvas(cName.Data(),addToName.Data());