AliPhysics  5be3bab (5be3bab)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
helperMacrosBC.C
Go to the documentation of this file.
1 
21 // --- ROOT system ---
22 #include <Riostream.h>
23 #include <TFile.h>
24 #include <TH1.h>
25 #include <TROOT.h>
26 #include <TStyle.h>
27 #include <TLatex.h>
28 #include <TCanvas.h>
29 
30 
31 // --- ANALYSIS system ---
32 #include "AliEMCALGeometry.h" //include when compile
33 #include "AliCalorimeterUtils.h" //include when compile
34 #include "AliAODEvent.h" //include when compile
35 
36 
37 //definition of methods
38 void SetHisto(TH1 *Histo,TString Xtitel,TString Ytitel,Bool_t longhisto);
39 Bool_t IsCellMaskedByHand(Int_t cell, std::vector<Int_t> cellVector);
40 void CreateCellCompPDF(TH2F* hAmpIDMasked, std::vector<Int_t> cellVector, TH1* goodCellsMerged, TH1* goodCellsRbR, TString pdfName);
41 void Plot2DCells(TString Block, Int_t runNo, std::vector<Int_t> cellVectorMergeB, std::vector<Int_t> cellVectorMergeA);
42 
47 void Get_RowCollumnID(Int_t runNum= 244411,Int_t inputCellID=-1,Int_t inputRow=-1,Int_t inputCollumn=-1,Int_t inputSM=-1)
48 {
49  //......................................................
50  //..Initialize EMCal/DCal geometry
51  AliCalorimeterUtils* fCaloUtils = new AliCalorimeterUtils();
52  //..Create a dummy event for the CaloUtils
53  AliAODEvent* aod = new AliAODEvent();
54  fCaloUtils->SetRunNumber(runNum);
55  fCaloUtils->AccessGeometry(aod);
56  AliEMCALGeometry * geom = fCaloUtils->GetEMCALGeometry();
57 
58  //..get row collumn from cell ID
59  Int_t cellColumn=0,cellRow=0;
60  Int_t cellColumnAbs=0,cellRowAbs=0;
61  Int_t cellID=0;
62  Int_t trash;
63 
64  cout<<"...................................................."<<endl;
65  cout<<""<<endl;
66  if(inputCellID!=-1)
67  {
68  fCaloUtils->GetModuleNumberCellIndexesAbsCaloMap(inputCellID,0,cellColumn,cellRow,trash,cellColumnAbs,cellRowAbs);
69  cout<<"Cell Id provided: "<<inputCellID<<endl;
70  cout<<"This corresponds to absolute row: "<<cellRowAbs<<" and absolute collumn: "<<cellColumnAbs<<endl;
71  }
72  else if(inputRow!=-1 && inputCollumn!=-1 && inputSM!=-1)
73  {
74  cout<<"Supermodule provided: "<<inputSM<<endl;
75  cout<<"Absolute row provided: "<< inputRow<<" and absolute collumn provided : "<<inputCollumn<<endl;
76  cellID=geom->GetAbsCellIdFromCellIndexes(inputSM,inputRow,inputCollumn);
77  cout<<"This corresponds to Cell Id: "<<cellID<<endl;
78  }
79  else cout<<"need more information!"<<endl;
80  cout<<""<<endl;
81  cout<<"...................................................."<<endl;
82 }
83 
89 //________________________________________________________________________
90 void Compare2Blocks(TString period="LHC15n",Int_t trainNo=603,Int_t versionA=0, Int_t versionB=1)
91 {
92  gROOT->ProcessLine("gErrorIgnoreLevel = kWarning;"); //..to supress a lot of standard output
93  gStyle->SetOptStat(0); //..Do not plot stat boxes
94  gStyle->SetPadLeftMargin(0.13);
95  gStyle->SetPadRightMargin(0.1);
96  gStyle->SetPadBottomMargin(0.12);
97  gStyle->SetPadTopMargin(0.06);
98 
99  Int_t noOfCells=17674;
100  Int_t nBadCellMerged =noOfCells;
101  Int_t nBadCellRbR =noOfCells;
102  Int_t array_StartCellSM_Value[21] ={0,1152,2304,3456,4608,5760,6912,8064,9216,10368,11520,11904,12288,13056,13824,14592,15360,16128,16896,17280,17664};
103 
104  //..............................................
105  //..manually disable cells
106  std::vector<Int_t> badcellsBlock1;
107  //badcellsBlock1.insert(badcellsBlock1.end(),{6644,6655,10140,12036,12037,12038,12039,12040,12041,12926,13067,13066,13125});
108  //badcellsBlock1.insert(badcellsBlock1.end(),{13133,13483,13971,13978,14116,14118,14122,14411,14593,14599,14600,14606,14699});
109 
110  std::vector<Int_t> vOnlyMaskedInMergedA;
111  std::vector<Int_t> vOnlyMaskedInMergedB;
112 
113  //......................................................
114  //..Get the .root file from masking runs in Version1
115  //......................................................
116  cout<<"** Open file A with merged runlist analysis: "<<endl;
117  TString pathA = Form("./AnalysisOutput/%s/Train_%i/Version%i",period.Data(),trainNo,versionA);
118  TString rootFileNameA= Form("%s_INT7_Histograms_V%i.root",period.Data(),versionA);
119  TFile* outputRootA = TFile::Open(Form("%s/%s",pathA.Data(),rootFileNameA.Data()));
120  if(!outputRootA)cout<<"File "<<outputRootA->GetName()<<" does not exist"<<endl;
121  else cout<<"file A: "<<outputRootA->GetName()<<endl;
122 
123  //..get the necessary histograms
124  TH2F* hCellAmplitudeA =(TH2F*)outputRootA->Get("hCellAmplitude");
125  TH1F* hnEventsA =(TH1F*)outputRootA->Get("hNEvents");
126  hCellAmplitudeA->Scale(hnEventsA->GetBinContent(1));
127  TH2F* hCellAmplitudeBlockMaskA=(TH2F*)hCellAmplitudeA->Clone("hCellAmplitudeMask");
128  TH1F* hCellFlagA =(TH1F*)outputRootA->Get("fhCellFlag");
129 
130  //......................................................
131  //..Get the .root file from masking runs in Version2
132  //......................................................
133  cout<<endl;
134  cout<<"**Open file B with merged runlist analysis: "<<endl;
135  TString pathB = Form("./AnalysisOutput/%s/Train_%i/Version%i",period.Data(),trainNo,versionB);
136  TString rootFileNameB= Form("%s_INT7_Histograms_V%i.root",period.Data(),versionB);
137  TFile* outputRootB = TFile::Open(Form("%s/%s",pathB.Data(),rootFileNameB.Data()));
138  if(!outputRootB)cout<<"File "<<outputRootB->GetName()<<" does not exist"<<endl;
139  else cout<<"file B: "<<outputRootB->GetName()<<endl;
140 
141  //..get the necessary histograms
142  TH2F* hCellAmplitudeB =(TH2F*)outputRootB->Get("hCellAmplitude");
143  TH1F* hnEventsB =(TH1F*)outputRootB->Get("hNEvents");
144  hCellAmplitudeB->Scale(hnEventsB->GetBinContent(1));
145  TH2F* hCellAmplitudeBlockMaskB=(TH2F*)hCellAmplitudeB->Clone("hCellAmplitudeMask");
146  TH1F* hCellFlagB =(TH1F*)outputRootB->Get("fhCellFlag");
147 
148  //......................................................
149  //..mask the bad cells according to both versions
150  //......................................................
151  Int_t maskA=0;
152  Int_t maskB=0;
153 
154  for(Int_t ic = 0; ic < noOfCells; ic++)
155  {
156  //......................................................
157  //..Part A - analyzed as one merged runblock
158  //......................................................
159  maskA=0;
160  maskA=IsCellMaskedByHand(ic,badcellsBlock1);
161 
162  //..mask the bad cells
163  for (Int_t amp = 1; amp <= hCellAmplitudeBlockMaskA->GetNbinsX(); amp++)
164  {
165  if(hCellFlagA->GetBinContent(ic+1)>0 || maskA==1)
166  {
167  hCellAmplitudeBlockMaskA->SetBinContent(amp,ic+1,0);
168  if(amp==1)nBadCellMerged--;
169  }
170  }
171 
172  //......................................................
173  //..Part B - analyzed run-by-run, corrected and masked in block
174  //......................................................
175  maskB=0;
176  maskB=IsCellMaskedByHand(ic,badcellsBlock1);
177 
178  //..mask the bad cells
179  for (Int_t amp = 1; amp <= hCellAmplitudeBlockMaskB->GetNbinsX(); amp++)
180  {
181  if(hCellFlagB->GetBinContent(ic+1)>0 || maskB==1)
182  {
183  hCellAmplitudeBlockMaskB->SetBinContent(amp,ic+1,0);
184  if(amp==1)nBadCellRbR--;
185  }
186  }
187 
188  //......................................................
189  //..Compare the different channels that are marked in the two versions
190  //......................................................
191  if(!IsCellMaskedByHand(ic,badcellsBlock1))
192  {
193  if(hCellFlagA->GetBinContent(ic+1)>0 && hCellFlagB->GetBinContent(ic+1)==0)vOnlyMaskedInMergedA.push_back(ic);
194  if(hCellFlagA->GetBinContent(ic+1)==0 && hCellFlagB->GetBinContent(ic+1)>0) vOnlyMaskedInMergedB.push_back(ic);
195  }
196  }
197  //..merged runblock
198  TH1* projMaskedCellsA = hCellAmplitudeBlockMaskA->ProjectionX("MaskedCellsMergedBlockA");
199  TH1* projMaskedCellsB = hCellAmplitudeBlockMaskB->ProjectionX("MaskedCellsMergedBlockB");
200 
201  //......................................................
202  //..Plot results
203  //......................................................
204  TCanvas* C1 = new TCanvas("-1-","Projections of A and B",900,900);
205  C1->Divide(2,2);
206  C1->cd(1)->SetLogy();
207  SetHisto(projMaskedCellsA,"","hits/event",0);
208  projMaskedCellsA->DrawCopy("hist");
209  projMaskedCellsB->SetLineColor(8);
210  projMaskedCellsB->DrawCopy("same hist");
211  C1->cd(2);
212  projMaskedCellsA->Divide(projMaskedCellsB);
213  SetHisto(projMaskedCellsA,"","Merged Version A/Merged Version B",0);
214  projMaskedCellsA->DrawCopy("hist");
215  projMaskedCellsA->Multiply(projMaskedCellsB);
216 
217  TLatex* textSM = new TLatex(0.1,0.1,"*test*");
218  textSM->SetTextSize(0.06);
219  textSM->SetTextColor(1);
220  textSM->SetNDC();
221 
222  TCanvas *c1_projSM = new TCanvas("-1a-","Projections of A and B per SM",1200,900);
223  c1_projSM->Divide(5,4,0.001,0.001);
224  TH1* projEnergyMaskASM[20];
225  TH1* projEnergyMaskBSM[20];
226  for(Int_t iSM=0;iSM<20;iSM++)
227  {
228  c1_projSM->cd(iSM+1)->SetLogy();
229  gPad->SetTopMargin(0.03);
230  gPad->SetBottomMargin(0.11);
231  projEnergyMaskASM[iSM] = hCellAmplitudeBlockMaskA->ProjectionX(Form("%sMask_ProjSM%i",hCellAmplitudeBlockMaskA->GetName(),iSM),array_StartCellSM_Value[iSM],array_StartCellSM_Value[iSM+1]-1);
232  projEnergyMaskASM[iSM]->SetTitle("");
233  projEnergyMaskASM[iSM]->SetXTitle(Form("Cell Energy [GeV], SM%i",iSM));
234  projEnergyMaskASM[iSM]->GetYaxis()->SetTitleOffset(1.6);
235  projEnergyMaskASM[iSM]->GetYaxis()->SetLabelSize(0.06);
236  projEnergyMaskASM[iSM]->GetXaxis()->SetLabelSize(0.06);
237  projEnergyMaskASM[iSM]->GetXaxis()->SetRangeUser(0,20);
238  projEnergyMaskASM[iSM]->GetXaxis()->SetTitleSize(0.06);
239  projEnergyMaskASM[iSM]->SetLineColor(kGreen+1);
240  projEnergyMaskASM[iSM]->DrawCopy(" hist");
241 
242  projEnergyMaskBSM[iSM] = hCellAmplitudeBlockMaskB->ProjectionX(Form("%s_ProjSM%i",hCellAmplitudeBlockMaskB->GetName(),iSM),array_StartCellSM_Value[iSM],array_StartCellSM_Value[iSM+1]-1);
243  projEnergyMaskBSM[iSM]->DrawCopy("same hist");
244 
245  textSM->SetTitle(Form("Includes cell IDs %d-%d",array_StartCellSM_Value[iSM],array_StartCellSM_Value[iSM+1]-1));
246  textSM->DrawLatex(0.2,0.8,Form("Includes cell IDs %d-%d",array_StartCellSM_Value[iSM],array_StartCellSM_Value[iSM+1]-1));
247  }
248  TCanvas *c1_projSMR = new TCanvas("-1b-","Ratio of A/B per SM",1200,900);
249  c1_projSMR->Divide(5,4,0.001,0.001);
250  TH1* projEnergyMaskSM[20];
251  TH1* projEnergySM[20];
252  for(Int_t iSM=0;iSM<20;iSM++)
253  {
254  c1_projSMR->cd(iSM+1);
255  gPad->SetTopMargin(0.03);
256  gPad->SetBottomMargin(0.11);
257  projEnergyMaskASM[iSM]->Divide(projEnergyMaskBSM[iSM]);
258  projEnergyMaskASM[iSM]->SetLineColor(kGray+1);
259  projEnergyMaskASM[iSM]->DrawCopy(" hist");
260 
261  textSM->SetTitle(Form("Includes cell IDs %d-%d",array_StartCellSM_Value[iSM],array_StartCellSM_Value[iSM+1]-1));
262  textSM->DrawLatex(0.2,0.8,Form("Includes cell IDs %d-%d",array_StartCellSM_Value[iSM],array_StartCellSM_Value[iSM+1]-1));
263  }
264 
265  TCanvas* C3 = new TCanvas("-3-","2D of A and B",900,900);
266  C3->Divide(2,2);
267  C3->cd(1)->SetLogz();
268  SetHisto(hCellAmplitudeBlockMaskA,"","cell ID",0);
269  hCellAmplitudeBlockMaskA->DrawCopy("colz");
270  C3->cd(2)->SetLogz();
271  SetHisto(hCellAmplitudeBlockMaskB,"","cell ID",0);
272  hCellAmplitudeBlockMaskB->DrawCopy("colz");
273 
274 
275  //......................................................
276  //..Print out compared cells and plot the spectra
277  //......................................................
278  projMaskedCellsA->Scale(1.0/nBadCellMerged);
279  projMaskedCellsB->Scale(1.0/nBadCellRbR);
280 
281 
282  cout<<" Cells masked in version A and not in version B ("<<vOnlyMaskedInMergedA.size()<<"):"<<endl;
283  for(Int_t i=0; i<(Int_t)vOnlyMaskedInMergedA.size();i++)
284  {
285  cout<<vOnlyMaskedInMergedA.at(i)<<","<<flush;
286  }
287  cout<<endl;
288  TString outNameA = Form("./AnalysisOutput/%s/Train_%i/cOnlyMergedBlockA.pdf",period.Data(),trainNo);
289  CreateCellCompPDF(hCellAmplitudeBlockMaskB,vOnlyMaskedInMergedA,projMaskedCellsA,projMaskedCellsB,outNameA);
290  cout<<" Cells masked in version B and not in version A ("<<vOnlyMaskedInMergedB.size()<<"):"<<endl;
291  for(Int_t i=0; i<(Int_t)vOnlyMaskedInMergedB.size();i++)
292  {
293  cout<<vOnlyMaskedInMergedB.at(i)<<","<<flush;
294  }
295  cout<<endl;
296  TString outNameB = Form("./AnalysisOutput/%s/Train_%i/cOnlyMergedBlockB.pdf",period.Data(),trainNo);
297  CreateCellCompPDF(hCellAmplitudeBlockMaskA,vOnlyMaskedInMergedB,projMaskedCellsA,projMaskedCellsB,outNameB);
298 
299  //......................................................
300  //..build two dimensional histogram with cells rejected from
301  //..the one or the other method
302  //......................................................
303  Plot2DCells("-",244917,vOnlyMaskedInMergedB,vOnlyMaskedInMergedA);
304 }
305 //-----------------------------------------------------------
306 // All functions below this point are helping the
307 // Compare2Blocks function
308 //-----------------------------------------------------------
309 
313 void Plot2DCells(TString Block, Int_t runNo, std::vector<Int_t> cellVectorMergeB, std::vector<Int_t> cellVectorMergeA)
314 {
315  //......................................................
316  //..Initialize EMCal/DCal geometry
317  AliCalorimeterUtils* fCaloUtils = new AliCalorimeterUtils();
318  //..Create a dummy event for the CaloUtils
319  AliAODEvent* aod = new AliAODEvent();
320  fCaloUtils->SetRunNumber(runNo);
321  fCaloUtils->AccessGeometry(aod);
322  //......................................................
323  //..setings for the 2D histogram
324  Int_t nModules=fCaloUtils->GetEMCALGeometry()->GetNumberOfSuperModules();
325  Int_t fNMaxColsAbs = 2*48;
326  Int_t fNMaxRowsAbs = Int_t (nModules/2)*24; //multiply by number of supermodules
327 
328  TH2F *plot2D_VersionB = new TH2F(Form("Block%s_VersionB",Block.Data()),Form("Block%s_VersionB",Block.Data()),fNMaxColsAbs+1,-0.5,fNMaxColsAbs+0.5, fNMaxRowsAbs+1,-0.5,fNMaxRowsAbs+0.5);
329  plot2D_VersionB->GetXaxis()->SetTitle("cell column (#eta direction)");
330  plot2D_VersionB->GetYaxis()->SetTitle("cell row (#phi direction)");
331  TH2F *plot2D_VersionA = new TH2F(Form("Block%s_VersionA",Block.Data()),Form("Block%s_VersionA",Block.Data()),fNMaxColsAbs+1,-0.5,fNMaxColsAbs+0.5, fNMaxRowsAbs+1,-0.5,fNMaxRowsAbs+0.5);
332  plot2D_VersionA->GetXaxis()->SetTitle("cell column (#eta direction)");
333  plot2D_VersionA->GetYaxis()->SetTitle("cell row (#phi direction)");
334 
335  Int_t cellColumn=0,cellRow=0;
336  Int_t cellColumnAbs=0,cellRowAbs=0;
337  Int_t trash;
338 
339  for(Int_t i = 0; i < (Int_t)cellVectorMergeB.size(); i++)
340  {
341  Int_t cell=cellVectorMergeB.at(i);
342  //..Do that only for cell ids also accepted by the code
343  if(!fCaloUtils->GetEMCALGeometry()->CheckAbsCellId(cell))continue;
344 
345  //..Get Row and Collumn for cell ID c
346  fCaloUtils->GetModuleNumberCellIndexesAbsCaloMap(cell,0,cellColumn,cellRow,trash,cellColumnAbs,cellRowAbs);
347  if(cellColumnAbs> fNMaxColsAbs || cellRowAbs>fNMaxRowsAbs)
348  {
349  cout<<"Problem! wrong calculated number of max col and max rows"<<endl;
350  cout<<"current col: "<<cellColumnAbs<<", max col"<<fNMaxColsAbs<<endl;
351  cout<<"current row: "<<cellRowAbs<<", max row"<<fNMaxRowsAbs<<endl;
352  }
353  plot2D_VersionB->Fill(cellColumnAbs,cellRowAbs);
354  }
355  for(Int_t i = 0; i < (Int_t)cellVectorMergeA.size(); i++)
356  {
357  Int_t cell=cellVectorMergeA.at(i);
358  //..Do that only for cell ids also accepted by the code
359  if(!fCaloUtils->GetEMCALGeometry()->CheckAbsCellId(cell))continue;
360 
361  //..Get Row and Collumn for cell ID c
362  fCaloUtils->GetModuleNumberCellIndexesAbsCaloMap(cell,0,cellColumn,cellRow,trash,cellColumnAbs,cellRowAbs);
363  if(cellColumnAbs> fNMaxColsAbs || cellRowAbs>fNMaxRowsAbs)
364  {
365  cout<<"Problem! wrong calculated number of max col and max rows"<<endl;
366  cout<<"current col: "<<cellColumnAbs<<", max col"<<fNMaxColsAbs<<endl;
367  cout<<"current row: "<<cellRowAbs<<", max row"<<fNMaxRowsAbs<<endl;
368  }
369  plot2D_VersionA->Fill(cellColumnAbs,cellRowAbs,1);
370  }
371  //. . . . . . . . . . . . . . . . . . . .
372  TCanvas *c1 = new TCanvas(Form("2DMapForBlock%s",Block.Data()),Form("2DMapForBlock%s",Block.Data()),900,500);
373  c1->ToggleEventStatus();
374  c1->Divide(2);
375  c1->cd(1);
376  plot2D_VersionB->Draw("colz");
377  c1->cd(2);
378  plot2D_VersionA->Draw("colz");
379 }
383 Bool_t IsCellMaskedByHand(Int_t cell, std::vector<Int_t> cellVector)
384 {
385  Bool_t bad=0;
386  for(Int_t i=0; i<(Int_t)cellVector.size();i++)
387  {
388  if(cell==cellVector.at(i))bad=1;
389  }
390 
391  return bad;
392 }
396 void CreateCellCompPDF(TH2F* hAmpIDMasked, std::vector<Int_t> cellVector,TH1* goodCellsMerged, TH1* goodCellsRbR, TString pdfName)
397 {
398  Int_t NoOfCells=cellVector.size();
399  Bool_t firstCanvas=0;
400  TString name;
401  /*TLatex* textA = new TLatex(0.2,0.8,"*test*");
402  textA->SetTextSize(0.08);
403  textA->SetTextColor(1);
404  textA->SetNDC();
405  */
406  for(Int_t cell=0;cell<NoOfCells;cell++)
407  {
408  TString internal_pdfName=pdfName;
409  TCanvas *c1;
410  if(cell%9==0)
411  {
412  c1 = new TCanvas(Form("badcells%i",cell),"badcells",1000,750);
413  if(cellVector.size() > 6) c1->Divide(3,3);
414  else if (cellVector.size() > 3) c1->Divide(3,2);
415  else c1->Divide(3,1);
416  }
417  TH1 *hCell = hAmpIDMasked->ProjectionX(Form("Cell %d",cellVector.at(cell)),cellVector.at(cell)+1,cellVector.at(cell)+1);
418  TH1 *hCell2 = (TH1*)hCell->Clone("hCell2");
419 
420  c1->cd(cell%9 + 1)->SetLogy();
421  hCell->Divide(goodCellsRbR);
422  hCell2->Divide(goodCellsMerged);
423 
424  hCell->SetLineColor(kBlue-8);
425  hCell2->SetLineColor(kRed-9);
426  hCell->GetXaxis()->SetTitle("E (GeV)");
427  hCell->GetYaxis()->SetTitle("cell/mean of good");
428  hCell->GetXaxis()->SetRangeUser(0.,10.);
429  hCell->SetLineWidth(1) ;
430  hCell->SetTitle(Form("Cell No. %d",cellVector.at(cell)));
431  hCell->Draw("hist");
432  hCell2->DrawCopy("same hist");
433 
434  //textA->SetTitle(Form("Cell No. %d",cellVector.at(cell)));
435  //textA->Draw();
436 
437  //..page is full or end of loop
438  if(cell%9==8 ||cell == NoOfCells-1)
439  {
440  if(cell == NoOfCells-1)
441  {
442  //internal_pdfName +=")";
443  c1->Print(Form("%s)",pdfName.Data()));
444  }
445  else if(firstCanvas==0)
446  {
447  internal_pdfName +="(";
448  c1->Print(internal_pdfName.Data());
449  firstCanvas=1;
450  }
451  else
452  {
453  c1->Print(internal_pdfName.Data());
454  }
455  delete c1;
456  }
457  }
458 
459 }
464 void SetHisto(TH1 *Histo,TString Xtitel,TString Ytitel,Bool_t longhisto)
465 {
466  Histo->SetStats(0);
467  Histo->SetTitle("");
468  if(longhisto==0)
469  {
470  Histo->GetYaxis()->SetTitleOffset(1.4);
471  Histo->GetXaxis()->SetTitleOffset(1.4);
472  Histo->GetXaxis()->SetLabelSize(0.05);
473  Histo->GetYaxis()->SetLabelSize(0.05);
474  Histo->GetXaxis()->SetTitleSize(0.045);
475  Histo->GetYaxis()->SetTitleSize(0.045);
476  Histo->GetXaxis()->SetNdivisions(505);
477  Histo->GetYaxis()->SetNdivisions(505);
478  }
479 
480  if(longhisto==1)
481  {
482  Histo->GetYaxis()->SetTitleOffset(0.2);
483  Histo->GetXaxis()->SetTitleOffset(1.0);
484  //if(big==1) Histo->GetYaxis()->SetLabelOffset(0.015);
485  //if(big==1) Histo->GetXaxis()->SetLabelOffset(0.015);
486  Histo->GetXaxis()->SetLabelSize(0.07);
487  Histo->GetYaxis()->SetLabelSize(0.07);
488  Histo->GetXaxis()->SetTitleSize(0.08);
489  Histo->GetYaxis()->SetTitleSize(0.08);
490  //Histo->GetXaxis()->CenterTitle();
491  //Histo->GetYaxis()->CenterTitle();
492  Histo->GetXaxis()->SetNdivisions(520);
493  Histo->GetYaxis()->SetNdivisions(10);
494  }
495 
496  Histo->GetXaxis()->SetLabelFont(42);
497  Histo->GetYaxis()->SetLabelFont(42);
498  Histo->GetXaxis()->SetTitleFont(42);
499  Histo->GetYaxis()->SetTitleFont(42);
500  if(Xtitel!="")Histo->GetXaxis()->SetTitle(Xtitel);
501  if(Ytitel!="")Histo->GetYaxis()->SetTitle(Ytitel);
502 
503  Histo->SetLineColor(1);
504  Histo->SetMarkerColor(1);
505  Histo->SetMarkerStyle(20);
506  Histo->SetMarkerSize(0.5);
507 }
void SetRunNumber(Int_t run)
Definition: External.C:236
Bool_t IsCellMaskedByHand(Int_t cell, std::vector< Int_t > cellVector)
void SetHisto(TH1 *Histo, TString Xtitel, TString Ytitel, Bool_t longhisto)
void Compare2Blocks(TString period="LHC15n", Int_t trainNo=603, Int_t versionA=0, Int_t versionB=1)
AliEMCALGeometry * GetEMCALGeometry() const
int Int_t
Definition: External.C:63
const char * pdfName
Definition: DrawAnaELoss.C:30
void Get_RowCollumnID(Int_t runNum=244411, Int_t inputCellID=-1, Int_t inputRow=-1, Int_t inputCollumn=-1, Int_t inputSM=-1)
void Plot2DCells(TString Block, Int_t runNo, std::vector< Int_t > cellVectorMergeB, std::vector< Int_t > cellVectorMergeA)
bool Bool_t
Definition: External.C:53
Class with utils specific to calorimeter clusters/cells.
void AccessGeometry(AliVEvent *inputEvent)
Definition: External.C:196
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
void CreateCellCompPDF(TH2F *hAmpIDMasked, std::vector< Int_t > cellVector, TH1 *goodCellsMerged, TH1 *goodCellsRbR, TString pdfName)