ROOT logo
#if !defined( __CINT__) || defined(__MAKECINT__)

#include <iostream>
#include <TRandom.h>
#include <TSystem.h>
#include <TDatime.h>
#include <TCanvas.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TStyle.h>

#include <AliCDBManager.h>
#include <AliTRDcalibDB.h>
#include <AliCDBStorage.h>
#include <AliCDBEntry.h>
#include <AliCDBMetaData.h>
#include <AliGeometry.h>
#include <AliPID.h>

#include "../TRD/AliTRDgeometry.h"
#include "../TRD/Cal/AliTRDCalROC.h"
#include "../TRD/Cal/AliTRDCalPad.h"
#include "../TRD/Cal/AliTRDCalDet.h"

#endif

Int_t GetPlane(Int_t d);
Int_t GetSector(Int_t d);
Int_t GetChamber(Int_t d);
void ReadCDD(Bool_t residual = kFALSE, Int_t ndet = 319);

void ReadCDD(Bool_t residual, Int_t ndet){


  gStyle->SetPalette(1);
  gStyle->SetOptStat(1111);
  gStyle->SetPadBorderMode(0);
  gStyle->SetCanvasColor(10);
  gStyle->SetPadLeftMargin(0.13);
  gStyle->SetPadRightMargin(0.05);
 

  //definition number of detector et histos
  Int_t Ndet = AliTRDgeometry::kNdet;
  TH1F *Vdriftdet   = new TH1F("Vdriftdet","Vdrift det",Ndet,0,Ndet);
  TH1F *Gaindet   = new TH1F("Gaindet","Gain det",Ndet,0,Ndet);
  TH1F *Vdriftdets   = new TH1F("Vdriftdets","Vdrift",20,1.0,2.0);
  TH1F *Gaindets   = new TH1F("Gaindets","Gain",15,0.0,2.0);


  TH1F *T0pad   = new TH1F("T0pad","T0pad",900,-1.0,1.0);
  TH1F *Vdriftpad   = new TH1F("Vdriftpad","Vdriftpad",100,0.9,2.1);
  TH1F *Gainpad   = new TH1F("Gainpad","Gainpad",150,0.2,1.8);

  //////////////////
  //Datebase used 
  //////////////////
  AliCDBManager *man = AliCDBManager::Instance();
 

  man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  man->SetSpecificStorage("TRD/Calib/LocalGainFactor","local://.");
  man->SetSpecificStorage("TRD/Calib/LocalT0","local://.");
  man->SetSpecificStorage("TRD/Calib/LocalVdrift","local://.");
  man->SetSpecificStorage("TRD/Calib/ChamberT0","local://.");
  if(! residual){
    man->SetSpecificStorage("TRD/Calib/ChamberVdrift","local://.");
    man->SetSpecificStorage("TRD/Calib/ChamberGainFactor","local://.");
  }
  man->SetRun(0);
 
  
  AliTRDcalibDB *cal = AliTRDcalibDB::Instance();
  AliTRDgeometry *geo = new AliTRDgeometry();

   
  ////////////////////////////////////////////
  // drift velocity and gain for detectors
  ///////////////////////////////////////////

  //drift velocity par detector
  for(Int_t k = 0; k < Ndet; k++){
  Vdriftdet->Fill(k+0.5,cal->GetVdriftAverage(k));
  Vdriftdets->Fill(cal->GetVdriftAverage(k));
  //cout << "Vdrift average: " << cal->GetVdriftAverage(k) << endl;
  }

  TCanvas *c1 = new TCanvas("c1","Calibchamberdrift",50,50,600,800);
  c1->Divide(1,2);
  c1->cd(1);
  Vdriftdet->SetStats(0);
  Vdriftdet->SetXTitle("Det Number");
  Vdriftdet->SetYTitle("Mean Drift Velocity [cm/#mu s]");
  Vdriftdet->Draw();

  //gain par detector
  for(Int_t k = 0; k < Ndet; k++){
  Gaindet->Fill(k+0.5,cal->GetGainFactorAverage(k));
  Gaindets->Fill(cal->GetGainFactorAverage(k));
  //cout << "Vdrift average: " << cal->GetVdriftAverage(k) << endl;
  }

  //TCanvas *c1g = new TCanvas("c1g","Calibchambergain",50,50,600,800);
  c1->cd(2);
  Gaindet->SetStats(0);
  Gaindet->SetXTitle("Det Number");
  Gaindet->SetYTitle("Mean Gain");
  Gaindet->Draw();


  TCanvas *c1u = new TCanvas("c1u","Calibchamberdriftu",50,50,600,800);
  c1u->Divide(1,2);
  c1u->cd(1);
  Vdriftdets->SetStats(0);
  Vdriftdets->SetXTitle("Mean Drift Velocity [cm/#mu s]");
  Vdriftdets->SetYTitle("Number of detectors");
  Vdriftdets->Draw();

  c1u->cd(2);
  Gaindets->SetStats(0);
  Gaindets->SetXTitle("Mean Gain");
  Gaindets->SetYTitle("Number of detectors");
  Gaindets->Draw();

  /////////////////////////////////
  // Maps of one detector choosen
  /////////////////////////////////

  Int_t rowMaxd = geo->GetRowMax(GetPlane(ndet),GetChamber(ndet),GetSector(ndet));
  Int_t colMaxd = geo->GetColMax(GetPlane(ndet));
    
  TH2F *hZYvd     = new TH2F("hZYvd"   ,"Y vs Z", rowMaxd,0,rowMaxd,colMaxd,0,colMaxd);
  TH2F *hZYg     = new TH2F("hZYg"   ,"Y vs Z", rowMaxd,0,rowMaxd,colMaxd,0,colMaxd);
  TH2F *hZYT0     = new TH2F("hZYT0"   ,"Y vs Z", rowMaxd,0,rowMaxd,colMaxd,0,colMaxd);
 
  
  for (Int_t  col = 0;  col <  colMaxd;  col++) {
    for (Int_t  row = 0;  row <  rowMaxd;  row++) {
      hZYvd->Fill(row,col,cal->GetVdrift(ndet,col,row));
      hZYg->Fill(row,col,cal->GetGainFactor(ndet,col,row));
      hZYT0->Fill(row,col,cal->GetT0(ndet,col,row));
    }//boucle row
  }//boucle col

  ////////////////////////////////
  // coefficients per pad
  ///////////////////////////////

  for(Int_t isector = 0; isector < 18; isector++){
    for(Int_t iplane =0; iplane < 6; iplane++){
      for(Int_t ichamb =0; ichamb < 5; ichamb++){
	
	Int_t det = AliTRDgeometry::GetDetector(iplane,ichamb,isector);
	Int_t rowMax = geo->GetRowMax(iplane,ichamb,isector);
	Int_t colMax = geo->GetColMax(iplane);
	
	for (Int_t  col = 0;  col <  colMax;  col++) {
	  for (Int_t  row = 0;  row <  rowMax;  row++) {
	    Gainpad->Fill(cal->GetGainFactor(det,col,row));
	    T0pad->Fill(cal->GetT0(det,col,row));
	    Vdriftpad->Fill(cal->GetVdrift(det,col,row));
	  }//boucle row
	}//boucle col
	
      }//loop chamber
    }//loop plane  
  }

  /////////////////////////////
  // Plot the choosen detector
  /////////////////////////////
    
  TCanvas *c2vd = new TCanvas("c2vd","choosen detector",50,50,600,800);
  c2vd->Divide(3,1);
  c2vd->cd(1);
  hZYvd->SetXTitle("row Number");
  hZYvd->SetYTitle("col Number");
  hZYvd->SetZTitle("Drift velocity");
  hZYvd->SetStats(0);
  hZYvd->Draw("LEGO");

  c2vd->cd(2);
  hZYT0->SetXTitle("row Number");
  hZYT0->SetYTitle("col Number");
  hZYT0->SetZTitle("T0 [time bin]");
  hZYT0->SetStats(0);
  hZYT0->Draw("SURF1");
  
  c2vd->cd(3);
  hZYg->SetXTitle("row Number");
  hZYg->SetYTitle("col Number");
  hZYg->SetZTitle("gain factor");
  hZYg->SetStats(0);
  hZYg->Draw("SURF1");

  /////////////////////////////
  // Plot the pad info
  /////////////////////////////

  TCanvas *c5vd = new TCanvas("c5vd","PadInfo",50,50,600,800);
  c5vd->Divide(3,1);
  c5vd->cd(1);
  Vdriftpad->SetXTitle("v_{d} [cm/#mus]");
  Vdriftpad->SetYTitle("number of pads");
  Vdriftpad->SetStats(0);
  Vdriftpad->Draw();

  c5vd->cd(2);
  T0pad->SetXTitle("T0 [time bin]");
  T0pad->SetYTitle("number of pads");
  T0pad->SetStats(0);
  T0pad->Draw();
  

  c5vd->cd(3);
  Gainpad->SetXTitle("gain factor");
  Gainpad->SetYTitle("number of pads");
  Gainpad->SetStats(0);
  Gainpad->Draw();


}
//____________________________________________________________________________________________
Int_t GetPlane(Int_t d) 
{
  //
  // Reconstruct the plane number from the detector number
  //

  return ((Int_t) (d % 6));

}

