1 #if !defined(__CINT__) || defined(__MAKECINT__)
5 #include <TGraphErrors.h>
11 #include <TObjArray.h>
12 #include "AliCDBEntry.h"
13 #include "AliITSCalibrationSDD.h"
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)
22 void PlotCalibSDDVsTime(Int_t year=2010, Int_t firstRun=77677,
23 Int_t lastRun=999999999){
25 gStyle->SetOptTitle(0);
26 gStyle->SetOptStat(0);
27 gStyle->SetPadLeftMargin(0.14);
28 gStyle->SetTitleOffset(1.4,"Y");
31 TGrid::Connect("alien:",0,0,"t");
32 gSystem->Exec(Form("gbbox find \"/alice/data/%d/OCDB/ITS/Calib/CalibSDD\" \"Run*.root\" > runCalibAlien.txt",year));
33 FILE* listruns=fopen("runCalibAlien.txt","r");
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");
53 Char_t filnam[200],filnamalien[200];
55 Int_t nrun,nrun2,nv,ns;
57 while(!feof(listruns)){
62 fscanf(listruns,"%s\n",filnam);
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
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();
76 printf("Run %d Entries in array=%d \n",nrun,calSDD->GetEntriesFast());
79 AliITSCalibrationSDD *cal;
80 for(Int_t iMod=0; iMod<260;iMod++){
81 cal=(AliITSCalibrationSDD*)calSDD->At(iMod);
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() ){
97 printf("Run %d <Base> = %f <Noise> =%f Entries = %d\n",nrun,hbase->GetMean(),hnoise->GetMean(),(Int_t)hbase->GetEntries());
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));
110 TFile *ofil=new TFile(Form("Calib%dVsTime.root",year),"recreate");
112 gnoisevstim->Write();
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");
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");
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");
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");