#if !defined(__CINT__) || defined(__MAKECINT__)
#include "TH3.h"
#include "TF1.h"
#include "TFile.h"
#include "TLine.h"
#include "TCanvas.h"
#include "AliPHOSEmcBadChannelsMap.h"
#include "AliCDBId.h"
#include "AliCDBMetaData.h"
#include "AliCDBEntry.h"
#include "AliCDBManager.h"
#endif
void MakeRandomBadChannelMap(const TString modules="3",
const Float_t fractionBad=0.02)
{
// Create a random bad channel map for selected modules
// with a fraction of bad channel equal to fractionBad
// Author Yuri Kharlov
// 20.07.2008
const Int_t nZ=56, nX=64;
Int_t module;
AliPHOSEmcBadChannelsMap badMap;
TH2I *hBadChannels[5];
TCanvas *cb[5];
gStyle->SetOptStat(10);
for (Int_t iModule=0; iModule<modules.Length(); iModule++) {
const char chMod = modules[iModule];
module = atoi(&chMod);
if (module<1 || module>5) {
printf("Wrong module number %d, can be from 1 to 5\n",module);
exit(1);
}
printf("Creating bad channel map for module %d\n",module);
hBadChannels[iModule] = new TH2I(Form("hBadChannels%d",module),
Form("Bad channels for module %d",module),
nZ,1,nZ, nX,1,nX);
hBadChannels[iModule]->SetXTitle("z, cells");
hBadChannels[iModule]->SetYTitle("x, cells");
for(Int_t iZ=1; iZ<=nZ; iZ++){
for(Int_t iX=1; iX<=nX; iX++){
if (gRandom->Rndm() < fractionBad) {
hBadChannels[iModule]->SetBinContent(iZ,iX,1);
badMap.SetBadChannel(module,iZ,iX);
}
}
}
cb[iModule] = new TCanvas(Form("BadMap%d",module),
Form("Bad channels for module %d",module),
15+iModule*40,15+iModule*40,500,600) ;
cb[iModule]->SetFillColor(kWhite);
hBadChannels[iModule]->DrawClone("box") ;
}
// TFile * fout = new TFile("BadMap.root","recreate") ;
// hBadMap->Write() ;
// fout->Close() ;
// put now result to local CDB
AliCDBManager *CDB = AliCDBManager::Instance();
CDB->SetDefaultStorage("local://./");
AliCDBMetaData *md= new AliCDBMetaData();
md->SetResponsible("Yuri Kharlov");
md->SetComment(Form("Random bad channel map with %.3f bad channels",fractionBad));
AliCDBId id("PHOS/Calib/EmcBadChannels",0,999999);
CDB->Put(&badMap,id, md);
}
MakeRandomBadChannelMap.C:1 MakeRandomBadChannelMap.C:2 MakeRandomBadChannelMap.C:3 MakeRandomBadChannelMap.C:4 MakeRandomBadChannelMap.C:5 MakeRandomBadChannelMap.C:6 MakeRandomBadChannelMap.C:7 MakeRandomBadChannelMap.C:8 MakeRandomBadChannelMap.C:9 MakeRandomBadChannelMap.C:10 MakeRandomBadChannelMap.C:11 MakeRandomBadChannelMap.C:12 MakeRandomBadChannelMap.C:13 MakeRandomBadChannelMap.C:14 MakeRandomBadChannelMap.C:15 MakeRandomBadChannelMap.C:16 MakeRandomBadChannelMap.C:17 MakeRandomBadChannelMap.C:18 MakeRandomBadChannelMap.C:19 MakeRandomBadChannelMap.C:20 MakeRandomBadChannelMap.C:21 MakeRandomBadChannelMap.C:22 MakeRandomBadChannelMap.C:23 MakeRandomBadChannelMap.C:24 MakeRandomBadChannelMap.C:25 MakeRandomBadChannelMap.C:26 MakeRandomBadChannelMap.C:27 MakeRandomBadChannelMap.C:28 MakeRandomBadChannelMap.C:29 MakeRandomBadChannelMap.C:30 MakeRandomBadChannelMap.C:31 MakeRandomBadChannelMap.C:32 MakeRandomBadChannelMap.C:33 MakeRandomBadChannelMap.C:34 MakeRandomBadChannelMap.C:35 MakeRandomBadChannelMap.C:36 MakeRandomBadChannelMap.C:37 MakeRandomBadChannelMap.C:38 MakeRandomBadChannelMap.C:39 MakeRandomBadChannelMap.C:40 MakeRandomBadChannelMap.C:41 MakeRandomBadChannelMap.C:42 MakeRandomBadChannelMap.C:43 MakeRandomBadChannelMap.C:44 MakeRandomBadChannelMap.C:45 MakeRandomBadChannelMap.C:46 MakeRandomBadChannelMap.C:47 MakeRandomBadChannelMap.C:48 MakeRandomBadChannelMap.C:49 MakeRandomBadChannelMap.C:50 MakeRandomBadChannelMap.C:51 MakeRandomBadChannelMap.C:52 MakeRandomBadChannelMap.C:53 MakeRandomBadChannelMap.C:54 MakeRandomBadChannelMap.C:55 MakeRandomBadChannelMap.C:56 MakeRandomBadChannelMap.C:57 MakeRandomBadChannelMap.C:58 MakeRandomBadChannelMap.C:59 MakeRandomBadChannelMap.C:60 MakeRandomBadChannelMap.C:61 MakeRandomBadChannelMap.C:62 MakeRandomBadChannelMap.C:63 MakeRandomBadChannelMap.C:64 MakeRandomBadChannelMap.C:65 MakeRandomBadChannelMap.C:66 MakeRandomBadChannelMap.C:67 MakeRandomBadChannelMap.C:68 MakeRandomBadChannelMap.C:69 MakeRandomBadChannelMap.C:70 MakeRandomBadChannelMap.C:71 MakeRandomBadChannelMap.C:72 MakeRandomBadChannelMap.C:73 MakeRandomBadChannelMap.C:74 MakeRandomBadChannelMap.C:75