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

#include <iostream>
#include <TRandom.h>
#include <TSystem.h>
#include <TDatime.h>

#include <AliCDBManager.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

// run number for the dummy file
const Int_t gkDummyRun = 0;
AliCDBStorage* gStorLoc = 0;
Double_t t0minimum[540];
Double_t gainav[540];
Double_t vav[540];

TObject* CreatePadObjectT0Random(const char* shortName, const char* description, Float_t mean, Float_t sigma);
TObject* CreateDetT0Object(const char* shortName, const char* description);
Double_t funcpoly16(Double_t* x);
Double_t funcpoly12(Double_t* x);
Double_t funcpoly144(Double_t* x);
Double_t funcpoly16v(Double_t* x);
Double_t funcpoly12v(Double_t* x);
Double_t funcpoly144v(Double_t* x);
TObject* CreatePadObject(const char* shortName, const char* description, Float_t value);
TObject* CreatePadObjectRandom(const char* shortName, const char* description, Float_t mean, Float_t sigma);
TObject* CreatePadObjectRandomv(const char* shortName, const char* description, Float_t mean, Float_t sigma);
TObject* CreatePadObjectbridge(const char* shortName, const char* description);
TObject* CreatePadObjectbridgev(const char* shortName, const char* description);
TObject* CreateDetObject(const char* shortName, const char* description, Float_t value);
TObject* CreateDetObjectRandom(const char* shortName, const char* description, Float_t mean, Float_t sigma);
TObject* CreateDetObjectRandomg(const char* shortName, const char* description, Float_t mean, Float_t sigma);
TObject* CreateDetObjectRandomv(const char* shortName, const char* description, Float_t mean, Float_t sigma);
AliCDBMetaData* CreateMetaObject(const char* objectClassName);
void StoreObject(const char* cdbPath, TObject* object, AliCDBMetaData* metaData);
void AliTRDCreate(Bool_t residual = kFALSE);


//________________________________________________________________________________________________
TObject* CreatePadObjectT0Random(const char* shortName, const char* description, Float_t mean, Float_t sigma)
{
  Double_t min = 0.0;
  AliTRDCalPad *calPad = new AliTRDCalPad(shortName, description);
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det)
    {
      AliTRDCalROC *calROC = calPad->GetCalROC(det);
      Double_t value[2400];
      for (Int_t channel=0; channel<calROC->GetNchannels(); ++channel){
	value[channel] = gRandom->Gaus(mean,sigma);
	if(channel == 0) {
	  min = value[0];
	  //printf("value[0] %f and min %f et gRandom %f\n",value[0],min, gRandom->Gaus(mean,sigma));
	}
	if(min > value[channel]) min = value[channel];
	//calROC->SetValue(channel, TMath::Abs(value));
      }
      t0minimum[det] = min;
      for (Int_t channel=0; channel<calROC->GetNchannels(); ++channel){
	//printf("min value for the det %d is %f and the channel is %f, we put %f\n",det,t0minimum[det],value[channel],(value[channel]-t0minimum[det]));
	calROC->SetValue(channel, (value[channel]-t0minimum[det]));
      }
    }
  
  return calPad;
}
//___________________________________________________________________________________________________
TObject* CreateDetT0Object(const char* shortName, const char* description)
{
  AliTRDCalDet *object = new AliTRDCalDet(shortName, description);
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det)
    object->SetValue(det, t0minimum[det]);
  return object;
}
//__________________________________________________________________________________________________
Double_t funcpoly16(Double_t* x){

  //0.1

  Double_t par[3] = {-0.002678571429,0.040178571,1};

  // sum landau + gaus with identical mean

  Double_t valLandau = par[0]*x[0]*x[0]+par[1]*x[0]+par[2];

  return valLandau;
}
//_____________________________________________________________________________________________________
Double_t funcpoly12(Double_t* x){

  // 0.1

  Double_t par[3] = {-0.005,0.055,1};

  // sum landau + gaus with identical mean

  Double_t valLandau = par[0]*x[0]*x[0]+par[1]*x[0]+par[2];

  return valLandau;
}
//______________________________________________________________________________________________________
Double_t funcpoly144(Double_t* x){

  //0.1

  Double_t par[3] = {-0.00001956181536,0.00279339596,1};

  // sum landau + gaus with identical mean

  Double_t valLandau = par[0]*x[0]*x[0]+par[1]*x[0]+par[2];

  return valLandau;
}

