]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/PlotDriftSpeedSDDVsTime.C
Fixes for bug #62149 AliITSTrackleterSPDEff returns an error in case of 'empty' events
[u/mrichter/AliRoot.git] / ITS / PlotDriftSpeedSDDVsTime.C
CommitLineData
8d024204 1#if !defined(__CINT__) || defined(__MAKECINT__)
2#include <TFile.h>
3#include <TH1F.h>
4#include <TGraph.h>
5#include <TStyle.h>
6#include <TLegend.h>
7#include <TLegendEntry.h>
8#include <TSystem.h>
9#include <TGrid.h>
10#include <TMath.h>
11#include <TGraphErrors.h>
12#include <TCanvas.h>
13#include <TLatex.h>
14#include <TObjArray.h>
15#include "AliCDBEntry.h"
16#include "AliITSDriftSpeedArraySDD.h"
17#include "AliITSgeomTGeo.h"
18#endif
19
20/* $Id$ */
21
22
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)
26
27void FillErrors(Float_t errSpeed[260]);
28
29void PlotDriftSpeedSDDVsTime(Int_t firstRun=76172,
30 Int_t lastRun=999999999,
31 Int_t anode=128){
32
33 TGrid::Connect("alien:",0,0,"t");
34
35 Float_t errSpeed[260];
36 FillErrors(errSpeed);
37
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];
43 Int_t iPt[260];
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));
51 iPt[iMod]=0;
52 }
53 Float_t Edrift=(1800-45)/291/0.012;
9c3758ab 54 Int_t nrun,nrun2,nv,ns;
8d024204 55
56 while(!feof(listruns)){
57 fscanf(listruns,"%s\n",filnam);
58 if(!strstr(filnam,"/alice/data/2009")) continue;
9c3758ab 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
8d024204 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();
69
70 AliITSDriftSpeedArraySDD *vdriftarr;
71 for(Int_t iMod=0; iMod<260;iMod++){
72 Int_t index=-1;
73 if(anode<256) index=2*iMod;
74 else index=2*iMod+1;
75 vdriftarr=(AliITSDriftSpeedArraySDD*)drspSDD->At(index);
76 Int_t iAn=anode;
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]);
89 ++iPt[iMod];
90 }
91 f->Close();
92 }
93
94 Int_t mod1=244-240;
95 Int_t mod2=277-240;
96 //Int_t mod1=268-240;
97 //Int_t mod2=274-240;
98 Int_t mod3=327-240;
99 Int_t mod4=453-240;
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);
109
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();
114 }
115 ofil->Close();
116
117 gStyle->SetOptTitle(0);
118 TCanvas* c0=new TCanvas();
119 c0->SetGridx();
120 c0->SetGridy();
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);
134
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);
151 leg->Draw();
152
153 TCanvas* c1=new TCanvas();
154 c1->SetGridx();
155 c1->SetGridy();
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);
169
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");
175 leg->Draw();
176}
177
178void FillErrors(Float_t errSpeed[260]){
179 Float_t err[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];
233
234
235}