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
9 #include "TControlBar.h"
16 #include "AliPHOSCalibData.h"
17 #include "AliCDBMetaData.h"
19 #include "AliCDBEntry.h"
20 #include "AliCDBManager.h"
21 #include "AliCDBStorage.h"
27 TControlBar *menu = new TControlBar("vertical","PHOS CDB");
28 menu->AddButton("Help to run PHOS CDB","Help()",
29 "Explains how to use PHOS CDS menus");
30 menu->AddButton("Equal CC","SetCC(0)",
31 "Set equal calibration coefficients");
32 menu->AddButton("Decalibrate","SetCC(1)",
33 "Set random decalibration calibration coefficients");
34 menu->AddButton("Read equal CC","GetCC(0)",
35 "Read initial equal calibration coefficients");
36 menu->AddButton("Read random CC","GetCC(1)",
37 "Read random decalibration calibration coefficients");
41 //------------------------------------------------------------------------
45 "\nSet calibration parameters and write them into ALICE CDB.
46 Press button \"Equal CC\" to create equal pedestals and gain factors.
47 Press button \"Decalibrate\" to create random pedestals and gain factors to imitate decalibrated detector\n";
51 //------------------------------------------------------------------------
52 void SetCC(Int_t flag=0)
54 // Writing calibration coefficients into the Calibration DB
56 // flag=0: all calibration coefficients are equal
57 // flag=1: all calibration coefficients random (decalibration)
58 // Author: Boris Polishchuk (Boris.Polichtchouk at cern.ch)
66 AliPHOSCalibData* cdb = 0;
69 DBFolder ="local://InitCalibDB";
72 objFormat = "PHOS initial pedestals and ADC gain factors (5x64x56)";
73 cdb = new AliPHOSCalibData();
78 DBFolder ="local://DeCalibDB";
81 objFormat = "PHOS random pedestals and ADC gain factors (5x64x56)";
83 cdb = new AliPHOSCalibData();
88 //Store calibration data into database
91 md.SetComment(objFormat);
92 md.SetBeamPeriod(beamPeriod);
93 md.SetResponsible("Boris Polichtchouk");
95 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
96 AliCDBManager::Instance()->SetSpecificStorage("PHOS",DBFolder.Data());
98 cdb->WriteEmc(firstRun,lastRun,&md);
99 cdb->WriteCpv(firstRun,lastRun,&md);
103 //------------------------------------------------------------------------
104 void GetCC(Int_t flag=0)
106 // Read calibration coefficients into the Calibration DB
108 // flag=0: all calibration coefficients are equal
109 // flag=1: all calibration coefficients random (decalibration)
110 // Author: Yuri.Kharlov at cern.ch
115 DBFolder ="local://InitCalibDB";
117 else if (flag == 1) {
118 DBFolder ="local://DeCalibDB";
121 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
122 // AliCDBManager::Instance()->SetSpecificStorage("PHOS",DBFolder.Data());
124 AliPHOSCalibData* clb = new AliPHOSCalibData(gAlice->GetRunNumber());
126 static const Int_t nMod = 5;
127 static const Int_t nCol = 56;
128 static const Int_t nRow = 64;
130 TH2::AddDirectory(kFALSE);
135 TCanvas *cPed = new TCanvas("cPed" ,"PHOS EMC Pedestals" , 10,10,400,800);
136 TCanvas *cGain = new TCanvas("cGain","PHOS EMC Gain factors",410,10,400,800);
140 for (Int_t module=1; module<=nMod; module++) {
141 TString namePed="hPed";
143 TString titlePed="Pedestals in module ";
145 hPed[module-1] = new TH2F(namePed.Data(),titlePed.Data(),
146 nCol,1.,1.*nCol,nRow,1.,1.*nRow);
148 TString nameGain="hGain";
150 TString titleGain="Gain factors in module ";
152 hGain[module-1] = new TH2F(nameGain.Data(),titleGain.Data(),
153 nCol,1.,1.*nCol,nRow,1.,1.*nRow);
155 for (Int_t column=1; column<=nCol; column++) {
156 for (Int_t row=1; row<=nRow; row++) {
157 Float_t ped = clb->GetADCpedestalEmc(module,column,row);
158 Float_t gain = clb->GetADCchannelEmc (module,column,row);
159 hPed[module-1]->SetBinContent(column,row,ped);
160 hGain[module-1]->SetBinContent(column,row,gain);
164 hPed[module-1]->Draw("lego2");
166 hGain[module-1]->Draw("lego2");
168 cPed ->Print("pedestals.eps");
169 cGain->Print("gains.eps");