//__________________________________________________________________________________________________
Double_t funcpoly16v(Double_t* x){

  //0.05 

  Double_t par[3] = {-0.0008928571429,0.013392857,1};

  // sum landau + gaus with identical mean

  Double_t valLandau = par[0]*x[0]*x[0]+par[1]*x[0]+par[2];

  return valLandau;
}
//_____________________________________________________________________________________________________
Double_t funcpoly12v(Double_t* x){

  //0.05

  Double_t par[3] = {-0.001666667,0.018333,1};

  // sum landau + gaus with identical mean

  Double_t valLandau = par[0]*x[0]*x[0]+par[1]*x[0]+par[2];

  return valLandau;
}
//___________________________________________________________________________________________________
Double_t funcpoly144v(Double_t* x){

  //0.05

  Double_t par[3] = {-0.000009780907668,0.001398669797,1};

  // sum landau + gaus with identical mean

  Double_t valLandau = par[0]*x[0]*x[0]+par[1]*x[0]+par[2];

  return valLandau;
}
//__________________________________________________________________________________________________
TObject* CreatePadObject(const char* shortName, const char* description, Float_t value)
{
  AliTRDCalPad *calPad = new AliTRDCalPad(shortName, description);
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det)
    {
      AliTRDCalROC *calROC = calPad->GetCalROC(det);
      for (Int_t channel=0; channel<calROC->GetNchannels(); ++channel){
	calROC->SetValue(channel, value);
      }
    }
  return calPad;
}
//___________________________________________________________________________________________________
TObject* CreatePadObjectRandom(const char* shortName, const char* description, Float_t mean, Float_t sigma)
{
  AliTRDCalPad *calPad = new AliTRDCalPad(shortName, description);
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det)
    {
    
      AliTRDCalROC *calROC = calPad->GetCalROC(det);
      for (Int_t channel=0; channel<calROC->GetNchannels(); ++channel){
	Double_t value = gRandom->Gaus(mean,sigma);
	//cout << "value: " << value << endl;
	//if(value < 0) calROC->SetValue(channel, 0);
	calROC->SetValue(channel, value);
      }
    }
  
  return calPad;
}
//_______________________________________________________________________________________
TObject* CreatePadObjectRandomv(const char* shortName, const char* description, Float_t mean, Float_t sigma)
{
  AliTRDCalPad *calPad = new AliTRDCalPad(shortName, description);
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det)
    {
      vav[det]=0.0;
      Int_t nb = 0;
      AliTRDCalROC *calROC = calPad->GetCalROC(det);
      for (Int_t channel=0; channel<calROC->GetNchannels(); ++channel){
	Double_t value = gRandom->Gaus(mean,sigma);
	vav[det] += value;
	nb++;
	//cout << "value: " << value << endl;
	//if(value < 0) calROC->SetValue(channel, 0);
	calROC->SetValue(channel, value);
      }
      vav[det] /= nb;
      for (Int_t channel=0; channel<calROC->GetNchannels(); ++channel){
	Double_t value = calROC->GetValue(channel);
      	//cout << "value: " << value << endl;
	//if(value < 0) calROC->SetValue(channel, 0);
	calROC->SetValue(channel, value/vav[det]);
      }
    }
  
  return calPad;
}
//____________________________________________________________________________________________________
TObject* CreatePadObjectbridge(const char* shortName, const char* description)
{
  AliTRDCalPad *calPad = new AliTRDCalPad(shortName, description);
  Double_t x[2];
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det)
    {
  
      AliTRDCalROC *calROC = calPad->GetCalROC(det);
      Int_t rowMax = calROC->GetNrows();
      Int_t colMax = calROC->GetNcols();
      gainav[det] = 0.0;   

      // premier calcul
      for(Int_t row = 0; row < rowMax; ++row){
	for(Int_t col = 0; col < colMax; ++col){
	  x[0] = row;
	  x[1] = col;
	  if(rowMax == 12) {
	    Double_t value = funcpoly12(&x[0])*funcpoly144(&x[1]);
	    calROC->SetValue(col,row,value);
	    gainav[det] += value;
	  }
	  else {
	    Double_t value = funcpoly16(&x[0])*funcpoly144(&x[1]);
	    calROC->SetValue(col,row,value);
	    gainav[det] += value;
	  }
	}//col
      }//row
      gainav[det] /= (rowMax*colMax);

      //deuxieme calcul
      for(Int_t row = 0; row < rowMax; ++row){
	for(Int_t col = 0; col < colMax; ++col){
	  x[0] = row;
	  x[1] = col;
	  //Double_t value = funcpoly12(&x[0])*funcpoly144(&x[1]);
	  Double_t value = calROC->GetValue(col,row);
	  calROC->SetValue(col,row,value/gainav[det]);
	  //gainav[det] += value;
	}//col
      }//row

    }//det
  
  return calPad;
}
//__________________________________________________________________________________________
TObject* CreatePadObjectbridgev(const char* shortName, const char* description)
{
  AliTRDCalPad *calPad = new AliTRDCalPad(shortName, description);
  Double_t x[2];
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det)
    {
  
      AliTRDCalROC *calROC = calPad->GetCalROC(det);
      Int_t rowMax = calROC->GetNrows();
      Int_t colMax = calROC->GetNcols();
      vav[det] = 0.0;

      // premiere calcul
      for(Int_t row = 0; row < rowMax; ++row){
	for(Int_t col = 0; col < colMax; ++col){
	  x[0] = row;
	  x[1] = col;
	  if(rowMax == 12) {
	    Double_t value = funcpoly12v(&x[0])*funcpoly144v(&x[1]);
	    calROC->SetValue(col,row,value);
	    vav[det] += value;
	  }
	  else {
	    Double_t value = funcpoly16v(&x[0])*funcpoly144v(&x[1]);
	    calROC->SetValue(col,row,value);
	    vav[det] += value;
	  }
	}//col
      }//row
      vav[det] /= (rowMax*colMax);

      //deuxieme calcul
      for(Int_t row = 0; row < rowMax; ++row){
	for(Int_t col = 0; col < colMax; ++col){
	  x[0] = row;
	  x[1] = col;
	
	  //Double_t value = funcpoly12v(&x[0])*funcpoly144v(&x[1]);
	  Double_t value = calROC->GetValue(col,row);
	  calROC->SetValue(col,row,value/vav[det]);
	
	}//col
      }//row

    }//det
  
  return calPad;
}
//___________________________________________________________________________________________________
TObject* CreateDetObject(const char* shortName, const char* description, Float_t value)
{
  AliTRDCalDet *object = new AliTRDCalDet(shortName, description);
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det)
    object->SetValue(det, value);
  return object;
}
//___________________________________________________________________________________________________
TObject* CreateDetObjectRandom(const char* shortName, const char* description, Float_t mean, Float_t sigma)
{
  AliTRDCalDet *object = new AliTRDCalDet(shortName, description);
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det){
    Double_t value = gRandom->Gaus(mean,sigma);
    //cout << "value: " << value << endl;
    object->SetValue(det, value);
    //else cout << "value negative!" << endl;
  }
  return object;
}
//___________________________________________________________________________________________________
TObject* CreateDetObjectRandomg(const char* shortName, const char* description, Float_t mean, Float_t sigma)
{
  AliTRDCalDet *object = new AliTRDCalDet(shortName, description);
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det){
    Double_t value = gRandom->Gaus(mean,sigma);
    //cout << "value: " << value << endl;
    object->SetValue(det, value/gainav[det]);
    //else cout << "value negative!" << endl;
  }
  return object;
}
//___________________________________________________________________________________________________
TObject* CreateDetObjectRandomv(const char* shortName, const char* description, Float_t mean, Float_t sigma)
{
  AliTRDCalDet *object = new AliTRDCalDet(shortName, description);
  for (Int_t det=0; det<AliTRDgeometry::kNdet; ++det){
    Double_t value = gRandom->Gaus(mean,sigma);
    //cout << "value: " << value << endl;
    object->SetValue(det, value/vav[det]);
    //else cout << "value negative!" << endl;
  }
  return object;
}
//___________________________________________________________________________________________________
AliCDBMetaData* CreateMetaObject(const char* objectClassName)
{
  AliCDBMetaData *md1= new AliCDBMetaData(); 
  md1->SetObjectClassName(objectClassName);
  md1->SetResponsible("Raphaelle Bailhache");
  //md1->SetBeamPeriod(1);
  //md1->SetAliRootVersion("head"); //root version
  md1->SetComment("residual database TRD");
  
  return md1;
}
//___________________________________________________________________________________________________
void StoreObject(const char* cdbPath, TObject* object, AliCDBMetaData* metaData)
{
  AliCDBId id1(cdbPath, gkDummyRun, 999999999); 
  id1.SetVersion(1);
  gStorLoc->Put(object, id1, metaData); 
}
//___________________________________________________________________________________________________
void AliTRDCreate(Bool_t residual)
{
 
  //************************random generator******************************************
  TDatime *datime = new TDatime();
  Int_t time = datime->GetTime();
  Int_t date = datime->GetDate();
  Int_t pid  = gSystem->GetPid();
  delete datime;
  Int_t seed = TMath::Abs(10000 * pid + time - date);
  gRandom->SetSeed(seed); 

  //*************************************************************************

  cout << endl << "TRD :: Creating dummy CDB with event number " << gkDummyRun << endl;
  
  AliCDBManager *man = AliCDBManager::Instance();
  gStorLoc = man->GetStorage("local://.");
  if (!gStorLoc)
    return;

  TObject* obj = 0;
  AliCDBMetaData* metaData = 0;

  if(!residual)
    {

      //Pad////////////////////////////////////////////////////////////////////

      metaData = CreateMetaObject("AliTRDCalPad");
      
      obj = CreatePadObjectT0Random("LocalT0","T0 (local variations)", 0, 0.2);
      StoreObject("TRD/Calib/LocalT0", obj, metaData);

      obj = CreatePadObjectbridge("LocalGainFactor","GainFactor (local variations)");
      StoreObject("TRD/Calib/LocalGainFactor", obj, metaData);

      obj = CreatePadObjectbridgev("LocalVdrift","TRD drift velocities (local variations)");
      StoreObject("TRD/Calib/LocalVdrift", obj, metaData);
      
      //Det//////////////////////////////////////////////////////////////////
      
      metaData = CreateMetaObject("AliTRDCalDet");
      
      obj = CreateDetObjectRandom("ChamberVdrift","TRD drift velocities (detector value)", 1.5, 0.08);
      StoreObject("TRD/Calib/ChamberVdrift", obj, metaData);

      obj = CreateDetT0Object("ChamberT0","T0 (detector value)");
      StoreObject("TRD/Calib/ChamberT0", obj, metaData);
      
      obj = CreateDetObjectRandom("ChamberGainFactor","GainFactor (detector value)", 1.0, 0.18);
      StoreObject("TRD/Calib/ChamberGainFactor", obj, metaData);

    }
  else
    {

      //Pad////////////////////////////////////////////////////////////////////
  
      metaData = CreateMetaObject("AliTRDCalPad");
      
      obj = CreatePadObjectRandomv("LocalVdrift","TRD drift velocities (local variations)", 1.5, 0.015);
      StoreObject("TRD/Calib/LocalVdrift", obj, metaData);
  
      obj = CreatePadObjectT0Random("LocalT0","T0 (local variations)", 0, 0.02);
      StoreObject("TRD/Calib/LocalT0", obj, metaData);

      obj = CreatePadObjectRandom("LocalGainFactor","GainFactor (local variations)", 1, 0.01);
      StoreObject("TRD/Calib/LocalGainFactor", obj, metaData);
  
      //Det//////////////////////////////////////////////////////////////////
      
      metaData = CreateMetaObject("AliTRDCalDet");
  
      obj = CreateDetT0Object("ChamberT0","T0 (detector value)");
      StoreObject("TRD/Calib/ChamberT0", obj, metaData);
      
    }  

}
 AliTRDCreate.C:1
 AliTRDCreate.C:2
 AliTRDCreate.C:3
 AliTRDCreate.C:4
 AliTRDCreate.C:5
 AliTRDCreate.C:6
 AliTRDCreate.C:7
 AliTRDCreate.C:8
 AliTRDCreate.C:9
 AliTRDCreate.C:10
 AliTRDCreate.C:11
 AliTRDCreate.C:12
 AliTRDCreate.C:13
 AliTRDCreate.C:14
 AliTRDCreate.C:15
 AliTRDCreate.C:16
 AliTRDCreate.C:17
 AliTRDCreate.C:18
 AliTRDCreate.C:19
 AliTRDCreate.C:20
 AliTRDCreate.C:21
 AliTRDCreate.C:22
 AliTRDCreate.C:23
 AliTRDCreate.C:24
 AliTRDCreate.C:25
 AliTRDCreate.C:26
 AliTRDCreate.C:27
 AliTRDCreate.C:28
 AliTRDCreate.C:29
 AliTRDCreate.C:30
 AliTRDCreate.C:31
 AliTRDCreate.C:32
 AliTRDCreate.C:33
 AliTRDCreate.C:34
 AliTRDCreate.C:35
 AliTRDCreate.C:36
 AliTRDCreate.C:37
 AliTRDCreate.C:38
 AliTRDCreate.C:39
 AliTRDCreate.C:40
 AliTRDCreate.C:41
 AliTRDCreate.C:42
 AliTRDCreate.C:43
 AliTRDCreate.C:44
 AliTRDCreate.C:45
 AliTRDCreate.C:46
 AliTRDCreate.C:47
 AliTRDCreate.C:48
 AliTRDCreate.C:49
 AliTRDCreate.C:50
 AliTRDCreate.C:51
 AliTRDCreate.C:52
 AliTRDCreate.C:53
 AliTRDCreate.C:54
 AliTRDCreate.C:55
 AliTRDCreate.C:56
 AliTRDCreate.C:57
 AliTRDCreate.C:58
 AliTRDCreate.C:59
 AliTRDCreate.C:60
 AliTRDCreate.C:61
 AliTRDCreate.C:62
 AliTRDCreate.C:63
 AliTRDCreate.C:64
 AliTRDCreate.C:65
 AliTRDCreate.C:66
 AliTRDCreate.C:67
 AliTRDCreate.C:68
 AliTRDCreate.C:69
 AliTRDCreate.C:70
 AliTRDCreate.C:71
 AliTRDCreate.C:72
 AliTRDCreate.C:73
 AliTRDCreate.C:74
 AliTRDCreate.C:75
 AliTRDCreate.C:76
 AliTRDCreate.C:77
 AliTRDCreate.C:78
 AliTRDCreate.C:79
 AliTRDCreate.C:80
 AliTRDCreate.C:81
 AliTRDCreate.C:82
 AliTRDCreate.C:83
 AliTRDCreate.C:84
 AliTRDCreate.C:85
 AliTRDCreate.C:86
 AliTRDCreate.C:87
 AliTRDCreate.C:88
 AliTRDCreate.C:89
 AliTRDCreate.C:90
 AliTRDCreate.C:91
 AliTRDCreate.C:92
 AliTRDCreate.C:93
 AliTRDCreate.C:94
 AliTRDCreate.C:95
 AliTRDCreate.C:96
 AliTRDCreate.C:97
 AliTRDCreate.C:98
 AliTRDCreate.C:99
 AliTRDCreate.C:100
 AliTRDCreate.C:101
 AliTRDCreate.C:102
 AliTRDCreate.C:103
 AliTRDCreate.C:104
 AliTRDCreate.C:105
 AliTRDCreate.C:106
 AliTRDCreate.C:107
 AliTRDCreate.C:108
 AliTRDCreate.C:109
 AliTRDCreate.C:110
 AliTRDCreate.C:111
 AliTRDCreate.C:112
 AliTRDCreate.C:113
 AliTRDCreate.C:114
 AliTRDCreate.C:115
 AliTRDCreate.C:116
 AliTRDCreate.C:117
 AliTRDCreate.C:118
 AliTRDCreate.C:119
 AliTRDCreate.C:120
 AliTRDCreate.C:121
 AliTRDCreate.C:122
 AliTRDCreate.C:123
 AliTRDCreate.C:124
 AliTRDCreate.C:125
 AliTRDCreate.C:126
 AliTRDCreate.C:127
 AliTRDCreate.C:128
 AliTRDCreate.C:129
 AliTRDCreate.C:130
 AliTRDCreate.C:131
 AliTRDCreate.C:132
 AliTRDCreate.C:133
 AliTRDCreate.C:134
 AliTRDCreate.C:135
 AliTRDCreate.C:136
 AliTRDCreate.C:137
 AliTRDCreate.C:138
 AliTRDCreate.C:139
 AliTRDCreate.C:140
 AliTRDCreate.C:141
 AliTRDCreate.C:142
 AliTRDCreate.C:143
 AliTRDCreate.C:144
 AliTRDCreate.C:145
 AliTRDCreate.C:146
 AliTRDCreate.C:147
 AliTRDCreate.C:148
 AliTRDCreate.C:149
 AliTRDCreate.C:150
 AliTRDCreate.C:151
 AliTRDCreate.C:152
 AliTRDCreate.C:153
 AliTRDCreate.C:154
 AliTRDCreate.C:155
 AliTRDCreate.C:156
 AliTRDCreate.C:157
 AliTRDCreate.C:158
 AliTRDCreate.C:159
 AliTRDCreate.C:160
 AliTRDCreate.C:161
 AliTRDCreate.C:162
 AliTRDCreate.C:163
 AliTRDCreate.C:164
 AliTRDCreate.C:165
 AliTRDCreate.C:166
 AliTRDCreate.C:167
 AliTRDCreate.C:168
 AliTRDCreate.C:169
 AliTRDCreate.C:170
 AliTRDCreate.C:171
 AliTRDCreate.C:172
 AliTRDCreate.C:173
 AliTRDCreate.C:174
 AliTRDCreate.C:175
 AliTRDCreate.C:176
 AliTRDCreate.C:177
 AliTRDCreate.C:178
 AliTRDCreate.C:179
 AliTRDCreate.C:180
 AliTRDCreate.C:181
 AliTRDCreate.C:182
 AliTRDCreate.C:183
 AliTRDCreate.C:184
 AliTRDCreate.C:185
 AliTRDCreate.C:186
 AliTRDCreate.C:187
 AliTRDCreate.C:188
 AliTRDCreate.C:189
 AliTRDCreate.C:190
 AliTRDCreate.C:191
 AliTRDCreate.C:192
 AliTRDCreate.C:193
 AliTRDCreate.C:194
 AliTRDCreate.C:195
 AliTRDCreate.C:196
 AliTRDCreate.C:197
 AliTRDCreate.C:198
 AliTRDCreate.C:199
 AliTRDCreate.C:200
 AliTRDCreate.C:201
 AliTRDCreate.C:202
 AliTRDCreate.C:203
 AliTRDCreate.C:204
 AliTRDCreate.C:205
 AliTRDCreate.C:206
 AliTRDCreate.C:207
 AliTRDCreate.C:208
 AliTRDCreate.C:209
 AliTRDCreate.C:210
 AliTRDCreate.C:211
 AliTRDCreate.C:212
 AliTRDCreate.C:213
 AliTRDCreate.C:214
 AliTRDCreate.C:215
 AliTRDCreate.C:216
 AliTRDCreate.C:217
 AliTRDCreate.C:218
 AliTRDCreate.C:219
 AliTRDCreate.C:220
 AliTRDCreate.C:221
 AliTRDCreate.C:222
 AliTRDCreate.C:223
 AliTRDCreate.C:224
 AliTRDCreate.C:225
 AliTRDCreate.C:226
 AliTRDCreate.C:227
 AliTRDCreate.C:228
 AliTRDCreate.C:229
 AliTRDCreate.C:230
 AliTRDCreate.C:231
 AliTRDCreate.C:232
 AliTRDCreate.C:233
 AliTRDCreate.C:234
 AliTRDCreate.C:235
 AliTRDCreate.C:236
 AliTRDCreate.C:237
 AliTRDCreate.C:238
 AliTRDCreate.C:239
 AliTRDCreate.C:240
 AliTRDCreate.C:241
 AliTRDCreate.C:242
 AliTRDCreate.C:243
 AliTRDCreate.C:244
 AliTRDCreate.C:245
 AliTRDCreate.C:246
 AliTRDCreate.C:247
 AliTRDCreate.C:248
 AliTRDCreate.C:249
 AliTRDCreate.C:250
 AliTRDCreate.C:251
 AliTRDCreate.C:252
 AliTRDCreate.C:253
 AliTRDCreate.C:254
 AliTRDCreate.C:255
 AliTRDCreate.C:256
 AliTRDCreate.C:257
 AliTRDCreate.C:258
 AliTRDCreate.C:259
 AliTRDCreate.C:260
 AliTRDCreate.C:261
 AliTRDCreate.C:262
 AliTRDCreate.C:263
 AliTRDCreate.C:264
 AliTRDCreate.C:265
 AliTRDCreate.C:266
 AliTRDCreate.C:267
 AliTRDCreate.C:268
 AliTRDCreate.C:269
 AliTRDCreate.C:270
 AliTRDCreate.C:271
 AliTRDCreate.C:272
 AliTRDCreate.C:273
 AliTRDCreate.C:274
 AliTRDCreate.C:275
 AliTRDCreate.C:276
 AliTRDCreate.C:277
 AliTRDCreate.C:278
 AliTRDCreate.C:279
 AliTRDCreate.C:280
 AliTRDCreate.C:281
 AliTRDCreate.C:282
 AliTRDCreate.C:283
 AliTRDCreate.C:284
 AliTRDCreate.C:285
 AliTRDCreate.C:286
 AliTRDCreate.C:287
 AliTRDCreate.C:288
 AliTRDCreate.C:289
 AliTRDCreate.C:290
 AliTRDCreate.C:291
 AliTRDCreate.C:292
 AliTRDCreate.C:293
 AliTRDCreate.C:294
 AliTRDCreate.C:295
 AliTRDCreate.C:296
 AliTRDCreate.C:297
 AliTRDCreate.C:298
 AliTRDCreate.C:299
 AliTRDCreate.C:300
 AliTRDCreate.C:301
 AliTRDCreate.C:302
 AliTRDCreate.C:303
 AliTRDCreate.C:304
 AliTRDCreate.C:305
 AliTRDCreate.C:306
 AliTRDCreate.C:307
 AliTRDCreate.C:308
 AliTRDCreate.C:309
 AliTRDCreate.C:310
 AliTRDCreate.C:311
 AliTRDCreate.C:312
 AliTRDCreate.C:313
 AliTRDCreate.C:314
 AliTRDCreate.C:315
 AliTRDCreate.C:316
 AliTRDCreate.C:317
 AliTRDCreate.C:318
 AliTRDCreate.C:319
 AliTRDCreate.C:320
 AliTRDCreate.C:321
 AliTRDCreate.C:322
 AliTRDCreate.C:323
 AliTRDCreate.C:324
 AliTRDCreate.C:325
 AliTRDCreate.C:326
 AliTRDCreate.C:327
 AliTRDCreate.C:328
 AliTRDCreate.C:329
 AliTRDCreate.C:330
 AliTRDCreate.C:331
 AliTRDCreate.C:332
 AliTRDCreate.C:333
 AliTRDCreate.C:334
 AliTRDCreate.C:335
 AliTRDCreate.C:336
 AliTRDCreate.C:337
 AliTRDCreate.C:338
 AliTRDCreate.C:339
 AliTRDCreate.C:340
 AliTRDCreate.C:341
 AliTRDCreate.C:342
 AliTRDCreate.C:343
 AliTRDCreate.C:344
 AliTRDCreate.C:345
 AliTRDCreate.C:346
 AliTRDCreate.C:347
 AliTRDCreate.C:348
 AliTRDCreate.C:349
 AliTRDCreate.C:350
 AliTRDCreate.C:351
 AliTRDCreate.C:352
 AliTRDCreate.C:353
 AliTRDCreate.C:354
 AliTRDCreate.C:355
 AliTRDCreate.C:356
 AliTRDCreate.C:357
 AliTRDCreate.C:358
 AliTRDCreate.C:359
 AliTRDCreate.C:360
 AliTRDCreate.C:361
 AliTRDCreate.C:362
 AliTRDCreate.C:363
 AliTRDCreate.C:364
 AliTRDCreate.C:365
 AliTRDCreate.C:366
 AliTRDCreate.C:367
 AliTRDCreate.C:368
 AliTRDCreate.C:369
 AliTRDCreate.C:370
 AliTRDCreate.C:371
 AliTRDCreate.C:372
 AliTRDCreate.C:373
 AliTRDCreate.C:374
 AliTRDCreate.C:375
 AliTRDCreate.C:376
 AliTRDCreate.C:377
 AliTRDCreate.C:378
 AliTRDCreate.C:379
 AliTRDCreate.C:380
 AliTRDCreate.C:381
 AliTRDCreate.C:382
 AliTRDCreate.C:383
 AliTRDCreate.C:384
 AliTRDCreate.C:385
 AliTRDCreate.C:386
 AliTRDCreate.C:387
 AliTRDCreate.C:388
 AliTRDCreate.C:389
 AliTRDCreate.C:390
 AliTRDCreate.C:391
 AliTRDCreate.C:392
 AliTRDCreate.C:393
 AliTRDCreate.C:394
 AliTRDCreate.C:395
 AliTRDCreate.C:396
 AliTRDCreate.C:397
 AliTRDCreate.C:398
 AliTRDCreate.C:399
 AliTRDCreate.C:400
 AliTRDCreate.C:401
 AliTRDCreate.C:402
 AliTRDCreate.C:403
 AliTRDCreate.C:404
 AliTRDCreate.C:405
 AliTRDCreate.C:406
 AliTRDCreate.C:407
 AliTRDCreate.C:408
 AliTRDCreate.C:409
 AliTRDCreate.C:410
 AliTRDCreate.C:411
 AliTRDCreate.C:412
 AliTRDCreate.C:413
 AliTRDCreate.C:414
 AliTRDCreate.C:415
 AliTRDCreate.C:416
 AliTRDCreate.C:417
 AliTRDCreate.C:418
 AliTRDCreate.C:419
 AliTRDCreate.C:420
 AliTRDCreate.C:421
 AliTRDCreate.C:422
 AliTRDCreate.C:423
 AliTRDCreate.C:424
 AliTRDCreate.C:425
 AliTRDCreate.C:426
 AliTRDCreate.C:427
 AliTRDCreate.C:428
 AliTRDCreate.C:429
 AliTRDCreate.C:430
 AliTRDCreate.C:431
 AliTRDCreate.C:432
 AliTRDCreate.C:433
 AliTRDCreate.C:434
 AliTRDCreate.C:435
 AliTRDCreate.C:436
 AliTRDCreate.C:437
 AliTRDCreate.C:438
 AliTRDCreate.C:439
 AliTRDCreate.C:440
 AliTRDCreate.C:441
 AliTRDCreate.C:442
 AliTRDCreate.C:443
 AliTRDCreate.C:444
 AliTRDCreate.C:445
 AliTRDCreate.C:446
 AliTRDCreate.C:447
 AliTRDCreate.C:448
 AliTRDCreate.C:449
 AliTRDCreate.C:450
 AliTRDCreate.C:451
 AliTRDCreate.C:452
 AliTRDCreate.C:453
 AliTRDCreate.C:454
 AliTRDCreate.C:455
 AliTRDCreate.C:456
 AliTRDCreate.C:457
 AliTRDCreate.C:458
 AliTRDCreate.C:459
 AliTRDCreate.C:460
 AliTRDCreate.C:461
 AliTRDCreate.C:462
 AliTRDCreate.C:463
 AliTRDCreate.C:464
 AliTRDCreate.C:465
 AliTRDCreate.C:466