]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/PlotCalibSDDVsTime.C
Added contructor to create an object from the DCS file name (instead of the TMap)
[u/mrichter/AliRoot.git] / ITS / PlotCalibSDDVsTime.C
CommitLineData
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 22void 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}