ROOT logo
AliCFContainer* CreateCorrectionContainer(const char* string) {

  const UInt_t nVar   = 5 ; //number of variables on the grid 
                            //(pt=0, eta=1, phi=2, Z_Vertex=3, event multiplicity=4)
  const UInt_t nStep  = 2 ; //number of selection steps :2 (ESD=0,AOD=1)
  const UInt_t nBin[nVar] = //number of bins for each variable
    {
      10 , //bins in pt
      20 , //bins in eta
      20 , //bins in phi
      20 , //bins in Z_Vertex
      20   //bins in multiplicity
    };
  
  //values for bin lower bounds
  Double_t valuesMinMax[nVar][2] ;
  valuesMinMax[0][0] =   0.0 ; // pt min (GeV/c)
  valuesMinMax[0][1] =  10.0 ; // pt max (GeV/c)
  valuesMinMax[1][0] = - 2.5 ; // eta min
  valuesMinMax[1][1] =   2.5 ; // eta max
  valuesMinMax[2][0] =   0.0 ; // phi min (rad)
  valuesMinMax[2][1] = 2*TMath::Pi() ; // phi max (rad)
  valuesMinMax[3][0] = -20.0 ; // zVtx min (cm)
  valuesMinMax[3][1] =  20.0 ; // zVtx max (cm)
  valuesMinMax[4][0] =   0.0 ; // zVtx min (cm)
  valuesMinMax[4][1] = 200.0 ; // zVtx max (cm)

  //arrays for lower bounds :
  Double_t *binLim[nVar] ;
  for (UInt_t iVar=0; iVar<nVar; iVar++) binLim[iVar] = new Double_t[nBin[iVar]+1];

  // fill bin limits using uniform binning between the defined min and max values.
  for (UInt_t iVar=0; iVar<nVar; iVar++) 
    for (UInt_t iBin=0; iBin<=nBin[iVar]; iBin++) 
      binLim[iVar][iBin] = valuesMinMax[iVar][0] + (valuesMinMax[iVar][1]-valuesMinMax[iVar][0])/nBin[iVar]*iBin ;

  //for non-uniform binning :

  //pt
  binLim[0][0]  =  0.0 ;
  binLim[0][1]  =  0.2 ;
  binLim[0][2]  =  0.4 ;
  binLim[0][3]  =  0.7 ;
  binLim[0][4]  =  1.0 ;
  binLim[0][5]  =  1.5 ;
  binLim[0][6]  =  2.0 ;
  binLim[0][7]  =  3.0 ;
  binLim[0][8]  =  4.0 ;
  binLim[0][9]  =  6.0 ;
  binLim[0][10] = 10.0 ;
  
  //multiplicity
  binLim[4][0]  =   0.0 ;
  binLim[4][1]  =   2.0 ;
  binLim[4][2]  =   4.0 ;
  binLim[4][3]  =   6.0 ;
  binLim[4][4]  =   8.0 ;
  binLim[4][5]  =  10.0 ;
  binLim[4][6]  =  15.0 ;
  binLim[4][7]  =  20.0 ;
  binLim[4][8]  =  25.0 ;
  binLim[4][9]  =  30.0 ;
  binLim[4][10] =  35.0 ;
  binLim[4][11] =  40.0 ;
  binLim[4][12] =  50.0 ;
  binLim[4][13] =  60.0 ;
  binLim[4][14] =  70.0 ;
  binLim[4][15] =  80.0 ;
  binLim[4][16] = 100.0 ;
  binLim[4][17] = 120.0 ;
  binLim[4][18] = 140.0 ;
  binLim[4][19] = 170.0 ;
  binLim[4][20] = 200.0 ;
  
  // create a container
  char contName[50];
  char contDesc[50];
  sprintf(contName,"container_%s",string);
  sprintf(contDesc,"correction container for %s",string);
  AliCFContainer* container = new AliCFContainer (contName,contDesc,nStep,nVar,(Int_t*)nBin) ;
  // set the bin limits
  for (UInt_t iVar=0; iVar<nVar; iVar++) container->SetBinLimits(iVar,binLim[iVar]);
  return container;
}
 CreateCorrectionContainer.C:1
 CreateCorrectionContainer.C:2
 CreateCorrectionContainer.C:3
 CreateCorrectionContainer.C:4
 CreateCorrectionContainer.C:5
 CreateCorrectionContainer.C:6
 CreateCorrectionContainer.C:7
 CreateCorrectionContainer.C:8
 CreateCorrectionContainer.C:9
 CreateCorrectionContainer.C:10
 CreateCorrectionContainer.C:11
 CreateCorrectionContainer.C:12
 CreateCorrectionContainer.C:13
 CreateCorrectionContainer.C:14
 CreateCorrectionContainer.C:15
 CreateCorrectionContainer.C:16
 CreateCorrectionContainer.C:17
 CreateCorrectionContainer.C:18
 CreateCorrectionContainer.C:19
 CreateCorrectionContainer.C:20
 CreateCorrectionContainer.C:21
 CreateCorrectionContainer.C:22
 CreateCorrectionContainer.C:23
 CreateCorrectionContainer.C:24
 CreateCorrectionContainer.C:25
 CreateCorrectionContainer.C:26
 CreateCorrectionContainer.C:27
 CreateCorrectionContainer.C:28
 CreateCorrectionContainer.C:29
 CreateCorrectionContainer.C:30
 CreateCorrectionContainer.C:31
 CreateCorrectionContainer.C:32
 CreateCorrectionContainer.C:33
 CreateCorrectionContainer.C:34
 CreateCorrectionContainer.C:35
 CreateCorrectionContainer.C:36
 CreateCorrectionContainer.C:37
 CreateCorrectionContainer.C:38
 CreateCorrectionContainer.C:39
 CreateCorrectionContainer.C:40
 CreateCorrectionContainer.C:41
 CreateCorrectionContainer.C:42
 CreateCorrectionContainer.C:43
 CreateCorrectionContainer.C:44
 CreateCorrectionContainer.C:45
 CreateCorrectionContainer.C:46
 CreateCorrectionContainer.C:47
 CreateCorrectionContainer.C:48
 CreateCorrectionContainer.C:49
 CreateCorrectionContainer.C:50
 CreateCorrectionContainer.C:51
 CreateCorrectionContainer.C:52
 CreateCorrectionContainer.C:53
 CreateCorrectionContainer.C:54
 CreateCorrectionContainer.C:55
 CreateCorrectionContainer.C:56
 CreateCorrectionContainer.C:57
 CreateCorrectionContainer.C:58
 CreateCorrectionContainer.C:59
 CreateCorrectionContainer.C:60
 CreateCorrectionContainer.C:61
 CreateCorrectionContainer.C:62
 CreateCorrectionContainer.C:63
 CreateCorrectionContainer.C:64
 CreateCorrectionContainer.C:65
 CreateCorrectionContainer.C:66
 CreateCorrectionContainer.C:67
 CreateCorrectionContainer.C:68
 CreateCorrectionContainer.C:69
 CreateCorrectionContainer.C:70
 CreateCorrectionContainer.C:71
 CreateCorrectionContainer.C:72
 CreateCorrectionContainer.C:73
 CreateCorrectionContainer.C:74
 CreateCorrectionContainer.C:75
 CreateCorrectionContainer.C:76
 CreateCorrectionContainer.C:77
 CreateCorrectionContainer.C:78
 CreateCorrectionContainer.C:79
 CreateCorrectionContainer.C:80
 CreateCorrectionContainer.C:81
 CreateCorrectionContainer.C:82
 CreateCorrectionContainer.C:83
 CreateCorrectionContainer.C:84
 CreateCorrectionContainer.C:85