1 #if !defined(__CINT__) || defined(__MAKECINT__)
9 #include <TLegendEntry.h>
14 #include <TGraphErrors.h>
17 #include <TObjArray.h>
18 #include "AliCDBEntry.h"
19 #include "AliITSDriftSpeedArraySDD.h"
20 #include "AliITSgeomTGeo.h"
23 /* $Id: PlotDriftSpeedSDDVsTime.C 41510 2010-06-01 09:21:24Z prino $ */
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)
30 void FillErrors(Float_t errSpeed[260]);
32 void PlotDriftSpeedSDDVsTime(Int_t year=2011, Int_t firstRun=142600,
33 Int_t lastRun=999999999,
35 TGrid::Connect("alien:",0,0,"t");
36 Float_t errSpeed[260];
38 TString cmd=Form("gbbox find \"/alice/data/%d/OCDB/ITS/Calib/DriftSpeedSDD\" \"Run*.root\" > runSpeedAlien.txt",year);
39 gSystem->Exec(cmd.Data());
40 FILE* listruns=fopen("runSpeedAlien.txt","r");
41 Char_t filnam[200],filnamalien[200];
42 TGraphErrors** gvdrvstime=new TGraphErrors*[520];
43 TGraphErrors** gvdrvsrun=new TGraphErrors*[520];
44 TGraph* gGoodInjVsRun=new TGraph(0);
45 gGoodInjVsRun->SetName("gGoodInjVsRun");
46 TGraph* gAverSpeedVsRun=new TGraph(0);
47 gAverSpeedVsRun->SetName("gAverSpeedVsRun");
48 TGraph* gGoodInjVsTime=new TGraph(0);
49 gGoodInjVsTime->SetName("gGoodInjVsTime");
50 TGraph* gAverSpeedVsTime=new TGraph(0);
51 gAverSpeedVsTime->SetName("gAverSpeedVsIime");
53 TGraph* gGoodInjVsRunL3=new TGraph(0);
54 gGoodInjVsRunL3->SetName("gGoodInjVsRunL3");
55 TGraph* gAverSpeedVsRunL3=new TGraph(0);
56 gAverSpeedVsRunL3->SetName("gAverSpeedVsRunL3");
57 TGraph* gGoodInjVsTimeL3=new TGraph(0);
58 gGoodInjVsTimeL3->SetName("gGoodInjVsTimeL3");
59 TGraph* gAverSpeedVsTimeL3=new TGraph(0);
60 gAverSpeedVsTimeL3->SetName("gAverSpeedVsIimeL3");
62 TGraph* gGoodInjVsRunL4=new TGraph(0);
63 gGoodInjVsRunL4->SetName("gGoodInjVsRunL4");
64 TGraph* gAverSpeedVsRunL4=new TGraph(0);
65 gAverSpeedVsRunL4->SetName("gAverSpeedVsRunL4");
66 TGraph* gGoodInjVsTimeL4=new TGraph(0);
67 gGoodInjVsTimeL4->SetName("gGoodInjVsTimeL4");
68 TGraph* gAverSpeedVsTimeL4=new TGraph(0);
69 gAverSpeedVsTimeL4->SetName("gAverSpeedVsIimeL4");
71 TGraph* gFracGoodInjVsRun=new TGraph(0);
72 gFracGoodInjVsRun->SetName("gFracGoodInjVsRun");
73 TGraph* gFracAverSpeedVsRun=new TGraph(0);
74 gFracAverSpeedVsRun->SetName("gFracAverSpeedVsRun");
75 TGraph* gFracGoodInjVsTime=new TGraph(0);
76 gFracGoodInjVsTime->SetName("gFracGoodInjVsTime");
77 TGraph* gFracAverSpeedVsTime=new TGraph(0);
78 gFracAverSpeedVsTime->SetName("gAverSpeedVsIime");
80 TGraph* gFracGoodInjVsRunL3=new TGraph(0);
81 gFracGoodInjVsRunL3->SetName("gFracGoodInjVsRunL3");
82 TGraph* gFracAverSpeedVsRunL3=new TGraph(0);
83 gFracAverSpeedVsRunL3->SetName("gFracAverSpeedVsRunL3");
84 TGraph* gFracGoodInjVsTimeL3=new TGraph(0);
85 gFracGoodInjVsTimeL3->SetName("gFracGoodInjVsTimeL3");
86 TGraph* gFracAverSpeedVsTimeL3=new TGraph(0);
87 gFracAverSpeedVsTimeL3->SetName("gFracAverSpeedVsIimeL3");
89 TGraph* gFracGoodInjVsRunL4=new TGraph(0);
90 gFracGoodInjVsRunL4->SetName("gFracGoodInjVsRunL4");
91 TGraph* gFracAverSpeedVsRunL4=new TGraph(0);
92 gFracAverSpeedVsRunL4->SetName("gFracAverSpeedVsRunL4");
93 TGraph* gFracGoodInjVsTimeL4=new TGraph(0);
94 gFracGoodInjVsTimeL4->SetName("gFracGoodInjVsTimeL4");
95 TGraph* gFracAverSpeedVsTimeL4=new TGraph(0);
96 gFracAverSpeedVsTimeL4->SetName("gFracAverSpeedVsIimeL4");
98 for(Int_t iMod=0; iMod<260;iMod++){
99 gvdrvstime[iMod]=new TGraphErrors(0);
100 gvdrvstime[iMod]->SetTitle(Form("Module %d",iMod+240));
101 gvdrvstime[iMod]->SetName(Form("gspmod%dt",iMod+240));
102 gvdrvsrun[iMod]=new TGraphErrors(0);
103 gvdrvsrun[iMod]->SetTitle(Form("Module %d",iMod+240));
104 gvdrvsrun[iMod]->SetName(Form("gspmod%dr",iMod+240));
106 Float_t Edrift=(1800-45)/291/0.012;
107 Int_t nrun,nrun2,nv,ns;
109 if(year==2009) timeZero=1247762992;
110 else if(year==2010) timeZero=1262300400;
111 else timeZero=1293861600;
113 while(!feof(listruns)){
114 fscanf(listruns,"%s\n",filnam);
115 Char_t directory[100];
116 sprintf(directory,"/alice/data/%d",year);
117 if(!strstr(filnam,directory)) continue;
118 sscanf(filnam,"/alice/data/%d/OCDB/ITS/Calib/DriftSpeedSDD/Run%d_%d_v%d_s%d.root",&year,&nrun,&nrun2,&nv,&ns);
120 if(year==2009 && (nrun<85639 && nrun2> 85639)) continue;// protection for files with swapped ladders 4-5 of layer 3
121 if(year==2009 && (nrun>100000 && nv< 325)) continue; // protection for files with swapped ladder 0-1 of layer 4
123 if(nrun<firstRun) continue;
124 if(nrun>lastRun) continue;
125 sprintf(filnamalien,"alien://%s",filnam);
126 printf("Open file: %s\n",filnam);
127 TFile *f= TFile::Open(filnamalien);
129 AliCDBEntry *ent=(AliCDBEntry*)f->Get("AliCDBEntry");
130 TObjArray *drspSDD = (TObjArray *)ent->GetObject();
136 Int_t iAverSpeedL3=0;
139 Int_t iAverSpeedL4=0;
141 Int_t totalgoodinj=520;
142 Int_t totalgoodinjL3=168;
143 Int_t totalgoodinjL4=352;
145 Float_t fracGoodInj=0.;
146 Float_t fracGoodInjL3=0.;
147 Float_t fracGoodInjL4=0.;
149 Float_t fracAverSpeed=0.;
150 Float_t fracAverSpeedL3=0.;
151 Float_t fracAverSpeedL4=0.;
156 AliITSDriftSpeedArraySDD *vdriftarr;
157 AliITSDriftSpeedArraySDD *vdriftarr0;
158 AliITSDriftSpeedArraySDD *vdriftarr1;
160 for(Int_t iMod=0; iMod<260;iMod++){
162 if(anode<256) index=2*iMod;
164 vdriftarr=(AliITSDriftSpeedArraySDD*)drspSDD->At(index);
168 vdriftarr0=(AliITSDriftSpeedArraySDD*)drspSDD->At(i0);
169 vdriftarr1=(AliITSDriftSpeedArraySDD*)drspSDD->At(i1);
171 Int_t statusInj0=vdriftarr0->GetInjectorStatus();
172 Int_t statusInj1=vdriftarr1->GetInjectorStatus();
175 if(iMod<84)iGoodInjL3++;
180 if(iMod<84)iAverSpeedL3++;
185 if(iMod<84)iGoodInjL3++;
189 if(iMod<84)iAverSpeedL3++;
194 if(anode>256) iAn=anode-256;
195 Float_t vdrift=vdriftarr->GetDriftSpeed(0,iAn);
196 if(vdrift<4. || vdrift > 8.) continue;
197 if(statusInj0==0) continue;
198 Int_t npt=gvdrvsrun[iMod]->GetN();
199 gvdrvsrun[iMod]->SetPoint(npt,(Float_t)nrun,vdrift);
200 gvdrvsrun[iMod]->SetPointError(npt,0,errSpeed[iMod]);
202 UInt_t timest=vdriftarr->GetTimestamp(0);
203 if(timest==0) continue;
204 if(timest<timeZero) continue;
205 timeday=float(timest-timeZero)/60./60./24.;
206 Float_t mob=vdrift*1.E5/Edrift;
207 Float_t temper=293.15*TMath::Power((mob/1350.),-1/2.4);
208 if(iMod==497-240) printf("Run %s Time %d Day %f Speed=%f Temp=%f\n",filnam,timest,timeday,vdrift,temper);
209 npt=gvdrvstime[iMod]->GetN();
210 gvdrvstime[iMod]->SetPoint(npt,timeday,vdrift);
211 gvdrvstime[iMod]->SetPointError(npt,0,errSpeed[iMod]);
213 Int_t npt=gGoodInjVsRun->GetN();
214 fracGoodInj=(Float_t)iGoodInj/(Float_t)totalgoodinj;
215 fracGoodInjL3=(Float_t)iGoodInjL3/(Float_t)totalgoodinjL3;
216 fracGoodInjL4=(Float_t)iGoodInjL4/(Float_t)totalgoodinjL4;
218 fracAverSpeed = (Float_t)iAverSpeed/(Float_t)totalgoodinj;
219 fracAverSpeedL3 = (Float_t)iAverSpeedL3/(Float_t)totalgoodinjL3;
220 fracAverSpeedL4 = (Float_t)iAverSpeedL4/(Float_t)totalgoodinjL4;
222 gGoodInjVsRun->SetPoint(npt,(Float_t)nrun,iGoodInj);
223 gAverSpeedVsRun->SetPoint(npt,(Float_t)nrun,iAverSpeed);
225 gGoodInjVsRunL3->SetPoint(npt,(Float_t)nrun,iGoodInjL3);
226 gAverSpeedVsRunL3->SetPoint(npt,(Float_t)nrun,iAverSpeedL3);
228 gGoodInjVsRunL4->SetPoint(npt,(Float_t)nrun,iGoodInjL4);
229 gAverSpeedVsRunL4->SetPoint(npt,(Float_t)nrun,iAverSpeedL4);
232 gFracGoodInjVsRun->SetPoint(npt,(Float_t)nrun,(Double_t)fracGoodInj);
233 gFracAverSpeedVsRun->SetPoint(npt,(Float_t)nrun,(Double_t)fracAverSpeed);
235 gFracGoodInjVsRunL3->SetPoint(npt,(Float_t)nrun,(Double_t)fracGoodInjL3);
236 gFracAverSpeedVsRunL3->SetPoint(npt,(Float_t)nrun,(Double_t)fracAverSpeedL3);
238 gFracGoodInjVsRunL4->SetPoint(npt,(Float_t)nrun,(Double_t)fracGoodInjL4);
239 gFracAverSpeedVsRunL4->SetPoint(npt,(Float_t)nrun,(Double_t)fracAverSpeedL4);
241 npt=gGoodInjVsTime->GetN();
243 gGoodInjVsTime->SetPoint(npt,timeday,iGoodInj);
244 gAverSpeedVsTime->SetPoint(npt,timeday,iAverSpeed);
246 gGoodInjVsTimeL3->SetPoint(npt,timeday,iGoodInjL3);
247 gAverSpeedVsTimeL3->SetPoint(npt,timeday,iAverSpeedL3);
249 gGoodInjVsTimeL4->SetPoint(npt,timeday,iGoodInjL4);
250 gAverSpeedVsTimeL4->SetPoint(npt,timeday,iAverSpeedL4);
253 gFracGoodInjVsTime->SetPoint(npt,timeday,(Double_t)fracGoodInj);
254 gFracAverSpeedVsTime->SetPoint(npt,timeday,(Double_t)fracAverSpeed);
256 gFracGoodInjVsTimeL3->SetPoint(npt,timeday,(Double_t)fracGoodInjL3);
257 gFracAverSpeedVsTimeL3->SetPoint(npt,timeday,(Double_t)fracAverSpeedL3);
259 gFracGoodInjVsTimeL4->SetPoint(npt,timeday,(Double_t)fracGoodInjL4);
260 gFracAverSpeedVsTimeL4->SetPoint(npt,timeday,(Double_t)fracAverSpeedL4);
263 printf("Number of half-modules with drift speed from injectors = %d\n",iGoodInj);
264 printf("Number of half-modules with average drift speed = %d\n",iAverSpeed);
265 printf("Number of half-modules with drift speed from injectors L3 = %d\n",iGoodInjL3);
266 printf("Number of half-modules with drift speed from injectors L4 = %d\n",iGoodInjL4);
273 // Int_t mod2=259-240;
274 // Int_t mod2=274-240;
277 // Int_t mod4=497-240;
278 Int_t lay1,lad1,det1;
279 Int_t lay2,lad2,det2;
280 Int_t lay3,lad3,det3;
281 Int_t lay4,lad4,det4;
282 AliITSgeomTGeo::GetModuleId(mod1+240,lay1,lad1,det1);
283 AliITSgeomTGeo::GetModuleId(mod2+240,lay2,lad2,det2);
284 AliITSgeomTGeo::GetModuleId(mod3+240,lay3,lad3,det3);
285 AliITSgeomTGeo::GetModuleId(mod4+240,lay4,lad4,det4);
287 sprintf(filout,"DriftSpVsTime_%d.root",year);
288 TFile *ofil=new TFile(filout,"recreate");
289 for(Int_t iMod=0; iMod<260;iMod++){
290 gvdrvstime[iMod]->Write();
291 gvdrvsrun[iMod]->Write();
293 gGoodInjVsRun->Write();
294 gGoodInjVsTime->Write();
295 gAverSpeedVsRun->Write();
296 gAverSpeedVsTime->Write();
299 gStyle->SetOptTitle(0);
300 TCanvas* c0=new TCanvas("c0","Vdrift vs. time");
303 gvdrvstime[mod1]->SetMarkerStyle(20);
304 gvdrvstime[mod2]->SetMarkerStyle(22);
305 gvdrvstime[mod2]->SetMarkerColor(2);
306 gvdrvstime[mod2]->SetLineColor(2);
307 gvdrvstime[mod3]->SetMarkerStyle(29);
308 gvdrvstime[mod3]->SetMarkerColor(3);
309 gvdrvstime[mod3]->SetLineColor(3);
310 gvdrvstime[mod4]->SetMarkerStyle(27);
311 gvdrvstime[mod4]->SetMarkerColor(4);
312 gvdrvstime[mod4]->SetLineColor(4);
313 gvdrvstime[mod1]->Draw("AP");
314 gvdrvstime[mod1]->SetMinimum(6.3);
315 gvdrvstime[mod1]->SetMaximum(6.75);
318 sprintf(title,"Time (days since July 16th 2009)");
319 }else if (year==2010){
320 sprintf(title,"Time (days since January 1st 2010)");
322 sprintf(title,"Time (days since January 1st 2011)");
324 gvdrvstime[mod1]->GetXaxis()->SetTitle(title);
325 gvdrvstime[mod1]->GetYaxis()->SetTitle("Drift speed (#mum/ns)");
326 gvdrvstime[mod2]->Draw("PSAME");
327 gvdrvstime[mod3]->Draw("PSAME");
328 gvdrvstime[mod4]->Draw("PSAME");
329 TLegend* leg=new TLegend(0.6,0.7,0.89,0.89);
330 leg->SetBorderSize(0);
331 leg->SetFillColor(0);
332 leg->SetFillStyle(0);
333 TLegendEntry* lent=leg->AddEntry(gvdrvstime[mod1],Form("Lay %d Lad %d Det %d",lay1,lad1,det1),"P");
334 lent=leg->AddEntry(gvdrvstime[mod2],Form("Lay %d Lad %d Det %d",lay2,lad2,det2),"P");
335 lent->SetTextColor(2);
336 lent=leg->AddEntry(gvdrvstime[mod3],Form("Lay %d Lad %d Det %d",lay3,lad3,det3),"P");
337 lent->SetTextColor(3);
338 lent=leg->AddEntry(gvdrvstime[mod4],Form("Lay %d Lad %d Det %d",lay4,lad4,det4),"P");
339 lent->SetTextColor(4);
342 TCanvas* c1=new TCanvas("c1","Vdrift vs. run");
345 gvdrvsrun[mod1]->SetMarkerStyle(20);
346 gvdrvsrun[mod2]->SetMarkerStyle(22);
347 gvdrvsrun[mod2]->SetMarkerColor(2);
348 gvdrvsrun[mod2]->SetLineColor(2);
349 gvdrvsrun[mod3]->SetMarkerStyle(29);
350 gvdrvsrun[mod3]->SetMarkerColor(3);
351 gvdrvsrun[mod3]->SetLineColor(3);
352 gvdrvsrun[mod4]->SetMarkerStyle(27);
353 gvdrvsrun[mod4]->SetMarkerColor(4);
354 gvdrvsrun[mod4]->SetLineColor(4);
355 gvdrvsrun[mod1]->Draw("AP");
356 gvdrvsrun[mod1]->SetMinimum(6.3);
357 gvdrvsrun[mod1]->SetMaximum(6.75);
359 gvdrvsrun[mod1]->GetXaxis()->SetTitle("Run number");
360 gvdrvsrun[mod1]->GetYaxis()->SetTitle("Drift speed (#mum/ns)");
361 gvdrvsrun[mod2]->Draw("PSAME");
362 gvdrvsrun[mod3]->Draw("PSAME");
363 gvdrvsrun[mod4]->Draw("PSAME");
367 TH2F* hlay3=new TH2F("hlay3","Variation of the drift speed (%) Layer 3",6,-0.5,5.5,14,-0.5,13.5);
368 hlay3->GetXaxis()->SetTitle("Detector");
369 hlay3->GetYaxis()->SetTitle("Ladder");
370 hlay3->GetXaxis()->SetTickLength(0);
371 hlay3->GetYaxis()->SetTickLength(0);
374 TH2F* hlay4=new TH2F("hlay4","Variation of the drift speed (%) Layer 4",8,-0.5,7.5,22,-0.5,21.5);
375 hlay4->GetXaxis()->SetTitle("Detector");
376 hlay4->GetYaxis()->SetTitle("Ladder");
377 hlay4->GetXaxis()->SetTickLength(0);
378 hlay4->GetYaxis()->SetTickLength(0);
379 hlay4->GetYaxis()->SetTitle("Ladder");
382 Double_t run1,run2,vdr1,vdr2;
384 for(Int_t iMod=0; iMod<260; iMod++){
385 Int_t lastPoint=gvdrvsrun[iMod]->GetN()-1;
386 gvdrvsrun[iMod]->GetPoint(lastPoint,run2,vdr2);
387 gvdrvsrun[iMod]->GetPoint(lastPoint-1,run1,vdr1);
389 if(vdr1>0.) diff=100*(vdr2-vdr1)/vdr1;
390 AliITSgeomTGeo::GetModuleId(iMod+240,lay,lad,det);
391 if(lay==3) hlay3->SetBinContent(det,lad,diff);
392 if(lay==4) hlay4->SetBinContent(det,lad,diff);
394 TLine* lin=new TLine(0,0,0,23);
395 gStyle->SetPalette(1);
397 TCanvas *c0b=new TCanvas("c0b","Percent difference Last Run - Previous Run",900,600);
400 hlay3->DrawCopy("colz");
401 for(Int_t i=0;i<6;i++){
408 for(Int_t i=0;i<14;i++){
416 hlay4->DrawCopy("colz");
417 for(Int_t i=0;i<8;i++){
424 for(Int_t i=0;i<22;i++){
432 TCanvas* c4=new TCanvas("c4","GoodMod vs. run");
435 gGoodInjVsRun->SetMarkerStyle(20);
436 gGoodInjVsRun->SetMinimum(50.);
437 gGoodInjVsRun->SetMaximum(370.);
438 gGoodInjVsRunL3->SetMarkerStyle(22);
439 gGoodInjVsRunL3->SetMarkerColor(2);
440 gGoodInjVsRunL3->SetLineColor(2);
441 gGoodInjVsRunL4->SetMarkerStyle(23);
442 gGoodInjVsRunL4->SetMarkerColor(4);
443 gGoodInjVsRunL4->SetLineColor(4);
444 gGoodInjVsRun->Draw("AP");
445 gGoodInjVsRunL3->Draw("PSAME");
446 gGoodInjVsRunL4->Draw("PSAME");
447 gGoodInjVsRun->GetXaxis()->SetTitle("Run number");
448 gGoodInjVsRun->GetYaxis()->SetTitle("Half-modules with drift speed from injectors");
449 TLegend* leg2=new TLegend(0.6,0.3,0.89,0.5);
450 leg2->SetBorderSize(0);
451 leg2->SetFillColor(0);
452 leg2->SetFillStyle(0);
453 TLegendEntry* lent2=leg2->AddEntry(gGoodInjVsRun,"All","P");
454 lent2->SetTextColor(1);
455 lent2=leg2->AddEntry(gGoodInjVsRunL3,"Layer 3 ","P");
456 lent2->SetTextColor(2);
457 lent2=leg2->AddEntry(gGoodInjVsRunL4,"Layer 4","P");
458 lent2->SetTextColor(4);
462 TCanvas* c4bis=new TCanvas("c4bis"," Frac GoodMod vs. run");
465 gFracGoodInjVsRun->SetMarkerStyle(20);
466 gFracGoodInjVsRun->SetMinimum(0.);
467 gFracGoodInjVsRun->SetMaximum(0.9);
468 gFracGoodInjVsRunL3->SetMarkerStyle(22);
469 gFracGoodInjVsRunL3->SetMarkerColor(2);
470 gFracGoodInjVsRunL3->SetLineColor(2);
471 gFracGoodInjVsRunL4->SetMarkerStyle(23);
472 gFracGoodInjVsRunL4->SetMarkerColor(4);
473 gFracGoodInjVsRunL4->SetLineColor(4);
474 gFracGoodInjVsRun->Draw("AP");
475 gFracGoodInjVsRunL3->Draw("PSAME");
476 gFracGoodInjVsRunL4->Draw("PSAME");
477 gFracGoodInjVsRun->GetXaxis()->SetTitle("Run number");
478 gFracGoodInjVsRun->GetYaxis()->SetTitle("Fraction of Half-modules with drift speed from injectors");
479 gFracGoodInjVsRun->GetYaxis()->SetTitleSize(0.03);
480 gFracGoodInjVsRun->GetYaxis()->SetTitleOffset(1.5);
483 TCanvas* c5=new TCanvas("c5","GoodMod vs. time");
486 gGoodInjVsTime->SetMarkerStyle(20);
487 gGoodInjVsTime->SetMinimum(50.);
488 gGoodInjVsTime->SetMaximum(370.);
489 gGoodInjVsTimeL3->SetMarkerStyle(22);
490 gGoodInjVsTimeL3->SetMarkerColor(2);
491 gGoodInjVsTimeL3->SetLineColor(2);
492 gGoodInjVsTimeL4->SetMarkerStyle(23);
493 gGoodInjVsTimeL4->SetMarkerColor(4);
494 gGoodInjVsTimeL4->SetLineColor(4);
495 gGoodInjVsTime->Draw("AP");
496 gGoodInjVsTimeL3->Draw("PSAME");
497 gGoodInjVsTimeL4->Draw("PSAME");
498 gGoodInjVsTime->GetXaxis()->SetTitle(title);
499 gGoodInjVsTime->GetYaxis()->SetTitle("Half-modules with drift speed from injectors");
502 TCanvas* c5bis=new TCanvas("c5bis","Frac GoodMod vs. time");
505 gFracGoodInjVsTime->SetMarkerStyle(20);
506 gFracGoodInjVsTime->SetMinimum(0.);
507 gFracGoodInjVsTime->SetMaximum(0.9);
508 gFracGoodInjVsTimeL3->SetMarkerStyle(22);
509 gFracGoodInjVsTimeL3->SetMarkerColor(2);
510 gFracGoodInjVsTimeL3->SetLineColor(2);
511 gFracGoodInjVsTimeL4->SetMarkerStyle(23);
512 gFracGoodInjVsTimeL4->SetMarkerColor(4);
513 gFracGoodInjVsTimeL4->SetLineColor(4);
514 gFracGoodInjVsTime->Draw("AP");
515 gFracGoodInjVsTimeL3->Draw("PSAME");
516 gFracGoodInjVsTimeL4->Draw("PSAME");
517 gFracGoodInjVsTime->GetXaxis()->SetTitle(title);
518 gFracGoodInjVsTime->GetYaxis()->SetTitleSize(0.03);
519 gFracGoodInjVsTime->GetYaxis()->SetTitleOffset(1.5);
520 gFracGoodInjVsTime->GetYaxis()->SetTitle("Fraction of Half-modules with drift speed from injectors");
525 void FillErrors(Float_t errSpeed[260]){
527 0.002308,0.005120,0.004632,0.001000,0.001735,
528 0.001000,0.001000,0.002667,0.004237,0.005297,
529 0.001000,0.005460,0.005149,0.003921,0.001000,
530 0.003906,0.001000,0.004871,0.001000,0.001000,
531 0.001000,0.001000,0.002261,0.002986,0.002056,
532 0.002848,0.001000,0.001777,0.002822,0.004651,
533 0.001000,0.003551,0.006466,0.001000,0.002083,
534 0.004531,0.001000,0.002213,0.001000,0.001000,
535 0.001000,0.001000,0.001000,0.003223,0.002800,
536 0.002147,0.001000,0.003364,0.001000,0.001000,
537 0.002515,0.003229,0.002552,0.005765,0.002368,
538 0.003473,0.002363,0.001000,0.003413,0.001000,
539 0.004906,0.001000,0.004346,0.004887,0.007138,
540 0.007242,0.004289,0.003970,0.002914,0.002199,
541 0.001000,0.003483,0.002154,0.002914,0.003097,
542 0.006034,0.003101,0.001000,0.002425,0.002651,
543 0.002771,0.002409,0.002260,0.003109,0.001000,
544 0.003384,0.003374,0.002212,0.004441,0.001000,
545 0.001000,0.001000,0.003578,0.001000,0.001000,
546 0.003517,0.003590,0.001787,0.003329,0.001000,
547 0.002770,0.001000,0.004032,0.003059,0.001000,
548 0.001000,0.001000,0.001000,0.001000,0.001000,
549 0.001000,0.004556,0.001000,0.001000,0.001000,
550 0.001000,0.001000,0.001000,0.004819,0.002100,
551 0.002624,0.003784,0.003772,0.002483,0.002792,
552 0.001000,0.004713,0.003214,0.003180,0.002145,
553 0.002470,0.003078,0.001000,0.007131,0.002770,
554 0.002533,0.001000,0.004362,0.002819,0.001000,
555 0.003630,0.004215,0.002975,0.001000,0.003790,
556 0.002345,0.001000,0.003999,0.004555,0.003989,
557 0.001000,0.001000,0.001000,0.003136,0.002426,
558 0.005144,0.002844,0.002310,0.002467,0.002503,
559 0.003811,0.003440,0.004773,0.003114,0.001000,
560 0.000583,0.001000,0.001000,0.003385,0.001000,
561 0.001000,0.001000,0.001000,0.003108,0.002109,
562 0.005325,0.003750,0.002810,0.003559,0.001000,
563 0.001000,0.003262,0.003903,0.001000,0.003622,
564 0.002533,0.002121,0.003733,0.005353,0.002221,
565 0.004767,0.003267,0.004892,0.002152,0.003398,
566 0.001000,0.003146,0.001000,0.002952,0.003310,
567 0.002644,0.002573,0.001000,0.003989,0.001000,
568 0.005294,0.003095,0.003479,0.002250,0.001000,
569 0.001000,0.005221,0.001000,0.001653,0.004330,
570 0.013188,0.007375,0.003226,0.003875,0.001000,
571 0.003653,0.001000,0.002655,0.001000,0.001000,
572 0.001000,0.001000,0.004718,0.001000,0.001000,
573 0.001000,0.002780,0.003680,0.001000,0.002787,
574 0.001000,0.004617,0.001000,0.001000,0.003231,
575 0.001887,0.002090,0.003326,0.129970,0.004907,
576 0.004334,0.001000,0.001000,0.003489,0.002573,
577 0.002566,0.002982,0.001000,0.001000,0.003436,
578 0.004016,0.003736,0.001784,0.004775,0.008090};
579 for(Int_t i=0;i<260;i++) errSpeed[i]=err[i];