]>
Commit | Line | Data |
---|---|---|
40b3a8c7 | 1 | #if !defined(__CINT__) || defined(__MAKECINT__) |
2 | #include <TFile.h> | |
3 | #include <TH1F.h> | |
4 | #include <TGraph.h> | |
5 | #include <TStyle.h> | |
551eb942 | 6 | #include <TSystem.h> |
7 | #include <TString.h> | |
40b3a8c7 | 8 | #include <TGrid.h> |
9 | #include <TCanvas.h> | |
10 | #include <TLatex.h> | |
11 | #include <TObjArray.h> | |
12 | #include "AliCDBEntry.h" | |
13 | #include "AliITSDriftSpeedArraySDD.h" | |
14 | #endif | |
15 | ||
16 | // Macro to plot the calibration parameters from the OCDB file | |
17 | // created from an INJECTOR run (OCDB/ITS/Calib/DriftSpeedSDD) | |
18 | // Two methods ShowDriftSpeedSDD: | |
19 | // - the first takes the name of the file to be displayed | |
20 | // - the second builds the alien path+name from run number and file version | |
21 | // | |
22 | // Origin: F. Prino (prino@to.infn.it) | |
23 | ||
b70dd7af | 24 | Bool_t kNoDraw = kFALSE; // set to kTRUE to eliminate module dependent plots |
25 | ||
26 | void ShowDriftSpeedSDD(Char_t filnam[150]="$ALICE_ROOT/ITS/Calib/DriftSpeedSDD/Run0_9999999_v0_s0.root", Int_t firstmod=0, Int_t lastmod=260,Int_t nrun=0){ | |
40b3a8c7 | 27 | TFile *f= TFile::Open(filnam); |
28 | AliCDBEntry *ent=(AliCDBEntry*)f->Get("AliCDBEntry"); | |
29 | TObjArray *drspSDD = (TObjArray *)ent->GetObject(); | |
30 | AliITSDriftSpeedArraySDD *vdriftarr0; | |
31 | AliITSDriftSpeedArraySDD *vdriftarr1; | |
32 | TGraph **gvdr0=new TGraph*[260]; | |
33 | TGraph **gvdr1=new TGraph*[260]; | |
b70dd7af | 34 | TCanvas *c0=NULL; |
35 | if(!kNoDraw)c0=new TCanvas("c0","Module Drift Speed",1100,500); | |
40b3a8c7 | 36 | |
37 | TGraph *vvsmod0=new TGraph(0); | |
38 | TGraph *vvsmod1=new TGraph(0); | |
b70dd7af | 39 | char tit0[100]; |
40 | sprintf(tit0,"Drift Speed vs. mod. number"); | |
41 | if(nrun!=0)sprintf(tit0,"Drift Speed vs. mod. number - Run %d",nrun); | |
42 | vvsmod0->SetTitle(tit0); | |
43 | vvsmod1->SetTitle(tit0); | |
40b3a8c7 | 44 | Char_t tit[100]; |
45 | for(Int_t i=firstmod; i<lastmod; i++){ | |
266a4b47 | 46 | Int_t iMod=i+240; |
b70dd7af | 47 | if(!kNoDraw){ |
48 | c0->Clear(); | |
49 | c0->Divide(2,1); | |
50 | } | |
40b3a8c7 | 51 | Int_t i0=2*i; |
52 | Int_t i1=1+2*i; | |
53 | vdriftarr0=(AliITSDriftSpeedArraySDD*)drspSDD->At(i0); | |
54 | vdriftarr1=(AliITSDriftSpeedArraySDD*)drspSDD->At(i1); | |
55 | ||
56 | gvdr0[i]=new TGraph(0); | |
57 | gvdr1[i]=new TGraph(0); | |
58 | gvdr0[i]->SetMarkerStyle(7); | |
59 | gvdr1[i]->SetMarkerStyle(7); | |
60 | gvdr0[i]->SetMinimum(5.); | |
61 | gvdr1[i]->SetMinimum(5.); | |
62 | gvdr0[i]->SetMaximum(9.); | |
63 | gvdr1[i]->SetMaximum(9.); | |
266a4b47 | 64 | sprintf(tit,"Mod %d\n",iMod); |
40b3a8c7 | 65 | gvdr0[i]->SetTitle(tit); |
66 | gvdr1[i]->SetTitle(tit); | |
67 | ||
68 | for(Int_t iAn=0; iAn<256; iAn++){ | |
69 | Float_t vel0=0; | |
70 | if(vdriftarr0) vel0=vdriftarr0->GetDriftSpeed(1,iAn); | |
71 | Float_t vel1=0; | |
72 | if(vdriftarr1) vel1=vdriftarr1->GetDriftSpeed(1,iAn); | |
73 | gvdr0[i]->SetPoint(iAn,(Float_t)iAn,vel0); | |
74 | gvdr1[i]->SetPoint(iAn,(Float_t)iAn,vel1); | |
75 | } | |
50d25e98 | 76 | printf(" Mod. %d \tStatusLR=%X %X \t v(an 128l)= %f",iMod,vdriftarr0->GetInjectorStatus(),vdriftarr1->GetInjectorStatus(),vdriftarr0->GetDriftSpeed(0,128)); |
40b3a8c7 | 77 | printf(" \t v(an 128r)= %f\n",vdriftarr1->GetDriftSpeed(0,128)); |
b70dd7af | 78 | if(!kNoDraw){ |
79 | c0->cd(1); | |
80 | gvdr0[i]->Draw("AP"); | |
81 | gvdr0[i]->GetXaxis()->SetTitle("Anode"); | |
82 | gvdr0[i]->GetYaxis()->SetTitle("Vdrift (#mum/ns)"); | |
83 | c0->cd(2); | |
84 | gvdr1[i]->Draw("AP"); | |
85 | gvdr1[i]->GetXaxis()->SetTitle("Anode"); | |
86 | gvdr1[i]->GetYaxis()->SetTitle("Vdrift (#mum/ns)"); | |
87 | c0->Update(); | |
88 | } | |
40b3a8c7 | 89 | Float_t vel0=0; |
90 | if(vdriftarr0) vel0=vdriftarr0->GetDriftSpeed(0,128); | |
91 | Float_t vel1=0; | |
92 | if(vdriftarr1) vel1=vdriftarr1->GetDriftSpeed(0,128); | |
266a4b47 | 93 | vvsmod0->SetPoint(vvsmod0->GetN(),(Float_t)iMod,vel0); |
94 | vvsmod1->SetPoint(vvsmod1->GetN(),(Float_t)iMod,vel1); | |
40b3a8c7 | 95 | |
96 | // getchar(); | |
97 | } | |
98 | TCanvas* c2; | |
99 | c2=new TCanvas("c2","",1000,700); | |
100 | vvsmod0->SetMarkerStyle(20); | |
101 | vvsmod0->Draw("AP"); | |
102 | vvsmod0->GetXaxis()->SetTitle("Module Number"); | |
103 | vvsmod0->GetYaxis()->SetTitle("Vdrift (#mum/ns)"); | |
104 | vvsmod1->SetMarkerStyle(21); | |
105 | vvsmod1->SetMarkerColor(2); | |
106 | vvsmod1->Draw("SAMEP"); | |
b70dd7af | 107 | TLatex* tleft=new TLatex(0.2,0.82,"Side 0"); |
40b3a8c7 | 108 | tleft->SetNDC(); |
109 | tleft->SetTextColor(1); | |
110 | tleft->Draw(); | |
b70dd7af | 111 | TLatex* tright=new TLatex(0.2,0.75,"Side 1"); |
40b3a8c7 | 112 | tright->SetNDC(); |
113 | tright->SetTextColor(2); | |
114 | tright->Draw(); | |
115 | ||
116 | } | |
117 | ||
118 | ||
119 | ||
551eb942 | 120 | void ShowDriftSpeedSDD(Int_t nrun, Int_t year=2009){ |
40b3a8c7 | 121 | TGrid::Connect("alien:",0,0,"t"); |
551eb942 | 122 | TString cmd=Form("gbbox find \"/alice/data/%d/OCDB/ITS/Calib/DriftSpeedSDD\" \"Run%d*.root\" > run.txt",year,nrun); |
123 | gSystem->Exec(cmd.Data()); | |
124 | ||
125 | Char_t filnam[200],filnamalien[200]; | |
126 | FILE* runtxt=fopen("run.txt","r"); | |
127 | fscanf(runtxt,"%s\n",filnam); | |
128 | if(!strstr(filnam,"/alice/data/")){ | |
129 | printf("Bad run number\n"); | |
130 | gSystem->Exec("rm run.txt"); | |
131 | return; | |
132 | } | |
133 | sprintf(filnamalien,"alien://%s",filnam); | |
134 | ||
135 | printf("Open file: %s\n",filnamalien); | |
b70dd7af | 136 | ShowDriftSpeedSDD(filnamalien,0,260,nrun); |
551eb942 | 137 | fclose(runtxt); |
138 | gSystem->Exec("rm run.txt"); | |
139 | ||
40b3a8c7 | 140 | } |