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

#include <iostream>

#include <vector>
#include <TChain.h>
#include <TFile.h>
#include <TTree.h>
#include <TString.h>
#include <TObject.h>
#include <TSystem.h>
#include <TH1F.h>

#include "AliCDBManager.h"
#include "AliCDBId.h"
#include "AliCDBStorage.h"
#include "AliCDBMetaData.h"
#include "AliTRDCalibra.h"
#include "AliTRDCalDet.h"

#endif
const Int_t firstrun = 0;
const Int_t lastrun = 0;
AliCDBStorage* gStorLoc = 0;
AliCDBMetaData* CreateMetaObject(const char* objectClassName);
void StoreObject(const char* cdbPath, TObject* object, AliCDBMetaData* metaData);
Bool_t WriteIntoDataBase(TTree *tree, Int_t i);


AliCDBMetaData* CreateMetaObject(const char* objectClassName)
{
  AliCDBMetaData *md1= new AliCDBMetaData(); 
  md1->SetObjectClassName(objectClassName);
  md1->SetResponsible("Raphaelle Bailhache");
  md1->SetBeamPeriod(1);
  md1->SetAliRootVersion("05-06-00"); //root version
  md1->SetComment("The dummy values in this calibration file are for testing only");
  
  return md1;
}

void StoreObject(const char* cdbPath, TObject* object, AliCDBMetaData* metaData)
{
  AliCDBId id1(cdbPath, firstrun, lastrun); 
  id1.SetVersion(0);
  gStorLoc->Put(object, id1, metaData); 
}


Bool_t AliTRDWriteIntoDataBase(TTree *tree, Int_t i){
  //
  // To use this macro, you have first to write the coefficients in a file
  // To take the resulted tree from the file and to give it to this macro
  // The macro will write the coefficient into a local database
  // in the directory where you run it
  //


  AliTRDCalDet* obj1 = 0;
  TObject* obj2 = 0;
  AliCDBMetaData *metadata = 0;
 
 
  
  //Single instance of AliCDBManager and AliTRDCalibra 
  AliCDBManager *man = AliCDBManager::Instance();
  if (!man) {
    printf("Could not get CDB Manager");
    return kFALSE;
  }
  gStorLoc = man->GetDefaultStorage();
  if (!gStorLoc) {
    printf("Could not get default Storage");
    return kFALSE;
  }
  AliTRDCalibra *calibra = AliTRDCalibra::Instance();


 
  // Create the new database object Det
  if(i != 2) {
    obj1 = calibra->CreateDetObjectTree(tree, i);
    obj2 = calibra->CreatePadObjectTree(tree, i, obj1);
  }
  if(i == 2) obj2 = calibra->CreatePadObjectTree(tree);
  

  //Store the info for the detector
  if(i != 2) {
    metadata = CreateMetaObject("AliTRDCalDet");
    if(i == 0) StoreObject("TRD/Calib/ChamberGainFactor",(TObject *) obj1, metadata);
    if(i == 1) StoreObject("TRD/Calib/ChamberVdrift",(TObject *) obj1, metadata);
    if(i == 3) StoreObject("TRD/Calib/ChamberT0",(TObject *) obj1, metadata);
    
  }

 
  //Store the info for the pad
  metadata = CreateMetaObject("AliTRDCalPad");
  if(i == 0) StoreObject("TRD/Calib/LocalGainFactor",(TObject *) obj2, metadata); 
  if(i == 1) StoreObject("TRD/Calib/LocalVdrift",(TObject *) obj2, metadata); 
  if(i == 3) StoreObject("TRD/Calib/LocalT0",(TObject *) obj2, metadata); 
  if(i == 2) StoreObject("TRD/Calib/PRFWidth",(TObject *) obj2, metadata); 


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