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