AliRsnReader:
[u/mrichter/AliRoot.git] / PHOS / macros / CalibrationDB / AliPHOSSetCDB.C
index 770c7bb5396b2c99ec211a9440098d54d323d088..c74447c00b8908304a7d93e25e6fc207becec3c1 100644 (file)
 #include "AliCDBStorage.h"
 #endif
 
+static const Int_t nMod =  5;
+static const Int_t nCol = 56;
+static const Int_t nRow = 64;
 
 void AliPHOSSetCDB()
 {
   TControlBar *menu = new TControlBar("vertical","PHOS CDB");
   menu->AddButton("Help to run PHOS CDB","Help()",
-                 "Explains how to use PHOS CDS menus");
-  menu->AddButton("Equal CC","SetCC(0)",
-                 "Set equal calibration coefficients");
-  menu->AddButton("Decalibrate","SetCC(1)",
-                 "Set random decalibration calibration coefficients");
-  menu->AddButton("Read equal CC","GetCC(0)",
-                 "Read initial equal calibration coefficients");
-  menu->AddButton("Read random CC","GetCC(1)",
+                 "Explains how to use PHOS CDB menus");
+  menu->AddButton("Create ideal calibration","SetCC(0)",
+                 "Set equal CC");
+  menu->AddButton("Create full decalibration","SetCC(1)",
+                 "Set random decalibration CC");
+  menu->AddButton("Create residual decalibration","SetCC(2)",
+                 "Set residual decalibration calibration coefficients");
+
+  menu->AddButton("Read ideal calibration","GetCC(0)",
+                 "Read equal calibration coefficients");
+  menu->AddButton("Read full decalibration","GetCC(1)",
                  "Read random decalibration calibration coefficients");
+  menu->AddButton("Read residual calibration","GetCC(2)",
+                 "Read residial calibration coefficients");
+  menu->AddButton("Exit","gApplication->Terminate(0)","Quit aliroot session");
   menu->Show();
 }
 
-//------------------------------------------------------------------------
+//-----------------------------------------------------------------------
 void Help()
 {
-  char *string =
-    "\nSet calibration parameters and write them into ALICE CDB.
-Press button \"Equal CC\" to create equal pedestals and gain factors.
-Press button \"Decalibrate\" to create random pedestals and gain factors to imitate decalibrated detector\n";
-  printf(string);
+  TString string="\nSet calibration parameters and write them into ALICE OCDB:";
+  string += "\n\tPress button \"Equal CC\" to create equal calibration coefficients;";
+  string += "\n\tPress button \"Full decalibration\" to create \n\t random calibration coefficients with 20\% spread \n\t to imitate fully decalibrated detector;";
+  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";
+  printf("%s",string.Data());
 }
 
 //------------------------------------------------------------------------
@@ -54,35 +63,50 @@ void SetCC(Int_t flag=0)
   // Writing calibration coefficients into the Calibration DB
   // Arguments:
   //   flag=0: all calibration coefficients are equal
-  //   flag=1: all calibration coefficients random (decalibration)
+  //   flag=1: decalibration coefficients
+  //   flag=2: calibration coefficients equal to inverse decalibration ones
   // Author: Boris Polishchuk (Boris.Polichtchouk at cern.ch)
 
   TString DBFolder;
   Int_t firstRun   =  0;
-  Int_t lastRun    = 10;
+  Int_t lastRun    =  0;
   Int_t beamPeriod =  1;
   char* objFormat  = "";
 
   AliPHOSCalibData* cdb = 0;
 
   if      (flag == 0) {
+    // Ideal calibration with all channels at nominal value 0.005
     DBFolder  ="local://InitCalibDB";
     firstRun  =  0;
-    lastRun   =  0;
-    objFormat = "PHOS initial gain factors and pedestals";
+    lastRun   =  999999;
+    objFormat = "PHOS ideal pedestals and ADC gain factors (5x64x56)";
     cdb = new AliPHOSCalibData();
     cdb->CreateNew();
   }
 
   else if (flag == 1) {
-    DBFolder  ="local://DeCalibDB";
+    // Full decalibration is +-10% of the nominal value
+    DBFolder  ="local://FullDecalibDB";
     firstRun  =  0;
-    lastRun   = 10;
-    objFormat = "PHOS random pedestals and ADC gain factors (5x64x56)";
+    lastRun   =  999999;
+    objFormat = "PHOS fully decalibrated calibration coefficients (5x64x56)";
  
     cdb = new AliPHOSCalibData();    
-    cdb->RandomEmc();
-    cdb->RandomCpv();
+    cdb->RandomEmc(0.045,0.055);
+    cdb->RandomCpv(0.0008,0.0016);
+  }
+  
+  else if (flag == 2) {
+    // Residual decalibration is +-1% of the nominal value
+    DBFolder  ="local://ResidualCalibDB";
+    firstRun  =  0;
+    lastRun   =  999999;
+    objFormat = "PHOS residual calibration coefficients (5x64x56)";
+    
+    cdb = new AliPHOSCalibData();    
+    cdb->RandomEmc(0.00495,0.00505);
+    cdb->RandomCpv(0.00115,0.00125);
   }
   
   //Store calibration data into database
