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