//_____________________________________________________________________________
Int_t GetChamber(Int_t d) 
{
  //
  // Reconstruct the chamber number from the detector number
  //
  Int_t fgkNplan = 6;

  return ((Int_t) (d % 30) / fgkNplan);

}

//_____________________________________________________________________________
Int_t GetSector(Int_t d) 
{
  //
  // Reconstruct the sector number from the detector number
  //
  Int_t fg = 30;

  return ((Int_t) (d / fg));

}
 ReadCDD.C:1
 ReadCDD.C:2
 ReadCDD.C:3
 ReadCDD.C:4
 ReadCDD.C:5
 ReadCDD.C:6
 ReadCDD.C:7
 ReadCDD.C:8
 ReadCDD.C:9
 ReadCDD.C:10
 ReadCDD.C:11
 ReadCDD.C:12
 ReadCDD.C:13
 ReadCDD.C:14
 ReadCDD.C:15
 ReadCDD.C:16
 ReadCDD.C:17
 ReadCDD.C:18
 ReadCDD.C:19
 ReadCDD.C:20
 ReadCDD.C:21
 ReadCDD.C:22
 ReadCDD.C:23
 ReadCDD.C:24
 ReadCDD.C:25
 ReadCDD.C:26
 ReadCDD.C:27
 ReadCDD.C:28
 ReadCDD.C:29
 ReadCDD.C:30
 ReadCDD.C:31
 ReadCDD.C:32
 ReadCDD.C:33
 ReadCDD.C:34
 ReadCDD.C:35
 ReadCDD.C:36
 ReadCDD.C:37
 ReadCDD.C:38
 ReadCDD.C:39
 ReadCDD.C:40
 ReadCDD.C:41
 ReadCDD.C:42
 ReadCDD.C:43
 ReadCDD.C:44
 ReadCDD.C:45
 ReadCDD.C:46
 ReadCDD.C:47
 ReadCDD.C:48
 ReadCDD.C:49
 ReadCDD.C:50
 ReadCDD.C:51
 ReadCDD.C:52
 ReadCDD.C:53
 ReadCDD.C:54
 ReadCDD.C:55
 ReadCDD.C:56
 ReadCDD.C:57
 ReadCDD.C:58
 ReadCDD.C:59
 ReadCDD.C:60
 ReadCDD.C:61
 ReadCDD.C:62
 ReadCDD.C:63
 ReadCDD.C:64
 ReadCDD.C:65
 ReadCDD.C:66
 ReadCDD.C:67
 ReadCDD.C:68
 ReadCDD.C:69
 ReadCDD.C:70
 ReadCDD.C:71
 ReadCDD.C:72
 ReadCDD.C:73
 ReadCDD.C:74
 ReadCDD.C:75
 ReadCDD.C:76
 ReadCDD.C:77
 ReadCDD.C:78
 ReadCDD.C:79
 ReadCDD.C:80
 ReadCDD.C:81
 ReadCDD.C:82
 ReadCDD.C:83
 ReadCDD.C:84
 ReadCDD.C:85
 ReadCDD.C:86
 ReadCDD.C:87
 ReadCDD.C:88
 ReadCDD.C:89
 ReadCDD.C:90
 ReadCDD.C:91
 ReadCDD.C:92
 ReadCDD.C:93
 ReadCDD.C:94
 ReadCDD.C:95
 ReadCDD.C:96
 ReadCDD.C:97
 ReadCDD.C:98
 ReadCDD.C:99
 ReadCDD.C:100
 ReadCDD.C:101
 ReadCDD.C:102
 ReadCDD.C:103
 ReadCDD.C:104
 ReadCDD.C:105
 ReadCDD.C:106
 ReadCDD.C:107
 ReadCDD.C:108
 ReadCDD.C:109
 ReadCDD.C:110
 ReadCDD.C:111
 ReadCDD.C:112
 ReadCDD.C:113
 ReadCDD.C:114
 ReadCDD.C:115
 ReadCDD.C:116
 ReadCDD.C:117
 ReadCDD.C:118
 ReadCDD.C:119
 ReadCDD.C:120
 ReadCDD.C:121
 ReadCDD.C:122
 ReadCDD.C:123
 ReadCDD.C:124
 ReadCDD.C:125
 ReadCDD.C:126
 ReadCDD.C:127
 ReadCDD.C:128
 ReadCDD.C:129
 ReadCDD.C:130
 ReadCDD.C:131
 ReadCDD.C:132
 ReadCDD.C:133
 ReadCDD.C:134
 ReadCDD.C:135
 ReadCDD.C:136
 ReadCDD.C:137
 ReadCDD.C:138
 ReadCDD.C:139
 ReadCDD.C:140
 ReadCDD.C:141
 ReadCDD.C:142
 ReadCDD.C:143
 ReadCDD.C:144
 ReadCDD.C:145
 ReadCDD.C:146
 ReadCDD.C:147
 ReadCDD.C:148
 ReadCDD.C:149
 ReadCDD.C:150
 ReadCDD.C:151
 ReadCDD.C:152
 ReadCDD.C:153
 ReadCDD.C:154
 ReadCDD.C:155
 ReadCDD.C:156
 ReadCDD.C:157
 ReadCDD.C:158
 ReadCDD.C:159
 ReadCDD.C:160
 ReadCDD.C:161
 ReadCDD.C:162
 ReadCDD.C:163
 ReadCDD.C:164
 ReadCDD.C:165
 ReadCDD.C:166
 ReadCDD.C:167
 ReadCDD.C:168
 ReadCDD.C:169
 ReadCDD.C:170
 ReadCDD.C:171
 ReadCDD.C:172
 ReadCDD.C:173
 ReadCDD.C:174
 ReadCDD.C:175
 ReadCDD.C:176
 ReadCDD.C:177
 ReadCDD.C:178
 ReadCDD.C:179
 ReadCDD.C:180
 ReadCDD.C:181
 ReadCDD.C:182
 ReadCDD.C:183
 ReadCDD.C:184
 ReadCDD.C:185
 ReadCDD.C:186
 ReadCDD.C:187
 ReadCDD.C:188
 ReadCDD.C:189
 ReadCDD.C:190
 ReadCDD.C:191
 ReadCDD.C:192
 ReadCDD.C:193
 ReadCDD.C:194
 ReadCDD.C:195
 ReadCDD.C:196
 ReadCDD.C:197
 ReadCDD.C:198
 ReadCDD.C:199
 ReadCDD.C:200
 ReadCDD.C:201
 ReadCDD.C:202
 ReadCDD.C:203
 ReadCDD.C:204
 ReadCDD.C:205
 ReadCDD.C:206
 ReadCDD.C:207
 ReadCDD.C:208
 ReadCDD.C:209
 ReadCDD.C:210
 ReadCDD.C:211
 ReadCDD.C:212
 ReadCDD.C:213
 ReadCDD.C:214
 ReadCDD.C:215
 ReadCDD.C:216
 ReadCDD.C:217
 ReadCDD.C:218
 ReadCDD.C:219
 ReadCDD.C:220
 ReadCDD.C:221
 ReadCDD.C:222
 ReadCDD.C:223
 ReadCDD.C:224
 ReadCDD.C:225
 ReadCDD.C:226
 ReadCDD.C:227
 ReadCDD.C:228
 ReadCDD.C:229
 ReadCDD.C:230
 ReadCDD.C:231
 ReadCDD.C:232
 ReadCDD.C:233
 ReadCDD.C:234
 ReadCDD.C:235
 ReadCDD.C:236
 ReadCDD.C:237
 ReadCDD.C:238
 ReadCDD.C:239
 ReadCDD.C:240
 ReadCDD.C:241
 ReadCDD.C:242
 ReadCDD.C:243
 ReadCDD.C:244
 ReadCDD.C:245
 ReadCDD.C:246
 ReadCDD.C:247
 ReadCDD.C:248
 ReadCDD.C:249
 ReadCDD.C:250
 ReadCDD.C:251
 ReadCDD.C:252
 ReadCDD.C:253
 ReadCDD.C:254
 ReadCDD.C:255
 ReadCDD.C:256
 ReadCDD.C:257