]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - ITS/macrosSDD/PlotDriftSpeedSDDVsTime.C
Update master to aliroot
[u/mrichter/AliRoot.git] / ITS / macrosSDD / PlotDriftSpeedSDDVsTime.C
... / ...
CommitLineData
1#if !defined(__CINT__) || defined(__MAKECINT__)
2#include <Riostream.h>
3#include <TFile.h>
4#include <TH1F.h>
5#include <TH2F.h>
6#include <TGraph.h>
7#include <TStyle.h>
8#include <TLegend.h>
9#include <TLegendEntry.h>
10#include <TLine.h>
11#include <TSystem.h>
12#include <TGrid.h>
13#include <TMath.h>
14#include <TGraphErrors.h>
15#include <TCanvas.h>
16#include <TLatex.h>
17#include <TObjArray.h>
18#include "AliCDBEntry.h"
19#include "AliITSDriftSpeedArraySDD.h"
20#include "AliITSgeomTGeo.h"
21#endif
22
23/* $Id: PlotDriftSpeedSDDVsTime.C 41510 2010-06-01 09:21:24Z prino $ */
24
25
26// Macro to plot the drift speed vs. time from the OCDB files
27// created from INJECTOR runs (OCDB/ITS/Calib/DriftSpeedSDD)
28// Origin: F. Prino (prino@to.infn.it)
29
30void FillErrors(Float_t errSpeed[260]);
31
32void PlotDriftSpeedSDDVsTime(Int_t year=2014, Int_t firstRun=172600,
33 Int_t lastRun=999999999,
34 Int_t anode=128){
35 TGrid::Connect("alien:",0,0,"t");
36 Float_t errSpeed[260];
37 FillErrors(errSpeed);
38 Int_t iAn=anode;
39 if(anode>256) iAn=anode-256;
40
41 TString cmd=Form("gbbox find \"/alice/data/%d/OCDB/ITS/Calib/DriftSpeedSDD\" \"Run*.root\" > runSpeedAlien.txt",year);
42 gSystem->Exec(cmd.Data());
43 FILE* listruns=fopen("runSpeedAlien.txt","r");
44 Char_t filnam[200],filnamalien[200];
45 TGraphErrors** gvdrvstime=new TGraphErrors*[520];
46 TGraphErrors** gvdrvsrun=new TGraphErrors*[520];
47 TGraphErrors** gstatusinjvstime=new TGraphErrors*[520];
48 TGraphErrors** gstatusinjvsrun=new TGraphErrors*[520];
49
50
51 TGraph* gGoodInjVsRun=new TGraph(0);
52 gGoodInjVsRun->SetName("gGoodInjVsRun");
53 TGraph* gRescaledSpeedVsRun=new TGraph(0);
54 gRescaledSpeedVsRun->SetName("gRescaledSpeedVsRun");
55 TGraph* gAverSpeedVsRun=new TGraph(0);
56 gAverSpeedVsRun->SetName("gAverSpeedVsRun");
57 TGraph* gGoodInjVsTime=new TGraph(0);
58 gGoodInjVsTime->SetName("gGoodInjVsTime");
59 TGraph* gRescaledSpeedVsTime=new TGraph(0);
60 gRescaledSpeedVsTime->SetName("gRescaledSpeedVsTime");
61 TGraph* gAverSpeedVsTime=new TGraph(0);
62 gAverSpeedVsTime->SetName("gAverSpeedVsIime");
63
64 TGraph* gGoodInjVsRunL3=new TGraph(0);
65 gGoodInjVsRunL3->SetName("gGoodInjVsRunL3");
66 TGraph* gRescaledSpeedVsRunL3=new TGraph(0);
67 gRescaledSpeedVsRunL3->SetName("gRescaledSpeedVsRunL3");
68 TGraph* gAverSpeedVsRunL3=new TGraph(0);
69 gAverSpeedVsRunL3->SetName("gAverSpeedVsRunL3");
70 TGraph* gGoodInjVsTimeL3=new TGraph(0);
71 gGoodInjVsTimeL3->SetName("gGoodInjVsTimeL3");
72 TGraph* gRescaledSpeedVsTimeL3=new TGraph(0);
73 gRescaledSpeedVsTimeL3->SetName("gRescaledSpeedVsTimeL3");
74 TGraph* gAverSpeedVsTimeL3=new TGraph(0);
75 gAverSpeedVsTimeL3->SetName("gAverSpeedVsIimeL3");
76
77 TGraph* gGoodInjVsRunL4=new TGraph(0);
78 gGoodInjVsRunL4->SetName("gGoodInjVsRunL4");
79 TGraph* gRescaledSpeedVsRunL4=new TGraph(0);
80 gRescaledSpeedVsRunL4->SetName("gRescaledSpeedVsRunL4");
81 TGraph* gAverSpeedVsRunL4=new TGraph(0);
82 gAverSpeedVsRunL4->SetName("gAverSpeedVsRunL4");
83 TGraph* gGoodInjVsTimeL4=new TGraph(0);
84 gGoodInjVsTimeL4->SetName("gGoodInjVsTimeL4");
85 TGraph* gRescaledSpeedVsTimeL4=new TGraph(0);
86 gRescaledSpeedVsTimeL4->SetName("gRescaledSpeedVsTimeL4");
87 TGraph* gAverSpeedVsTimeL4=new TGraph(0);
88 gAverSpeedVsTimeL4->SetName("gAverSpeedVsIimeL4");
89
90 TGraph* gFracGoodInjVsRun=new TGraph(0);
91 gFracGoodInjVsRun->SetName("gFracGoodInjVsRun");
92 TGraph* gFracRescaledSpeedVsRun=new TGraph(0);
93 gFracRescaledSpeedVsRun->SetName("gFracRescaledSpeedVsRun");
94 TGraph* gFracAverSpeedVsRun=new TGraph(0);
95 gFracAverSpeedVsRun->SetName("gFracAverSpeedVsRun");
96 TGraph* gFracGoodInjVsTime=new TGraph(0);
97 gFracGoodInjVsTime->SetName("gFracGoodInjVsTime");
98 TGraph* gFracRescaledSpeedVsTime=new TGraph(0);
99 gFracRescaledSpeedVsTime->SetName("gFracRescaledSpeedVsTime");
100 TGraph* gFracAverSpeedVsTime=new TGraph(0);
101 gFracAverSpeedVsTime->SetName("gAverSpeedVsIime");
102
103 TGraph* gFracGoodInjVsRunL3=new TGraph(0);
104 gFracGoodInjVsRunL3->SetName("gFracGoodInjVsRunL3");
105 TGraph* gFracRescaledSpeedVsRunL3=new TGraph(0);
106 gFracRescaledSpeedVsRunL3->SetName("gFracRescaledSpeedVsRunL3");
107 TGraph* gFracAverSpeedVsRunL3=new TGraph(0);
108 gFracAverSpeedVsRunL3->SetName("gFracAverSpeedVsRunL3");
109 TGraph* gFracGoodInjVsTimeL3=new TGraph(0);
110 gFracGoodInjVsTimeL3->SetName("gFracGoodInjVsTimeL3");
111 TGraph* gFracRescaledSpeedVsTimeL3=new TGraph(0);
112 gFracRescaledSpeedVsTimeL3->SetName("gFracRescaledSpeedVsTimeL3");
113 TGraph* gFracAverSpeedVsTimeL3=new TGraph(0);
114 gFracAverSpeedVsTimeL3->SetName("gFracAverSpeedVsIimeL3");
115
116 TGraph* gFracGoodInjVsRunL4=new TGraph(0);
117 gFracGoodInjVsRunL4->SetName("gFracGoodInjVsRunL4");
118 TGraph* gFracRescaledSpeedVsRunL4=new TGraph(0);
119 gFracRescaledSpeedVsRunL4->SetName("gFracRescaledSpeedVsRunL4");
120 TGraph* gFracAverSpeedVsRunL4=new TGraph(0);
121 gFracAverSpeedVsRunL4->SetName("gFracAverSpeedVsRunL4");
122 TGraph* gFracGoodInjVsTimeL4=new TGraph(0);
123 gFracGoodInjVsTimeL4->SetName("gFracGoodInjVsTimeL4");
124 TGraph* gFracRescaledSpeedVsTimeL4=new TGraph(0);
125 gFracRescaledSpeedVsTimeL4->SetName("gFracRescaledSpeedVsTimeL4");
126 TGraph* gFracAverSpeedVsTimeL4=new TGraph(0);
127 gFracAverSpeedVsTimeL4->SetName("gFracAverSpeedVsIimeL4");
128
129 for(Int_t iMod=0; iMod<260;iMod++){
130 for(Int_t iSide=0; iSide<2; iSide++){
131 Int_t index=2*iMod+iSide;
132 gvdrvstime[index]=new TGraphErrors(0);
133 gvdrvstime[index]->SetTitle(Form("Module %d Side %d",iMod+240,iSide));
134 gvdrvstime[index]->SetName(Form("gspmod%ds%dt",iMod+240,iSide));
135 gvdrvsrun[index]=new TGraphErrors(0);
136 gvdrvsrun[index]->SetTitle(Form("Module %d Side %d",iMod+240,iSide));
137 gvdrvsrun[index]->SetName(Form("gspmod%ds%dr",iMod+240,iSide));
138 gstatusinjvstime[index]=new TGraphErrors(0);
139 gstatusinjvstime[index]->SetTitle(Form("Module %d Side %d",iMod+240,iSide));
140 gstatusinjvstime[index]->SetName(Form("gstinmod%ds%dt",iMod+240,iSide));
141 gstatusinjvsrun[index]=new TGraphErrors(0);
142 gstatusinjvsrun[index]->SetTitle(Form("Module %d Side %d",iMod+240,iSide));
143 gstatusinjvsrun[index]->SetName(Form("gstinmod%ds%dr",iMod+240,iSide));
144 }
145 }
146
147 Float_t driftField=(1800-45)/291/0.012;
148 Int_t nrun,nrun2,nv,ns;
149 UInt_t timeZero;
150 if(year==2009) timeZero=1247762992;
151 else if(year==2010) timeZero=1262300400;
152 else if(year==2011) timeZero=1293836400; // 1/1/2011 at 0:00 CEST
153 else if(year==2012) timeZero=1325372400;
154 else if(year==2013) timeZero=1356994800;
155 else timeZero=1388530800;
156
157 while(!feof(listruns)){
158 fscanf(listruns,"%s\n",filnam);
159 Char_t directory[100];
160 sprintf(directory,"/alice/data/%d",year);
161 if(!strstr(filnam,directory)) continue;
162 sscanf(filnam,"/alice/data/%d/OCDB/ITS/Calib/DriftSpeedSDD/Run%d_%d_v%d_s%d.root",&year,&nrun,&nrun2,&nv,&ns);
163
164 if(year==2009 && (nrun<85639 && nrun2> 85639)) continue;// protection for files with swapped ladders 4-5 of layer 3
165 if(year==2009 && (nrun>100000 && nv< 325)) continue; // protection for files with swapped ladder 0-1 of layer 4
166
167 if(nrun<firstRun) continue;
168 if(nrun>lastRun) continue;
169 sprintf(filnamalien,"alien://%s",filnam);
170 printf("Open file: %s\n",filnam);
171 TFile *f= TFile::Open(filnamalien);
172 if(f==0x0)continue;
173 AliCDBEntry *ent=(AliCDBEntry*)f->Get("AliCDBEntry");
174 TObjArray *drspSDD = (TObjArray *)ent->GetObject();
175
176 Int_t iGoodInj=0;
177 Int_t iRescaledSpeed=0;
178 Int_t iAverSpeed=0;
179
180 Int_t iGoodInjL3=0;
181 Int_t iRescaledSpeedL3=0;
182 Int_t iAverSpeedL3=0;
183
184 Int_t iGoodInjL4=0;
185 Int_t iRescaledSpeedL4=0;
186 Int_t iAverSpeedL4=0;
187
188 Int_t totalgoodinj=520;
189 Int_t totalgoodinjL3=168;
190 Int_t totalgoodinjL4=352;
191
192 Float_t fracGoodInj=0.;
193 Float_t fracGoodInjL3=0.;
194 Float_t fracGoodInjL4=0.;
195
196 Float_t fracRescaledSpeed=0.;
197 Float_t fracRescaledSpeedL3=0.;
198 Float_t fracRescaledSpeedL4=0.;
199
200 Float_t fracAverSpeed=0.;
201 Float_t fracAverSpeedL3=0.;
202 Float_t fracAverSpeedL4=0.;
203
204 AliITSDriftSpeedArraySDD *vdriftarr;
205 AliITSDriftSpeedArraySDD *vdriftarr0;
206 AliITSDriftSpeedArraySDD *vdriftarr1;
207
208 UInt_t timest=0;
209 Float_t timeday=0;
210 Bool_t goodTime=kFALSE;
211
212 for(Int_t iHyb=0; iHyb<520;iHyb++){
213 if(!goodTime){
214 vdriftarr=(AliITSDriftSpeedArraySDD*)drspSDD->At(iHyb);
215 UInt_t statusInj=vdriftarr->GetInjectorStatus();
216 if(statusInj>0){
217 timest=vdriftarr->GetTimestamp(0);
218 if(timest>0 && timest>timeZero){
219 timeday=float(timest-timeZero)/60./60./24.;
220 goodTime=kTRUE;
221 }
222 }
223 }
224 }
225
226 for(Int_t iMod=0; iMod<260;iMod++){
227
228 Int_t i0=2*iMod;
229 Int_t i1=1+2*iMod;
230 vdriftarr0=(AliITSDriftSpeedArraySDD*)drspSDD->At(i0);
231 vdriftarr1=(AliITSDriftSpeedArraySDD*)drspSDD->At(i1);
232
233
234 UInt_t statusInj0=vdriftarr0->GetInjectorStatus();
235 UInt_t statusInj1=vdriftarr1->GetInjectorStatus();
236 Int_t npt=gstatusinjvsrun[i0]->GetN();
237 gstatusinjvsrun[i0]->SetPoint(npt,(Float_t)nrun,(Float_t)statusInj0);
238 gstatusinjvsrun[i1]->SetPoint(npt,(Float_t)nrun,(Float_t)statusInj1);
239 gstatusinjvsrun[i0]->SetPointError(npt,0,0);
240 gstatusinjvsrun[i1]->SetPointError(npt,0,0);
241 if(goodTime){
242 Int_t npt2=gstatusinjvstime[i0]->GetN();
243 gstatusinjvstime[i0]->SetPoint(npt2,timeday,(Float_t)statusInj0);
244 gstatusinjvstime[i1]->SetPoint(npt2,timeday,(Float_t)statusInj1);
245 gstatusinjvstime[i0]->SetPointError(npt2,0,0);
246 gstatusinjvstime[i1]->SetPointError(npt2,0,0);
247 }
248
249 Float_t vdrift0=vdriftarr0->GetDriftSpeed(0,iAn);
250 Float_t vdrift1=vdriftarr1->GetDriftSpeed(0,iAn);
251 Float_t mob=vdrift0*1.E5/driftField;
252 Float_t temper=293.15*TMath::Power((mob/1350.),-1/2.4);
253 if(iMod==497-240) printf("Run %s Time %d Day %f Speed=%f Temp=%f\n",filnam,timest,timeday,vdrift0,temper);
254
255 if(statusInj0>1){
256 iGoodInj++;
257 if(iMod<84)iGoodInjL3++;
258 else iGoodInjL4++;
259 npt=gvdrvsrun[i0]->GetN();
260 gvdrvsrun[i0]->SetPoint(npt,(Float_t)nrun,vdrift0);
261 gvdrvsrun[i0]->SetPointError(npt,0,errSpeed[iMod]);
262 if(goodTime){
263 Int_t npt2=gvdrvstime[i0]->GetN();
264 gvdrvstime[i0]->SetPoint(npt2,timeday,vdrift0);
265 gvdrvstime[i0]->SetPointError(npt2,0,errSpeed[iMod]);
266 }
267 }else if(statusInj0==1){
268 iRescaledSpeed++;
269 if(iMod<84)iRescaledSpeedL3++;
270 else iRescaledSpeedL4++;
271 }else{
272 iAverSpeed++;
273 if(iMod<84)iAverSpeedL3++;
274 else iAverSpeedL4++;
275 }
276 if(statusInj1>1){
277 iGoodInj++;
278 if(iMod<84)iGoodInjL3++;
279 else iGoodInjL4++;
280 npt=gvdrvsrun[i1]->GetN();
281 gvdrvsrun[i1]->SetPoint(npt,(Float_t)nrun,vdrift1);
282 gvdrvsrun[i1]->SetPointError(npt,0,errSpeed[iMod]);
283 if(goodTime){
284 Int_t npt2=gvdrvstime[i1]->GetN();
285 gvdrvstime[i1]->SetPoint(npt2,timeday,vdrift1);
286 gvdrvstime[i1]->SetPointError(npt2,0,errSpeed[iMod]);
287 }
288 }else if(statusInj1==1){
289 iRescaledSpeed++;
290 if(iMod<84)iRescaledSpeedL3++;
291 else iRescaledSpeedL4++;
292 }else{
293 iAverSpeed++;
294 if(iMod<84)iAverSpeedL3++;
295 else iAverSpeedL4++;
296 }
297 }
298
299 Int_t npt=gGoodInjVsRun->GetN();
300
301 fracGoodInj=(Float_t)iGoodInj/(Float_t)totalgoodinj;
302 fracGoodInjL3=(Float_t)iGoodInjL3/(Float_t)totalgoodinjL3;
303 fracGoodInjL4=(Float_t)iGoodInjL4/(Float_t)totalgoodinjL4;
304
305 fracRescaledSpeed = (Float_t)iRescaledSpeed/(Float_t)totalgoodinj;
306 fracRescaledSpeedL3 = (Float_t)iRescaledSpeedL3/(Float_t)totalgoodinjL3;
307 fracRescaledSpeedL4 = (Float_t)iRescaledSpeedL3/(Float_t)totalgoodinjL4;
308
309 fracAverSpeed = (Float_t)iAverSpeed/(Float_t)totalgoodinj;
310 fracAverSpeedL3 = (Float_t)iAverSpeedL3/(Float_t)totalgoodinjL3;
311 fracAverSpeedL4 = (Float_t)iAverSpeedL4/(Float_t)totalgoodinjL4;
312
313 gGoodInjVsRun->SetPoint(npt,(Float_t)nrun,iGoodInj);
314 gRescaledSpeedVsRun->SetPoint(npt,(Float_t)nrun,iRescaledSpeed);
315 gAverSpeedVsRun->SetPoint(npt,(Float_t)nrun,iAverSpeed);
316
317 gGoodInjVsRunL3->SetPoint(npt,(Float_t)nrun,iGoodInjL3);
318 gRescaledSpeedVsRunL3->SetPoint(npt,(Float_t)nrun,iRescaledSpeedL3);
319 gAverSpeedVsRunL3->SetPoint(npt,(Float_t)nrun,iAverSpeedL3);
320
321 gGoodInjVsRunL4->SetPoint(npt,(Float_t)nrun,iGoodInjL4);
322 gRescaledSpeedVsRunL4->SetPoint(npt,(Float_t)nrun,iRescaledSpeedL4);
323 gAverSpeedVsRunL4->SetPoint(npt,(Float_t)nrun,iAverSpeedL4);
324
325
326 gFracGoodInjVsRun->SetPoint(npt,(Float_t)nrun,(Double_t)fracGoodInj);
327 gFracRescaledSpeedVsRun->SetPoint(npt,(Float_t)nrun,(Double_t)fracRescaledSpeed);
328 gFracAverSpeedVsRun->SetPoint(npt,(Float_t)nrun,(Double_t)fracAverSpeed);
329
330 gFracGoodInjVsRunL3->SetPoint(npt,(Float_t)nrun,(Double_t)fracGoodInjL3);
331 gFracRescaledSpeedVsRunL3->SetPoint(npt,(Float_t)nrun,(Double_t)fracRescaledSpeedL3);
332 gFracAverSpeedVsRunL3->SetPoint(npt,(Float_t)nrun,(Double_t)fracAverSpeedL3);
333
334 gFracGoodInjVsRunL4->SetPoint(npt,(Float_t)nrun,(Double_t)fracGoodInjL4);
335 gFracRescaledSpeedVsRunL4->SetPoint(npt,(Float_t)nrun,(Double_t)fracRescaledSpeedL4);
336 gFracAverSpeedVsRunL4->SetPoint(npt,(Float_t)nrun,(Double_t)fracAverSpeedL4);
337
338 npt=gGoodInjVsTime->GetN();
339 if(goodTime){
340 gGoodInjVsTime->SetPoint(npt,timeday,iGoodInj);
341 gRescaledSpeedVsTime->SetPoint(npt,timeday,iRescaledSpeed);
342 gAverSpeedVsTime->SetPoint(npt,timeday,iAverSpeed);
343
344 gGoodInjVsTimeL3->SetPoint(npt,timeday,iGoodInjL3);
345 gRescaledSpeedVsTimeL3->SetPoint(npt,timeday,iRescaledSpeedL3);
346 gAverSpeedVsTimeL3->SetPoint(npt,timeday,iAverSpeedL3);
347
348 gGoodInjVsTimeL4->SetPoint(npt,timeday,iGoodInjL4);
349 gRescaledSpeedVsTimeL4->SetPoint(npt,timeday,iRescaledSpeedL4);
350 gAverSpeedVsTimeL4->SetPoint(npt,timeday,iAverSpeedL4);
351
352
353 gFracGoodInjVsTime->SetPoint(npt,timeday,(Double_t)fracGoodInj);
354 gFracRescaledSpeedVsTime->SetPoint(npt,timeday,(Double_t)fracRescaledSpeed);
355 gFracAverSpeedVsTime->SetPoint(npt,timeday,(Double_t)fracAverSpeed);
356
357 gFracGoodInjVsTimeL3->SetPoint(npt,timeday,(Double_t)fracGoodInjL3);
358 gFracRescaledSpeedVsTimeL3->SetPoint(npt,timeday,(Double_t)fracRescaledSpeedL3);
359 gFracAverSpeedVsTimeL3->SetPoint(npt,timeday,(Double_t)fracAverSpeedL3);
360
361 gFracGoodInjVsTimeL4->SetPoint(npt,timeday,(Double_t)fracGoodInjL4);
362 gFracRescaledSpeedVsTimeL4->SetPoint(npt,timeday,(Double_t)fracRescaledSpeedL4);
363 gFracAverSpeedVsTimeL4->SetPoint(npt,timeday,(Double_t)fracAverSpeedL4);
364 }
365
366 printf("Number of half-modules with drift speed from injectors = %d\n",iGoodInj);
367 printf("Number of half-modules with average drift speed = %d\n",iAverSpeed);
368 printf("Number of half-modules with drift speed from injectors L3 = %d\n",iGoodInjL3);
369 printf("Number of half-modules with drift speed from golden module L3 = %d\n",iRescaledSpeedL3);
370 printf("Number of half-modules with drift speed from injectors L4 = %d\n",iGoodInjL4);
371 printf("Number of half-modules with drift speed from golden module L4 = %d\n",iRescaledSpeedL4);
372
373 f->Close();
374 }
375
376 Char_t filout[100];
377 sprintf(filout,"DriftSpVsTime_%d.root",year);
378 TFile *ofil=new TFile(filout,"recreate");
379 for(Int_t iHyb=0; iHyb<520;iHyb++){
380 gvdrvstime[iHyb]->Write();
381 gvdrvsrun[iHyb]->Write();
382 gstatusinjvstime[iHyb]->Write();
383 gstatusinjvsrun[iHyb]->Write();
384 }
385 gGoodInjVsRun->Write();
386 gGoodInjVsRunL3->Write();
387 gGoodInjVsRunL4->Write();
388 gGoodInjVsTime->Write();
389 gGoodInjVsTimeL3->Write();
390 gGoodInjVsTimeL4->Write();
391 gAverSpeedVsRun->Write();
392 gAverSpeedVsRunL3->Write();
393 gAverSpeedVsRunL4->Write();
394 gAverSpeedVsTime->Write();
395 gAverSpeedVsTimeL3->Write();
396 gAverSpeedVsTimeL4->Write();
397 gRescaledSpeedVsRun->Write();
398 gRescaledSpeedVsRunL3->Write();
399 gRescaledSpeedVsRunL4->Write();
400 gRescaledSpeedVsTime->Write();
401 gRescaledSpeedVsTimeL3->Write();
402 gRescaledSpeedVsTimeL4->Write();
403 ofil->Close();
404
405 // Int_t mod1=244-240;
406 Int_t mod1 = 275-240;
407 Int_t mod2=318-240;
408 // Int_t mod2=259-240;
409// Int_t mod2=274-240;
410 Int_t mod3=413-240;
411 // Int_t mod4=453-240;
412 Int_t mod4=480-240;
413 // Int_t mod4=497-240;
414 Int_t lay1,lad1,det1;
415 Int_t lay2,lad2,det2;
416 Int_t lay3,lad3,det3;
417 Int_t lay4,lad4,det4;
418 AliITSgeomTGeo::GetModuleId(mod1+240,lay1,lad1,det1);
419 AliITSgeomTGeo::GetModuleId(mod2+240,lay2,lad2,det2);
420 AliITSgeomTGeo::GetModuleId(mod3+240,lay3,lad3,det3);
421 AliITSgeomTGeo::GetModuleId(mod4+240,lay4,lad4,det4);
422
423 gStyle->SetOptTitle(0);
424 TCanvas* c0=new TCanvas("c0","Vdrift vs. time");
425 c0->SetGridx();
426 c0->SetGridy();
427 gvdrvstime[2*mod1]->SetMarkerStyle(20);
428 gvdrvstime[2*mod2]->SetMarkerStyle(22);
429 gvdrvstime[2*mod2]->SetMarkerColor(2);
430 gvdrvstime[2*mod2]->SetLineColor(2);
431 gvdrvstime[2*mod3]->SetMarkerStyle(29);
432 gvdrvstime[2*mod3]->SetMarkerColor(3);
433 gvdrvstime[2*mod3]->SetLineColor(3);
434 gvdrvstime[2*mod4]->SetMarkerStyle(27);
435 gvdrvstime[2*mod4]->SetMarkerColor(4);
436 gvdrvstime[2*mod4]->SetLineColor(4);
437 gvdrvstime[2*mod1]->Draw("AP");
438 gvdrvstime[2*mod1]->SetMinimum(6.3);
439 gvdrvstime[2*mod1]->SetMaximum(6.75);
440 Char_t title[100];
441 if(year==2009){
442 sprintf(title,"Time (days since July 16th 2009)");
443 }else{
444 sprintf(title,Form("Time (days since January 1st %d)",year));
445 }
446 gvdrvstime[2*mod1]->GetXaxis()->SetTitle(title);
447 gvdrvstime[2*mod1]->GetYaxis()->SetTitle("Drift speed (#mum/ns)");
448 gvdrvstime[2*mod2]->Draw("PSAME");
449 gvdrvstime[2*mod3]->Draw("PSAME");
450 gvdrvstime[2*mod4]->Draw("PSAME");
451 TLegend* leg=new TLegend(0.6,0.7,0.89,0.89);
452 leg->SetBorderSize(0);
453 leg->SetFillColor(0);
454 leg->SetFillStyle(0);
455 TLegendEntry* lent=leg->AddEntry(gvdrvstime[2*mod1],Form("Lay %d Lad %d Det %d",lay1,lad1,det1),"P");
456 lent=leg->AddEntry(gvdrvstime[2*mod2],Form("Lay %d Lad %d Det %d",lay2,lad2,det2),"P");
457 lent->SetTextColor(2);
458 lent=leg->AddEntry(gvdrvstime[2*mod3],Form("Lay %d Lad %d Det %d",lay3,lad3,det3),"P");
459 lent->SetTextColor(3);
460 lent=leg->AddEntry(gvdrvstime[2*mod4],Form("Lay %d Lad %d Det %d",lay4,lad4,det4),"P");
461 lent->SetTextColor(4);
462 leg->Draw();
463
464 TCanvas* c0b=new TCanvas("c0b","StatusInj vs. time");
465 c0->SetGridx();
466 c0->SetGridy();
467 gstatusinjvstime[2*mod1]->SetMarkerStyle(20);
468 gstatusinjvstime[2*mod2]->SetMarkerStyle(22);
469 gstatusinjvstime[2*mod2]->SetMarkerColor(2);
470 gstatusinjvstime[2*mod2]->SetLineColor(2);
471 gstatusinjvstime[2*mod3]->SetMarkerStyle(29);
472 gstatusinjvstime[2*mod3]->SetMarkerColor(3);
473 gstatusinjvstime[2*mod3]->SetLineColor(3);
474 gstatusinjvstime[2*mod4]->SetMarkerStyle(27);
475 gstatusinjvstime[2*mod4]->SetMarkerColor(4);
476 gstatusinjvstime[2*mod4]->SetLineColor(4);
477 gstatusinjvstime[2*mod1]->Draw("AP");
478 gvdrvstime[2*mod1]->GetXaxis()->SetTitle(title);
479 gvdrvstime[2*mod1]->GetYaxis()->SetTitle("Injector Status");
480 gvdrvstime[2*mod2]->Draw("PSAME");
481 gvdrvstime[2*mod3]->Draw("PSAME");
482 gvdrvstime[2*mod4]->Draw("PSAME");
483 leg->Draw();
484
485
486 TCanvas* c1=new TCanvas("c1","Vdrift vs. run");
487 c1->SetGridx();
488 c1->SetGridy();
489 gvdrvsrun[2*mod1]->SetMarkerStyle(20);
490 gvdrvsrun[2*mod2]->SetMarkerStyle(22);
491 gvdrvsrun[2*mod2]->SetMarkerColor(2);
492 gvdrvsrun[2*mod2]->SetLineColor(2);
493 gvdrvsrun[2*mod3]->SetMarkerStyle(29);
494 gvdrvsrun[2*mod3]->SetMarkerColor(3);
495 gvdrvsrun[2*mod3]->SetLineColor(3);
496 gvdrvsrun[2*mod4]->SetMarkerStyle(27);
497 gvdrvsrun[2*mod4]->SetMarkerColor(4);
498 gvdrvsrun[2*mod4]->SetLineColor(4);
499 gvdrvsrun[2*mod1]->Draw("AP");
500 gvdrvsrun[2*mod1]->SetMinimum(6.3);
501 gvdrvsrun[2*mod1]->SetMaximum(6.75);
502
503 gvdrvsrun[2*mod1]->GetXaxis()->SetTitle("Run number");
504 gvdrvsrun[2*mod1]->GetYaxis()->SetTitle("Drift speed (#mum/ns)");
505 gvdrvsrun[2*mod2]->Draw("PSAME");
506 gvdrvsrun[2*mod3]->Draw("PSAME");
507 gvdrvsrun[2*mod4]->Draw("PSAME");
508 leg->Draw();
509
510
511 TH2F* hlay3=new TH2F("hlay3","Variation of the drift speed (%) Layer 3",6,-0.5,5.5,14,-0.5,13.5);
512 hlay3->GetXaxis()->SetTitle("Detector");
513 hlay3->GetYaxis()->SetTitle("Ladder");
514 hlay3->GetXaxis()->SetTickLength(0);
515 hlay3->GetYaxis()->SetTickLength(0);
516 hlay3->SetStats(0);
517
518 TH2F* hlay4=new TH2F("hlay4","Variation of the drift speed (%) Layer 4",8,-0.5,7.5,22,-0.5,21.5);
519 hlay4->GetXaxis()->SetTitle("Detector");
520 hlay4->GetYaxis()->SetTitle("Ladder");
521 hlay4->GetXaxis()->SetTickLength(0);
522 hlay4->GetYaxis()->SetTickLength(0);
523 hlay4->GetYaxis()->SetTitle("Ladder");
524 hlay4->SetStats(0);
525
526 Double_t run1,run2,vdr1,vdr2;
527 Int_t lay,lad,det;
528 for(Int_t iMod=0; iMod<260; iMod++){
529 Int_t lastPoint=gvdrvsrun[2*iMod]->GetN()-1;
530 gvdrvsrun[2*iMod]->GetPoint(lastPoint,run2,vdr2);
531 gvdrvsrun[2*iMod]->GetPoint(lastPoint-1,run1,vdr1);
532 Float_t diff=0.;
533 if(vdr1>0.) diff=100*(vdr2-vdr1)/vdr1;
534 AliITSgeomTGeo::GetModuleId(iMod+240,lay,lad,det);
535 if(lay==3) hlay3->SetBinContent(det,lad,diff);
536 if(lay==4) hlay4->SetBinContent(det,lad,diff);
537 }
538 TLine* lin=new TLine(0,0,0,23);
539 gStyle->SetPalette(1);
540
541 TCanvas *c0c=new TCanvas("c0c","Percent difference Last Run - Previous Run",900,600);
542 c0c->Divide(2,1);
543 c0c->cd(1);
544 hlay3->DrawCopy("colz");
545 for(Int_t i=0;i<6;i++){
546 lin->SetY1(-0.5);
547 lin->SetY2(13.5);
548 lin->SetX1(i+0.5);
549 lin->SetX2(i+0.5);
550 lin->DrawClone();
551 }
552 for(Int_t i=0;i<14;i++){
553 lin->SetX1(-0.5);
554 lin->SetX2(5.5);
555 lin->SetY1(i+0.5);
556 lin->SetY2(i+0.5);
557 lin->DrawClone();
558 }
559 c0c->cd(2);
560 hlay4->DrawCopy("colz");
561 for(Int_t i=0;i<8;i++){
562 lin->SetY1(-0.5);
563 lin->SetY2(21.5);
564 lin->SetX1(i+0.5);
565 lin->SetX2(i+0.5);
566 lin->DrawClone();
567 }
568 for(Int_t i=0;i<22;i++){
569 lin->SetX1(-0.5);
570 lin->SetX2(7.5);
571 lin->SetY1(i+0.5);
572 lin->SetY2(i+0.5);
573 lin->DrawClone();
574 }
575
576 TCanvas* c4=new TCanvas("c4","GoodMod vs. run");
577 c4->SetGridx();
578 c4->SetGridy();
579 gGoodInjVsRun->SetMarkerStyle(20);
580 gGoodInjVsRun->SetMinimum(0.);
581 gGoodInjVsRun->SetMaximum(370.);
582 gGoodInjVsRunL3->SetMarkerStyle(22);
583 gGoodInjVsRunL3->SetMarkerColor(2);
584 gGoodInjVsRunL3->SetLineColor(2);
585 gGoodInjVsRunL4->SetMarkerStyle(23);
586 gGoodInjVsRunL4->SetMarkerColor(4);
587 gGoodInjVsRunL4->SetLineColor(4);
588 gGoodInjVsRun->Draw("AP");
589 gGoodInjVsRunL3->Draw("PSAME");
590 gGoodInjVsRunL4->Draw("PSAME");
591 gGoodInjVsRun->GetXaxis()->SetTitle("Run number");
592 gGoodInjVsRun->GetYaxis()->SetTitle("Half-modules with drift speed from injectors");
593 TLegend* leg2=new TLegend(0.6,0.3,0.89,0.5);
594 leg2->SetBorderSize(0);
595 leg2->SetFillColor(0);
596 leg2->SetFillStyle(0);
597 TLegendEntry* lent2=leg2->AddEntry(gGoodInjVsRun,"All","P");
598 lent2->SetTextColor(1);
599 lent2=leg2->AddEntry(gGoodInjVsRunL3,"Layer 3 ","P");
600 lent2->SetTextColor(2);
601 lent2=leg2->AddEntry(gGoodInjVsRunL4,"Layer 4","P");
602 lent2->SetTextColor(4);
603 leg2->Draw();
604
605
606 TCanvas* c4bis=new TCanvas("c4bis"," Frac GoodMod vs. run");
607 c4bis->SetGridx();
608 c4bis->SetGridy();
609 gFracGoodInjVsRun->SetMarkerStyle(20);
610 gFracGoodInjVsRun->SetMinimum(0.);
611 gFracGoodInjVsRun->SetMaximum(0.9);
612 gFracGoodInjVsRunL3->SetMarkerStyle(22);
613 gFracGoodInjVsRunL3->SetMarkerColor(2);
614 gFracGoodInjVsRunL3->SetLineColor(2);
615 gFracGoodInjVsRunL4->SetMarkerStyle(23);
616 gFracGoodInjVsRunL4->SetMarkerColor(4);
617 gFracGoodInjVsRunL4->SetLineColor(4);
618 gFracGoodInjVsRun->Draw("AP");
619 gFracGoodInjVsRunL3->Draw("PSAME");
620 gFracGoodInjVsRunL4->Draw("PSAME");
621 gFracGoodInjVsRun->GetXaxis()->SetTitle("Run number");
622 gFracGoodInjVsRun->GetYaxis()->SetTitle("Fraction of Half-modules with drift speed from injectors");
623 gFracGoodInjVsRun->GetYaxis()->SetTitleSize(0.03);
624 gFracGoodInjVsRun->GetYaxis()->SetTitleOffset(1.5);
625 leg2->Draw();
626
627 TCanvas* c4ter=new TCanvas("c4ter","RescaledMod vs. run");
628 c4ter->SetGridx();
629 c4ter->SetGridy();
630 gRescaledSpeedVsRun->SetMarkerStyle(20);
631 gRescaledSpeedVsRun->SetMinimum(0.);
632 gRescaledSpeedVsRun->SetMaximum(120.);
633 gRescaledSpeedVsRunL3->SetMarkerStyle(22);
634 gRescaledSpeedVsRunL3->SetMarkerColor(2);
635 gRescaledSpeedVsRunL3->SetLineColor(2);
636 gRescaledSpeedVsRunL4->SetMarkerStyle(23);
637 gRescaledSpeedVsRunL4->SetMarkerColor(4);
638 gRescaledSpeedVsRunL4->SetLineColor(4);
639 gRescaledSpeedVsRun->Draw("AP");
640 gRescaledSpeedVsRunL3->Draw("PSAME");
641 gRescaledSpeedVsRunL4->Draw("PSAME");
642 gRescaledSpeedVsRun->GetXaxis()->SetTitle("Run number");
643 gRescaledSpeedVsRun->GetYaxis()->SetTitle("Half-modules with drift speed from golden module");
644 leg2->Draw();
645
646 TCanvas* c5=new TCanvas("c5","GoodMod vs. time");
647 c5->SetGridx();
648 c5->SetGridy();
649 gGoodInjVsTime->SetMarkerStyle(20);
650 gGoodInjVsTime->SetMinimum(0.);
651 gGoodInjVsTime->SetMaximum(370.);
652 gGoodInjVsTimeL3->SetMarkerStyle(22);
653 gGoodInjVsTimeL3->SetMarkerColor(2);
654 gGoodInjVsTimeL3->SetLineColor(2);
655 gGoodInjVsTimeL4->SetMarkerStyle(23);
656 gGoodInjVsTimeL4->SetMarkerColor(4);
657 gGoodInjVsTimeL4->SetLineColor(4);
658 gGoodInjVsTime->Draw("AP");
659 gGoodInjVsTimeL3->Draw("PSAME");
660 gGoodInjVsTimeL4->Draw("PSAME");
661 gGoodInjVsTime->GetXaxis()->SetTitle(title);
662 gGoodInjVsTime->GetYaxis()->SetTitle("Half-modules with drift speed from injectors");
663 leg2->Draw();
664
665 TCanvas* c5bis=new TCanvas("c5bis","Frac GoodMod vs. time");
666 c5bis->SetGridx();
667 c5bis->SetGridy();
668 gFracGoodInjVsTime->SetMarkerStyle(20);
669 gFracGoodInjVsTime->SetMinimum(0.);
670 gFracGoodInjVsTime->SetMaximum(0.9);
671 gFracGoodInjVsTimeL3->SetMarkerStyle(22);
672 gFracGoodInjVsTimeL3->SetMarkerColor(2);
673 gFracGoodInjVsTimeL3->SetLineColor(2);
674 gFracGoodInjVsTimeL4->SetMarkerStyle(23);
675 gFracGoodInjVsTimeL4->SetMarkerColor(4);
676 gFracGoodInjVsTimeL4->SetLineColor(4);
677 gFracGoodInjVsTime->Draw("AP");
678 gFracGoodInjVsTimeL3->Draw("PSAME");
679 gFracGoodInjVsTimeL4->Draw("PSAME");
680 gFracGoodInjVsTime->GetXaxis()->SetTitle(title);
681 gFracGoodInjVsTime->GetYaxis()->SetTitleSize(0.03);
682 gFracGoodInjVsTime->GetYaxis()->SetTitleOffset(1.5);
683 gFracGoodInjVsTime->GetYaxis()->SetTitle("Fraction of Half-modules with drift speed from injectors");
684 leg2->Draw();
685
686 TCanvas* c5ter=new TCanvas("c5ter","RescaledMod vs. time");
687 c5ter->SetGridx();
688 c5ter->SetGridy();
689 gRescaledSpeedVsTime->SetMarkerStyle(20);
690 gRescaledSpeedVsTime->SetMinimum(0.);
691 gRescaledSpeedVsTime->SetMaximum(120.);
692 gRescaledSpeedVsTimeL3->SetMarkerStyle(22);
693 gRescaledSpeedVsTimeL3->SetMarkerColor(2);
694 gRescaledSpeedVsTimeL3->SetLineColor(2);
695 gRescaledSpeedVsTimeL4->SetMarkerStyle(23);
696 gRescaledSpeedVsTimeL4->SetMarkerColor(4);
697 gRescaledSpeedVsTimeL4->SetLineColor(4);
698 gRescaledSpeedVsTime->Draw("AP");
699 gRescaledSpeedVsTimeL3->Draw("PSAME");
700 gRescaledSpeedVsTimeL4->Draw("PSAME");
701 gRescaledSpeedVsTime->GetXaxis()->SetTitle(title);
702 gRescaledSpeedVsTime->GetYaxis()->SetTitleSize(0.03);
703 gRescaledSpeedVsTime->GetYaxis()->SetTitleOffset(1.5);
704 gRescaledSpeedVsTime->GetYaxis()->SetTitle("Half-modules with drift speed from golden module");
705 leg2->Draw();
706}
707
708void FillErrors(Float_t errSpeed[260]){
709 Float_t err[260]={
710 0.002308,0.005120,0.004632,0.001000,0.001735,
711 0.001000,0.001000,0.002667,0.004237,0.005297,
712 0.001000,0.005460,0.005149,0.003921,0.001000,
713 0.003906,0.001000,0.004871,0.001000,0.001000,
714 0.001000,0.001000,0.002261,0.002986,0.002056,
715 0.002848,0.001000,0.001777,0.002822,0.004651,
716 0.001000,0.003551,0.006466,0.001000,0.002083,
717 0.004531,0.001000,0.002213,0.001000,0.001000,
718 0.001000,0.001000,0.001000,0.003223,0.002800,
719 0.002147,0.001000,0.003364,0.001000,0.001000,
720 0.002515,0.003229,0.002552,0.005765,0.002368,
721 0.003473,0.002363,0.001000,0.003413,0.001000,
722 0.004906,0.001000,0.004346,0.004887,0.007138,
723 0.007242,0.004289,0.003970,0.002914,0.002199,
724 0.001000,0.003483,0.002154,0.002914,0.003097,
725 0.006034,0.003101,0.001000,0.002425,0.002651,
726 0.002771,0.002409,0.002260,0.003109,0.001000,
727 0.003384,0.003374,0.002212,0.004441,0.001000,
728 0.001000,0.001000,0.003578,0.001000,0.001000,
729 0.003517,0.003590,0.001787,0.003329,0.001000,
730 0.002770,0.001000,0.004032,0.003059,0.001000,
731 0.001000,0.001000,0.001000,0.001000,0.001000,
732 0.001000,0.004556,0.001000,0.001000,0.001000,
733 0.001000,0.001000,0.001000,0.004819,0.002100,
734 0.002624,0.003784,0.003772,0.002483,0.002792,
735 0.001000,0.004713,0.003214,0.003180,0.002145,
736 0.002470,0.003078,0.001000,0.007131,0.002770,
737 0.002533,0.001000,0.004362,0.002819,0.001000,
738 0.003630,0.004215,0.002975,0.001000,0.003790,
739 0.002345,0.001000,0.003999,0.004555,0.003989,
740 0.001000,0.001000,0.001000,0.003136,0.002426,
741 0.005144,0.002844,0.002310,0.002467,0.002503,
742 0.003811,0.003440,0.004773,0.003114,0.001000,
743 0.000583,0.001000,0.001000,0.003385,0.001000,
744 0.001000,0.001000,0.001000,0.003108,0.002109,
745 0.005325,0.003750,0.002810,0.003559,0.001000,
746 0.001000,0.003262,0.003903,0.001000,0.003622,
747 0.002533,0.002121,0.003733,0.005353,0.002221,
748 0.004767,0.003267,0.004892,0.002152,0.003398,
749 0.001000,0.003146,0.001000,0.002952,0.003310,
750 0.002644,0.002573,0.001000,0.003989,0.001000,
751 0.005294,0.003095,0.003479,0.002250,0.001000,
752 0.001000,0.005221,0.001000,0.001653,0.004330,
753 0.013188,0.007375,0.003226,0.003875,0.001000,
754 0.003653,0.001000,0.002655,0.001000,0.001000,
755 0.001000,0.001000,0.004718,0.001000,0.001000,
756 0.001000,0.002780,0.003680,0.001000,0.002787,
757 0.001000,0.004617,0.001000,0.001000,0.003231,
758 0.001887,0.002090,0.003326,0.129970,0.004907,
759 0.004334,0.001000,0.001000,0.003489,0.002573,
760 0.002566,0.002982,0.001000,0.001000,0.003436,
761 0.004016,0.003736,0.001784,0.004775,0.008090};
762 for(Int_t i=0;i<260;i++) errSpeed[i]=err[i];
763
764
765}