ROOT logo
// Set OCDB parameters from existing versions

// Author : Gustavo Conesa Balbastre (LPSC-CNRS)

void SetOCDBFromRun1(Int_t year = 2010, Bool_t printAll = kFALSE)
{  

  gSystem->Load("libOADB");
  TGrid::Connect("alien://");
  
  Int_t run = 182325; //2012
  if(year == 2010) run = 134908;
  if(year == 2011) run = 159582;
  
  AliCDBManager* man = AliCDBManager::Instance();
  man->SetDefaultStorage("raw://");
  man->SetRun(run);
  AliCDBStorage *storage = man->GetDefaultStorage();
  
  // Instantiate EMCAL geometry for the first time

  if     (year == 2010) geom = AliEMCALGeometry::GetInstance("EMCAL_FIRSTYEARV1"); // 2010
  else                  geom = AliEMCALGeometry::GetInstance("EMCAL_COMPLETEV1");  // 2011-2012-2013
//  else                  geom = AliEMCALGeometry::GetInstance("EMCAL_COMPLETE12SMV1_DCAL_8SM"); // Run2

  const Int_t nSM = geom->GetNumberOfSuperModules();
  
  // Get the final OCDB object
  
  AliEMCALCalibData* cparam = (AliEMCALCalibData*) (storage->Get("EMCAL/Calib/Data", run)->GetObject());

  // Access OCDB file with the first version of the calibration
  TString        first = "Run177115_999999999_v2_s0.root";
  if(year==2010) first = "Run113461_999999999_v3_s0.root";
  if(year==2011) first = "Run144484_999999999_v3_s0.root";
  
  TFile * f = TFile::Open(Form("alien:///alice/data/%d/OCDB/EMCAL/Calib/Data/%s",year,first.Data()),"READ");
  AliCDBEntry * cdb = (AliCDBEntry*) f->Get("AliCDBEntry");
  AliEMCALCalibData* cparam1 = (AliEMCALCalibData*)  cdb->GetObject();

  
  //New OCDB container
  AliEMCALCalibData *cparamnew=new AliEMCALCalibData("EMCAL");
  
  // Do the comparison
  Float_t param  = -1;
  Float_t param1 = -1;
  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 param = -1;
    if( cparam  ) param  = cparam ->GetADCchannel(iSM,iCol,iRow);
    
    Float_t param1 = -1;
    if( cparam1 ) param1 = cparam1->GetADCchannel(iSM,iCol,iRow);
    
    if    (printAll)
      printf("ID %d, col %d, row %d, sm %d  final %1.4f, first %1.4f\n",
             i,iCol,iRow,iSM,param, param1);
    cparamnew->SetADCchannel      (iSM,iCol,iRow,param );
    cparamnew->SetADCchannelOnline(iSM,iCol,iRow,param1);
  }
  
  //Create OCDB File
  AliCDBMetaData md;
  md.SetComment("Calibration after calibration with pi0, store also first online calibration");
  md.SetBeamPeriod(0);
  md.SetResponsible("Gustavo Conesa");
  md.SetAliRootVersion(gSystem->Getenv("ARVERSION"));
  
  // Careful, select here the first run where this calibration is valid
  Int_t            firstRun = 172439; // 2012-13
  if(year == 2010) firstRun = 113461;
  if(year == 2011) firstRun = 144484;
  
  AliCDBId id("EMCAL/Calib/Data",firstRun,AliCDBRunRange::Infinity()); // create in EMCAL/Calib/Data DBFolder
  
  AliCDBManager* man = AliCDBManager::Instance();
  AliCDBStorage* loc = man->GetStorage(Form("local://%d",year));
  loc->Put(cparamnew, id, &md);
}


 SetOCDBFromRun1.C:1
 SetOCDBFromRun1.C:2
 SetOCDBFromRun1.C:3
 SetOCDBFromRun1.C:4
 SetOCDBFromRun1.C:5
 SetOCDBFromRun1.C:6
 SetOCDBFromRun1.C:7
 SetOCDBFromRun1.C:8
 SetOCDBFromRun1.C:9
 SetOCDBFromRun1.C:10
 SetOCDBFromRun1.C:11
 SetOCDBFromRun1.C:12
 SetOCDBFromRun1.C:13
 SetOCDBFromRun1.C:14
 SetOCDBFromRun1.C:15
 SetOCDBFromRun1.C:16
 SetOCDBFromRun1.C:17
 SetOCDBFromRun1.C:18
 SetOCDBFromRun1.C:19
 SetOCDBFromRun1.C:20
 SetOCDBFromRun1.C:21
 SetOCDBFromRun1.C:22
 SetOCDBFromRun1.C:23
 SetOCDBFromRun1.C:24
 SetOCDBFromRun1.C:25
 SetOCDBFromRun1.C:26
 SetOCDBFromRun1.C:27
 SetOCDBFromRun1.C:28
 SetOCDBFromRun1.C:29
 SetOCDBFromRun1.C:30
 SetOCDBFromRun1.C:31
 SetOCDBFromRun1.C:32
 SetOCDBFromRun1.C:33
 SetOCDBFromRun1.C:34
 SetOCDBFromRun1.C:35
 SetOCDBFromRun1.C:36
 SetOCDBFromRun1.C:37
 SetOCDBFromRun1.C:38
 SetOCDBFromRun1.C:39
 SetOCDBFromRun1.C:40
 SetOCDBFromRun1.C:41
 SetOCDBFromRun1.C:42
 SetOCDBFromRun1.C:43
 SetOCDBFromRun1.C:44
 SetOCDBFromRun1.C:45
 SetOCDBFromRun1.C:46
 SetOCDBFromRun1.C:47
 SetOCDBFromRun1.C:48
 SetOCDBFromRun1.C:49
 SetOCDBFromRun1.C:50
 SetOCDBFromRun1.C:51
 SetOCDBFromRun1.C:52
 SetOCDBFromRun1.C:53
 SetOCDBFromRun1.C:54
 SetOCDBFromRun1.C:55
 SetOCDBFromRun1.C:56
 SetOCDBFromRun1.C:57
 SetOCDBFromRun1.C:58
 SetOCDBFromRun1.C:59
 SetOCDBFromRun1.C:60
 SetOCDBFromRun1.C:61
 SetOCDBFromRun1.C:62
 SetOCDBFromRun1.C:63
 SetOCDBFromRun1.C:64
 SetOCDBFromRun1.C:65
 SetOCDBFromRun1.C:66
 SetOCDBFromRun1.C:67
 SetOCDBFromRun1.C:68
 SetOCDBFromRun1.C:69
 SetOCDBFromRun1.C:70
 SetOCDBFromRun1.C:71
 SetOCDBFromRun1.C:72
 SetOCDBFromRun1.C:73
 SetOCDBFromRun1.C:74
 SetOCDBFromRun1.C:75
 SetOCDBFromRun1.C:76
 SetOCDBFromRun1.C:77
 SetOCDBFromRun1.C:78
 SetOCDBFromRun1.C:79
 SetOCDBFromRun1.C:80
 SetOCDBFromRun1.C:81
 SetOCDBFromRun1.C:82
 SetOCDBFromRun1.C:83
 SetOCDBFromRun1.C:84
 SetOCDBFromRun1.C:85
 SetOCDBFromRun1.C:86
 SetOCDBFromRun1.C:87
 SetOCDBFromRun1.C:88