]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/ShowCalibrationSDD.C
warning fixed
[u/mrichter/AliRoot.git] / ITS / ShowCalibrationSDD.C
CommitLineData
40b3a8c7 1#if !defined(__CINT__) || defined(__MAKECINT__)
2#include <TFile.h>
3#include <TH1F.h>
4#include <TGraph.h>
5#include <TStyle.h>
6#include <TGrid.h>
7#include <TCanvas.h>
8#include <TObjArray.h>
9#include "AliCDBEntry.h"
10#include "AliITSCalibrationSDD.h"
11#endif
12
13// Macro to plot the calibration parameters from the OCDB file
14// created from PEDESTAL and PULSER runs (OCDB/ITS/Calib/CalibSDD)
15// Two methods ShowCalibrationSDD:
16// - the first takes the name of the file to be displayed
17// - the second builds the alien path+name from run number and file version
18//
19// Origin: F. Prino (prino@to.infn.it)
20
21void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/ITS/Calib/CalibSDD/Run0_9999999_v0_s0.root", Int_t iMod=0){
22
23
24 TFile *f=TFile::Open(filnam);
25 AliCDBEntry *ent=(AliCDBEntry*)f->Get("AliCDBEntry");
26 TObjArray *calSDD = (TObjArray *)ent->GetObject();
27 printf("Entries in array=%d\n",calSDD->GetEntriesFast());
28 TH1F* hmodstatus=new TH1F("hmodstatus","",260,0.5,260.5);
29 TH1F* hnbadch=new TH1F("hnbadch","",260,0.5,260.5);
30 TH1F* hbase=new TH1F("hbase","",60,0.5,120.5);
31 TH1F* hnoise=new TH1F("hnoise","",100,0.,7.);
32 TH1F* hgain=new TH1F("hgain","",100,0.,4.);
33 TH1F* hchstatus=new TH1F("hchstatus","",2,-0.5,1.5);
34 AliITSCalibrationSDD *cal;
35 for(Int_t i=0; i<260; i++){
36 cal=(AliITSCalibrationSDD*)calSDD->At(i);
37 if(cal==0) continue;
38 printf("Module %d (%d) status = ",i,i+240);
39 if(cal->IsBad()) printf("BAD\t");
40 else printf("OK\t");
41 printf(" Chip Status (0=OK, 1=BAD): ");
42 for(Int_t ic=0; ic<8;ic++) printf("%d ",cal->IsChipBad(ic));
43 if(cal->IsAMAt20MHz()) printf(" 20 MHz sampling");
44 else printf(" 40 MHz sampling");
45 printf("\n");
46 if(cal->IsBad()) hmodstatus->SetBinContent(i+1,0);
47 else hmodstatus->SetBinContent(i+1,1);
48 hnbadch->SetBinContent(i+1,cal->GetDeadChannels());
49 for(Int_t iAn=0; iAn<512; iAn++){
50 Float_t base=cal->GetBaseline(iAn);
51 Float_t noise=cal->GetNoiseAfterElectronics(iAn);
52 Float_t gain=cal->GetChannelGain(iAn);
53 if(cal->IsBadChannel(iAn)) hchstatus->Fill(0);
54 if(!cal->IsBadChannel(iAn)){
55 hbase->Fill(base);
56 hchstatus->Fill(1);
57 hnoise->Fill(noise);
58 hgain->Fill(gain);
59 }
60 }
61 }
62 TCanvas *c0=new TCanvas("c0","Module status",800,800);
63 c0->Divide(1,2);
64 c0->cd(1);
65 hmodstatus->Draw();
66 hmodstatus->GetXaxis()->SetTitle("Module number");
67 hmodstatus->GetYaxis()->SetTitle("Module status (1=OK, 0=BAD)");
68 c0->cd(2);
69 hnbadch->Draw();
70 hnbadch->GetXaxis()->SetTitle("Module number");
71 hnbadch->GetYaxis()->SetTitle("Number of bad anodes");
72
73 TCanvas *c1=new TCanvas("c1","Anode calibration",800,800);
74 c1->Divide(2,2);
75 c1->cd(1);
76 hbase->Draw();
77 hbase->GetXaxis()->SetTitle("Baseline after equalization");
78 hbase->GetXaxis()->CenterTitle();
79 c1->cd(2);
80 hnoise->Draw();
81 hnoise->GetXaxis()->SetTitle("Noise");
82 hnoise->GetXaxis()->CenterTitle();
83 c1->cd(3);
84 hgain->Draw();
85 hgain->GetXaxis()->SetTitle("Gain");
86 hgain->GetXaxis()->CenterTitle();
87 c1->cd(4);
88 hchstatus->Draw();
89 hchstatus->GetXaxis()->SetTitle("Anode status (0=bad, 1=OK)");
90 hchstatus->GetXaxis()->CenterTitle();
91
92 cal=(AliITSCalibrationSDD*)calSDD->At(iMod);
93 if(cal==0) return;
94 printf("-----------------------------------\n");
95 printf("Module %d status = ",iMod);
96 if(cal->IsBad()) printf("BAD\n");
97 else printf("OK\n");
98 printf(" Chip Status (0=OK, 1=BAD): ");
99 for(Int_t ic=0; ic<8;ic++) printf("%d ",cal->IsChipBad(ic));
100 printf("\n");
101 printf("-----------------------------------\n");
102 Int_t ipt=0;
103 TGraph *gbad=new TGraph(0);
104 gbad->SetTitle("Bad Channels");
105 TGraph *gbase=new TGraph(0);
106 gbase->SetTitle("Baselines");
107 TGraph *gnoi=new TGraph(0);
108 gnoi->SetTitle("Noise");
109 TGraph *ggain=new TGraph(0);
110 ggain->SetTitle("Gain");
111 for(Int_t iAn=0; iAn<512; iAn++){
112 Float_t bad=1;
113 if(cal->IsBadChannel(iAn)) bad=0;
114 Float_t base=cal->GetBaseline(iAn);
115 Float_t noise=cal->GetNoiseAfterElectronics(iAn);
116 Float_t gain=cal->GetChannelGain(iAn);
117 gbad->SetPoint(ipt,(Float_t)iAn,bad);
118 gbase->SetPoint(ipt,(Float_t)iAn,base);
119 ggain->SetPoint(ipt,(Float_t)iAn,gain);
120 gnoi->SetPoint(ipt,(Float_t)iAn,noise);
121 ipt++;
122 }
123 Char_t ctit[100];
124 sprintf(ctit,"Module %d",iMod);
125
126 TCanvas *c2=new TCanvas("c2",ctit,1200,800);
127 c2->Divide(2,2);
128
129 c2->cd(1);
130 gbase->SetMarkerStyle(7);
131 gbase->Draw("AP");
132 gbase->GetXaxis()->SetTitle("Anode Number");
133 gbase->GetYaxis()->SetTitle("Baseline after equalization");
134 c2->cd(2);
135 gnoi->SetMarkerStyle(7);
136 gnoi->Draw("AP");
137 gnoi->GetXaxis()->SetTitle("Anode Number");
138 gnoi->GetYaxis()->SetTitle("Noise");
139 c2->cd(3);
140 ggain->SetMarkerStyle(7);
141 ggain->Draw("AP");
142 ggain->GetXaxis()->SetTitle("Anode Number");
143 ggain->GetYaxis()->SetTitle("Gain");
144 c2->cd(4);
145 gbad->SetMarkerStyle(7);
146 gbad->Draw("AP");
147 gbad->SetMinimum(-0.1);
148 gbad->GetXaxis()->SetTitle("Anode Number");
149 gbad->GetYaxis()->SetTitle("Anode Status (1=OK, 0=bad)");
150}
151
04adc89c 152void ShowCalibrationSDD(Int_t nrun, Int_t nv, Char_t* dir="LHC08d", Int_t nmod=0){
40b3a8c7 153 TGrid::Connect("alien:",0,0,"t");
154 Char_t filnam[200];
04adc89c 155 sprintf(filnam,"alien:///alice/data/2008/%s/OCDB/ITS/Calib/CalibSDD/Run%d_999999999_v%d_s0.root",dir,nrun,nv);
40b3a8c7 156 printf("Open file: %s\n",filnam);
157 ShowCalibrationSDD(filnam,nmod);
158}