1 #if !defined( __CINT__) || defined(__MAKECINT__)
12 #include <AliCDBManager.h>
13 #include <AliTRDcalibDB.h>
14 #include <AliCDBStorage.h>
15 #include <AliCDBEntry.h>
16 #include <AliCDBMetaData.h>
17 #include <AliGeometry.h>
20 #include "../TRD/AliTRDgeometry.h"
21 #include "../TRD/Cal/AliTRDCalROC.h"
22 #include "../TRD/Cal/AliTRDCalPad.h"
23 #include "../TRD/Cal/AliTRDCalDet.h"
27 Int_t GetPlane(Int_t d);
28 Int_t GetSector(Int_t d);
29 Int_t GetChamber(Int_t d);
30 void ReadCDD(Bool_t residual = kFALSE, Int_t ndet = 319);
32 void ReadCDD(Bool_t residual, Int_t ndet){
35 gStyle->SetPalette(1);
36 gStyle->SetOptStat(1111);
37 gStyle->SetPadBorderMode(0);
38 gStyle->SetCanvasColor(10);
39 gStyle->SetPadLeftMargin(0.13);
40 gStyle->SetPadRightMargin(0.05);
43 //definition number of detector et histos
44 Int_t Ndet = AliTRDgeometry::kNdet;
45 TH1F *Vdriftdet = new TH1F("Vdriftdet","Vdrift det",Ndet,0,Ndet);
46 TH1F *Gaindet = new TH1F("Gaindet","Gain det",Ndet,0,Ndet);
47 TH1F *Vdriftdets = new TH1F("Vdriftdets","Vdrift",20,1.0,2.0);
48 TH1F *Gaindets = new TH1F("Gaindets","Gain",15,0.0,2.0);
51 TH1F *T0pad = new TH1F("T0pad","T0pad",900,-1.0,1.0);
52 TH1F *Vdriftpad = new TH1F("Vdriftpad","Vdriftpad",100,0.9,2.1);
53 TH1F *Gainpad = new TH1F("Gainpad","Gainpad",150,0.2,1.8);
58 AliCDBManager *man = AliCDBManager::Instance();
61 man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
62 man->SetSpecificStorage("TRD/Calib/LocalGainFactor","local://.");
63 man->SetSpecificStorage("TRD/Calib/LocalT0","local://.");
64 man->SetSpecificStorage("TRD/Calib/LocalVdrift","local://.");
65 man->SetSpecificStorage("TRD/Calib/ChamberT0","local://.");
67 man->SetSpecificStorage("TRD/Calib/ChamberVdrift","local://.");
68 man->SetSpecificStorage("TRD/Calib/ChamberGainFactor","local://.");
73 AliTRDcalibDB *cal = AliTRDcalibDB::Instance();
74 AliTRDgeometry *geo = new AliTRDgeometry();
77 ////////////////////////////////////////////
78 // drift velocity and gain for detectors
79 ///////////////////////////////////////////
81 //drift velocity par detector
82 for(Int_t k = 0; k < Ndet; k++){
83 Vdriftdet->Fill(k+0.5,cal->GetVdriftAverage(k));
84 Vdriftdets->Fill(cal->GetVdriftAverage(k));
85 //cout << "Vdrift average: " << cal->GetVdriftAverage(k) << endl;
88 TCanvas *c1 = new TCanvas("c1","Calibchamberdrift",50,50,600,800);
91 Vdriftdet->SetStats(0);
92 Vdriftdet->SetXTitle("Det Number");
93 Vdriftdet->SetYTitle("Mean Drift Velocity [cm/#mu s]");
97 for(Int_t k = 0; k < Ndet; k++){
98 Gaindet->Fill(k+0.5,cal->GetGainFactorAverage(k));
99 Gaindets->Fill(cal->GetGainFactorAverage(k));
100 //cout << "Vdrift average: " << cal->GetVdriftAverage(k) << endl;
103 //TCanvas *c1g = new TCanvas("c1g","Calibchambergain",50,50,600,800);
105 Gaindet->SetStats(0);
106 Gaindet->SetXTitle("Det Number");
107 Gaindet->SetYTitle("Mean Gain");
111 TCanvas *c1u = new TCanvas("c1u","Calibchamberdriftu",50,50,600,800);
114 Vdriftdets->SetStats(0);
115 Vdriftdets->SetXTitle("Mean Drift Velocity [cm/#mu s]");
116 Vdriftdets->SetYTitle("Number of detectors");
120 Gaindets->SetStats(0);
121 Gaindets->SetXTitle("Mean Gain");
122 Gaindets->SetYTitle("Number of detectors");
125 /////////////////////////////////
126 // Maps of one detector choosen
127 /////////////////////////////////
129 Int_t rowMaxd = geo->GetRowMax(GetPlane(ndet),GetChamber(ndet),GetSector(ndet));
130 Int_t colMaxd = geo->GetColMax(GetPlane(ndet));
132 TH2F *hZYvd = new TH2F("hZYvd" ,"Y vs Z", rowMaxd,0,rowMaxd,colMaxd,0,colMaxd);
133 TH2F *hZYg = new TH2F("hZYg" ,"Y vs Z", rowMaxd,0,rowMaxd,colMaxd,0,colMaxd);
134 TH2F *hZYT0 = new TH2F("hZYT0" ,"Y vs Z", rowMaxd,0,rowMaxd,colMaxd,0,colMaxd);
137 for (Int_t col = 0; col < colMaxd; col++) {
138 for (Int_t row = 0; row < rowMaxd; row++) {
139 hZYvd->Fill(row,col,cal->GetVdrift(ndet,col,row));
140 hZYg->Fill(row,col,cal->GetGainFactor(ndet,col,row));
141 hZYT0->Fill(row,col,cal->GetT0(ndet,col,row));
145 ////////////////////////////////
146 // coefficients per pad
147 ///////////////////////////////
149 for(Int_t isector = 0; isector < 18; isector++){
150 for(Int_t iplane =0; iplane < 6; iplane++){
151 for(Int_t ichamb =0; ichamb < 5; ichamb++){
153 Int_t det = AliTRDgeometry::GetDetector(iplane,ichamb,isector);
154 Int_t rowMax = geo->GetRowMax(iplane,ichamb,isector);
155 Int_t colMax = geo->GetColMax(iplane);
157 for (Int_t col = 0; col < colMax; col++) {
158 for (Int_t row = 0; row < rowMax; row++) {
159 Gainpad->Fill(cal->GetGainFactor(det,col,row));
160 T0pad->Fill(cal->GetT0(det,col,row));
161 Vdriftpad->Fill(cal->GetVdrift(det,col,row));
169 /////////////////////////////
170 // Plot the choosen detector
171 /////////////////////////////
173 TCanvas *c2vd = new TCanvas("c2vd","choosen detector",50,50,600,800);
176 hZYvd->SetXTitle("row Number");
177 hZYvd->SetYTitle("col Number");
178 hZYvd->SetZTitle("Drift velocity");
183 hZYT0->SetXTitle("row Number");
184 hZYT0->SetYTitle("col Number");
185 hZYT0->SetZTitle("T0 [time bin]");
187 hZYT0->Draw("SURF1");
190 hZYg->SetXTitle("row Number");
191 hZYg->SetYTitle("col Number");
192 hZYg->SetZTitle("gain factor");
196 /////////////////////////////
198 /////////////////////////////
200 TCanvas *c5vd = new TCanvas("c5vd","PadInfo",50,50,600,800);
203 Vdriftpad->SetXTitle("v_{d} [cm/#mus]");
204 Vdriftpad->SetYTitle("number of pads");
205 Vdriftpad->SetStats(0);
209 T0pad->SetXTitle("T0 [time bin]");
210 T0pad->SetYTitle("number of pads");
216 Gainpad->SetXTitle("gain factor");
217 Gainpad->SetYTitle("number of pads");
218 Gainpad->SetStats(0);
223 //____________________________________________________________________________________________
224 Int_t GetPlane(Int_t d)
227 // Reconstruct the plane number from the detector number
230 return ((Int_t) (d % 6));
234 //_____________________________________________________________________________
235 Int_t GetChamber(Int_t d)
238 // Reconstruct the chamber number from the detector number
242 return ((Int_t) (d % 30) / fgkNplan);
246 //_____________________________________________________________________________
247 Int_t GetSector(Int_t d)
250 // Reconstruct the sector number from the detector number
254 return ((Int_t) (d / fg));