]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/ShowDriftSpeedSDD.C
Added possibility to connect task containers to the file managed by the output handler.
[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 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){
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];
34   TCanvas *c0=NULL;
35   if(!kNoDraw)c0=new TCanvas("c0","Module Drift Speed",1100,500);
36
37   TGraph *vvsmod0=new TGraph(0);
38   TGraph *vvsmod1=new TGraph(0);
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);
44   Char_t tit[100];
45   for(Int_t i=firstmod; i<lastmod; i++){
46     Int_t iMod=i+240;
47     if(!kNoDraw){
48       c0->Clear();
49       c0->Divide(2,1);
50     }
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.);
64     sprintf(tit,"Mod %d\n",iMod);
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     }
76     printf(" Mod. %d \tStatusLR=%X %X \t v(an 128l)= %f",iMod,vdriftarr0->GetInjectorStatus(),vdriftarr1->GetInjectorStatus(),vdriftarr0->GetDriftSpeed(0,128));
77     printf("        \t v(an 128r)= %f\n",vdriftarr1->GetDriftSpeed(0,128));
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     }
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);
93     vvsmod0->SetPoint(vvsmod0->GetN(),(Float_t)iMod,vel0);
94     vvsmod1->SetPoint(vvsmod1->GetN(),(Float_t)iMod,vel1);
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");
107   TLatex* tleft=new TLatex(0.2,0.82,"Side 0");
108   tleft->SetNDC();
109   tleft->SetTextColor(1);
110   tleft->Draw();
111   TLatex* tright=new TLatex(0.2,0.75,"Side 1");
112   tright->SetNDC();
113   tright->SetTextColor(2);
114   tright->Draw();
115
116 }
117
118
119
120 void ShowDriftSpeedSDD(Int_t nrun, Int_t year=2009){
121   TGrid::Connect("alien:",0,0,"t");
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);
136   ShowDriftSpeedSDD(filnamalien,0,260,nrun);
137   fclose(runtxt);
138   gSystem->Exec("rm run.txt");
139   
140 }