1 void makeDecalibCDB(Int_t firstRun, Int_t lastRun, Float_t decalib = 0.065)
3 //Generates a random decalibration factors O(1)
4 //to be applied in the anchor run simulations with raw:// .
5 //If decalib<0, no decalibration generated, all factors=1.
7 //Run range is [firstRun,lastRun] and gaussian sigma = decalib.
8 //Author: Boris Polishchuk.
10 AliCDBManager::Instance()->SetDefaultStorage("raw://");
11 AliCDBManager::Instance()->SetRun(firstRun);
13 TString emcPath("PHOS/Calib/EmcGainPedestals");
14 AliCDBEntry* entryEmc = AliCDBManager::Instance()->Get(emcPath.Data(),-1);
16 AliPHOSEmcCalibData* clb=0;
18 if(entryEmc) clb = (AliPHOSEmcCalibData*)entryEmc->GetObject();
19 else { printf("CDB entry not found. Exit.\n"); return; }
21 if(!clb) { printf("Calibration parameters for PHOS EMC not found.\n"); return; }
23 printf("\t\tEMC calibration object found: FirstRun=%d LastRun=%d Version=%d SubVersion=%d\n",
24 entryEmc->GetId().GetFirstRun(), entryEmc->GetId().GetLastRun(),
25 entryEmc->GetId().GetVersion(),entryEmc->GetId().GetSubVersion());
29 rn.SetSeed(0); //the seed is set to the current machine clock
31 Float_t adcChannelEmc;
33 for(Int_t module=1; module<6; module++) {
34 for(Int_t column=1; column<57; column++) {
35 for(Int_t row=1; row<65; row++) {
37 if(decalib<0.) adcChannelEmc = 1.;
39 adcChannelEmc =rn.Gaus(1.,decalib);
41 clb->SetADCchannelEmcDecalib(module,column,row,adcChannelEmc);
46 AliCDBManager::Instance()->SetDefaultStorage("local://./");
47 AliCDBStorage* storage = AliCDBManager::Instance()->GetDefaultStorage();
49 AliCDBMetaData *md = new AliCDBMetaData();
50 AliCDBId id(emcPath.Data(),firstRun,lastRun);
51 storage->Put(clb,id, md);