ROOT logo
TH2* GetHistogramExample(int run=153323){ //In order to get consistent binning
  
/*
For 2012-13:  /alice/data/2012/OCDB/EMCAL/Calib/Data/Run177115_999999999_v2_s0.root
For 2011:  /alice/data/2011/OCDB/EMCAL/Calib/Data/Run144484_999999999_v3_s0.root
For 2010: /alice/data/2010/OCDB/EMCAL/Calib/Data/Run113461_999999999_v3_s0.root
*/
  TString pathOADB = "$ALICE_ROOT/OADB/EMCAL";
  AliOADBContainer *contRF=new AliOADBContainer("");
  contRF->InitFromFile(Form("%s/EMCALRecalib.root",pathOADB.Data()),"AliEMCALRecalib");
  
  TH2F *h;
  TString pass = "pass1";
 
  TObjArray *recal=(TObjArray*)contRF->GetObject(run);
  if(!recal)
  {
    printf("Energy recalibration OADB not found  3\n");
    return;
  }
  
  TObjArray *recalpass=(TObjArray*)recal->FindObject(pass);
  if(!recalpass)
  {
    printf("Energy recalibration OADB not found 2\n");
    return;
  }
  
  TObjArray *recalib=(TObjArray*)recalpass->FindObject("Recalib");
  if(!recalib)
  {
    printf("Energy recalibration OADB not found 1\n");
    return;
  }
  h = (TH2F*)recalib->FindObject("EMCALRecalFactors_SM1");
  h->SetName("hbuffer");
  h->Reset();
  return h;
}

