1 #if !defined(__CINT__) || defined(__MAKECINT__)
11 #include <TObjArray.h>
12 #include "AliCDBEntry.h"
13 #include "AliITSDriftSpeedArraySDD.h"
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
22 // Origin: F. Prino (prino@to.infn.it)
24 Bool_t kNoDraw = kFALSE; // set to kTRUE to eliminate module dependent plots
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];
35 if(!kNoDraw)c0=new TCanvas("c0","Module Drift Speed",1100,500);
37 TGraph *vvsmod0=new TGraph(0);
38 TGraph *vvsmod1=new TGraph(0);
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);
45 for(Int_t i=firstmod; i<lastmod; i++){
53 vdriftarr0=(AliITSDriftSpeedArraySDD*)drspSDD->At(i0);
54 vdriftarr1=(AliITSDriftSpeedArraySDD*)drspSDD->At(i1);
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);
68 for(Int_t iAn=0; iAn<256; iAn++){
70 if(vdriftarr0) vel0=vdriftarr0->GetDriftSpeed(1,iAn);
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);
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));
81 gvdr0[i]->GetXaxis()->SetTitle("Anode");
82 gvdr0[i]->GetYaxis()->SetTitle("Vdrift (#mum/ns)");
85 gvdr1[i]->GetXaxis()->SetTitle("Anode");
86 gvdr1[i]->GetYaxis()->SetTitle("Vdrift (#mum/ns)");
90 if(vdriftarr0) vel0=vdriftarr0->GetDriftSpeed(0,128);
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);
99 c2=new TCanvas("c2","",1000,700);
100 vvsmod0->SetMarkerStyle(20);
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");
109 tleft->SetTextColor(1);
111 TLatex* tright=new TLatex(0.2,0.75,"Side 1");
113 tright->SetTextColor(2);
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());
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");
133 sprintf(filnamalien,"alien://%s",filnam);
135 printf("Open file: %s\n",filnamalien);
136 ShowDriftSpeedSDD(filnamalien,0,260,nrun);
138 gSystem->Exec("rm run.txt");