ROOT logo
void makeDecalibCDB(Int_t firstRun, Int_t lastRun, Float_t decalib = 0.065)
{
  //Generates a random decalibration factors O(1)
  //to be applied in the anchor run simulations with raw:// .
  //If decalib<0, no decalibration generated, all factors=1.
  
  //Run range is [firstRun,lastRun] and gaussian sigma = decalib.
  //Author: Boris Polishchuk.
  
  AliCDBManager::Instance()->SetDefaultStorage("raw://");
  AliCDBManager::Instance()->SetRun(firstRun);

  TString emcPath("PHOS/Calib/EmcGainPedestals");
  AliCDBEntry* entryEmc = AliCDBManager::Instance()->Get(emcPath.Data(),-1);

  AliPHOSEmcCalibData* clb=0;

  if(entryEmc) clb = (AliPHOSEmcCalibData*)entryEmc->GetObject();
  else { printf("CDB entry not found. Exit.\n"); return; }
  
  if(!clb) { printf("Calibration parameters for PHOS EMC not found.\n"); return; }
  
  printf("\t\tEMC calibration object found: FirstRun=%d LastRun=%d Version=%d SubVersion=%d\n",
         entryEmc->GetId().GetFirstRun(), entryEmc->GetId().GetLastRun(),
         entryEmc->GetId().GetVersion(),entryEmc->GetId().GetSubVersion());
  
  
  TRandom rn;
  rn.SetSeed(0); //the seed is set to the current  machine clock

  Float_t adcChannelEmc;

  for(Int_t module=1; module<6; module++) {
    for(Int_t column=1; column<57; column++) {
      for(Int_t row=1; row<65; row++) {

	if(decalib<0.) adcChannelEmc = 1.;
	else
	  adcChannelEmc =rn.Gaus(1.,decalib);

        clb->SetADCchannelEmcDecalib(module,column,row,adcChannelEmc);
      }
    }
  }

  AliCDBManager::Instance()->SetDefaultStorage("local://./");
  AliCDBStorage* storage = AliCDBManager::Instance()->GetDefaultStorage();
  
  AliCDBMetaData *md = new AliCDBMetaData();
  AliCDBId id(emcPath.Data(),firstRun,lastRun);
  storage->Put(clb,id, md);

}
 makeDecalibCDB.C:1
 makeDecalibCDB.C:2
 makeDecalibCDB.C:3
 makeDecalibCDB.C:4
 makeDecalibCDB.C:5
 makeDecalibCDB.C:6
 makeDecalibCDB.C:7
 makeDecalibCDB.C:8
 makeDecalibCDB.C:9
 makeDecalibCDB.C:10
 makeDecalibCDB.C:11
 makeDecalibCDB.C:12
 makeDecalibCDB.C:13
 makeDecalibCDB.C:14
 makeDecalibCDB.C:15
 makeDecalibCDB.C:16
 makeDecalibCDB.C:17
 makeDecalibCDB.C:18
 makeDecalibCDB.C:19
 makeDecalibCDB.C:20
 makeDecalibCDB.C:21
 makeDecalibCDB.C:22
 makeDecalibCDB.C:23
 makeDecalibCDB.C:24
 makeDecalibCDB.C:25
 makeDecalibCDB.C:26
 makeDecalibCDB.C:27
 makeDecalibCDB.C:28
 makeDecalibCDB.C:29
 makeDecalibCDB.C:30
 makeDecalibCDB.C:31
 makeDecalibCDB.C:32
 makeDecalibCDB.C:33
 makeDecalibCDB.C:34
 makeDecalibCDB.C:35
 makeDecalibCDB.C:36
 makeDecalibCDB.C:37
 makeDecalibCDB.C:38
 makeDecalibCDB.C:39
 makeDecalibCDB.C:40
 makeDecalibCDB.C:41
 makeDecalibCDB.C:42
 makeDecalibCDB.C:43
 makeDecalibCDB.C:44
 makeDecalibCDB.C:45
 makeDecalibCDB.C:46
 makeDecalibCDB.C:47
 makeDecalibCDB.C:48
 makeDecalibCDB.C:49
 makeDecalibCDB.C:50
 makeDecalibCDB.C:51
 makeDecalibCDB.C:52
 makeDecalibCDB.C:53
 makeDecalibCDB.C:54