]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/ShowDriftSpeedSDD.C
Bug fix concerning multiple found tracks (F. Prino)
[u/mrichter/AliRoot.git] / ITS / ShowDriftSpeedSDD.C
1 #if !defined(__CINT__) || defined(__MAKECINT__)
2 #include <TFile.h>
3 #include <TH1F.h>
4 #include <TGraph.h>
5 #include <TStyle.h>
6 #include <TSystem.h>
7 #include <TString.h>
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
24 void ShowDriftSpeedSDD(Char_t filnam[150]="$ALICE_ROOT/ITS/Calib/DriftSpeedSDD/Run0_9999999_v0_s0.root", Int_t firstmod=0, Int_t lastmod=260){
25   TFile *f= TFile::Open(filnam);
26   AliCDBEntry *ent=(AliCDBEntry*)f->Get("AliCDBEntry");
27   TObjArray *drspSDD = (TObjArray *)ent->GetObject();
28   AliITSDriftSpeedArraySDD *vdriftarr0;
29   AliITSDriftSpeedArraySDD *vdriftarr1;
30   TGraph **gvdr0=new TGraph*[260];
31   TGraph **gvdr1=new TGraph*[260];
32
33   TCanvas *c0=new TCanvas("c0","Module Drift Speed",1100,500);
34
35   TGraph *vvsmod0=new TGraph(0);
36   TGraph *vvsmod1=new TGraph(0);
37   vvsmod0->SetTitle("Drift Speed vs. mod. number");
38   vvsmod1->SetTitle("Drift Speed vs. mod. number");
39   Char_t tit[100];
40   for(Int_t i=firstmod; i<lastmod; i++){
41     Int_t iMod=i+240;
42     c0->Clear();
43     c0->Divide(2,1);
44     Int_t i0=2*i;
45     Int_t i1=1+2*i;
46     vdriftarr0=(AliITSDriftSpeedArraySDD*)drspSDD->At(i0);
47     vdriftarr1=(AliITSDriftSpeedArraySDD*)drspSDD->At(i1);
48     
49     gvdr0[i]=new TGraph(0);
50     gvdr1[i]=new TGraph(0);
51     gvdr0[i]->SetMarkerStyle(7);
52     gvdr1[i]->SetMarkerStyle(7);
53     gvdr0[i]->SetMinimum(5.);
54     gvdr1[i]->SetMinimum(5.);
55     gvdr0[i]->SetMaximum(9.);
56     gvdr1[i]->SetMaximum(9.);
57     sprintf(tit,"Mod %d\n",iMod);
58     gvdr0[i]->SetTitle(tit);
59     gvdr1[i]->SetTitle(tit);
60
61     for(Int_t iAn=0; iAn<256; iAn++){
62       Float_t vel0=0;
63       if(vdriftarr0) vel0=vdriftarr0->GetDriftSpeed(1,iAn);
64       Float_t vel1=0;
65       if(vdriftarr1) vel1=vdriftarr1->GetDriftSpeed(1,iAn);
66       gvdr0[i]->SetPoint(iAn,(Float_t)iAn,vel0);
67       gvdr1[i]->SetPoint(iAn,(Float_t)iAn,vel1);
68     }
69     printf(" Mod. %d \tStatusLR=%X %X \t v(an 128l)= %f",iMod,vdriftarr0->GetInjectorStatus(),vdriftarr1->GetInjectorStatus(),vdriftarr0->GetDriftSpeed(0,128));
70     printf("        \t v(an 128r)= %f\n",vdriftarr1->GetDriftSpeed(0,128));
71     c0->cd(1);
72     gvdr0[i]->Draw("AP");
73     gvdr0[i]->GetXaxis()->SetTitle("Anode");
74     gvdr0[i]->GetYaxis()->SetTitle("Vdrift (#mum/ns)");
75     c0->cd(2);
76     gvdr1[i]->Draw("AP");
77     gvdr1[i]->GetXaxis()->SetTitle("Anode");
78     gvdr1[i]->GetYaxis()->SetTitle("Vdrift (#mum/ns)");
79     c0->Update();
80      
81     Float_t vel0=0;
82     if(vdriftarr0) vel0=vdriftarr0->GetDriftSpeed(0,128);
83     Float_t vel1=0;
84     if(vdriftarr1) vel1=vdriftarr1->GetDriftSpeed(0,128);
85     vvsmod0->SetPoint(vvsmod0->GetN(),(Float_t)iMod,vel0);
86     vvsmod1->SetPoint(vvsmod1->GetN(),(Float_t)iMod,vel1);
87     
88     //    getchar();
89   }
90   TCanvas* c2;
91   c2=new TCanvas("c2","",1000,700);
92   vvsmod0->SetMarkerStyle(20);
93   vvsmod0->Draw("AP");
94   vvsmod0->GetXaxis()->SetTitle("Module Number");
95   vvsmod0->GetYaxis()->SetTitle("Vdrift (#mum/ns)");
96   vvsmod1->SetMarkerStyle(21);
97   vvsmod1->SetMarkerColor(2);
98   vvsmod1->Draw("SAMEP");
99   TLatex* tleft=new TLatex(0.7,0.82,"Side 0");
100   tleft->SetNDC();
101   tleft->SetTextColor(1);
102   tleft->Draw();
103   TLatex* tright=new TLatex(0.7,0.75,"Side 1");
104   tright->SetNDC();
105   tright->SetTextColor(2);
106   tright->Draw();
107
108 }
109
110
111
112 void ShowDriftSpeedSDD(Int_t nrun, Int_t year=2009){
113   TGrid::Connect("alien:",0,0,"t");
114   TString cmd=Form("gbbox find \"/alice/data/%d/OCDB/ITS/Calib/DriftSpeedSDD\" \"Run%d*.root\" > run.txt",year,nrun);
115   gSystem->Exec(cmd.Data());
116   
117   Char_t filnam[200],filnamalien[200];
118   FILE* runtxt=fopen("run.txt","r");
119   fscanf(runtxt,"%s\n",filnam);    
120   if(!strstr(filnam,"/alice/data/")){
121     printf("Bad run number\n");
122     gSystem->Exec("rm run.txt");
123     return;
124   }  
125   sprintf(filnamalien,"alien://%s",filnam);
126   
127   printf("Open file: %s\n",filnamalien);
128   ShowDriftSpeedSDD(filnamalien,0,260);
129   fclose(runtxt);
130   gSystem->Exec("rm run.txt");
131   
132 }