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