32 #include <Riostream.h> 41 #include "AliEMCALGeometry.h" 43 #include "AliAODEvent.h" 44 #include "AliOADBContainer.h" 45 #include "AliDataFile.h" 56 gStyle->SetOptStat(0);
62 Int_t cellColumnAbs,cellRowAbs,trash,cellID;
63 TString summaryPDF=Form(
"./OADB_Summary.pdf");
67 cout<<
" o Open .txt file with run indices. Name = " << runList << endl;
68 TString RunPath = Form(
"./%s",runList.Data());
69 FILE *pFile = fopen(RunPath.Data(),
"r");
72 cout<<
"couldn't open file "<<RunPath<<
"!"<<endl;
78 std::vector<Int_t> RunIdVec;
81 ncols = fscanf(pFile,
" %d ",&q);
83 RunIdVec.push_back(q);
88 std::sort (RunIdVec.begin(), RunIdVec.end());
89 Int_t nRuns=RunIdVec.size();
94 cout<<
" o Alice path: "<<pathOADB<<endl;
95 cout<<
" o Alice path+: "<<pathOADB<<
"/OADB/EMCAL/EMCALBadChannels.root"<<endl;
98 AliOADBContainer *cont=
new AliOADBContainer(
"");
102 TFile *fbad=
new TFile(Form(
"%s/OADB/EMCAL/EMCALBadChannels.root",pathOADB.Data()),
"read");
103 if (!fbad || fbad->IsZombie())
105 cout<<
"couldn't find OADB container with help of pathOADB !"<<endl;
109 cont->InitFromFile(Form(
"%s/OADB/EMCAL/EMCALBadChannels.root",pathOADB.Data()),
"AliEMCALBadChannels");
114 TFile *fbad=
new TFile(AliDataFile::GetFileNameOADB(
"EMCAL/EMCALBadChannels.root").data(),
"read");
115 if (!fbad || fbad->IsZombie())
117 cout<<
"OADB/EMCAL/EMCALBadChannels.root was not found !"<<endl;
121 cont->InitFromFile(AliDataFile::GetFileNameOADB(
"EMCAL/EMCALBadChannels.root").data(),
"AliEMCALBadChannels");
131 cout<<
" o Geometry loaded for Run "<<RunIdVec.at(0)<<endl;
136 Int_t fNMaxCols = 48;
137 Int_t fNMaxRows = 24;
139 Int_t fNMaxColsAbs = 2*fNMaxCols;
142 histoName = Form(
"2DChannelMap_Flag_Bad");
143 TH2F *plot2D_Bad_OADB =
new TH2F(histoName,histoName,fNMaxColsAbs+1,-0.5,fNMaxColsAbs+0.5, fNMaxRowsAbs+1,-0.5,fNMaxRowsAbs+0.5);
145 plot2D_Bad_OADB->GetXaxis()->SetTitle(
"cell column (#eta direction)");
146 plot2D_Bad_OADB->GetYaxis()->SetTitle(
"cell row (#phi direction)");
147 histoName = Form(
"2DChannelMap_Flag_Dead");
148 TH2F *plot2D_Dead_OADB =
new TH2F(histoName,histoName,fNMaxColsAbs+1,-0.5,fNMaxColsAbs+0.5, fNMaxRowsAbs+1,-0.5,fNMaxRowsAbs+0.5);
150 plot2D_Dead_OADB->GetXaxis()->SetTitle(
"cell column (#eta direction)");
151 plot2D_Dead_OADB->GetYaxis()->SetTitle(
"cell row (#phi direction)");
152 histoName = Form(
"2DChannelMap_Flag_Good");
153 TH2F *plot2D_Good_OADB =
new TH2F(histoName,histoName,fNMaxColsAbs+1,-0.5,fNMaxColsAbs+0.5, fNMaxRowsAbs+1,-0.5,fNMaxRowsAbs+0.5);
155 plot2D_Good_OADB->GetXaxis()->SetTitle(
"cell column (#eta direction)");
156 plot2D_Good_OADB->GetYaxis()->SetTitle(
"cell row (#phi direction)");
160 TCanvas* C2 =
new TCanvas(
"CompareCanvas",
"Compare OADB to LocalFile",1400,500);
163 cout<<
" o Checking "<<nRuns<<
" runs: "<<endl;
164 std::vector<Int_t> RunsWithoutMap;
165 std::vector<Int_t> RunsWithMap;
167 Int_t dummyRun = 282367;
168 for(
Int_t iRun = 0; iRun < nRuns; iRun++)
171 if(iRun%5==0 && iRun!=0)cout<<
"."<<flush;
172 if(iRun%20==0)cout<<
" o Run No."<<RunIdVec.at(iRun)<<endl;
176 cout<<
"Error - No bad map for run Number "<<RunIdVec.at(iRun)<<
" online!!"<<endl;
177 cout<<
"Check if you have the latest EOS version and/or check the BadChannelTwiki"<<endl;
178 RunsWithoutMap.push_back(RunIdVec.at(iRun));
181 RunsWithMap.push_back(RunIdVec.at(iRun));
184 plot2D_Bad_OADB ->Reset();
185 plot2D_Dead_OADB->Reset();
186 plot2D_Good_OADB->Reset();
187 for(
Int_t iSM = 0; iSM < nSM; iSM++)
190 h[iSM]=(TH1C *)recal->FindObject(Form(
"EMCALBadChannelMap_Mod%d",iSM));
192 for(
Int_t column=0;column<48;column++)
194 for(
Int_t row=0;row<24;row++)
198 cellID=geom->GetAbsCellIdFromCellIndexes(iSM,inRow,inCol);
200 if(h[iSM]->GetBinContent(column,row)>1)
202 plot2D_Bad_OADB->SetBinContent(cellColumnAbs,cellRowAbs,1);
204 if(h[iSM]->GetBinContent(column,row)==1)
206 plot2D_Dead_OADB->SetBinContent(cellColumnAbs,cellRowAbs,1);
208 if(h[iSM]->GetBinContent(column,row)==0)
210 plot2D_Good_OADB->SetBinContent(cellColumnAbs,cellRowAbs,1);
216 TLatex*
text=
new TLatex(0.15,0.85,Form(
"Run Number %i",RunIdVec.at(iRun)));
217 text->SetTextSize(0.05);
219 text->SetTextColor(1);
220 text->SetTextAngle(0);
222 plot2D_Good_OADB->SetTitle(
"Good Cells OADB");
223 plot2D_Good_OADB->DrawCopy(
"colz");
226 plot2D_Dead_OADB->SetTitle(
"Dead Cells OADB");
227 plot2D_Dead_OADB->DrawCopy(
"colz");
229 plot2D_Bad_OADB->SetTitle(
"Bad Cells OADB");
230 plot2D_Bad_OADB->DrawCopy(
"colz");
235 if(iRun==0) C2 ->Print(Form(
"%s(",summaryPDF.Data()));
236 else if (iRun==nRuns-1) C2 ->Print(Form(
"%s)",summaryPDF.Data()));
237 else C2 ->Print(Form(
"%s",summaryPDF.Data()));
242 cout<<
"==Total Summary=="<<endl;
244 cout<<
"Runs with a bad map ("<<RunsWithMap.size()<<
"): "<<flush;
245 for(
Int_t i=0;i<(
Int_t)RunsWithMap.size();i++)
247 cout<<RunsWithMap.at(i)<<
","<<flush;
250 cout<<
"Runs without a bad map ("<<RunsWithoutMap.size()<<
"): "<<flush;
251 for(
Int_t i=0;i<(
Int_t)RunsWithoutMap.size();i++)
253 cout<<RunsWithoutMap.at(i)<<
","<<flush;
269 gStyle->SetOptStat(0);
275 Int_t cellColumnAbs,cellRowAbs,trash,cellID;
276 TString summaryPDF=Form(
"./AnalysisOutput/%s/Train_%i/OADB_Summary.pdf",period.Data(),trainNo);
280 cout<<
"o o o Open .txt file with run indices. Name = " << runList << endl;
281 TString RunPath = Form(
"./AnalysisInput/%s/Train_%i/%s",period.Data(),trainNo,runList.Data());
282 cout<<
"o o o Open .txt file with run indices = " << RunPath << endl;
283 FILE *pFile = fopen(RunPath.Data(),
"r");
286 cout<<
"couldn't open file "<<RunPath<<
"!"<<endl;
292 std::vector<Int_t> RunIdVec;
295 ncols = fscanf(pFile,
" %d ",&q);
297 RunIdVec.push_back(q);
302 std::sort (RunIdVec.begin(), RunIdVec.end());
303 Int_t nRuns=RunIdVec.size();
309 AliOADBContainer *cont=
new AliOADBContainer(
"");
310 cont->InitFromFile(Form(
"%s/EMCALBadChannels.root",fBasePath.Data()),
"AliEMCALBadChannels");
315 TString path = Form(
"./AnalysisOutput/%s/Train_%i/Version%s",period.Data(),trainNo,version.Data());
316 TString rootFileName= Form(
"%s_INT7_Histograms_V%s.root",period.Data(),version.Data());
317 TFile* outputRoot = TFile::Open(Form(
"%s/%s",path.Data(),rootFileName.Data()));
319 if(!outputRoot)cout<<
"File "<<outputRoot->GetName()<<
" does not exist"<<endl;
320 TH2F* h2DChannelMap_FlagBad =(
TH2F*)outputRoot->Get(
"2DChannelMap_Flag2");
321 TH2F* h2DChannelMap_FlagDead=(
TH2F*)outputRoot->Get(
"2DChannelMap_Flag1");
335 Int_t fNMaxCols = 48;
336 Int_t fNMaxRows = 24;
338 Int_t fNMaxColsAbs = 2*fNMaxCols;
341 histoName = Form(
"2DChannelMap_Flag_Bad");
342 TH2F *plot2D_Bad_OADB =
new TH2F(histoName,histoName,fNMaxColsAbs+1,-0.5,fNMaxColsAbs+0.5, fNMaxRowsAbs+1,-0.5,fNMaxRowsAbs+0.5);
344 plot2D_Bad_OADB->GetXaxis()->SetTitle(
"cell column (#eta direction)");
345 plot2D_Bad_OADB->GetYaxis()->SetTitle(
"cell row (#phi direction)");
346 histoName = Form(
"2DChannelMap_Flag_Dead");
347 TH2F *plot2D_Dead_OADB =
new TH2F(histoName,histoName,fNMaxColsAbs+1,-0.5,fNMaxColsAbs+0.5, fNMaxRowsAbs+1,-0.5,fNMaxRowsAbs+0.5);
349 plot2D_Dead_OADB->GetXaxis()->SetTitle(
"cell column (#eta direction)");
350 plot2D_Dead_OADB->GetYaxis()->SetTitle(
"cell row (#phi direction)");
354 TCanvas* C2 =
new TCanvas(
"CompareCanvas",
"Compare OADB to LocalFile",1400,800);
356 TLatex* textA =
new TLatex(0.5,0.8,
"If empty -> good!");
357 textA->SetTextSize(0.04);
358 textA->SetTextColor(1);
361 cout<<
"Checking "<<nRuns<<
" runs: "<<endl;
362 std::vector<Int_t> RunsWithoutMap;
363 std::vector<Int_t> RunsWithMap;
365 for(
Int_t iRun = 0; iRun < nRuns; iRun++)
368 if(iRun%5==0)cout<<
"."<<flush;
369 if(iRun%20==0)cout<<
"Run No."<<iRun<<endl;
373 cout<<
"Error - No bad map for run Number "<<RunIdVec.at(iRun)<<
" online!!"<<endl;
374 RunsWithoutMap.push_back(RunIdVec.at(iRun));
377 RunsWithMap.push_back(RunIdVec.at(iRun));
379 plot2D_Bad_OADB ->Reset();
380 plot2D_Dead_OADB->Reset();
381 for(
Int_t iSM = 0; iSM < nSM; iSM++)
384 h[iSM]=(TH1C *)recal->FindObject(Form(
"EMCALBadChannelMap_Mod%d",iSM));
386 for(
Int_t column=0;column<48;column++)
388 for(
Int_t row=0;row<24;row++)
392 cellID=geom->GetAbsCellIdFromCellIndexes(iSM,inRow,inCol);
394 if(h[iSM]->GetBinContent(column,row)>1)
396 plot2D_Bad_OADB->SetBinContent(cellColumnAbs,cellRowAbs,1);
398 if(h[iSM]->GetBinContent(column,row)==1)
400 plot2D_Dead_OADB->SetBinContent(cellColumnAbs,cellRowAbs,1);
406 TLatex*
text=
new TLatex(0.15,0.85,Form(
"Run Number %i",RunIdVec.at(iRun)));
407 text->SetTextSize(0.05);
409 text->SetTextColor(1);
410 text->SetTextAngle(0);
414 plot2D_Dead_OADB->SetTitle(
"Dead Cells OADB");
415 plot2D_Dead_OADB->DrawCopy(
"colz");
418 plot2D_Bad_OADB->SetTitle(
"Bad Cells OADB");
419 plot2D_Bad_OADB->DrawCopy(
"colz");
421 h2DChannelMap_FlagDead->SetTitle(
"Dead Cells LocalFile");
422 h2DChannelMap_FlagDead->DrawCopy(
"colz");
424 h2DChannelMap_FlagBad->SetTitle(
"Bad Cells LocalFile");
425 h2DChannelMap_FlagBad->DrawCopy(
"colz");
429 plot2D_Dead_OADB->SetTitle(
"OADB-Local File (Dead)");
430 plot2D_Dead_OADB->Add(h2DChannelMap_FlagDead,-1);
431 plot2D_Dead_OADB->DrawCopy(
"colz");
432 plot2D_Dead_OADB->Add(h2DChannelMap_FlagDead,+1);
435 plot2D_Bad_OADB->SetTitle(
"OADB-Local File (Bad)");
436 plot2D_Bad_OADB->Add(h2DChannelMap_FlagBad,-1);
437 plot2D_Bad_OADB->DrawCopy(
"colz");
438 plot2D_Bad_OADB->Add(h2DChannelMap_FlagBad,+1);
441 plot2D_Dead_OADB->SetTitle(
"OADB/Local File (Dead)");
442 plot2D_Dead_OADB->Divide(h2DChannelMap_FlagDead);
443 plot2D_Dead_OADB->DrawCopy(
"colz");
445 plot2D_Bad_OADB->SetTitle(
"OADB/Local File (Bad)");
446 plot2D_Bad_OADB->Divide(h2DChannelMap_FlagBad);
447 plot2D_Bad_OADB->DrawCopy(
"colz");
452 if(iRun==0) C2 ->Print(Form(
"%s(",summaryPDF.Data()));
453 else if (iRun==nRuns-1) C2 ->Print(Form(
"%s)",summaryPDF.Data()));
454 else C2 ->Print(Form(
"%s",summaryPDF.Data()));
456 cout<<
"==Total Summary=="<<endl;
458 cout<<
"Runs with a bad map ("<<RunsWithMap.size()<<
"): "<<flush;
459 for(
Int_t i=0;i<(
Int_t)RunsWithMap.size();i++)
461 cout<<RunsWithMap.at(i)<<
","<<flush;
464 cout<<
"Runs without a bad map ("<<RunsWithoutMap.size()<<
"): "<<flush;
465 for(
Int_t i=0;i<(
Int_t)RunsWithoutMap.size();i++)
467 cout<<RunsWithoutMap.at(i)<<
","<<flush;
479 gStyle->SetPadTopMargin(0.05);
480 gStyle->SetPadBottomMargin(0.18);
481 gStyle->SetPadRightMargin(0.05);
482 gStyle->SetPadLeftMargin(0.17);
483 gStyle->SetFrameFillColor(10);
488 const Int_t nBlocks=1;
502 TString ListName = Form(
"./AnalysisOutput/%s/Train_%i/%s",period.Data(),trainNo,cellList.Data());
503 cout<<
"o o o Open .txt suggested cell IDs. Name = " << ListName << endl;
504 FILE *pFile = fopen(ListName.Data(),
"r");
507 cout<<
"couldn't open file "<<ListName<<
"!"<<endl;
514 std::vector<Int_t> cellIdVec;
517 ncols = fscanf(pFile,
" %d ",&q);
520 cellIdVec.push_back(q);
525 std::sort (cellIdVec.begin(), cellIdVec.end());
526 Int_t nCells=cellIdVec.size();
527 cout<<
"o found "<<cellIdVec.size()<<
" cells in list"<<endl;
530 TString path = Form(
"./AnalysisOutput/%s/Train_%i",period.Data(),trainNo);
532 TFile* outputRoot[nBlocks];
533 TH2F* h2DAmp[nBlocks];
534 TH2F* h2DRatio[nBlocks];
535 TH2F* h2DCellTime[nBlocks];
537 for(
Int_t iBlock=0;iBlock<nBlocks;iBlock++)
562 if(iBlock==0)rootFileName[iBlock]= Form(
"Version1OADB/%s_INT7_Histograms_V1.root",period.Data());
564 outputRoot[iBlock] = TFile::Open(Form(
"%s/%s",path.Data(),rootFileName[iBlock].Data()));
565 if(!outputRoot[iBlock])cout<<
"File "<<outputRoot[iBlock]->GetName()<<
" does not exist"<<endl;
566 h2DAmp[iBlock] =(
TH2F*)outputRoot[iBlock]->Get(
"hCellAmplitude");
567 h2DRatio[iBlock] =(
TH2F*)outputRoot[iBlock]->Get(
"ratio2DAmp");
568 h2DCellTime[iBlock]=(
TH2F*)outputRoot[iBlock]->Get(
"hCellTime");
571 TCanvas *c1 =
new TCanvas(1);
575 h2DAmp[0]->Draw(
"colz");
578 h2DRatio[0]->Draw(
"colz");
582 Int_t totalperCv = 5;
584 Int_t nPad = TMath::Sqrt(totalperCv);
585 Int_t nCv = nCells/totalperCv+1;
588 cout<<
" o create: "<<nCv<<
" Canvases with "<<nPad*nPad<<
" pads"<<endl;
590 TCanvas **cCompAll =
new TCanvas*[nCv];
591 for(
Int_t i=0;i<nCv;i++)
593 cCompAll[i] =
new TCanvas(TString::Format(
"CompareGoodAll%d", i), TString::Format(
"V) Both (%d/%d)", i+1, nCv), 1200,600);
597 TLegend *leg2 =
new TLegend(0.60,0.60,0.9,0.85);
598 cout<<
" o Fill Canvases with bad cells histograms"<<endl;
600 TH1D *htmpCellAllRuns[nBlocks];
601 TH1D *htmpCellTimeRuns[nBlocks];
602 TH1D *htmpCellRatioAllRuns[nBlocks];
603 cout<<
"cell number: "<<endl;
604 for(
Int_t icell = 0; icell < nCells; icell++)
606 Int_t cellID=cellIdVec.at(icell);
607 cout<<cellID<<
", "<<flush;
609 for(
Int_t iBlock=0;iBlock<nBlocks;iBlock++)
611 htmpCellAllRuns[iBlock] =h2DAmp[iBlock] ->ProjectionX(TString::Format(
"hIDProj%i_cell%d",iBlock, cellID), cellID+1, cellID+1);
612 SetHisto(htmpCellAllRuns[iBlock],Form(
"Energy [cell %i]",cellID),
"Number of Hits/Events");
613 htmpCellRatioAllRuns[iBlock] =h2DRatio[iBlock]->ProjectionX(TString::Format(
"hIDRProj%i_cell%d", iBlock, cellID), cellID+1, cellID+1);
614 SetHisto(htmpCellRatioAllRuns[iBlock],Form(
"Energy [cell %i]",cellID),
"No. Hits/av. No. Hits");
616 htmpCellTimeRuns[iBlock] =h2DCellTime[iBlock]->ProjectionX(TString::Format(
"hIDTimeProj%i_cell%d", iBlock, cellID), cellID+1, cellID+1);
617 SetHisto(htmpCellTimeRuns[iBlock],Form(
"Time, ns [cell %i]",cellID),
"Entries/Events");
620 cCompAll[(icell)/totalperCv]->cd(((icell)%5)+1)->SetLogy();
621 if(iBlock==0)htmpCellAllRuns[iBlock]->GetXaxis()->SetRangeUser(0,range);
622 if(iBlock==0)htmpCellAllRuns[iBlock]->Draw(
"hist");
623 if(iBlock==1)htmpCellAllRuns[iBlock]->SetLineColor(kBlue-7);
624 if(iBlock==2)htmpCellAllRuns[iBlock]->SetLineColor(kGreen-2);
625 if(iBlock==3)htmpCellAllRuns[iBlock]->SetLineColor(kViolet-1);
626 if(iBlock>0)htmpCellAllRuns[iBlock]->DrawCopy(
"same hist");
630 leg2->AddEntry(htmpCellAllRuns[iBlock],Form(
"Block%i",iBlock),
"l");
631 leg2->SetTextSize(0.07);
632 leg2->SetBorderSize(0);
633 leg2->SetFillColorAlpha(10, 0);
636 else if((icell)%5==0)
642 cCompAll[(icell)/totalperCv]->cd(((icell)%5)+6)->SetLogy();
643 if(iBlock==0)htmpCellRatioAllRuns[iBlock]->GetXaxis()->SetRangeUser(0,range);
644 if(iBlock==0)htmpCellRatioAllRuns[iBlock]->Draw(
"hist");
645 if(iBlock==1)htmpCellRatioAllRuns[iBlock]->SetLineColor(kBlue-7);
646 if(iBlock==2)htmpCellRatioAllRuns[iBlock]->SetLineColor(kGreen-2);
647 if(iBlock==3)htmpCellRatioAllRuns[iBlock]->SetLineColor(kViolet-1);
648 if(iBlock>0)htmpCellRatioAllRuns[iBlock]->DrawCopy(
"same hist");
651 cCompAll[(icell)/totalperCv]->cd(((icell)%5)+11)->SetLogy();
652 if(iBlock==0)htmpCellTimeRuns[iBlock]->GetXaxis()->SetRangeUser(tRange1,tRange2);
653 if(iBlock==0)htmpCellTimeRuns[iBlock]->Draw(
"hist");
654 if(iBlock==1)htmpCellTimeRuns[iBlock]->SetLineColor(kBlue-7);
655 if(iBlock==2)htmpCellTimeRuns[iBlock]->SetLineColor(kGreen-2);
656 if(iBlock==3)htmpCellTimeRuns[iBlock]->SetLineColor(kViolet-1);
657 if(iBlock>0)htmpCellTimeRuns[iBlock]->DrawCopy(
"same hist");
662 TString pdfName= Form(
"./AnalysisOutput/%s/Train_%i/%s_MoreBadCellsCandidates.pdf",period.Data(),trainNo,period.Data());
664 for(
Int_t can=0;can<nCv;can++)
672 cCompAll[can] ->Print(Form(
"%s(",pdfName.Data()));
676 cCompAll[can] ->Print(Form(
"%s",pdfName.Data()));
679 else if(can==(nCv-1))
682 cCompAll[can] ->Print(Form(
"%s)",pdfName.Data()));
687 cCompAll[can] ->Print(Form(
"%s",pdfName.Data()));
700 Histo->GetYaxis()->SetTitleOffset(1.1);
701 Histo->GetXaxis()->SetTitleOffset(1.1);
702 Histo->GetXaxis()->SetLabelSize(0.05);
703 Histo->GetYaxis()->SetLabelSize(0.05);
704 Histo->GetXaxis()->SetTitleSize(0.06);
705 Histo->GetYaxis()->SetTitleSize(0.06);
706 Histo->GetXaxis()->SetNdivisions(505);
707 Histo->GetYaxis()->SetNdivisions(505);
709 Histo->GetXaxis()->SetLabelFont(42);
710 Histo->GetYaxis()->SetLabelFont(42);
711 Histo->GetXaxis()->SetTitleFont(42);
712 Histo->GetYaxis()->SetTitleFont(42);
713 if(Xtitel!=
"")Histo->GetXaxis()->SetTitle(Xtitel);
714 if(Ytitel!=
"")Histo->GetYaxis()->SetTitle(Ytitel);
716 Histo->SetLineColor(1);
717 Histo->SetMarkerColor(1);
718 Histo->SetMarkerStyle(20);
719 Histo->SetMarkerSize(0.5);
731 C->Divide(Nx,Ny,0.000,0.000);
733 for (
Int_t i=0;i<Nx;i++)
735 C->cd(i+1)->SetLogy();
736 gPad->SetLeftMargin(lMargin);
737 gPad->SetRightMargin(rMargin);
738 gPad->SetBottomMargin(0);
739 gPad->SetTopMargin(tMargin);
743 for (
Int_t i=0;i<Nx;i++)
746 gPad->SetLeftMargin(lMargin);
747 gPad->SetRightMargin(rMargin);
748 gPad->SetBottomMargin(bMargin);
749 gPad->SetTopMargin(0);
752 for (
Int_t i=0;i<Nx;i++)
754 C->cd(i+1+2*Nx)->SetLogy();
755 gPad->SetLeftMargin(lMargin);
756 gPad->SetRightMargin(rMargin);
758 gPad->SetBottomMargin(bMargin);
759 gPad->SetTopMargin(tMargin);
void SetRunNumber(Int_t run)
TLatex * text[5]
option to what and if export to output file
void CanvasPartition(TCanvas *C, const Int_t Nx=2, const Int_t Ny=2, Float_t lMargin=0.15, Float_t rMargin=0.05, Float_t bMargin=0.15, Float_t tMargin=0.05)
void Test_OADB(TString period="LHC15n", Int_t trainNo=603, TString version="INT7Emc", TString runList="")
Bool_t Plot_BCMap(TString runList="", TString pathOADB="")
AliEMCALGeometry * GetEMCALGeometry() const
void SetHisto(TH1 *Histo, TString Xtitel, TString Ytitel)
void Plot_CellList(TString period="LHC15n", Int_t trainNo=603, TString cellList="")
Class with utils specific to calorimeter clusters/cells.
void AccessGeometry(AliVEvent *inputEvent)
Int_t GetModuleNumberCellIndexesAbsCaloMap(Int_t absId, Int_t calo, Int_t &icol, Int_t &irow, Int_t &iRCU, Int_t &icolAbs, Int_t &irowAbs) const