ROOT logo
//This a modification in a code sent by Marco Bregant, which, originally, created the OADB for misalignment matrices

//In this macro, the histograms with Recalibraton Factors are loaded and some TObjarrays are filled with these histograms.
// At the end, a OADB container is created receiving these arrays.

void CreateEMCAL_OADB_Recalib(const char *fileName10s_d="RecalDB/summer_december_2010/RecalibrationFactors.root",const char *fileName10d="RecalDB/december2010/RecalibrationFactors.root",
			      const char *fileName10s="RecalDB/summer2010/RecalibrationFactors.root", const char *fileName11v1="RecalDB/2011_v1/RecalibrationFactors.root")
{

gSystem->Load("libOADB");  
  
Bool_t Recalib2010=kTRUE;
Bool_t Recalib2011=kTRUE;


// **** Loading the root files with Recalibration Factors:
TFile* f10s_d=new TFile(fileName10s_d);
TFile* f10d=new TFile(fileName10d);
TFile* f10s=new TFile(fileName10s);
TFile* f11v1=new TFile(fileName11v1);

// ********* Arrays with the objects *********************
TObjArray array10s_d(4); //summer_december_2010/
TObjArray array10dec(4); //december2010
TObjArray array10s(4); //summer2010
TObjArray array11v1(10); // 2011_v1

array10s_d.SetName("Recalib");
array10dec.SetName("Recalib");
array10s.SetName("Recalib");
array11v1.SetName("Recalib");

char name[30];
// Filling The objects above with the EMCALRecalFactors_SM Histos:
for (Int_t mod=0;mod<10;mod++){

    cout<<"SM "<< mod<<endl;

    // Recalib Objects for 2010:
    if (Recalib2010&&mod<4)  { //if 2010 4 SMs
	    sprintf(name,"EMCALRecalFactors_SM%d",mod);
	    cout<<"Recalib2010:"<<name<<endl;

	    //Summer_December:
	    array10s_d.Add(f10s_d->Get(name));

	    //December:
	    array10dec.Add(f10d->Get(name)); 

	    //Summer:
	    array10s.Add(&array10s_d); 
	    }

    // Recalib Objects for 2011:
    if (Recalib2011)  { //if 2011 10 SMs
	    sprintf(name,"EMCALRecalFactors_SM%d",mod);
	    cout<<"Recalib2011:"<<name<<endl;
	    array11v1.Add(f11v1->Get(name));
	    }
	    
    } //mod
//********************************************************************

// ************** Establishing different configuration according to the pass ***********
// ************ Latest Tender Information : (September 3rd 2011) AliRootTrunk revision 51405 ***********************

// ******* 2010 ******************
TObjArray array10b_pass2(4);//runRC >= 114737 && runRC <= 117223 
array10b_pass2.SetName("pass2");

TObjArray array10c_pass2(4);//runRC >= 118503 && runRC <= 121040 
array10c_pass2.SetName("pass2");

TObjArray array10c_pass3(4);//runRC >= 118503 && runRC <= 121040 
array10c_pass3.SetName("pass3");

TObjArray array10d_pass1(4);//runRC >= 122195 && runRC <= 126437
array10d_pass1.SetName("pass1");

TObjArray array10e_pass1(4);//runRC >= 127712 && runRC <= 130850 
array10e_pass1.SetName("pass1");

TObjArray array10f_pass1a(4);//runRC >= 133004 && runRC <  134657
array10f_pass1a.SetName("pass1");

//December:
TObjArray array10d_pass2(4); //runRC >= 122195 && runRC <= 126437 
array10d_pass2.SetName("pass2");

TObjArray array10f_pass1b(4);//runRC >= 134657 && runRC <= 135029 
array10f_pass1b.SetName("pass1");

TObjArray array10g_pass1(4); //runRC >= 135654 && runRC <= 136377
array10g_pass1.SetName("pass1");

TObjArray array10h_pass1a(4); //Until Christmas: runRC >= 136851 && runRC < 137231  
array10h_pass1a.SetName("pass1");
	
//Summer:
TObjArray array10h_pass1b(4); //runRC >= 137231 && runRC <= 139517
array10h_pass1b.SetName("pass1");

//Summer_December:
array10b_pass2.Add(&array10s_d);//runRC >= 114737 && runRC <= 117223 
array10c_pass2.Add(&array10s_d);//runRC >= 118503 && runRC <= 121040 
array10c_pass3.Add(&array10s_d);//runRC >= 118503 && runRC <= 121040 
array10d_pass1.Add(&array10s_d);//runRC >= 122195 && runRC <= 126437
array10e_pass1.Add(&array10s_d);//runRC >= 127712 && runRC <= 130850 
array10f_pass1a.Add(&array10s_d);//runRC >= 133004 && runRC <  134657

//December:
array10d_pass2.Add(&array10dec); //runRC >= 122195 && runRC <= 126437 
array10f_pass1b.Add(&array10dec);//runRC >= 134657 && runRC <= 135029 
array10g_pass1.Add(&array10dec); //runRC >= 135654 && runRC <= 136377
array10h_pass1a.Add(&array10dec); //Until Christmas: runRC >= 136851 && runRC < 137231  
	
//Summer:
array10h_pass1b.Add(&array10s); //runRC >= 137231 && runRC <= 139517

//*********** 2011 ***************************************
TObjArray array11a_pass1(10); // LHC11a pass1
array11a_pass1.SetName("pass1");

TObjArray array11a_pass2(10); // LHC11a pass2
array11a_pass2.SetName("pass2");

TObjArray array11c_pass1(10); // LHC11c pass1
array11c_pass1.SetName("pass1");

array11a_pass1.Add(&array11v1);
array11a_pass2.Add(&array11v1);
array11c_pass1.Add(&array11v1);
// *************************************************************************************

// ******** Establishing the objects for the specific Periods ************************

// 2010
TObjArray array10b(4);
array10b.SetName("LHC10b");

TObjArray array10c(4);
array10c.SetName("LHC10c");

TObjArray array10d(4);
array10d.SetName("LHC10d");

TObjArray array10e(4);
array10e.SetName("LHC10e");

TObjArray array10fa(4);
array10fa.SetName("LHC10fa");

TObjArray array10fb(4);
array10fb.SetName("LHC10fb");

TObjArray array10g(4);
array10g.SetName("LHC10g");

TObjArray array10ha(4);
array10ha.SetName("LHC10ha");

TObjArray array10hb(4);
array10hb.SetName("LHC10hb");


array10b.Add(&array10b_pass2);

array10c.Add(&array10c_pass2);
array10c.Add(&array10c_pass3);

array10d.Add(&array10d_pass1);
array10d.Add(&array10d_pass2);

array10e.Add(&array10e_pass1);

array10fa.Add(&array10f_pass1a);
array10fb.Add(&array10f_pass1b);

array10g.Add(&array10g_pass1); 

array10ha.Add(&array10h_pass1a);
array10hb.Add(&array10h_pass1b);

// ************

//2011
TObjArray array11a(10);
array11a.SetName("LHC11a");

TObjArray array11c(10);
array11c.SetName("LHC11c");

array11a.Add(&array11a_pass1);
array11a.Add(&array11a_pass2);
array11c.Add(&array11c_pass1);
// *****************


// Creating Container 
AliOADBContainer* con = new AliOADBContainer("AliEMCALRecalib");

con->AddDefaultObject((TObject*) &array10b);
con->AddDefaultObject((TObject*) &array10c);
con->AddDefaultObject((TObject*) &array10d);
con->AddDefaultObject((TObject*) &array10e);
con->AddDefaultObject((TObject*) &array10fa);
con->AddDefaultObject((TObject*) &array10fb);
con->AddDefaultObject((TObject*) &array10g);
con->AddDefaultObject((TObject*) &array10ha);
con->AddDefaultObject((TObject*) &array10hb);
con->AddDefaultObject((TObject*) &array11a);
con->AddDefaultObject((TObject*) &array11c);

// Appending objects to their specific Run number
con->AppendObject(&array10b,114737,117223);
con->AppendObject(&array10c,118503,121040);
con->AppendObject(&array10d,122195,126437);
con->AppendObject(&array10e,127712,130850);
con->AppendObject(&array10fa,133004,134656);
con->AppendObject(&array10fb,134657,135029);
con->AppendObject(&array10g,135654,136377);
con->AppendObject(&array10ha,136851,137230);
con->AppendObject(&array10hb,137231,139517);
con->AppendObject(&array11a,144871,146860);
con->AppendObject(&array11c,151636,155384);
con->WriteToFile("BetaRecalib.root");

test(); // If someone wants to test container
}

