1 #if !defined(__CINT__) || defined(__MAKECINT__)
7 #include <TLegendEntry.h>
11 #include <TGraphErrors.h>
14 #include <TObjArray.h>
15 #include "AliCDBEntry.h"
16 #include "AliITSDriftSpeedArraySDD.h"
17 #include "AliITSgeomTGeo.h"
23 // Macro to plot the drift speed vs. time from the OCDB files
24 // created from INJECTOR runs (OCDB/ITS/Calib/DriftSpeedSDD)
25 // Origin: F. Prino (prino@to.infn.it)
27 void FillErrors(Float_t errSpeed[260]);
29 void PlotDriftSpeedSDDVsTime(Int_t firstRun=76172,
30 Int_t lastRun=999999999,
33 TGrid::Connect("alien:",0,0,"t");
35 Float_t errSpeed[260];
38 gSystem->Exec("gbbox find \"/alice/data/2009/OCDB/ITS/Calib/DriftSpeedSDD\" \"Run*.root\" > runSpeedAlien.txt");
39 FILE* listruns=fopen("runSpeedAlien.txt","r");
40 Char_t filnam[200],filnamalien[200];
41 TGraphErrors** gvdrvstime=new TGraphErrors*[520];
42 TGraphErrors** gvdrvsrun=new TGraphErrors*[520];
44 for(Int_t iMod=0; iMod<260;iMod++){
45 gvdrvstime[iMod]=new TGraphErrors(0);
46 gvdrvstime[iMod]->SetTitle(Form("Module %d",iMod+240));
47 gvdrvstime[iMod]->SetName(Form("gspmod%dt",iMod+240));
48 gvdrvsrun[iMod]=new TGraphErrors(0);
49 gvdrvsrun[iMod]->SetTitle(Form("Module %d",iMod+240));
50 gvdrvsrun[iMod]->SetName(Form("gspmod%dr",iMod+240));
53 Float_t Edrift=(1800-45)/291/0.012;
54 Int_t nrun,nrun2,nv,ns;
56 while(!feof(listruns)){
57 fscanf(listruns,"%s\n",filnam);
58 if(!strstr(filnam,"/alice/data/2009")) continue;
59 sscanf(filnam,"/alice/data/2009/OCDB/ITS/Calib/DriftSpeedSDD/Run%d_%d_v%d_s%d.root",&nrun,&nrun2,&nv,&ns);
60 if(nrun<85639 && nrun2> 85639) continue;// protection for files with swapped ladders 4-5 of layer 3
61 if(nrun>100000 && nv< 271) continue; // protection for files with swapped ladder 0-1 of layer 4
62 if(nrun<firstRun) continue;
63 if(nrun>lastRun) continue;
64 sprintf(filnamalien,"alien://%s",filnam);
65 printf("Open file: %s\n",filnam);
66 TFile *f= TFile::Open(filnamalien);
67 AliCDBEntry *ent=(AliCDBEntry*)f->Get("AliCDBEntry");
68 TObjArray *drspSDD = (TObjArray *)ent->GetObject();
70 AliITSDriftSpeedArraySDD *vdriftarr;
71 for(Int_t iMod=0; iMod<260;iMod++){
73 if(anode<256) index=2*iMod;
75 vdriftarr=(AliITSDriftSpeedArraySDD*)drspSDD->At(index);
77 if(anode>256) iAn=anode-256;
78 Float_t vdrift=vdriftarr->GetDriftSpeed(0,iAn);
79 UInt_t timest=vdriftarr->GetTimestamp(0);
80 if(timest==0) continue;
81 Float_t timeday=float(timest-1247762992)/60./60./24.;
82 Float_t mob=vdrift*1.E5/Edrift;
83 Float_t temper=293.15*TMath::Power((mob/1350.),-1/2.4);
84 if(iMod==497-240) printf("Run %s Time %d Day %f Speed=%f Temp=%f\n",filnam,timest,timeday,vdrift,temper);
85 gvdrvstime[iMod]->SetPoint(iPt[iMod],timeday,vdrift);
86 gvdrvstime[iMod]->SetPointError(iPt[iMod],0,errSpeed[iMod]);
87 gvdrvsrun[iMod]->SetPoint(iPt[iMod],(Float_t)nrun,vdrift);
88 gvdrvsrun[iMod]->SetPointError(iPt[iMod],0,errSpeed[iMod]);
100 // Int_t mod4=497-240;
101 Int_t lay1,lad1,det1;
102 Int_t lay2,lad2,det2;
103 Int_t lay3,lad3,det3;
104 Int_t lay4,lad4,det4;
105 AliITSgeomTGeo::GetModuleId(mod1+240,lay1,lad1,det1);
106 AliITSgeomTGeo::GetModuleId(mod2+240,lay2,lad2,det2);
107 AliITSgeomTGeo::GetModuleId(mod3+240,lay3,lad3,det3);
108 AliITSgeomTGeo::GetModuleId(mod4+240,lay4,lad4,det4);
110 TFile *ofil=new TFile("DriftSp2009VsTime.root","recreate");
111 for(Int_t iMod=0; iMod<260;iMod++){
112 gvdrvstime[iMod]->Write();
113 gvdrvsrun[iMod]->Write();
117 gStyle->SetOptTitle(0);
118 TCanvas* c0=new TCanvas();
121 gvdrvstime[mod1]->SetMarkerStyle(20);
122 gvdrvstime[mod2]->SetMarkerStyle(22);
123 gvdrvstime[mod2]->SetMarkerColor(2);
124 gvdrvstime[mod2]->SetLineColor(2);
125 gvdrvstime[mod3]->SetMarkerStyle(29);
126 gvdrvstime[mod3]->SetMarkerColor(3);
127 gvdrvstime[mod3]->SetLineColor(3);
128 gvdrvstime[mod4]->SetMarkerStyle(27);
129 gvdrvstime[mod4]->SetMarkerColor(4);
130 gvdrvstime[mod4]->SetLineColor(4);
131 gvdrvstime[mod1]->Draw("AP");
132 gvdrvstime[mod1]->SetMinimum(6.3);
133 gvdrvstime[mod1]->SetMaximum(6.75);
135 gvdrvstime[mod1]->GetXaxis()->SetTitle("Time (days since July 16th 2009)");
136 gvdrvstime[mod1]->GetYaxis()->SetTitle("Drift speed (#mum/ns)");
137 gvdrvstime[mod2]->Draw("PSAME");
138 gvdrvstime[mod3]->Draw("PSAME");
139 gvdrvstime[mod4]->Draw("PSAME");
140 TLegend* leg=new TLegend(0.6,0.7,0.89,0.89);
141 leg->SetBorderSize(0);
142 leg->SetFillColor(0);
143 leg->SetFillStyle(0);
144 TLegendEntry* lent=leg->AddEntry(gvdrvstime[mod1],Form("Lay %d Lad %d Det %d",lay1,lad1,det1),"P");
145 lent=leg->AddEntry(gvdrvstime[mod2],Form("Lay %d Lad %d Det %d",lay2,lad2,det2),"P");
146 lent->SetTextColor(2);
147 lent=leg->AddEntry(gvdrvstime[mod3],Form("Lay %d Lad %d Det %d",lay3,lad3,det3),"P");
148 lent->SetTextColor(3);
149 lent=leg->AddEntry(gvdrvstime[mod4],Form("Lay %d Lad %d Det %d",lay4,lad4,det4),"P");
150 lent->SetTextColor(4);
153 TCanvas* c1=new TCanvas();
156 gvdrvsrun[mod1]->SetMarkerStyle(20);
157 gvdrvsrun[mod2]->SetMarkerStyle(22);
158 gvdrvsrun[mod2]->SetMarkerColor(2);
159 gvdrvsrun[mod2]->SetLineColor(2);
160 gvdrvsrun[mod3]->SetMarkerStyle(29);
161 gvdrvsrun[mod3]->SetMarkerColor(3);
162 gvdrvsrun[mod3]->SetLineColor(3);
163 gvdrvsrun[mod4]->SetMarkerStyle(27);
164 gvdrvsrun[mod4]->SetMarkerColor(4);
165 gvdrvsrun[mod4]->SetLineColor(4);
166 gvdrvsrun[mod1]->Draw("AP");
167 gvdrvsrun[mod1]->SetMinimum(6.3);
168 gvdrvsrun[mod1]->SetMaximum(6.75);
170 gvdrvsrun[mod1]->GetXaxis()->SetTitle("Run number");
171 gvdrvsrun[mod1]->GetYaxis()->SetTitle("Drift speed (#mum/ns)");
172 gvdrvsrun[mod2]->Draw("PSAME");
173 gvdrvsrun[mod3]->Draw("PSAME");
174 gvdrvsrun[mod4]->Draw("PSAME");
178 void FillErrors(Float_t errSpeed[260]){
180 0.002308,0.005120,0.004632,0.001000,0.001735,
181 0.001000,0.001000,0.002667,0.004237,0.005297,
182 0.001000,0.005460,0.005149,0.003921,0.001000,
183 0.003906,0.001000,0.004871,0.001000,0.001000,
184 0.001000,0.001000,0.002261,0.002986,0.002056,
185 0.002848,0.001000,0.001777,0.002822,0.004651,
186 0.001000,0.003551,0.006466,0.001000,0.002083,
187 0.004531,0.001000,0.002213,0.001000,0.001000,
188 0.001000,0.001000,0.001000,0.003223,0.002800,
189 0.002147,0.001000,0.003364,0.001000,0.001000,
190 0.002515,0.003229,0.002552,0.005765,0.002368,
191 0.003473,0.002363,0.001000,0.003413,0.001000,
192 0.004906,0.001000,0.004346,0.004887,0.007138,
193 0.007242,0.004289,0.003970,0.002914,0.002199,
194 0.001000,0.003483,0.002154,0.002914,0.003097,
195 0.006034,0.003101,0.001000,0.002425,0.002651,
196 0.002771,0.002409,0.002260,0.003109,0.001000,
197 0.003384,0.003374,0.002212,0.004441,0.001000,
198 0.001000,0.001000,0.003578,0.001000,0.001000,
199 0.003517,0.003590,0.001787,0.003329,0.001000,
200 0.002770,0.001000,0.004032,0.003059,0.001000,
201 0.001000,0.001000,0.001000,0.001000,0.001000,
202 0.001000,0.004556,0.001000,0.001000,0.001000,
203 0.001000,0.001000,0.001000,0.004819,0.002100,
204 0.002624,0.003784,0.003772,0.002483,0.002792,
205 0.001000,0.004713,0.003214,0.003180,0.002145,
206 0.002470,0.003078,0.001000,0.007131,0.002770,
207 0.002533,0.001000,0.004362,0.002819,0.001000,
208 0.003630,0.004215,0.002975,0.001000,0.003790,
209 0.002345,0.001000,0.003999,0.004555,0.003989,
210 0.001000,0.001000,0.001000,0.003136,0.002426,
211 0.005144,0.002844,0.002310,0.002467,0.002503,
212 0.003811,0.003440,0.004773,0.003114,0.001000,
213 0.000583,0.001000,0.001000,0.003385,0.001000,
214 0.001000,0.001000,0.001000,0.003108,0.002109,
215 0.005325,0.003750,0.002810,0.003559,0.001000,
216 0.001000,0.003262,0.003903,0.001000,0.003622,
217 0.002533,0.002121,0.003733,0.005353,0.002221,
218 0.004767,0.003267,0.004892,0.002152,0.003398,
219 0.001000,0.003146,0.001000,0.002952,0.003310,
220 0.002644,0.002573,0.001000,0.003989,0.001000,
221 0.005294,0.003095,0.003479,0.002250,0.001000,
222 0.001000,0.005221,0.001000,0.001653,0.004330,
223 0.013188,0.007375,0.003226,0.003875,0.001000,
224 0.003653,0.001000,0.002655,0.001000,0.001000,
225 0.001000,0.001000,0.004718,0.001000,0.001000,
226 0.001000,0.002780,0.003680,0.001000,0.002787,
227 0.001000,0.004617,0.001000,0.001000,0.003231,
228 0.001887,0.002090,0.003326,0.129970,0.004907,
229 0.004334,0.001000,0.001000,0.003489,0.002573,
230 0.002566,0.002982,0.001000,0.001000,0.003436,
231 0.004016,0.003736,0.001784,0.004775,0.008090};
232 for(Int_t i=0;i<260;i++) errSpeed[i]=err[i];