3 // Script to create calibration parameters and store them into CDB
4 // Two sets of calibration parameters can be created:
6 // 2) randomly distributed parameters for decalibrated detector silumations
10 menu = new TControlBar("vertical","PHOS CDB");
11 menu->AddButton("Help to run PHOS CDB","Help()",
12 "Explains how to use PHOS CDS menus");
13 menu->AddButton("Equal CC","SetCC(0)",
14 "Set equal calibration coefficients");
15 menu->AddButton("Decalibrate","SetCC(1)",
16 "Set random decalibration calibration coefficients");
17 menu->AddButton("Real equal CC","GetCC(0)",
18 "Read initial equal calibration coefficients");
19 menu->AddButton("Real random CC","GetCC(1)",
20 "Read random decalibration calibration coefficients");
24 //------------------------------------------------------------------------
28 "\nSet calibration parameters and write them into ALICE CDB.
29 Press button \"Equal CC\" to create equal pedestals and gain factors.
30 Press button \"Decalibrate\" to create random pedestals and gain factors to imitate decalibrated detector\n";
34 //------------------------------------------------------------------------
37 // Writing calibration coefficients into the Calibration DB
39 // flag=0: all calibration coefficients are equal
40 // flag=1: all calibration coefficients random (decalibration)
41 // Author: Boris Polishchuk (Boris.Polichtchouk at cern.ch)
50 DBFolder ="local://InitCalibDB";
53 objFormat = "PHOS initial gain factors and pedestals";
56 DBFolder ="local://deCalibDB";
59 objFormat = "PHOS random pedestals and ADC gain factors (5x64x56)";
62 AliPHOSCalibData *calibda=new AliPHOSCalibData("PHOS");
64 Float_t fADCpedestalEmc = 0.005;
65 Float_t fADCchanelEmc = 0.0015;
69 for(Int_t module=1; module<6; module++) {
70 for(Int_t column=1; column<57; column++) {
71 for(Int_t row=1; row<65; row++) {
74 // Spread calibration coefficients uniformly with
75 // Cmax/Cmin = 5, (Cmax-Cmin)/2 = 0.0015
76 // and pedestals 0.005 +-10%
77 fADCchanelEmc =rn.Uniform(0.00075,0.00375);
78 fADCpedestalEmc=rn.Uniform(0.0045,0.0055);
80 calibda->SetADCchannelEmc (module,column,row,fADCchanelEmc);
81 calibda->SetADCpedestalEmc(module,column,row,fADCpedestalEmc);
86 //Store calibration data into database
89 md.SetComment(objFormat);
90 md.SetBeamPeriod(beamPeriod);
91 md.SetResponsible("Boris Polichtchouk");
93 AliCDBId id("PHOS/Calib/GainFactors_and_Pedestals",firstRun,lastRun);
95 AliCDBManager* man = AliCDBManager::Instance();
96 AliCDBStorage* loc = man->GetStorage(DBFolder.Data());
97 loc->Put(calibda, id, &md);
101 //------------------------------------------------------------------------
104 // Read calibration coefficients into the Calibration DB
106 // flag=0: all calibration coefficients are equal
107 // flag=1: all calibration coefficients random (decalibration)
108 // Author: Yuri.Kharlov at cern.ch
113 Int_t beamPeriod = 1;
117 DBFolder ="local://InitCalibDB";
119 else if (flag == 1) {
120 DBFolder ="local://deCalibDB";
123 AliPHOSCalibData* clb = (AliPHOSCalibData*)(AliCDBManager::Instance()
124 ->GetStorage(DBFolder.Data())->Get("PHOS/Calib/GainFactors_and_Pedestals",
125 gAlice->GetRunNumber())->GetObject());
127 static const Int_t nMod = 5;
128 static const Int_t nCol = 56;
129 static const Int_t nRow = 64;
131 TH2F *hPed[nMod], *hGain[nMod];
132 TCanvas *cPed = new TCanvas("cPed" ,"Pedestals" , 10,10,400,800);
133 TCanvas *cGain = new TCanvas("cGain","Gain factors",410,10,400,800);
137 for (Int_t module=1; module<=nMod; module++) {
138 TString namePed="hPed";
140 TString titlePed="Pedestals in module ";
142 hPed[module-1] = new TH2F(namePed.Data(),titlePed.Data(),
143 nCol,1.,1.*nCol,nRow,1.,1.*nRow);
145 TString nameGain="hGain";
147 TString titleGain="Gain factors in module ";
149 hGain[module-1] = new TH2F(nameGain.Data(),titleGain.Data(),
150 nCol,1.,1.*nCol,nRow,1.,1.*nRow);
152 for (Int_t column=1; column<=nCol; column++) {
153 for (Int_t row=1; row<=nRow; row++) {
154 Float_t ped = clb->GetADCpedestalEmc(module,column,row);
155 Float_t gain = clb->GetADCchannelEmc (module,column,row);
156 hPed[module-1] ->SetBinContent(column,row,ped);
157 hGain[module-1]->SetBinContent(column,row,gain);
161 hPed[module-1] ->Draw("lego2");
163 hGain[module-1]->Draw("lego2");
165 cPed ->Print("pedestals.eps");
166 cGain->Print("gains.eps");