]>
Commit | Line | Data |
---|---|---|
8d024204 | 1 | #if !defined(__CINT__) || defined(__MAKECINT__) |
2 | #include <TFile.h> | |
3 | #include <TH1F.h> | |
4 | #include <TGraph.h> | |
5 | #include <TGraphErrors.h> | |
6 | #include <TStyle.h> | |
7 | #include <TGrid.h> | |
8 | #include <TCanvas.h> | |
9 | #include <TSystem.h> | |
10 | #include <TLatex.h> | |
11 | #include <TObjArray.h> | |
12 | #include "AliCDBEntry.h" | |
13 | #include "AliITSCalibrationSDD.h" | |
14 | #endif | |
15 | ||
16 | /* $Id$ */ | |
17 | ||
18 | // Macro to plot the calibration parameters from the OCDB files | |
19 | // created from PEDESTAL and PULSER runs vs. Time | |
20 | // Origin: F. Prino (prino@to.infn.it) | |
21 | ||
eefdc0ab | 22 | void PlotCalibSDDVsTime(Int_t year=2010, Int_t firstRun=77677, |
23 | Int_t lastRun=999999999){ | |
8d024204 | 24 | |
25 | gStyle->SetOptTitle(0); | |
26 | gStyle->SetOptStat(0); | |
27 | gStyle->SetPadLeftMargin(0.14); | |
28 | gStyle->SetTitleOffset(1.4,"Y"); | |
29 | ||
30 | ||
31 | TGrid::Connect("alien:",0,0,"t"); | |
eefdc0ab | 32 | gSystem->Exec(Form("gbbox find \"/alice/data/%d/OCDB/ITS/Calib/CalibSDD\" \"Run*.root\" > runCalibAlien.txt",year)); |
8d024204 | 33 | FILE* listruns=fopen("runCalibAlien.txt","r"); |
34 | ||
35 | TH1F* hbase=new TH1F("hbase","",60,0.5,120.5); | |
36 | TH1F* hnoise=new TH1F("hnoise","",100,0.,7.); | |
37 | TH1F* hgain=new TH1F("hgain","",100,0.,4.); | |
38 | TH1F* hchstatus=new TH1F("hchstatus","",2,-0.5,1.5); | |
39 | TGraphErrors* gbasevstim=new TGraphErrors(0); | |
40 | TGraphErrors* gnoisevstim=new TGraphErrors(0); | |
41 | TGraphErrors* ggainvstim=new TGraphErrors(0); | |
42 | TGraphErrors* gstatvstim=new TGraphErrors(0); | |
43 | gbasevstim->SetName("gbasevstim"); | |
44 | gnoisevstim->SetName("gnoisevstim"); | |
45 | ggainvstim->SetName("ggainvstim"); | |
46 | gstatvstim->SetName("gstatvstim"); | |
47 | gbasevstim->SetTitle("Baseline vs. run"); | |
48 | gnoisevstim->SetTitle("Noise vs. run"); | |
49 | ggainvstim->SetTitle("Gain vs. run"); | |
50 | gstatvstim->SetTitle("Good Anodes vs. run"); | |
51 | ||
52 | ||
53 | Char_t filnam[200],filnamalien[200]; | |
54 | Int_t iPoint=0; | |
9c3758ab | 55 | Int_t nrun,nrun2,nv,ns; |
8d024204 | 56 | |
57 | while(!feof(listruns)){ | |
58 | hbase->Reset(); | |
59 | hnoise->Reset(); | |
60 | hgain->Reset(); | |
61 | hchstatus->Reset(); | |
62 | fscanf(listruns,"%s\n",filnam); | |
eefdc0ab | 63 | Char_t directory[100]; |
64 | sprintf(directory,"/alice/data/%d",year); | |
65 | if(!strstr(filnam,directory)) continue; | |
66 | sscanf(filnam,"/alice/data/%d/OCDB/ITS/Calib/CalibSDD/Run%d_%d_v%d_s%d.root",&year,&nrun,&nrun2,&nv,&ns); | |
67 | if(year==2009 && (nrun<85639 && nrun2> 85639)) continue; // protection for files with swapped ladders 4-5 of layer 3 | |
68 | if(year==2009 && (nrun>100000 && nv< 184)) continue; // protection for files with swapped ladder 0-1 of layer 4 | |
8d024204 | 69 | if(nrun<firstRun) continue; |
70 | if(nrun>lastRun) continue; | |
71 | sprintf(filnamalien,"alien://%s",filnam); | |
72 | printf("Open file: %s\n",filnam); | |
73 | TFile *f= TFile::Open(filnamalien); | |
74 | AliCDBEntry *ent=(AliCDBEntry*)f->Get("AliCDBEntry"); | |
75 | TObjArray *calSDD = (TObjArray *)ent->GetObject(); | |
eefdc0ab | 76 | printf("Run %d Entries in array=%d \n",nrun,calSDD->GetEntriesFast()); |
8d024204 | 77 | |
78 | ||
79 | AliITSCalibrationSDD *cal; | |
80 | for(Int_t iMod=0; iMod<260;iMod++){ | |
81 | cal=(AliITSCalibrationSDD*)calSDD->At(iMod); | |
82 | if(cal==0) continue; | |
83 | for(Int_t iAn=0; iAn<512; iAn++){ | |
84 | Int_t ic=cal->GetChip(iAn); | |
85 | Float_t base=cal->GetBaseline(iAn); | |
86 | Float_t noise=cal->GetNoiseAfterElectronics(iAn); | |
87 | Float_t gain=cal->GetChannelGain(iAn); | |
88 | if(cal->IsBadChannel(iAn)) hchstatus->Fill(0); | |
89 | if(!cal->IsBadChannel(iAn) && !cal->IsChipBad(ic) && !cal->IsBad() ){ | |
90 | hbase->Fill(base); | |
91 | hchstatus->Fill(1); | |
92 | hnoise->Fill(noise); | |
93 | hgain->Fill(gain); | |
94 | } | |
95 | } | |
96 | } | |
eefdc0ab | 97 | printf("Run %d <Base> = %f <Noise> =%f Entries = %d\n",nrun,hbase->GetMean(),hnoise->GetMean(),(Int_t)hbase->GetEntries()); |
8d024204 | 98 | if((Int_t)hbase->GetEntries()==0) continue; |
99 | gbasevstim->SetPoint(iPoint,(Double_t)nrun,hbase->GetMean()); | |
100 | gbasevstim->SetPointError(iPoint,0.,hbase->GetRMS()); | |
101 | gnoisevstim->SetPoint(iPoint,(Double_t)nrun,hnoise->GetMean()); | |
102 | gnoisevstim->SetPointError(iPoint,0.,hnoise->GetRMS()); | |
103 | ggainvstim->SetPoint(iPoint,(Double_t)nrun,hgain->GetMean()); | |
104 | ggainvstim->SetPointError(iPoint,0.,hgain->GetRMS()); | |
105 | gstatvstim->SetPoint(iPoint,(Double_t)nrun,hchstatus->GetBinContent(2)); | |
106 | iPoint++; | |
107 | f->Close(); | |
108 | } | |
109 | ||
eefdc0ab | 110 | TFile *ofil=new TFile(Form("Calib%dVsTime.root",year),"recreate"); |
8d024204 | 111 | gbasevstim->Write(); |
112 | gnoisevstim->Write(); | |
113 | ggainvstim->Write(); | |
114 | gstatvstim->Write(); | |
115 | ofil->Close(); | |
116 | ||
117 | TCanvas* cbase=new TCanvas("cbase","Baselines"); | |
118 | gbasevstim->SetFillColor(kOrange-2); | |
119 | gbasevstim->SetMarkerStyle(20); | |
120 | gbasevstim->Draw("AP3"); | |
121 | gbasevstim->Draw("PLXSAME"); | |
122 | gbasevstim->SetMinimum(0.); | |
123 | gbasevstim->SetMaximum(70.); | |
124 | gbasevstim->GetXaxis()->SetTitle("Run number"); | |
125 | gbasevstim->GetYaxis()->SetTitle("<Baseline> (ADC counts)"); | |
126 | cbase->SaveAs("BaseRun09.gif"); | |
127 | ||
128 | TCanvas* cnoise=new TCanvas("cnoise","Noise"); | |
129 | gnoisevstim->SetFillColor(kOrange-2); | |
130 | gnoisevstim->SetMarkerStyle(20); | |
131 | gnoisevstim->Draw("AP3"); | |
132 | gnoisevstim->Draw("PLXSAME"); | |
133 | gnoisevstim->SetMinimum(0.); | |
134 | gnoisevstim->SetMaximum(4.); | |
135 | gnoisevstim->GetXaxis()->SetTitle("Run number"); | |
136 | gnoisevstim->GetYaxis()->SetTitle("<Noise> (ADC counts)"); | |
137 | cnoise->SaveAs("NoiseRun09.gif"); | |
138 | ||
139 | TCanvas* cgain=new TCanvas("cgain","Gain"); | |
140 | ggainvstim->SetFillColor(kOrange-2); | |
141 | ggainvstim->SetMarkerStyle(20); | |
142 | ggainvstim->Draw("AP3"); | |
143 | ggainvstim->Draw("PLXSAME"); | |
144 | ggainvstim->SetMinimum(0.); | |
145 | ggainvstim->SetMaximum(4.); | |
146 | ggainvstim->GetXaxis()->SetTitle("Run number"); | |
147 | ggainvstim->GetYaxis()->SetTitle("<Gain> (ADC/DAC)"); | |
148 | cgain->SaveAs("GainRun09.gif"); | |
149 | ||
150 | TCanvas* cfrac=new TCanvas("cfrac","Good channels"); | |
151 | gstatvstim->SetFillColor(kOrange-2); | |
152 | gstatvstim->SetMarkerStyle(20); | |
153 | gstatvstim->Draw("AP3"); | |
154 | gstatvstim->Draw("PLXSAME"); | |
155 | gstatvstim->SetMinimum(100000.); | |
156 | gstatvstim->SetMaximum(133000.); | |
157 | gstatvstim->GetXaxis()->SetTitle("Run number"); | |
158 | gstatvstim->GetYaxis()->SetTitle("Number of good anodes in acquisition"); | |
159 | cfrac->SaveAs("GoodAnodesRun09.gif"); | |
160 | ||
161 | } |