TObjArray *GetArrayEnergy(Int_t run=153323,TString name="Run113461_999999999_v3_s0.root",TString arrname="array",Float_t divFactor=1){

  TString pathOADB = "$ALICE_ROOT/OADB/EMCAL";
  gSystem->Load("libOADB");  
  //gROOT->LoadMacro("LoadLibraries.C");
  LoadLibraries();  
  // **** Loading the root files with Recalibration Factors:
  TFile* f	= new TFile(name);
 
  // Instantiate EMCAL geometry for the first time
  AliEMCALGeometry *geom;
  if     (run < 140000) geom = new AliEMCALGeometry("EMCAL_FIRSTYEARV1","EMCAL"); // 2010
  else if(run < 198000) geom = new AliEMCALGeometry("EMCAL_COMPLETEV1","EMCAL");  // 2011-2012-2013
  else                  geom = new AliEMCALGeometry("EMCAL_COMPLETE12SMV1_DCAL_8SM","EMCAL"); // Run2
 
  const Int_t nSM = static_cast<const Int_t> (geom->GetNumberOfSuperModules());
  TObjArray *array = new TObjArray(nSM);
  array->SetName(arrname);
  TH2F *hbuffer = GetHistogramExample(153323); //Just for the binning
 
  TH2F *h[12];
  hbuffer->SetName("hb");
  for(int i=0;i<nSM;i++){
	h[i] = (TH2F*)hbuffer->Clone(Form("EMCALRecalFactors_SM%d",i));
	h[i]->SetTitle(Form("EMCALRecalFactors_SM%d",i));
  }
  
  AliCDBEntry * cdb = (AliCDBEntry*) f->Get("AliCDBEntry");
  AliEMCALCalibData* cparam = (AliEMCALCalibData*) cdb->GetObject();	
  Int_t nDiff = 0;
  Int_t iCol = -1, iRow = -1, iSM =-1, iMod = -1,iIphi =-1,iIeta = -1;
  for(Int_t i=0;i < nSM*24*48; i++)
  {
    //printf("AbsID %d\n",i);
    geom->GetCellIndex(i,iSM,iMod,iIphi,iIeta);
    geom->GetCellPhiEtaIndexInSModule(iSM,iMod, iIphi, iIeta,iRow,iCol);
    Float_t paramOCDB = -1;
    Float_t paramOADB = -1;
    if(cparam) {
    	paramOCDB = cparam->GetADCchannel(iSM,iCol,iRow);
   		paramOADB = divFactor!=1?paramOCDB/divFactor:paramOCDB;
   		//printf("\n OCDB=%f and OADB=%f",paramOCDB,paramOADB);
    }
  	if(h[iSM]) h[iSM]->SetBinContent(iCol,iRow,paramOADB);
  }
  
  for(int i=0;i<nSM;i++){
	 array->Add(h[i]);
  }
  delete geom;
  delete cparam;
  delete cdb;
  f->Close();
  return array;  
}

 
void CreateEMCAL_OADB_CalibReference(){ 
 
 TObjArray *array12 = GetArrayEnergy(178000,"Run177115_999999999_v2_s0.root","Recalib",1); //last one is division factor
 TObjArray *array10 = GetArrayEnergy(113461,"Run113461_999999999_v3_s0.root","Recalib",1); 
 TObjArray *array11 = GetArrayEnergy(153323,"Run144484_999999999_v3_s0.root","Recalib",1);
 
 // Creating Container 
 AliOADBContainer* con = new AliOADBContainer("AliEMCALRecalib");

 con->AddDefaultObject(*&array10);
 con->AddDefaultObject(*&array11);
 con->AddDefaultObject(*&array12);

// Appending objects to their specific Run number
 con->AppendObject(*&array10,113461,139517);
 con->AppendObject(*&array11,144484,170593);
 con->AppendObject(*&array12,177115,197692);

 con->WriteToFile("EMCALCalibOnlineRef.root");

}
 CreateEMCAL_OADB_CalibReference.C:1
 CreateEMCAL_OADB_CalibReference.C:2
 CreateEMCAL_OADB_CalibReference.C:3
 CreateEMCAL_OADB_CalibReference.C:4
 CreateEMCAL_OADB_CalibReference.C:5
 CreateEMCAL_OADB_CalibReference.C:6
 CreateEMCAL_OADB_CalibReference.C:7
 CreateEMCAL_OADB_CalibReference.C:8
 CreateEMCAL_OADB_CalibReference.C:9
 CreateEMCAL_OADB_CalibReference.C:10
 CreateEMCAL_OADB_CalibReference.C:11
 CreateEMCAL_OADB_CalibReference.C:12
 CreateEMCAL_OADB_CalibReference.C:13
 CreateEMCAL_OADB_CalibReference.C:14
 CreateEMCAL_OADB_CalibReference.C:15
 CreateEMCAL_OADB_CalibReference.C:16
 CreateEMCAL_OADB_CalibReference.C:17
 CreateEMCAL_OADB_CalibReference.C:18
 CreateEMCAL_OADB_CalibReference.C:19
 CreateEMCAL_OADB_CalibReference.C:20
 CreateEMCAL_OADB_CalibReference.C:21
 CreateEMCAL_OADB_CalibReference.C:22
 CreateEMCAL_OADB_CalibReference.C:23
 CreateEMCAL_OADB_CalibReference.C:24
 CreateEMCAL_OADB_CalibReference.C:25
 CreateEMCAL_OADB_CalibReference.C:26
 CreateEMCAL_OADB_CalibReference.C:27
 CreateEMCAL_OADB_CalibReference.C:28
 CreateEMCAL_OADB_CalibReference.C:29
 CreateEMCAL_OADB_CalibReference.C:30
 CreateEMCAL_OADB_CalibReference.C:31
 CreateEMCAL_OADB_CalibReference.C:32
 CreateEMCAL_OADB_CalibReference.C:33
 CreateEMCAL_OADB_CalibReference.C:34
 CreateEMCAL_OADB_CalibReference.C:35
 CreateEMCAL_OADB_CalibReference.C:36
 CreateEMCAL_OADB_CalibReference.C:37
 CreateEMCAL_OADB_CalibReference.C:38
 CreateEMCAL_OADB_CalibReference.C:39
 CreateEMCAL_OADB_CalibReference.C:40
 CreateEMCAL_OADB_CalibReference.C:41
 CreateEMCAL_OADB_CalibReference.C:42
 CreateEMCAL_OADB_CalibReference.C:43
 CreateEMCAL_OADB_CalibReference.C:44
 CreateEMCAL_OADB_CalibReference.C:45
 CreateEMCAL_OADB_CalibReference.C:46
 CreateEMCAL_OADB_CalibReference.C:47
 CreateEMCAL_OADB_CalibReference.C:48
 CreateEMCAL_OADB_CalibReference.C:49
 CreateEMCAL_OADB_CalibReference.C:50
 CreateEMCAL_OADB_CalibReference.C:51
 CreateEMCAL_OADB_CalibReference.C:52
 CreateEMCAL_OADB_CalibReference.C:53
 CreateEMCAL_OADB_CalibReference.C:54
 CreateEMCAL_OADB_CalibReference.C:55
 CreateEMCAL_OADB_CalibReference.C:56
 CreateEMCAL_OADB_CalibReference.C:57
 CreateEMCAL_OADB_CalibReference.C:58
 CreateEMCAL_OADB_CalibReference.C:59
 CreateEMCAL_OADB_CalibReference.C:60
 CreateEMCAL_OADB_CalibReference.C:61
 CreateEMCAL_OADB_CalibReference.C:62
 CreateEMCAL_OADB_CalibReference.C:63
 CreateEMCAL_OADB_CalibReference.C:64
 CreateEMCAL_OADB_CalibReference.C:65
 CreateEMCAL_OADB_CalibReference.C:66
 CreateEMCAL_OADB_CalibReference.C:67
 CreateEMCAL_OADB_CalibReference.C:68
 CreateEMCAL_OADB_CalibReference.C:69
 CreateEMCAL_OADB_CalibReference.C:70
 CreateEMCAL_OADB_CalibReference.C:71
 CreateEMCAL_OADB_CalibReference.C:72
 CreateEMCAL_OADB_CalibReference.C:73
 CreateEMCAL_OADB_CalibReference.C:74
 CreateEMCAL_OADB_CalibReference.C:75
 CreateEMCAL_OADB_CalibReference.C:76
 CreateEMCAL_OADB_CalibReference.C:77
 CreateEMCAL_OADB_CalibReference.C:78
 CreateEMCAL_OADB_CalibReference.C:79
 CreateEMCAL_OADB_CalibReference.C:80
 CreateEMCAL_OADB_CalibReference.C:81
 CreateEMCAL_OADB_CalibReference.C:82
 CreateEMCAL_OADB_CalibReference.C:83
 CreateEMCAL_OADB_CalibReference.C:84
 CreateEMCAL_OADB_CalibReference.C:85
 CreateEMCAL_OADB_CalibReference.C:86
 CreateEMCAL_OADB_CalibReference.C:87
 CreateEMCAL_OADB_CalibReference.C:88
 CreateEMCAL_OADB_CalibReference.C:89
 CreateEMCAL_OADB_CalibReference.C:90
 CreateEMCAL_OADB_CalibReference.C:91
 CreateEMCAL_OADB_CalibReference.C:92
 CreateEMCAL_OADB_CalibReference.C:93
 CreateEMCAL_OADB_CalibReference.C:94
 CreateEMCAL_OADB_CalibReference.C:95
 CreateEMCAL_OADB_CalibReference.C:96
 CreateEMCAL_OADB_CalibReference.C:97
 CreateEMCAL_OADB_CalibReference.C:98
 CreateEMCAL_OADB_CalibReference.C:99
 CreateEMCAL_OADB_CalibReference.C:100
 CreateEMCAL_OADB_CalibReference.C:101
 CreateEMCAL_OADB_CalibReference.C:102
 CreateEMCAL_OADB_CalibReference.C:103
 CreateEMCAL_OADB_CalibReference.C:104
 CreateEMCAL_OADB_CalibReference.C:105
 CreateEMCAL_OADB_CalibReference.C:106
 CreateEMCAL_OADB_CalibReference.C:107
 CreateEMCAL_OADB_CalibReference.C:108
 CreateEMCAL_OADB_CalibReference.C:109
 CreateEMCAL_OADB_CalibReference.C:110
 CreateEMCAL_OADB_CalibReference.C:111
 CreateEMCAL_OADB_CalibReference.C:112
 CreateEMCAL_OADB_CalibReference.C:113
 CreateEMCAL_OADB_CalibReference.C:114
 CreateEMCAL_OADB_CalibReference.C:115
 CreateEMCAL_OADB_CalibReference.C:116
 CreateEMCAL_OADB_CalibReference.C:117
 CreateEMCAL_OADB_CalibReference.C:118
 CreateEMCAL_OADB_CalibReference.C:119