2 Make a TPC basic calibration trend plots:
3 Input - calibTime.root tree with summary info per run expected to be in the local directory
4 - optional parameters run range can be specified - startRun -endRun
5 Output - default plots are saved in the pwd/pic/
6 macro to define the picture style (NimStyle.C) expected to be in the current directory
11 aliroot -b -q /u/miranov/AliRoot/trunk/TPC/scripts/OCDBscan/makeTPCTrendPlots.C
16 const Double_t kmin=0.01;
17 const Double_t kmax=0.99;
18 const Double_t kEpsilon=0.0000001;
19 Int_t run0=0; // value to set from outside
20 Int_t run1=10000000; // vaue to set from outside
22 void makeTPCTrendPlots(Int_t startRun=0, Int_t endRun=1000000){
24 // make trend plots of the basic TPC calibration parameters
28 gROOT->Macro("NimStyle.C");
29 TFile f("calibTime.root");
30 tree = (TTree*)f.Get("dcs");
31 tree->SetMarkerStyle(25);
32 tree->SetMarkerSize(0.4);
33 gStyle->SetMarkerSize(0.4);
34 tree->SetAlias("isValidITS","abs(dits)<3600");
35 tree->SetAlias("isValidCE","min(abs(dcea),abs(dcec))<3600&&max(tdriftCE.fElements[72],tdriftCE.fElements[73])>100");
36 tree->SetAlias("isValidCEB","max(abs(dcea),abs(dcec))<3600&&min(tdriftCE.fElements[72],tdriftCE.fElements[73])>100");
37 printf("makeTPCTrendPlots.C\n\n");
38 printf("Processing DrawDriftTime();\n\n");
40 printf("DrawDriftRun();\n\n");
42 printf("DrawDriftCorel();\n\n");
50 // Draw drift velocity trend grapsh - as function of time
52 TCut cutRun=Form("run>%d&&run<%d",run0,run1);
53 TCut cutCE="(tdriftCE.fElements[72]>100||tdriftCE.fElements[72]>100)&&min(abs(dcea),abs(dcec))<3600";
54 TCut cutITS="abs(dits)<3600";
59 Double_t maxT=0,minT=0;
60 Double_t dmaxmin= 200000;
61 TCanvas * canvasDrift = new TCanvas("canvasDriftTime","canvasDriftTime",2000,900);
62 canvasDrift->Divide(1,3);
64 entries=tree->Draw("100*ptrel0:time",cutRun,"goff");
65 TGraph * graphPTA = new TGraph(entries,tree->GetV2(),tree->GetV1());
66 graphPTA->SetTitle("P/T correction A side");
67 graphPTA->SetName("PTcorrectionAside");
69 entries=tree->Draw("100*ptrel1:time",cutRun,"goff");
70 TGraph * graphPTC = new TGraph(entries,tree->GetV2(),tree->GetV1());
71 graphPTC->SetTitle("P/T correction C side");
72 graphPTC->SetName("PTcorrectionCside");
74 entries=tree->Draw("1000*(ptrel0-ptrel1):time",cutRun,"goff");
75 TGraph * graphPTAMC = new TGraph(entries,tree->GetV2(),tree->GetV1());
76 graphPTAMC->SetTitle("P/T correction A-C side");
77 graphPTAMC->SetName("PTcorrectionAMCside");
80 entries=tree->Draw("isValidCE*(-tdriftCE.fElements[72]+990)/10:time",cutRun,"goff");
81 TGraph * graphCEA = new TGraph(entries,tree->GetV2(),tree->GetV1());
82 graphCEA->SetName("CEAside");
84 entries=tree->Draw("isValidCE*(-tdriftCE.fElements[73]+990)/10:time",cutRun,"goff");
85 TGraph * graphCEC = new TGraph(entries,tree->GetV2(),tree->GetV1());
86 graphCEC->SetName("CECside");
88 entries=tree->Draw("isValidCE*(tdriftCE.fElements[73]-tdriftCE.fElements[72]):time",cutRun,"goff");
89 TGraph * graphCEAMC = new TGraph(entries,tree->GetV2(),tree->GetV1());
90 graphCEAMC->SetName("CEAMCside");
92 entries=tree->Draw("isValidITS*vdriftITS*100:time",cutRun,"goff");
93 TGraph * graphITSTPCA = new TGraph(entries,tree->GetV2(),tree->GetV1());
94 graphITSTPCA->SetName("ITSTPCAside");
96 entries=tree->Draw("isValidITS*vdriftITS*100:time",cutRun,"goff");
97 TGraph * graphITSTPCC = new TGraph(entries,tree->GetV2(),tree->GetV1());
98 graphITSTPCC->SetName("ITSTPCCside");
104 graphCEA->SetMinimum(min);
105 graphCEA->SetMaximum(max);
106 graphPTA->SetMinimum(min);
107 graphPTA->SetMaximum(max);
108 graphITSTPCA->SetMinimum(min);
109 graphITSTPCA->SetMaximum(max);
110 graphPTA->GetXaxis()->SetRangeUser(minT,maxT);
111 graphCEA->GetXaxis()->SetRangeUser(minT,maxT);
112 graphITSTPCA->GetXaxis()->SetRangeUser(minT,maxT);
116 graphPTA->GetXaxis()->SetTimeDisplay(kTRUE);
117 graphPTA->GetYaxis()->SetTitle("#Delta P/T (%)");
118 graphPTA->SetMarkerColor(2);graphPTA->SetMarkerStyle(25);
119 graphPTC->SetMarkerColor(4);graphPTC->SetMarkerStyle(27);
120 graphPTA->Draw("alp");
121 graphPTC->Draw("lp");
122 graphPTAMC->SetMarkerColor(3);graphPTAMC->SetMarkerStyle(25);
123 graphPTAMC->Draw("lp");
124 TLegend *legend = new TLegend(0.11,0.11,0.4,0.35,"P/T correction");
125 legend->AddEntry(graphPTA,"A side (%)");
126 legend->AddEntry(graphPTC,"C side (%)");
127 legend->AddEntry(graphPTAMC,"A-C side (0.1%)");
131 graphITSTPCA->GetXaxis()->SetTimeDisplay(kTRUE);
132 graphITSTPCA->GetYaxis()->SetTitle("v_{dcorr} (%)");
133 graphITSTPCA->SetMarkerColor(2);graphITSTPCA->SetMarkerStyle(25);
134 graphITSTPCC->SetMarkerColor(4);graphITSTPCC->SetMarkerStyle(27);
135 graphITSTPCA->Draw("ap");
136 graphITSTPCC->Draw("p");
137 TLegend *legend = new TLegend(0.11,0.11,0.4,0.35,"Drift correction (TPC-ITS)");
138 legend->AddEntry(graphITSTPCA,"A side (%)");
139 legend->AddEntry(graphITSTPCC,"C side (%)");
143 graphCEA->GetXaxis()->SetTimeDisplay(kTRUE);
144 graphCEA->GetYaxis()->SetTitle("(T_{CE0}-T_{CE})/T_{CE0}");
145 graphCEA->SetMarkerColor(2);graphCEA->SetMarkerStyle(25);
146 graphCEC->SetMarkerColor(4);graphCEC->SetMarkerStyle(27);
147 graphCEA->Draw("ap");
149 graphCEAMC->SetMarkerColor(3);graphCEAMC->SetMarkerStyle(25);
150 graphCEAMC->Draw("p");
151 TLegend *legend = new TLegend(0.11,0.11,0.4,0.35,"CE laser time (T_{CE0}=990)");
152 legend->AddEntry(graphCEA,"A side (%)");
153 legend->AddEntry(graphCEC,"C side (%)");
154 legend->AddEntry(graphCEAMC,"A-C side (0.1%)");
157 canvasDrift->SaveAs("pic/canvasDriftTime.gif");
164 TCut cutRun=Form("run>%d&&run<%d",run0,run1);
165 TCut cutCE="(tdriftCE.fElements[72]>100||tdriftCE.fElements[72]>100)&&min(abs(dcea),abs(dcec))<3600";
166 TCut cutITS="abs(dits)<3600";
169 Double_t max=-100000;
170 Double_t min= 100000;
171 Double_t maxT=0,minT=0;
172 Double_t dmaxmin= 200000;
173 TCanvas * canvasDrift = new TCanvas("canvasDriftRun","canvasDriftRun",2000,900);
174 canvasDrift->Divide(1,3);
177 TGraph * graphPTA = TStatToolkit::MakeGraphSparse(tree,"100*ptrel0:run",cutRun);
178 graphPTA->SetTitle("P/T correction A side");
179 graphPTA->SetName("PTcorrectionAside");
180 TGraph * graphPTC = TStatToolkit::MakeGraphSparse(tree,"100*ptrel1:run",cutRun);
181 graphPTC->SetTitle("P/T correction C side");
182 graphPTC->SetName("PTcorrectionCside");
183 TGraph * graphPTAMC = TStatToolkit::MakeGraphSparse(tree,"1000*(ptrel0-ptrel1):run",cutRun);
184 graphPTAMC->SetTitle("P/T correction A-C side");
185 graphPTAMC->SetName("PTcorrectionAMCside");
187 TGraph * graphCEA = TStatToolkit::MakeGraphSparse(tree,"isValidCE*(-tdriftCE.fElements[72]+990)/10:run",cutRun+cutITS);
188 graphCEA->SetTitle("P/T correction A side");
189 graphCEA->SetName("CEcorrectionAside");
190 TGraph * graphCEC = TStatToolkit::MakeGraphSparse(tree,"isValidCE*(-tdriftCE.fElements[73]+990)/10:run",cutRun+cutITS);
191 graphCEC->SetTitle("P/T correction C side");
192 graphCEC->SetName("CEcorrectionCside");
193 TGraph * graphCEAMC = TStatToolkit::MakeGraphSparse(tree,"(tdriftCE.fElements[73]-tdriftCE.fElements[72]):run",cutRun+cutITS);
194 graphCEAMC->SetTitle("P/T correction A-C side");
195 graphCEAMC->SetName("CEcorrectionAMCside");
197 TGraph * graphITSTPCA = TStatToolkit::MakeGraphSparse(tree,"isValidITS*vdriftITS*100:run",cutRun+cutITS);
198 graphITSTPCA->SetTitle("P/T correction A side");
199 graphITSTPCA->SetName("ITSTPCcorrectionAside");
200 TGraph * graphITSTPCC = TStatToolkit::MakeGraphSparse(tree,"isValidITS*vdriftITS*100:run",cutRun+cutITS);
201 graphITSTPCC->SetTitle("P/T correction C side");
202 graphITSTPCC->SetName("ITSTPCcorrectionCside");
208 graphCEA->SetMinimum(min);
209 graphCEA->SetMaximum(max);
210 graphPTA->SetMinimum(min);
211 graphPTA->SetMaximum(max);
212 graphITSTPCA->SetMinimum(min);
213 graphITSTPCA->SetMaximum(max);
217 graphPTA->GetXaxis()->SetTimeDisplay(kTRUE);
218 graphPTA->GetYaxis()->SetTitle("#Delta P/T (%)");
219 graphPTA->SetMarkerColor(2);graphPTA->SetMarkerStyle(25);
220 graphPTC->SetMarkerColor(4);graphPTC->SetMarkerStyle(27);
221 graphPTA->Draw("alp");
222 graphPTC->Draw("lp");
223 graphPTAMC->SetMarkerColor(3);graphPTAMC->SetMarkerStyle(25);
224 graphPTAMC->Draw("lp");
225 TLegend *legend = new TLegend(0.11,0.11,0.4,0.35,"P/T correction");
226 legend->AddEntry(graphPTA,"A side (%)");
227 legend->AddEntry(graphPTC,"C side (%)");
228 legend->AddEntry(graphPTAMC,"A-C side (0.1%)");
232 graphITSTPCA->GetXaxis()->SetTimeDisplay(kTRUE);
233 graphITSTPCA->GetYaxis()->SetTitle("v_{dcorr} (%)");
234 graphITSTPCA->SetMarkerColor(2);graphITSTPCA->SetMarkerStyle(25);
235 graphITSTPCC->SetMarkerColor(4);graphITSTPCC->SetMarkerStyle(27);
236 graphITSTPCA->Draw("ap");
237 graphITSTPCC->Draw("p");
238 TLegend *legend = new TLegend(0.11,0.11,0.4,0.35,"Drift correction (TPC-ITS)");
239 legend->AddEntry(graphITSTPCA,"A side (%)");
240 legend->AddEntry(graphITSTPCC,"C side (%)");
244 graphCEA->GetXaxis()->SetTimeDisplay(kTRUE);
245 graphCEA->GetYaxis()->SetTitle("(T_{CE0}-T_{CE})/T_{CE0}");
246 graphCEA->SetMarkerColor(2);graphCEA->SetMarkerStyle(25);
247 graphCEC->SetMarkerColor(4);graphCEC->SetMarkerStyle(27);
248 graphCEA->Draw("ap");
250 graphCEAMC->SetMarkerColor(3);graphCEAMC->SetMarkerStyle(25);
251 graphCEAMC->Draw("p");
252 TLegend *legend = new TLegend(0.11,0.11,0.4,0.35,"CE laser time (T_{CE0}=990)");
253 legend->AddEntry(graphCEA,"A side (%)");
254 legend->AddEntry(graphCEC,"C side (%)");
255 legend->AddEntry(graphCEAMC,"A-C side (0.1%)");
258 canvasDrift->SaveAs("pic/canvasDriftRun.gif");
261 void DrawDriftCorel(){
265 TStatToolkit toolkit;
271 Int_t npointsMax=100000;
273 tree->SetAlias("tCEB","(tdriftCE.fElements[72]+tdriftCE.fElements[73]-2000)/2000");
274 tree->SetAlias("tCEA","(tdriftCE.fElements[72]-1000)/1000");
275 tree->SetAlias("tCEC","(tdriftCE.fElements[73]-1000)/1000");
277 tree->SetAlias("tCEE","1-((1+(ptrel0+ptrel1)*0.5)*(1+vdriftITS))");
278 strDelta= TStatToolkit::FitPlaneConstrain(tree,"tCEB", "tCEE","isValidCEB&&isValidITS", chi2,npoints,param,covar,-1,0, npointsMax, 20);
280 strDelta->Tokenize("++")->Print();
281 tree->SetAlias("tCEF",strDelta->Data());
283 TGraph * graphLT = TStatToolkit::MakeGraphSparse(tree,"2.64*1000*(tCEB-tCEF):run","isValidCEB&&isValidITS");
284 TGraph * graphLTA = TStatToolkit::MakeGraphSparse(tree,"2.64*1000*(tCEA-tCEF):run","isValidCEB&&isValidITS");
285 TGraph * graphLTC = TStatToolkit::MakeGraphSparse(tree,"2.64*1000*(tCEC-tCEF):run","isValidCEB&&isValidITS");
286 graphLT->GetYaxis()->SetTitle("#Delta (mm)");
287 graphLT->SetMarkerStyle(25);
288 graphLTA->SetMarkerStyle(26); graphLTA->SetMarkerColor(2);
289 graphLTC->SetMarkerStyle(27); graphLTC->SetMarkerColor(4);
290 graphLT->SetMaximum(10);
291 graphLT->SetMinimum(-10);
293 TCanvas * canvasDrift = new TCanvas("canvasDriftDiff","canvasDriftDiff",2000,500);
294 graphLT->Draw("alp");
295 graphLTA->Draw("lp");
296 graphLTC->Draw("lp");
297 TLegend *legend = new TLegend(0.11,0.11,0.4,0.35,"CE plane - corrected with tracks");
298 legend->AddEntry(graphLT,"AC side mean (mm)");
299 legend->AddEntry(graphLTA,"A side (mm)");
300 legend->AddEntry(graphLTC,"C side (mm)");
303 canvasDrift->SaveAs("pic/canvasDriftDiffRun.gif");