@@ -93,10 +117,14 @@ void SetCC(Int_t flag=0)
   md.SetResponsible("Boris Polichtchouk");
   
   AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
-  AliCDBManager::Instance()->SetSpecificStorage("PHOS",DBFolder.Data());
+  if(gSystem->Getenv("STORAGE")){
+    cout << "Setting specific storage" << endl;
+    AliCDBManager::Instance()->SetSpecificStorage("PHOS/*",DBFolder.Data());
+  }
 
   cdb->WriteEmc(firstRun,lastRun,&md);
   cdb->WriteCpv(firstRun,lastRun,&md);
+  cdb->WriteEmcBadChannelsMap(firstRun,lastRun,&md);
 
 }
 
@@ -106,45 +134,44 @@ void GetCC(Int_t flag=0)
   // Read calibration coefficients into the Calibration DB
   // Arguments:
   //   flag=0: all calibration coefficients are equal
-  //   flag=1: all calibration coefficients random (decalibration)
+  //   flag=1: decalibration coefficients
+  //   flag=2: calibration coefficients equal to inverse decalibration ones
   // Author: Yuri.Kharlov at cern.ch
 
+  gStyle->SetPalette(1);
+  gStyle->SetOptStat(0);
   TString DBFolder;
+  Int_t runNumber;
 
   if      (flag == 0) {
     DBFolder  ="local://InitCalibDB";
+    runNumber = 0;
   }
   else if (flag == 1) {
-    DBFolder  ="local://DeCalibDB";
+    DBFolder  ="local://FullDecalibDB";
+    runNumber = 0;
+  }
+  else if (flag == 2) {
+    DBFolder  ="local://ResidualCalibDB";
+    runNumber = 0;
   }
 
   AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
-  AliCDBManager::Instance()->SetSpecificStorage("PHOS",DBFolder.Data());
-
-  AliPHOSCalibData* clb  = new AliPHOSCalibData(gAlice->GetRunNumber());
+  if(gSystem->Getenv("STORAGE")){
+    cout << "Setting specific storage" << endl;
+    AliCDBManager::Instance()->SetSpecificStorage("PHOS/*",DBFolder.Data());
+  }
 
-  static const Int_t nMod =  5;
-  static const Int_t nCol = 56;
-  static const Int_t nRow = 64;
+  AliPHOSCalibData* clb  = new AliPHOSCalibData(runNumber);
 
   TH2::AddDirectory(kFALSE);
 
-  TH2F* hPed[5];
   TH2F* hGain[5];
 
-  TCanvas *cPed  = new TCanvas("cPed" ,"PHOS EMC Pedestals"   , 10,10,400,800);
-  TCanvas *cGain = new TCanvas("cGain","PHOS EMC Gain factors",410,10,400,800);
-  cPed ->Divide(1,5);
-  cGain->Divide(1,5);
+  TCanvas *cGain = new TCanvas("cGain","PHOS EMC Gain factors",10,10,700,500);
+  cGain->Divide(3,2);
 
   for (Int_t module=1; module<=nMod; module++) {
-    TString namePed="hPed";
-    namePed+=module;
-    TString titlePed="Pedestals in module ";
-    titlePed+=module;
-    hPed[module-1] = new TH2F(namePed.Data(),titlePed.Data(),
-                           nCol,1.,1.*nCol,nRow,1.,1.*nRow);
-
     TString nameGain="hGain";
     nameGain+=module;
     TString titleGain="Gain factors in module ";
@@ -154,17 +181,13 @@ void GetCC(Int_t flag=0)
 
     for (Int_t column=1; column<=nCol; column++) {
       for (Int_t row=1; row<=nRow; row++) {
-       Float_t ped  = clb->GetADCpedestalEmc(module,column,row);
-       Float_t gain = clb->GetADCchannelEmc (module,column,row);
-       hPed[module-1]->SetBinContent(column,row,ped);
+        Float_t gain = clb->GetADCchannelEmc (module,column,row);
        hGain[module-1]->SetBinContent(column,row,gain);
       }
     }
-    cPed ->cd(module);
-    hPed[module-1]->Draw("lego2");
     cGain->cd(module);
-    hGain[module-1]->Draw("lego2");
+    hGain[module-1]->SetMinimum(0);
+    hGain[module-1]->Draw("colz");
   }
-  cPed ->Print("pedestals.eps");
   cGain->Print("gains.eps");
 }