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"
24 static const Int_t nMod = 5;
25 static const Int_t nCol = 56;
26 static const Int_t nRow = 64;
30 TControlBar *menu = new TControlBar("vertical","PHOS CDB");
31 menu->AddButton("Help to run PHOS CDB","Help()",
32 "Explains how to use PHOS CDB menus");
33 menu->AddButton("Create ideal calibration","SetCC(0)",
35 menu->AddButton("Create full decalibration","SetCC(1)",
36 "Set random decalibration CC");
37 menu->AddButton("Create residual decalibration","SetCC(2)",
38 "Set residual decalibration calibration coefficients");
40 menu->AddButton("Read ideal calibration","GetCC(0)",
41 "Read equal calibration coefficients");
42 menu->AddButton("Read full decalibration","GetCC(1)",
43 "Read random decalibration calibration coefficients");
44 menu->AddButton("Read residual calibration","GetCC(2)",
45 "Read residial calibration coefficients");
46 menu->AddButton("Exit","gApplication->Terminate(0)","Quit aliroot session");
50 //-----------------------------------------------------------------------
53 TString string="\nSet calibration parameters and write them into ALICE OCDB:";
54 string += "\n\tPress button \"Equal CC\" to create equal calibration coefficients;";
55 string += "\n\tPress button \"Full decalibration\" to create \n\t random calibration coefficients with 20\% spread \n\t to imitate fully decalibrated detector;";
56 string += "\n\tPress button \"Residual decalibration\" to create \n\t random calibration coefficients with +-2\% spread\n\t to imitate decalibrated detector after initial calibration.\n";
57 printf("%s",string.Data());
60 //------------------------------------------------------------------------
61 void SetCC(Int_t flag=0)
63 // Writing calibration coefficients into the Calibration DB
65 // flag=0: all calibration coefficients are equal
66 // flag=1: decalibration coefficients
67 // flag=2: calibration coefficients equal to inverse decalibration ones
68 // Author: Boris Polishchuk (Boris.Polichtchouk at cern.ch)
76 AliPHOSCalibData* cdb = 0;
79 // Ideal calibration with all channels at nominal value 0.005
80 DBFolder ="local://InitCalibDB";
83 objFormat = "PHOS ideal pedestals and ADC gain factors (5x64x56)";
84 cdb = new AliPHOSCalibData();
89 // Full decalibration is +-10% of the nominal value
90 DBFolder ="local://FullDecalibDB";
93 objFormat = "PHOS fully decalibrated calibration coefficients (5x64x56)";
95 cdb = new AliPHOSCalibData();
96 cdb->RandomEmc(0.045,0.055);
97 cdb->RandomCpv(0.0008,0.0016);
100 else if (flag == 2) {
101 // Residual decalibration is +-1% of the nominal value
102 DBFolder ="local://ResidualCalibDB";
105 objFormat = "PHOS residual calibration coefficients (5x64x56)";
107 cdb = new AliPHOSCalibData();
108 cdb->RandomEmc(0.00495,0.00505);
109 cdb->RandomCpv(0.00115,0.00125);
112 //Store calibration data into database
115 md.SetComment(objFormat);
116 md.SetBeamPeriod(beamPeriod);
117 md.SetResponsible("Boris Polichtchouk");
119 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
120 if(gSystem->Getenv("STORAGE")){
121 cout << "Setting specific storage" << endl;
122 AliCDBManager::Instance()->SetSpecificStorage("PHOS/*",DBFolder.Data());
125 cdb->WriteEmc(firstRun,lastRun,&md);
126 cdb->WriteCpv(firstRun,lastRun,&md);
127 cdb->WriteEmcBadChannelsMap(firstRun,lastRun,&md);
131 //------------------------------------------------------------------------
132 void GetCC(Int_t flag=0)
134 // Read calibration coefficients into the Calibration DB
136 // flag=0: all calibration coefficients are equal
137 // flag=1: decalibration coefficients
138 // flag=2: calibration coefficients equal to inverse decalibration ones
139 // Author: Yuri.Kharlov at cern.ch
141 gStyle->SetPalette(1);
142 gStyle->SetOptStat(0);
147 DBFolder ="local://InitCalibDB";
150 else if (flag == 1) {
151 DBFolder ="local://FullDecalibDB";
154 else if (flag == 2) {
155 DBFolder ="local://ResidualCalibDB";
159 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
160 if(gSystem->Getenv("STORAGE")){
161 cout << "Setting specific storage" << endl;
162 AliCDBManager::Instance()->SetSpecificStorage("PHOS/*",DBFolder.Data());
165 AliPHOSCalibData* clb = new AliPHOSCalibData(runNumber);
167 TH2::AddDirectory(kFALSE);
171 TCanvas *cGain = new TCanvas("cGain","PHOS EMC Gain factors",10,10,700,500);
174 for (Int_t module=1; module<=nMod; module++) {
175 TString nameGain="hGain";
177 TString titleGain="Gain factors in module ";
179 hGain[module-1] = new TH2F(nameGain.Data(),titleGain.Data(),
180 nCol,1.,1.*nCol,nRow,1.,1.*nRow);
182 for (Int_t column=1; column<=nCol; column++) {
183 for (Int_t row=1; row<=nRow; row++) {
184 Float_t gain = clb->GetADCchannelEmc (module,column,row);
185 hGain[module-1]->SetBinContent(column,row,gain);
189 hGain[module-1]->SetMinimum(0);
190 hGain[module-1]->Draw("colz");
192 cGain->Print("gains.eps");