void test(){
//
// let's read back the file
AliOADBContainer *cont=new AliOADBContainer("");
cont->InitFromFile("BetaRecalib.root", "AliEMCALRecalib");
// 
cout<<"_________--------------- dump ---------------------___________"<<endl;
cont->Dump();
cout<<"_________--------------- list ---------------------___________"<<endl;
//cont0.List();
cout<<"cont->GetDefaultList()->Print()"<<endl;
cont->GetDefaultList()->Print();

TObjArray *recal=cont->GetObject(118503); //GetObject(int runnumber)
recal->ls();

TObjArray *recalpass=recal->FindObject("pass2");

if(!recalpass){
  cout<<" norecalpass"<<endl;
  return;
}

TObjArray *recalib=recalpass->FindObject("Recalib");

if(!recalib){
  cout<<" no recalib found"<<endl;
  return;
}

TH2F *h2=(TH2F*)recalib->FindObject("EMCALRecalFactors_SM0");
if(!h2){
  return;
cout<<" no histo found"<<endl;
}
h2->DrawCopy("colz");
cout<<"That's all folks!"<<endl;

  
}
 CreateEMCAL_OADB_Recalib.C:1
 CreateEMCAL_OADB_Recalib.C:2
 CreateEMCAL_OADB_Recalib.C:3
 CreateEMCAL_OADB_Recalib.C:4
 CreateEMCAL_OADB_Recalib.C:5
 CreateEMCAL_OADB_Recalib.C:6
 CreateEMCAL_OADB_Recalib.C:7
 CreateEMCAL_OADB_Recalib.C:8
 CreateEMCAL_OADB_Recalib.C:9
 CreateEMCAL_OADB_Recalib.C:10
 CreateEMCAL_OADB_Recalib.C:11
 CreateEMCAL_OADB_Recalib.C:12
 CreateEMCAL_OADB_Recalib.C:13
 CreateEMCAL_OADB_Recalib.C:14
 CreateEMCAL_OADB_Recalib.C:15
 CreateEMCAL_OADB_Recalib.C:16
 CreateEMCAL_OADB_Recalib.C:17
 CreateEMCAL_OADB_Recalib.C:18
 CreateEMCAL_OADB_Recalib.C:19
 CreateEMCAL_OADB_Recalib.C:20
 CreateEMCAL_OADB_Recalib.C:21
 CreateEMCAL_OADB_Recalib.C:22
 CreateEMCAL_OADB_Recalib.C:23
 CreateEMCAL_OADB_Recalib.C:24
 CreateEMCAL_OADB_Recalib.C:25
 CreateEMCAL_OADB_Recalib.C:26
 CreateEMCAL_OADB_Recalib.C:27
 CreateEMCAL_OADB_Recalib.C:28
 CreateEMCAL_OADB_Recalib.C:29
 CreateEMCAL_OADB_Recalib.C:30
 CreateEMCAL_OADB_Recalib.C:31
 CreateEMCAL_OADB_Recalib.C:32
 CreateEMCAL_OADB_Recalib.C:33
 CreateEMCAL_OADB_Recalib.C:34
 CreateEMCAL_OADB_Recalib.C:35
 CreateEMCAL_OADB_Recalib.C:36
 CreateEMCAL_OADB_Recalib.C:37
 CreateEMCAL_OADB_Recalib.C:38
 CreateEMCAL_OADB_Recalib.C:39
 CreateEMCAL_OADB_Recalib.C:40
 CreateEMCAL_OADB_Recalib.C:41
 CreateEMCAL_OADB_Recalib.C:42
 CreateEMCAL_OADB_Recalib.C:43
 CreateEMCAL_OADB_Recalib.C:44
 CreateEMCAL_OADB_Recalib.C:45
 CreateEMCAL_OADB_Recalib.C:46
 CreateEMCAL_OADB_Recalib.C:47
 CreateEMCAL_OADB_Recalib.C:48
 CreateEMCAL_OADB_Recalib.C:49
 CreateEMCAL_OADB_Recalib.C:50
 CreateEMCAL_OADB_Recalib.C:51
 CreateEMCAL_OADB_Recalib.C:52
 CreateEMCAL_OADB_Recalib.C:53
 CreateEMCAL_OADB_Recalib.C:54
 CreateEMCAL_OADB_Recalib.C:55
 CreateEMCAL_OADB_Recalib.C:56
 CreateEMCAL_OADB_Recalib.C:57
 CreateEMCAL_OADB_Recalib.C:58
 CreateEMCAL_OADB_Recalib.C:59
 CreateEMCAL_OADB_Recalib.C:60
 CreateEMCAL_OADB_Recalib.C:61
 CreateEMCAL_OADB_Recalib.C:62
 CreateEMCAL_OADB_Recalib.C:63
 CreateEMCAL_OADB_Recalib.C:64
 CreateEMCAL_OADB_Recalib.C:65
 CreateEMCAL_OADB_Recalib.C:66
 CreateEMCAL_OADB_Recalib.C:67
 CreateEMCAL_OADB_Recalib.C:68
 CreateEMCAL_OADB_Recalib.C:69
 CreateEMCAL_OADB_Recalib.C:70
 CreateEMCAL_OADB_Recalib.C:71
 CreateEMCAL_OADB_Recalib.C:72
 CreateEMCAL_OADB_Recalib.C:73
 CreateEMCAL_OADB_Recalib.C:74
 CreateEMCAL_OADB_Recalib.C:75
 CreateEMCAL_OADB_Recalib.C:76
 CreateEMCAL_OADB_Recalib.C:77
 CreateEMCAL_OADB_Recalib.C:78
 CreateEMCAL_OADB_Recalib.C:79
 CreateEMCAL_OADB_Recalib.C:80
 CreateEMCAL_OADB_Recalib.C:81
 CreateEMCAL_OADB_Recalib.C:82
 CreateEMCAL_OADB_Recalib.C:83
 CreateEMCAL_OADB_Recalib.C:84
 CreateEMCAL_OADB_Recalib.C:85
 CreateEMCAL_OADB_Recalib.C:86
 CreateEMCAL_OADB_Recalib.C:87
 CreateEMCAL_OADB_Recalib.C:88
 CreateEMCAL_OADB_Recalib.C:89
 CreateEMCAL_OADB_Recalib.C:90
 CreateEMCAL_OADB_Recalib.C:91
 CreateEMCAL_OADB_Recalib.C:92
 CreateEMCAL_OADB_Recalib.C:93
 CreateEMCAL_OADB_Recalib.C:94
 CreateEMCAL_OADB_Recalib.C:95
 CreateEMCAL_OADB_Recalib.C:96
 CreateEMCAL_OADB_Recalib.C:97
 CreateEMCAL_OADB_Recalib.C:98
 CreateEMCAL_OADB_Recalib.C:99
 CreateEMCAL_OADB_Recalib.C:100
 CreateEMCAL_OADB_Recalib.C:101
 CreateEMCAL_OADB_Recalib.C:102
 CreateEMCAL_OADB_Recalib.C:103
 CreateEMCAL_OADB_Recalib.C:104
 CreateEMCAL_OADB_Recalib.C:105
 CreateEMCAL_OADB_Recalib.C:106
 CreateEMCAL_OADB_Recalib.C:107
 CreateEMCAL_OADB_Recalib.C:108
 CreateEMCAL_OADB_Recalib.C:109
 CreateEMCAL_OADB_Recalib.C:110
 CreateEMCAL_OADB_Recalib.C:111
 CreateEMCAL_OADB_Recalib.C:112
 CreateEMCAL_OADB_Recalib.C:113
 CreateEMCAL_OADB_Recalib.C:114
 CreateEMCAL_OADB_Recalib.C:115
 CreateEMCAL_OADB_Recalib.C:116
 CreateEMCAL_OADB_Recalib.C:117
 CreateEMCAL_OADB_Recalib.C:118
 CreateEMCAL_OADB_Recalib.C:119
 CreateEMCAL_OADB_Recalib.C:120
 CreateEMCAL_OADB_Recalib.C:121
 CreateEMCAL_OADB_Recalib.C:122
 CreateEMCAL_OADB_Recalib.C:123
 CreateEMCAL_OADB_Recalib.C:124
 CreateEMCAL_OADB_Recalib.C:125
 CreateEMCAL_OADB_Recalib.C:126
 CreateEMCAL_OADB_Recalib.C:127
 CreateEMCAL_OADB_Recalib.C:128
 CreateEMCAL_OADB_Recalib.C:129
 CreateEMCAL_OADB_Recalib.C:130
 CreateEMCAL_OADB_Recalib.C:131
 CreateEMCAL_OADB_Recalib.C:132
 CreateEMCAL_OADB_Recalib.C:133
 CreateEMCAL_OADB_Recalib.C:134
 CreateEMCAL_OADB_Recalib.C:135
 CreateEMCAL_OADB_Recalib.C:136
 CreateEMCAL_OADB_Recalib.C:137
 CreateEMCAL_OADB_Recalib.C:138
 CreateEMCAL_OADB_Recalib.C:139
 CreateEMCAL_OADB_Recalib.C:140
 CreateEMCAL_OADB_Recalib.C:141
 CreateEMCAL_OADB_Recalib.C:142
 CreateEMCAL_OADB_Recalib.C:143
 CreateEMCAL_OADB_Recalib.C:144
 CreateEMCAL_OADB_Recalib.C:145
 CreateEMCAL_OADB_Recalib.C:146
 CreateEMCAL_OADB_Recalib.C:147
 CreateEMCAL_OADB_Recalib.C:148
 CreateEMCAL_OADB_Recalib.C:149
 CreateEMCAL_OADB_Recalib.C:150
 CreateEMCAL_OADB_Recalib.C:151
 CreateEMCAL_OADB_Recalib.C:152
 CreateEMCAL_OADB_Recalib.C:153
 CreateEMCAL_OADB_Recalib.C:154
 CreateEMCAL_OADB_Recalib.C:155
 CreateEMCAL_OADB_Recalib.C:156
 CreateEMCAL_OADB_Recalib.C:157
 CreateEMCAL_OADB_Recalib.C:158
 CreateEMCAL_OADB_Recalib.C:159
 CreateEMCAL_OADB_Recalib.C:160
 CreateEMCAL_OADB_Recalib.C:161
 CreateEMCAL_OADB_Recalib.C:162
 CreateEMCAL_OADB_Recalib.C:163
 CreateEMCAL_OADB_Recalib.C:164
 CreateEMCAL_OADB_Recalib.C:165
 CreateEMCAL_OADB_Recalib.C:166
 CreateEMCAL_OADB_Recalib.C:167
 CreateEMCAL_OADB_Recalib.C:168
 CreateEMCAL_OADB_Recalib.C:169
 CreateEMCAL_OADB_Recalib.C:170
 CreateEMCAL_OADB_Recalib.C:171
 CreateEMCAL_OADB_Recalib.C:172
 CreateEMCAL_OADB_Recalib.C:173
 CreateEMCAL_OADB_Recalib.C:174
 CreateEMCAL_OADB_Recalib.C:175
 CreateEMCAL_OADB_Recalib.C:176
 CreateEMCAL_OADB_Recalib.C:177
 CreateEMCAL_OADB_Recalib.C:178
 CreateEMCAL_OADB_Recalib.C:179
 CreateEMCAL_OADB_Recalib.C:180
 CreateEMCAL_OADB_Recalib.C:181
 CreateEMCAL_OADB_Recalib.C:182
 CreateEMCAL_OADB_Recalib.C:183
 CreateEMCAL_OADB_Recalib.C:184
 CreateEMCAL_OADB_Recalib.C:185
 CreateEMCAL_OADB_Recalib.C:186
 CreateEMCAL_OADB_Recalib.C:187
 CreateEMCAL_OADB_Recalib.C:188
 CreateEMCAL_OADB_Recalib.C:189
 CreateEMCAL_OADB_Recalib.C:190
 CreateEMCAL_OADB_Recalib.C:191
 CreateEMCAL_OADB_Recalib.C:192
 CreateEMCAL_OADB_Recalib.C:193
 CreateEMCAL_OADB_Recalib.C:194
 CreateEMCAL_OADB_Recalib.C:195
 CreateEMCAL_OADB_Recalib.C:196
 CreateEMCAL_OADB_Recalib.C:197
 CreateEMCAL_OADB_Recalib.C:198
 CreateEMCAL_OADB_Recalib.C:199
 CreateEMCAL_OADB_Recalib.C:200
 CreateEMCAL_OADB_Recalib.C:201
 CreateEMCAL_OADB_Recalib.C:202
 CreateEMCAL_OADB_Recalib.C:203
 CreateEMCAL_OADB_Recalib.C:204
 CreateEMCAL_OADB_Recalib.C:205
 CreateEMCAL_OADB_Recalib.C:206
 CreateEMCAL_OADB_Recalib.C:207
 CreateEMCAL_OADB_Recalib.C:208
 CreateEMCAL_OADB_Recalib.C:209
 CreateEMCAL_OADB_Recalib.C:210
 CreateEMCAL_OADB_Recalib.C:211
 CreateEMCAL_OADB_Recalib.C:212
 CreateEMCAL_OADB_Recalib.C:213
 CreateEMCAL_OADB_Recalib.C:214
 CreateEMCAL_OADB_Recalib.C:215
 CreateEMCAL_OADB_Recalib.C:216
 CreateEMCAL_OADB_Recalib.C:217
 CreateEMCAL_OADB_Recalib.C:218
 CreateEMCAL_OADB_Recalib.C:219
 CreateEMCAL_OADB_Recalib.C:220
 CreateEMCAL_OADB_Recalib.C:221
 CreateEMCAL_OADB_Recalib.C:222
 CreateEMCAL_OADB_Recalib.C:223
 CreateEMCAL_OADB_Recalib.C:224
 CreateEMCAL_OADB_Recalib.C:225
 CreateEMCAL_OADB_Recalib.C:226
 CreateEMCAL_OADB_Recalib.C:227
 CreateEMCAL_OADB_Recalib.C:228
 CreateEMCAL_OADB_Recalib.C:229
 CreateEMCAL_OADB_Recalib.C:230
 CreateEMCAL_OADB_Recalib.C:231
 CreateEMCAL_OADB_Recalib.C:232
 CreateEMCAL_OADB_Recalib.C:233
 CreateEMCAL_OADB_Recalib.C:234
 CreateEMCAL_OADB_Recalib.C:235
 CreateEMCAL_OADB_Recalib.C:236
 CreateEMCAL_OADB_Recalib.C:237
 CreateEMCAL_OADB_Recalib.C:238
 CreateEMCAL_OADB_Recalib.C:239
 CreateEMCAL_OADB_Recalib.C:240
 CreateEMCAL_OADB_Recalib.C:241
 CreateEMCAL_OADB_Recalib.C:242
 CreateEMCAL_OADB_Recalib.C:243
 CreateEMCAL_OADB_Recalib.C:244
 CreateEMCAL_OADB_Recalib.C:245
 CreateEMCAL_OADB_Recalib.C:246
 CreateEMCAL_OADB_Recalib.C:247
 CreateEMCAL_OADB_Recalib.C:248
 CreateEMCAL_OADB_Recalib.C:249
 CreateEMCAL_OADB_Recalib.C:250
 CreateEMCAL_OADB_Recalib.C:251
 CreateEMCAL_OADB_Recalib.C:252
 CreateEMCAL_OADB_Recalib.C:253
 CreateEMCAL_OADB_Recalib.C:254
 CreateEMCAL_OADB_Recalib.C:255
 CreateEMCAL_OADB_Recalib.C:256
 CreateEMCAL_OADB_Recalib.C:257
 CreateEMCAL_OADB_Recalib.C:258
 CreateEMCAL_OADB_Recalib.C:259
 CreateEMCAL_OADB_Recalib.C:260
 CreateEMCAL_OADB_Recalib.C:261
 CreateEMCAL_OADB_Recalib.C:262
 CreateEMCAL_OADB_Recalib.C:263
 CreateEMCAL_OADB_Recalib.C:264
 CreateEMCAL_OADB_Recalib.C:265
 CreateEMCAL_OADB_Recalib.C:266
 CreateEMCAL_OADB_Recalib.C:267
 CreateEMCAL_OADB_Recalib.C:268
 CreateEMCAL_OADB_Recalib.C:269
 CreateEMCAL_OADB_Recalib.C:270
 CreateEMCAL_OADB_Recalib.C:271