// ******* Example to Create or Read OADB Container
// ******* for EMCal Run by Run calibration dependent
// ******* on Temperature variations
// Author : Gustavo Conesa Balbastre (LPSC-Grenoble)
// rescale some 2011 runs slightly (0.5%):
const Float_t rescaleFactor = 1.005;
//const Float_t rescaleFactor = 0.9975;
const Int_t kFirst = 156620;
const Int_t kLast = 162740;
void CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection(Int_t opt = 1, Int_t runNumber = 170387)
{
if(opt == 0) Read(runNumber);
if(opt == 1) Create();
}
void Create()
{
//Create OADB container for Temperature calibration parameters
gSystem->Load("libOADB");
AliOADBContainer* con = new AliOADBContainer("AliEMCALRunDepTempCalibCorrections");
// Get the list of run numbers to be added to the OADB, parameters provided usually in a
// root file per run
// Tar ball with all the files can be found here
// https://twiki.cern.ch/twiki/bin/viewauth/ALICE/EMCalTimeDependentCalibrations
ifstream fList;
fList.open("CorrectionFiles/runlist.txt");
Int_t runNumber = 0;
Float_t multiplier = 10000; // allows us to store the values in TH1S with some precision
TString string;
Int_t nRuns=0;
Int_t nSM = 12;
AliEMCALGeometry* geom = AliEMCALGeometry::GetInstance("EMCAL_COMPLETE12SMV1");
if (fList.good())
{
while( string.ReadLine(fList, kFALSE) )
{
sscanf(string.Data(), "%d",&runNumber);
if (runNumber < 140000) nSM = 4;
else if(runNumber < 200000) nSM = 10;
if(runNumber>100000){
multiplier = 10000; // allows us to store the values in TH1S with some precision
if (runNumber>=kFirst && runNumber<=kLast) { // rescale some runs
multiplier *= rescaleFactor;
}
printf("Run %d multiplier %5.0f\n", runNumber, multiplier);
// Access class that contains methods to read the content of
// the calibration file per run
AliEMCALCalibTimeDepCorrection *corr = new AliEMCALCalibTimeDepCorrection();
corr->ReadRootInfo(Form("CorrectionFiles/Run%d_Correction.root",runNumber));
// Init the histogram
TH1S *h = new TH1S(Form("h%d",runNumber),"",24*48*nSM,0,24*48*nSM);
for(Int_t ism = 0; ism < nSM; ism++) {
for(Int_t icol = 0; icol < 48; icol++) {
for(Int_t irow = 0; irow < 24; irow++) {
Float_t recalFactor = corr->GetCorrection(ism, icol,irow,0);
Int_t absID = geom->GetAbsCellIdFromCellIndexes(ism, irow, icol);
h->SetBinContent(absID,(Short_t)(recalFactor*multiplier));
}
}
}
con->AddDefaultObject(h);
//Establishing run number with the correct objects
con->AppendObject(h,runNumber,runNumber);
delete corr;
nRuns++;
}
}
}
fList.close();
printf(" *** nRuns *** %d\n",nRuns);
// add dummy object at the end of file:
runNumber++;
multiplier = 10000;
// Init the histogram
printf("Dummy/extra Run %d at EOF multiplier %5.0f\n", runNumber, multiplier);
TH1S *h = new TH1S(Form("h%d",runNumber),"",24*48*nSM,0,24*48*nSM);
for(Int_t ism = 0; ism < nSM; ism++) {
for(Int_t icol = 0; icol < 48; icol++) {
for(Int_t irow = 0; irow < 24; irow++) {
Float_t recalFactor = 1;
Int_t absID = geom->GetAbsCellIdFromCellIndexes(ism, irow, icol);
h->SetBinContent(absID,(Short_t)(recalFactor*multiplier));
}
}
}
con->AddDefaultObject(h);
//Establishing run number with the correct objects
con->AppendObject(h,runNumber,runNumber);
con->WriteToFile("EMCALTemperatureCorrCalib.root");
}
void Read(Int_t runNumber = 170387)
{
gSystem->Load("libOADB");
AliOADBContainer *cont=new AliOADBContainer("");
cont->InitFromFile("$ALICE_ROOT/OADB/EMCAL/EMCALTemperatureCorrCalib.root", "AliEMCALRunDepTempCalibCorrections");
//cout<<"_________--------------- dump ---------------------___________"<<endl;
//cont->Dump();
//cout<<"cont->GetDefaultList()->Print()"<<endl;
//cont->GetDefaultList()->Print();
TH1S *h=cont->GetObject(runNumber); //GetObject(int runnumber)
if (h) {
printf("runNumber %d found\n", runNumber);
}
else {
printf("runNumber %d not found\n", runNumber);
// let's get the closest runnumber
Int_t lower = 0;
Int_t ic = 0;
Int_t maxEntry = cont->GetNumberOfEntries();
while ( (ic < maxEntry) && (cont->UpperLimit(ic) < runNumber) ) {
lower = ic;
ic++;
}
Int_t closest = lower;
if ( (ic<maxEntry) &&
(cont->LowerLimit(ic)-runNumber) < (runNumber - cont->UpperLimit(lower)) ) {
closest = ic;
}
cout << "found closest id " << closest
<< " from run " << cont->LowerLimit(closest) << endl;
h = (TH1S*) cont->GetObjectByIndex(closest);
h->Print(); // tmp debug
cout << endl;
}
AliEMCALGeometry* geom = AliEMCALGeometry::GetInstance("EMCAL_COMPLETE12SMV1");
// Read parameter file line-by-line
// Get number of lines first
Int_t nSM = 10;
for(Int_t iabsID = 0; iabsID < 24*48*nSM; iabsID++)
{
printf("absID %d, content %d\n",iabsID,h->GetBinContent(iabsID));
}
h->Draw();
}
CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:1 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:2 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:3 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:4 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:5 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:6 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:7 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:8 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:9 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:10 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:11 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:12 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:13 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:14 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:15 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:16 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:17 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:18 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:19 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:20 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:21 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:22 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:23 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:24 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:25 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:26 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:27 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:28 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:29 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:30 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:31 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:32 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:33 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:34 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:35 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:36 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:37 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:38 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:39 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:40 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:41 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:42 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:43 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:44 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:45 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:46 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:47 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:48 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:49 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:50 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:51 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:52 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:53 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:54 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:55 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:56 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:57 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:58 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:59 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:60 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:61 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:62 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:63 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:64 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:65 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:66 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:67 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:68 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:69 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:70 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:71 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:72 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:73 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:74 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:75 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:76 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:77 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:78 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:79 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:80 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:81 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:82 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:83 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:84 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:85 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:86 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:87 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:88 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:89 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:90 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:91 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:92 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:93 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:94 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:95 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:96 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:97 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:98 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:99 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:100 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:101 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:102 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:103 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:104 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:105 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:106 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:107 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:108 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:109 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:110 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:111 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:112 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:113 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:114 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:115 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:116 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:117 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:118 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:119 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:120 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:121 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:122 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:123 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:124 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:125 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:126 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:127 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:128 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:129 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:130 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:131 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:132 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:133 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:134 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:135 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:136 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:137 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:138 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:139 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:140 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:141 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:142 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:143 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:144 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:145 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:146 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:147 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:148 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:149 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:150 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:151 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:152 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:153 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:154 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:155 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:156 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:157 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:158 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:159 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:160 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:161 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:162 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:163 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:164 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:165 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:166 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:167 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:168 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:169 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:170 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:171 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:172 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:173 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:174 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:175 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:176 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:177 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:178 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:179 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:180 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:181 CreateEMCAL_OADB_RunByRunTemperatureECalibCorrection.C:182