1 #if !defined(__CINT__) || defined(__MAKECINT__)
13 #include <TObjArray.h>
14 #include <TPaveStats.h>
15 #include "AliCDBEntry.h"
16 #include "AliITSresponseSDD.h"
19 /* $Id: ShowResponseSDD.C 44072 2010-10-04 15:48:32Z prino $ */
21 // Macro to plot the calibration parameters
22 // (time zero, ADCtokeV and Vdrift correction)
23 // from the OCDB file created from SDD offline calibration
24 // (OCDB/ITS/Calib/RespSDD)
26 void ShowResponseSDD(TString filename="$ALICE_ROOT/OCDB/ITS/Calib/RespSDD/Run0_999999999_v0_s0.root"){
27 if(filename.Contains("alien")){
28 TGrid::Connect("alien:");
30 TFile* fr=TFile::Open(filename.Data());
31 AliCDBEntry* e=(AliCDBEntry*)fr->Get("AliCDBEntry");
33 AliITSresponseSDD* r=(AliITSresponseSDD*)e->GetObject();
34 TH1F* hTimeZero=new TH1F("hTimeZero","",260,239.5,499.5);
35 TH1F* hVdriftCorrLeft=new TH1F("hVdriftCorrLeft","",260,239.5,499.5);
36 TH1F* hVdriftCorrRight=new TH1F("hVdriftCorrRight","",260,239.5,499.5);
37 TH1F* hdistVdriftCorrLeft=new TH1F("hdistVdriftCorrLeft","",100,-0.2,0.2);
38 TH1F* hdistVdriftCorrRight=new TH1F("hdistVdriftCorrRight","",100,-0.2,0.2);
39 TH1F* hADCtokeV=new TH1F("hADCtokeV","",260,239.5,499.5);
40 TH1F* hADCvsTime=new TH1F("hADCvsTime","",260,239.5,499.5);
46 for(Int_t iMod=240; iMod<500; iMod++){
47 Float_t tz=r->GetTimeZero(iMod);
48 Float_t cv0=r->GetDeltaVDrift(iMod,kFALSE);
49 Float_t cv1=r->GetDeltaVDrift(iMod,kTRUE);
50 Float_t ak=r->GetADCtokeV(iMod);
51 Float_t at=r->GetADCvsDriftTime(iMod);
52 hTimeZero->SetBinContent(iMod-240+1,tz);
53 hVdriftCorrLeft->SetBinContent(iMod-240+1,cv0);
54 hVdriftCorrRight->SetBinContent(iMod-240+1,cv1);
55 hdistVdriftCorrLeft->Fill(cv0);
56 hdistVdriftCorrRight->Fill(cv1);
57 hADCtokeV->SetBinContent(iMod-240+1,ak);
58 hADCvsTime->SetBinContent(iMod-240+1,at);
71 hTimeZero->SetMarkerStyle(20);
72 hADCtokeV->SetMarkerStyle(20);
73 hADCvsTime->SetMarkerStyle(20);
74 hVdriftCorrLeft->SetMarkerStyle(22);
75 hVdriftCorrLeft->SetMarkerColor(2);
76 hVdriftCorrRight->SetMarkerStyle(24);
77 hVdriftCorrRight->SetMarkerColor(4);
78 hTimeZero->SetMaximum(hTimeZero->GetMaximum()*1.2);
79 hADCtokeV->SetMaximum(hADCtokeV->GetMaximum()*1.2);
80 hADCvsTime->SetMaximum(hADCvsTime->GetMaximum()*1.2);
81 Float_t maxV=TMath::Max(hVdriftCorrLeft->GetMaximum(),hVdriftCorrRight->GetMaximum());
82 Float_t minV=TMath::Min(hVdriftCorrLeft->GetMinimum(),hVdriftCorrRight->GetMinimum());
83 Float_t scale=TMath::Max(TMath::Abs(maxV),TMath::Abs(minV));
85 hVdriftCorrLeft->SetMinimum(-0.05);
86 hVdriftCorrLeft->SetMaximum(0.05);
88 hVdriftCorrLeft->SetMaximum(1.2*scale);
89 hVdriftCorrLeft->SetMinimum(-1.2*scale);
92 // gStyle->SetOptStat(0);
94 printf("Charge vs. Time correction factor = %f\n",r->GetChargevsTime());
96 TCanvas* c1=new TCanvas("c1","Time Zero");
97 hTimeZero->SetStats(0);
99 hTimeZero->GetXaxis()->SetTitle("Module Id");
100 hTimeZero->GetYaxis()->SetTitle("Time Zero (ns)");
101 TLatex* tt=new TLatex(0.2,0.8,Form("Average Tzero = %.2f",averTz));
106 TCanvas* c2=new TCanvas("c2","Vdrift Corr",800,900);
109 hVdriftCorrLeft->SetStats(0);
110 hVdriftCorrLeft->Draw("P");
111 hVdriftCorrRight->Draw("PSAME");
112 hVdriftCorrLeft->GetXaxis()->SetTitle("Module Id");
113 hVdriftCorrLeft->GetYaxis()->SetTitle("Vdrift correction (#mum/ns)");
114 TLatex* tc0=new TLatex(0.2,0.8,Form("Average Vdrift corr Left = %.3f",averCv0));
116 tc0->SetTextColor(2);
118 TLatex* tc1=new TLatex(0.2,0.72,Form("Average Vdrift corr Right = %.3f",averCv1));
120 tc1->SetTextColor(4);
123 hdistVdriftCorrLeft->SetLineColor(2);
124 hdistVdriftCorrLeft->GetXaxis()->SetTitle("Vdrift correction (#mum/ns)");
125 hdistVdriftCorrLeft->Draw();
127 TPaveStats *stL=(TPaveStats*)hdistVdriftCorrLeft->GetListOfFunctions()->FindObject("stats");
130 stL->SetTextColor(2);
131 hdistVdriftCorrRight->SetLineColor(4);
132 hdistVdriftCorrRight->Draw("SAMES");
134 TPaveStats *stR=(TPaveStats*)hdistVdriftCorrRight->GetListOfFunctions()->FindObject("stats");
137 stR->SetTextColor(4);
139 TCanvas* c3=new TCanvas("c3","ADC calib",800,900);
142 hADCvsTime->SetStats(0);
143 hADCvsTime->Draw("P");
144 hADCvsTime->GetXaxis()->SetTitle("Module Id");
145 hADCvsTime->GetYaxis()->SetTitle("ADC vs. Drift Time Slope (ADC/ns)");
146 TLatex* ts=new TLatex(0.2,0.8,Form("Average ADCvsTime = %.3f",averAt));
150 hADCtokeV->SetStats(0);
151 hADCtokeV->Draw("P");
152 hADCtokeV->GetXaxis()->SetTitle("Module Id");
153 hADCtokeV->GetYaxis()->SetTitle("ADC to keV conv. factor");
154 TLatex* ta=new TLatex(0.2,0.8,Form("Average ADCtokeV = %.3f",averAk));