]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTrackCorrelations/macros/QA/QAplots.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / macros / QA / QAplots.C
1 #if !defined(__CINT__) || defined(__MAKECINT__) 
2 #include <TFile.h>
3 #include <TH1F.h>
4 #include <TH2F.h>
5 #include <TH3D.h>
6 #include <Riostream.h>
7 #include <TCanvas.h>
8 #include <TGraphErrors.h>
9 #include <TGrid.h>
10 #include <TFileMerger.h>
11 #include <TMultiGraph.h>
12 #include <TROOT.h>
13 #include <TString.h>
14 #include <TStyle.h>
15 #include <TLegend.h>
16 #include <TGridCollection.h>
17 #include <TROOT.h>
18 #include <TGridResult.h>
19 #include <TClonesArray.h>
20 #include <TObjString.h>
21 #include <stdio.h>
22 #include <fstream>
23 #include <iostream>
24 #include "AliEMCALGeometry.h" 
25 #endif
26 using namespace std;
27
28
29
30 // Macro to do some EMCAL QA plots (from QA outputs (QAresults.root) of the QA train (AliAnaCalorimeterQA task) )
31 //
32 //
33 // 1. macro needs AliEMCALGeometry to compute maps
34
35 // 2. this macro makes the QA plots for 
36 // - period or single runs
37 // 
38 // 3. to use it you should have the
39 //-  QAresults.root files in period/pass/runnumber.root 
40 //-  and if you are running in period mode a runlist.txt
41 // file in the same directory: period/pass/runlist.txt
42 // were runlist is the list of the runs you want to check
43 //
44 // 4. To save the plots you must create prior tu usig the macro in the 
45 //  period/pass/ directory as many subdirectories as number of runs 
46 //  with the name runnumber
47 //  all gif files will be saved in those subdirectories
48 //
49 //
50 // 5. The trigger corresponds to the name of the output directory in the root 
51 // file so
52 // "EMC7" for EMC triggers and "default" for AnyInt (Minbias) 
53 // 
54 // Authors: Alexis Mas, M. Germain  SUBATECH, 
55
56
57 void QAplots(TString fCalorimeter = "EMCAL", TString period = "LHC11h", TString pass = "pass1_HLT", TString trigger= "default"){   
58   
59   FILE * pFile;
60   TString file = "";
61   if (trigger=="default") file = "/scratch/alicehp2/germain/QA/"+period+"/"+ pass + "/runlistMB.txt" ;
62   else                    file = "/scratch/alicehp2/germain/QA/"+period+"/"+ pass + "/runlistEMC.txt" ;
63   
64   pFile = fopen(file.Data(), "r"); //open the text file where include the run list and correct run index
65   
66   cout << " fcalo: " << fCalorimeter << "; period: " << period << "; pass: " << pass << "  trigger "<<trigger<<  endl; 
67     
68   Int_t p;
69   Int_t q;
70   Int_t ncols;
71   Int_t nlines = 0 ;
72   Int_t RunId[500] ;
73   
74   Double_t x[500] ;
75   Double_t xrun[500] ;
76   
77   while (1){
78     ncols = fscanf(pFile,"%d  %d ",&p,&q);
79     if (ncols< 0) break;
80     x[nlines]=p;
81     RunId[nlines]=q;
82     xrun[nlines]=1.*q;
83     nlines++;
84   }
85   fclose(pFile);
86   
87   const Int_t nRun = nlines ;
88   TString base ;
89   for(Int_t i = 0 ; i < nRun ; i++) { 
90     base = "/scratch/alicehp2/germain/QA/";
91     base += period ;
92     base += "/";
93     base += pass ;
94     base += "/";
95     base += RunId[i] ;
96     TString infile ;
97     infile = base + ".root" ;
98     TFile *f = TFile::Open(infile);
99     DrawOccupancy(RunId[i],period,pass,trigger,f);
100     DrawRun(RunId[i],period,pass,trigger,f);
101     f->Close();
102   }
103 }
104
105 void QAplots(Int_t run, TString period ="LHC11h", TString pass="pass1_HLT", TString trigger= "default"){
106   TString base ;
107   base = "/scratch/alicehp2/germain/QA/";
108   base += period ;
109   base += "/";
110   base += pass ;
111   base += "/";
112   base += run ;
113   TString infile ;
114   infile = base + ".root" ;
115   TFile *f = TFile::Open(infile);
116   DrawOccupancy(run,period,pass,trigger,f);
117   DrawRun(run,period,pass,trigger,f);
118   f->Close();
119 }
120
121 void DrawOccupancy(Int_t run , TString period ="LHC11h", TString pass="pass1_HLT", TString trigger= "default", TFile *f =0x0){
122   TH2D *hEnergyMap = new TH2D("hEnergyMap","",96,-48,48,120,-0,120);
123   TH2D *hOccupancyMap = new TH2D("hOccupancyMap","",96,-48,48,120,-0,120); 
124   TH2D *hEnergyMapReal = new TH2D("hEnergyMapReal","",96,-48,48,120,-0,120);
125   TH2D *hOccupancyMapReal = new TH2D("hOccupancyMapReal","",96,-48,48,120,-0,120);
126   hEnergyMapReal->SetXTitle("eta (bin)");
127   hEnergyMapReal->SetYTitle("phi (bin)");
128   hEnergyMapReal->SetZTitle("E(GeV)/event");
129   hEnergyMapReal->GetZaxis()->SetLabelSize(0.02);
130   hOccupancyMapReal->SetXTitle("eta (bin)");
131   hOccupancyMapReal->SetZTitle("entries/evt");
132   hOccupancyMapReal->GetZaxis()->SetLabelSize(0.02);
133   hOccupancyMapReal->SetXTitle("eta (bin)");
134   hEnergyMap->SetXTitle("eta (bin)");
135   hEnergyMap->SetYTitle("phi (bin)");
136   hOccupancyMap->SetXTitle("eta (bin)");
137   hOccupancyMap->SetYTitle("phi (bin)");
138   
139   gStyle->SetPalette(1);
140   gStyle->SetOptStat(0);
141   
142   AliEMCALGeometry *geom = new AliEMCALGeometry("EMCAL_COMPLETEv1","EMCAL");
143   Int_t nSupMod, nModule, nIphi, nIeta, nModulo, iRCU;
144   Int_t iphi, ieta,jj,kk;
145   Int_t icol, irow;
146   Int_t bineta, binphi;
147   Int_t realbineta, realbinphi;
148   TVector3 vg, gg;
149   Double_t eta, phi, glob[3];
150   
151   
152   //LHC11d 
153   //Int_t mask[224] = {74, 147, 152, 189, 191, 198, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 324, 491, 759, 917, 949, 1376, 1386, 1429, 1487, 1490, 1519, 1967, 2014, 2015, 2112, 2114, 2115, 2116, 2118, 2119, 2120, 2123, 2124, 2125, 2158, 2159, 2326, 2332, 2333, 2350, 2351, 2436, 2448, 2506, 2518, 2534, 2540, 2590, 2640, 2793, 2805, 2815, 2828, 2830, 2869, 2878, 2880, 2881, 2891, 2926, 2985, 3022, 3024, 3070, 3135, 3169, 3263, 3503, 4366, 4560, 4623, 6093, 6331, 6481, 7089, 7113, 7190, 7246, 7425, 7495, 7874,8358, 8811, 9024, 9269, 9302, 9387, 9696, 9697, 9698, 9699, 9701, 9702, 9703, 9704, 9705, 9706, 9707, 9710, 9711, 9748, 9792, 9793, 9794, 9795, 9796, 9797, 9798, 9799, 9800, 9801, 9802, 9803, 9804, 9805, 9806, 9807, 9815, 9819, 9824, 9828, 9829, 9830, 9831, 9832, 9834, 9835, 9836, 9837, 9838, 9839, 9850, 9872, 9874, 9875, 9877, 9878, 9879, 9881, 9882, 9883, 9888, 9890, 9891, 9894, 9896, 9897, 9898, 9899, 9902, 9927, 9938, 9939, 9942, 9943, 9945, 9946, 9947, 9948, 9949, 9950, 9951, 10035, 10073, 10084, 10085, 10086, 10090, 10093, 10112, 10113, 10114, 10115, 10116, 10117, 10118, 10119, 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10718, 10723, 10728, 10771, 10831, 11042, 11043, 11090, 11363, 22222222};
154   
155   
156   //LHC11e  
157   //Int_t mask[174] = {74, 152, 167, 191, 759, 1059, 1175, 1204, 1288, 1376, 1382, 1386, 1519, 1967, 1968, 2026, 2047, 2112, 2114, 2115, 2116, 2118, 2119, 2120, 2123, 2124, 2125, 2210, 2339, 2350, 2391, 2506, 2540, 2793, 2828, 2869, 2891, 2985, 3135, 3503, 4377, 4817, 5600, 5601, 5602, 5603, 5612, 5613, 5614, 5615, 5648, 5649, 5650, 5651, 5660, 5661, 5662, 5663, 5836, 6104, 6331, 6481, 7089, 7371, 7375, 7425, 7572, 7874, 8358, 9269, 9302, 9389, 9696, 9697, 9698, 9699, 9700, 9701, 9702, 9703, 9705, 9706, 9707, 9708, 9709, 9710, 9711, 9750, 9758, 9792, 9793, 9794, 9795, 9798, 9800, 9801, 9803, 9804, 9815, 9819, 9824, 9825, 9828, 9829, 9830, 9831, 9832, 9833, 9834, 9835, 9836, 9838, 9872, 9874, 9875, 9878, 9882, 9883, 9889, 9890, 9891, 9892, 9893, 9894, 9896, 9897, 9898, 9899, 9900, 9901, 9902, 9903, 9927, 9936, 9937, 9938, 9939, 9940, 9941, 9942, 9943, 9945, 9947, 9948, 9949, 9950, 9951, 10086, 10112, 10113, 10114, 10115, 10116, 10118, 10119, 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10134, 10135, 10138, 10143, 10718, 10723, 10771, 11042, 11091, 11363, 2222222};
158   
159   //LHC11f    
160   // Int_t mask[134] = {74, 152, 167, 759, 1204, 1267, 1288, 1376, 1382, 1386, 1424, 1519, 1967, 2026, 2047, 2112, 2114, 2115, 2116, 2118, 2119, 2120, 2123, 2124, 2125, 2506, 2540, 2793, 2828, 2869, 2891, 2985, 3135, 3503, 3785, 4817, 6104, 6331, 6481, 7371, 7375, 7425, 7572, 7874, 8218, 8220, 8222, 9269, 9282, 9302, 9455, 9698, 9699, 9700, 9701, 9702, 9703, 9705, 9706, 9707, 9708, 9709, 9710, 9711, 9748, 9758, 9792, 9793, 9794, 9795, 9796, 9797, 9798, 9799, 9800, 9801, 9803, 9804, 9805,9815, 9828, 9829, 9830, 9831, 9832, 9833, 9834, 9835, 9836, 9838, 9850, 9875, 9891, 9898, 9900, 9927, 9936, 9937, 9938, 9939, 9940, 9941, 9942, 9943, 9944, 9945, 9947, 9948, 9949, 9950, 9951, 10112, 10113, 10114, 10115, 10116, 10118, 10119, 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10138, 10143, 10363, 10718, 10723, 11091, 11363, 2222222};
161   
162   //NO MASK
163   Int_t mask[1] = {2222222};
164   
165   TH2F *hCellAmplitude;
166   TH1F *hNEvents;
167   Int_t Events;
168   Int_t n=0;
169   TString base = "/scratch/alicehp2/germain/QA/";
170   base += period ;
171   base += "/";
172   base += pass ;
173   base += "/";
174   base += run ;
175   base += "/"; 
176   base += trigger;
177   // TString infile ;
178   //infile = base + ".root" ;
179   //*f = TFile::Open(infile);  
180   TString direct = "CaloQA_";
181   direct += trigger; 
182   TDirectoryFile *dir = (TDirectoryFile *)f->Get(direct);
183   TList *outputList = (TList*)dir->Get(direct);
184   
185   hNEvents =(TH1F *)outputList->FindObject("hNEvents");
186   Events = hNEvents->GetEntries();
187   hCellAmplitude =(TH2F *)outputList->FindObject("EMCAL_hAmpId");
188   //hCellAmplitude->Draw();
189   //TH2 *hCellAmplitude = (TH2*) gFile->Get("hCellAmplitude");
190   Double_t numb =0 ;
191   Double_t Eth=0;
192   Eth = 5.;
193   if ( trigger=="EMC7") Eth=20.;
194   
195   
196   for(Int_t i = 0; i < 11520 ; i++){ 
197     Double_t Esum = 0;
198     Double_t Nsum = 0;  
199     Double_t EsumH = 0;
200     Double_t NsumH = 0;
201     Double_t Ratio = 0;
202     
203     for (Int_t j = 1; j <= hCellAmplitude->GetNbinsX(); j++) {
204       Double_t E = hCellAmplitude->GetXaxis()->GetBinCenter(j);
205       Double_t N = hCellAmplitude->GetBinContent(j, i+1);
206       
207       if (E < 0.07) continue; 
208       //  if (E > 0.07) continue; 
209       
210       if (E <= Eth) {
211         Esum += E*N;
212         Nsum += N;
213       }
214       else { 
215         EsumH += E*N;
216         NsumH += N;
217       }
218     }
219     
220     if(NsumH > 100)  Ratio = Nsum/NsumH ; 
221     //  if(Nsum > 20000 && Nsum < 22000 ) cout<<"  "<<i ;
222     
223     Int_t absId = i;
224     if(n!=0) {if(mask[n]<=mask[n-1]) cout<<"not sorted list !!"<<endl;}
225     if(i==mask[n]){n++ ; continue; }
226     //  if(Esum/(Double_t) Events > 0.5) cout<<"BAD : "<<i<<endl;
227     
228     //  hBadCellMap->Fill(1)
229     
230     
231     geom->GetCellIndex(absId,  nSupMod, nModule, nIphi, nIeta);
232     geom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,nIphi,nIeta, iphi,ieta);
233     
234     realbinphi = 120-(nSupMod/2)*24 -iphi -1;
235     
236     
237     if (nSupMod%2==0) realbineta= 48-ieta -1;   
238     if (nSupMod%2==1) realbineta= -ieta -1;
239     
240     // to do as usual (Gustavo) SM0 high left SM9 low right 
241     
242     binphi = 96 - (nSupMod/2)*24 +iphi;
243     if (nSupMod%2==1) bineta=ieta;       
244     /*
245      Int_t compt; if(i==0) compt = 1; 
246      if(ieta==0){ cout<<compt <<endl ; compt ++;}
247      */
248     if (nSupMod%2==0) bineta=ieta-48;
249     
250     
251     
252     hEnergyMapReal->Fill(realbineta,realbinphi,Esum/(Double_t)Events);
253     hOccupancyMapReal->Fill(realbineta,realbinphi,Nsum/(Double_t)Events);
254     // }
255     
256   }
257   cout<<"N events : "<<Events<<endl;
258   
259   TString Energy ; Energy = base +  "MapEnergy.pdf";
260   TString Entries  ;  Entries = base + "MapEntries.pdf";
261   TCanvas *c1 = new TCanvas("c1","energymap",800,800); 
262   c1->SetFillColor(0);
263   c1->SetGrid();
264   c1->cd();  
265   c1->SetRightMargin(0.14); 
266   TString title = "run ";
267   title += run ;
268   title += " Summed energy map";
269   if(trigger=="EMC7") title += " EMC ";
270   hEnergyMapReal->SetTitle(title);
271   if(trigger== "EMC7"){
272     hEnergyMapReal->SetMinimum(0.001); //FOR Esum EMC triggers
273     hEnergyMapReal->SetMaximum(0.05); //FOR Esum
274   }else{
275     hEnergyMapReal->SetMinimum(0.005); //FOR Esum MB
276     hEnergyMapReal->SetMaximum(0.02); //FOR Esum
277   }
278   hEnergyMapReal->Draw("colz");  
279   
280   c1->cd();
281   c1->SaveAs(Energy);
282   
283   TCanvas *c2 = new TCanvas("c2","occupancy",800,800); 
284   //c2->SetLogz();
285   c2->SetFillColor(0);
286   c2->SetGrid();
287   c2->cd();  
288   c2->SetRightMargin(0.14);  
289   TString title2 = "run ";
290   title2 += run ;
291   title2 += " Occupancy map";
292   if(trigger=="EMC7") title2 += " EMC ";
293   
294   hOccupancyMapReal->SetTitle(title2);
295   //SCALE USE FOR LHC11h modify fotr pp
296   if(trigger== "EMC7"){
297     hOccupancyMapReal->SetMinimum(0.01); //FOR Nsum
298     hOccupancyMapReal->SetMaximum(0.5);} //FOR Nsum}
299   else{
300     hOccupancyMapReal->SetMinimum(0.01); //FOR Nsum
301     hOccupancyMapReal->SetMaximum(0.1); //FOR Nsum
302   } 
303   hOccupancyMapReal->Draw("colz");  
304   c2->cd();
305   c2->SaveAs(Entries);
306   c2->SaveAs(Entries2);
307   
308 }
309 void  DrawRun(const Int_t run = 167713, TString period ="LHC11h", TString pass="pass1_HLT", TString trigger= "default", TFile *f =0x0){
310   
311   gStyle->SetPalette(1);
312   TString base = "/scratch/alicehp2/germain/QA/"; 
313   base += period ;
314   base += "/";
315   base += pass ;
316   base += "/";
317   TString outfilename ;
318   TString outfilename2 ;
319   base += run ;
320   base += "/" ;
321   base += trigger ;
322   char legend [100]     ;
323   char legend2 [100]     ;
324   TString direct = "CaloQA_";
325   direct += trigger;
326   
327   
328   TDirectoryFile *dir = (TDirectoryFile *)f->Get(direct);
329   TList *outputList = (TList*)dir->Get(direct);
330   
331   
332   if (trigger =="EMC7"){ sprintf(legend,"Run %i EMC ",run);}
333   else sprintf(legend,"Run %i ",run);
334   
335   
336   
337   hClusterTimeEnergy =(TH2F *)outputList->FindObject("EMCAL_hClusterTimeEnergy");
338   
339   TString title3 =" Time Vs Energy";
340   title3 += legend ;
341   hClusterTimeEnergy->SetStats(kFALSE);
342   hClusterTimeEnergy->SetTitle(title3);
343   
344   hClusterVsTrack =(TH2F *)outputList->FindObject("EMCAL_hCaloTrackMNClusters");
345   hClusterVsTrack->SetStats(kFALSE);
346   TString title3 =" N cluster Vs N track";
347   title3 += legend ;
348   hClusterVsTrack->SetTitle(title3);
349   
350   
351   hClusterEVsTrack =(TH2F *)outputList->FindObject("EMCAL_hCaloTrackMEClusters");
352   hClusterEVsTrack->SetStats(kFALSE);
353   hClusterEVsTrack->SetTitle(legend);
354   TString title3 =" Sum E cluster Vs N track";
355   title3 += legend ;
356   hClusterEVsTrack->SetTitle(title3);
357   
358   
359   hClusterEVsV0S =(TH2F *)outputList->FindObject("EMCAL_hCaloV0SEClusters");
360   hClusterEVsV0S->SetStats(kFALSE);
361   TString title3 =" Sum E cluster Vs V0 signal";
362   title3 += legend ;
363   hClusterEVsV0S->SetTitle(title3);
364   
365   
366   hNCellsPerClusterMod0 =(TH2F *)outputList->FindObject("EMCAL_hNCellsPerCluster_Mod0");
367   hNCellsPerClusterMod0->SetStats(kFALSE);
368   
369   if(trigger=="EMC7"){sprintf(legend2,"Run %i EMC Mod 0",run);}
370   else {sprintf(legend2,"Run %i Mod 0",run);}
371   
372   
373   hNCellsPerClusterMod0->SetTitle(legend2);
374   
375   hNCellsPerClusterMod1 =(TH2F *)outputList->FindObject("EMCAL_hNCellsPerCluster_Mod1");
376   hNCellsPerClusterMod1->SetStats(kFALSE);
377   if(trigger=="EMC7"){sprintf(legend2,"Run %i EMC Mod 1",run);}
378   else {sprintf(legend2,"Run %i Mod 1",run);}
379   
380   
381   hNCellsPerClusterMod1->SetTitle(legend2);
382   
383   hNCellsPerClusterMod2 =(TH2F *)outputList->FindObject("EMCAL_hNCellsPerCluster_Mod2");
384   hNCellsPerClusterMod2->SetStats(kFALSE);
385   if(trigger=="EMC7"){sprintf(legend2,"Run %i EMC Mod 2",run);}
386   else {sprintf(legend2,"Run %i Mod 2",run);}
387   
388   hNCellsPerClusterMod2->SetTitle(legend2);
389   
390   hNCellsPerClusterMod3 =(TH2F *)outputList->FindObject("EMCAL_hNCellsPerCluster_Mod3");
391   hNCellsPerClusterMod3->SetStats(kFALSE);
392   if(trigger=="EMC7"){sprintf(legend2,"Run %i EMC Mod 3",run);}
393   else {sprintf(legend2,"Run %i Mod 3",run);}
394   
395   hNCellsPerClusterMod3->SetTitle(legend2);
396   
397   
398   hNCellsPerClusterMod4 =(TH2F *)outputList->FindObject("EMCAL_hNCellsPerCluster_Mod4");
399   hNCellsPerClusterMod4->SetStats(kFALSE);
400   if(trigger=="EMC7"){sprintf(legend2,"Run %i EMC Mod 4",run);}
401   else {sprintf(legend2,"Run %i Mod 4",run);}
402   
403   hNCellsPerClusterMod4->SetTitle(legend2);
404   
405   hNCellsPerClusterMod5 =(TH2F *)outputList->FindObject("EMCAL_hNCellsPerCluster_Mod5");
406   hNCellsPerClusterMod5->SetStats(kFALSE);
407   if(trigger=="EMC7"){sprintf(legend2,"Run %i EMC Mod 5",run);}
408   else {sprintf(legend2,"Run %i Mod 5",run);}
409   hNCellsPerClusterMod5->SetTitle(legend2);
410   
411   hNCellsPerClusterMod6 =(TH2F *)outputList->FindObject("EMCAL_hNCellsPerCluster_Mod6");
412   hNCellsPerClusterMod6->SetStats(kFALSE);
413   if(trigger=="EMC7"){sprintf(legend2,"Run %i EMC Mod 6",run);}
414   else {sprintf(legend2,"Run %i Mod 6",run);}
415   hNCellsPerClusterMod6->SetTitle(legend2);
416   
417   hNCellsPerClusterMod7 =(TH2F *)outputList->FindObject("EMCAL_hNCellsPerCluster_Mod7");
418   hNCellsPerClusterMod7->SetStats(kFALSE);
419   if(trigger=="EMC7"){sprintf(legend2,"Run %i EMC Mod 7",run);}
420   else {sprintf(legend2,"Run %i Mod 7",run);}
421   hNCellsPerClusterMod7->SetTitle(legend2);
422   
423   hNCellsPerClusterMod8 =(TH2F *)outputList->FindObject("EMCAL_hNCellsPerCluster_Mod8");
424   hNCellsPerClusterMod8->SetStats(kFALSE);
425   if(trigger=="EMC7"){sprintf(legend2,"Run %i EMC Mod 8",run);}
426   else {sprintf(legend2,"Run %i Mod 8",run);}
427   hNCellsPerClusterMod8->SetTitle(legend2);
428   
429   hNCellsPerClusterMod9 =(TH2F *)outputList->FindObject("EMCAL_hNCellsPerCluster_Mod9");
430   hNCellsPerClusterMod9->SetStats(kFALSE);
431   if(trigger=="EMC7"){sprintf(legend2,"Run %i EMC Mod 9",run);}
432   else {sprintf(legend2,"Run %i Mod 9",run);} 
433   hNCellsPerClusterMod9->SetTitle(legend2);
434   
435   TCanvas  * c31 = new TCanvas("Time Vs E ", "Time Vs E", 600, 600);
436   c31->SetLogz();
437   c31->SetFillColor(0);
438   c31->SetBorderSize(0);
439   c31->SetFrameBorderMode(0);     
440   // c31->SetOptStat(0); 
441   hClusterTimeEnergy->SetYTitle("EMCAL ToF(ns)");
442   hClusterTimeEnergy->GetYaxis()->SetTitleOffset(1.2);
443   hClusterTimeEnergy->GetYaxis()->SetLabelSize(0.03);
444   
445   hClusterTimeEnergy->GetZaxis()->SetLabelSize(0.02);
446   hClusterTimeEnergy->GetZaxis()->SetTitleSize(0.03);
447   hClusterTimeEnergy->GetZaxis()->SetTitleOffset(0.03);
448   hClusterTimeEnergy->SetAxisRange(0.,50.);
449   hClusterTimeEnergy->Draw("colz");
450   c31->cd();
451   
452   outfilename = base + "TimeRun.pdf" ;
453   outfilename2 = base + "TimeRun.gif" ;
454   
455   c31->SaveAs(outfilename);
456   c31->SaveAs(outfilename2);
457   
458   
459   TCanvas  * c32 = new TCanvas(" Cluster Vs Track ","Cluster vs Track", 600, 600);
460   c32->SetLogz();
461   c32->SetFillColor(0);
462   c32->SetBorderSize(0);
463   c32->SetFrameBorderMode(0);     
464   // c31->SetOptStat(0); 
465   
466   
467   hClusterVsTrack->GetYaxis()->SetTitleOffset(1.2);
468   hClusterVsTrack->GetYaxis()->SetLabelSize(0.03);
469   
470   hClusterVsTrack->GetZaxis()->SetLabelSize(0.02);
471   hClusterVsTrack->GetZaxis()->SetTitleSize(0.03);
472   hClusterVsTrack->GetZaxis()->SetTitleOffset(0.03);
473   hClusterVsTrack->SetAxisRange(0.,1200.);
474   hClusterVsTrack->Draw("colz");
475   c32->cd();
476   
477   outfilename = base + "CaloTrackMult.pdf";
478   
479   outfilename2 = base + "CaloTrackMult.gif";
480   
481   c32->SaveAs(outfilename);
482   
483   c32->SaveAs(outfilename2);
484   
485   
486   TCanvas  * c33 = new TCanvas(" Cluster E Vs Track ","Cluster E vs Track", 600, 600);
487   c33->SetLogz();
488   c33->SetFillColor(0);
489   c33->SetBorderSize(0);
490   c33->SetFrameBorderMode(0);     
491   // c31->SetOptStat(0); 
492   
493   hClusterEVsTrack->GetYaxis()->SetTitleOffset(1.2);
494   hClusterEVsTrack->GetYaxis()->SetLabelSize(0.03);
495   
496   hClusterEVsTrack->GetZaxis()->SetLabelSize(0.02);
497   hClusterEVsTrack->GetZaxis()->SetTitleSize(0.03);
498   hClusterEVsTrack->GetZaxis()->SetTitleOffset(0.03);
499   hClusterEVsTrack->SetAxisRange(0.,1200.);
500   hClusterEVsTrack->Draw("colz");
501   c33->cd();
502   
503   outfilename = base + "CaloETrackMult.pdf";
504   outfilename2 = base + "CaloETrackMult.gif";
505   
506   c33->SaveAs(outfilename);
507   
508   c33->SaveAs(outfilename2);
509   
510   TCanvas  * c34 = new TCanvas(" Cluster E Vs V0 ","Cluster E vs V0", 600, 600);
511   c34->SetLogz();
512   c34->SetFillColor(0);
513   c34->SetBorderSize(0);
514   c34->SetFrameBorderMode(0);     
515   // c31->SetOptStat(0); 
516   
517   
518   hClusterEVsV0S->GetYaxis()->SetTitleOffset(1.2);
519   hClusterEVsV0S->GetYaxis()->SetLabelSize(0.03);
520   
521   hClusterEVsV0S->GetZaxis()->SetLabelSize(0.02);
522   hClusterEVsV0S->GetZaxis()->SetTitleSize(0.03);
523   hClusterEVsV0S->GetZaxis()->SetTitleOffset(0.03);
524   hClusterEVsV0S->GetYaxis()->SetRangeUser(0.,50.);
525   hClusterEVsV0S->Draw("colz");
526   c34->cd();
527   
528   
529   outfilename = base + "CaloEVsV0s.pdf";
530   outfilename2 = base + "CaloEVsV0s.gif";
531   
532   c34->SaveAs(outfilename);
533   c34->SaveAs(outfilename2);
534   
535   
536   
537   
538   
539   TCanvas  * c35 = new TCanvas(" Cells per Cluster 0 ","Cells per Cluster 0", 1000, 1200);
540   c35->SetLogz();
541   c35->SetFillColor(0);
542   c35->SetBorderSize(0);
543   c35->SetFrameBorderMode(0);     
544   // c31->SetOptStat(0); 
545   c35->Divide(3,4);
546   
547   c35->cd(1);
548   gPad->SetLogz();
549   hNCellsPerClusterMod0->GetYaxis()->SetTitleOffset(1.2);
550   hNCellsPerClusterMod0->GetYaxis()->SetLabelSize(0.03);
551   
552   hNCellsPerClusterMod0->GetZaxis()->SetLabelSize(0.05);
553   hNCellsPerClusterMod0->GetZaxis()->SetTitleSize(0.4);
554   hNCellsPerClusterMod0->GetZaxis()->SetTitleOffset(0.03);
555   hNCellsPerClusterMod0->GetYaxis()->SetRangeUser(0.,30.);
556   hNCellsPerClusterMod0->GetXaxis()->SetRangeUser(0.,20.);
557   hNCellsPerClusterMod0->Draw("colz");
558   c35->cd(2);
559   
560   gPad->SetLogz();
561   hNCellsPerClusterMod1->GetYaxis()->SetTitleOffset(1.2);
562   hNCellsPerClusterMod1->GetYaxis()->SetLabelSize(0.03);
563   
564   hNCellsPerClusterMod1->GetZaxis()->SetLabelSize(0.05);
565   hNCellsPerClusterMod1->GetZaxis()->SetTitleSize(0.2);
566   hNCellsPerClusterMod1->GetZaxis()->SetTitleOffset(0.03);
567   hNCellsPerClusterMod1->GetYaxis()->SetRangeUser(0.,30.);
568   hNCellsPerClusterMod1->GetXaxis()->SetRangeUser(0.,20.);
569   hNCellsPerClusterMod1->Draw("colz");
570   c35->cd(3);
571   gPad->SetLogz();
572   
573   
574   hNCellsPerClusterMod2->GetYaxis()->SetTitleOffset(1.2);
575   hNCellsPerClusterMod2->GetYaxis()->SetLabelSize(0.03);
576   
577   hNCellsPerClusterMod2->GetZaxis()->SetLabelSize(0.05);
578   hNCellsPerClusterMod2->GetZaxis()->SetTitleSize(0.04);
579   hNCellsPerClusterMod2->GetZaxis()->SetTitleOffset(0.03);
580   hNCellsPerClusterMod2->GetYaxis()->SetRangeUser(0.,30.);
581   hNCellsPerClusterMod2->GetXaxis()->SetRangeUser(0.,20.);
582   hNCellsPerClusterMod2->Draw("colz");
583   c35->cd(4);
584   
585   gPad->SetLogz();
586   hNCellsPerClusterMod3->GetYaxis()->SetTitleOffset(1.2);
587   hNCellsPerClusterMod3->GetYaxis()->SetLabelSize(0.03);
588   hNCellsPerClusterMod3->GetZaxis()->SetLabelSize(0.05);
589   hNCellsPerClusterMod3->GetZaxis()->SetTitleSize(0.04);
590   hNCellsPerClusterMod3->GetZaxis()->SetTitleOffset(0.03);
591   hNCellsPerClusterMod3->GetYaxis()->SetRangeUser(0.,30.);
592   hNCellsPerClusterMod3->GetXaxis()->SetRangeUser(0.,20.);
593   hNCellsPerClusterMod3->Draw("colz");
594   
595   c35->cd(5);
596   gPad->SetLogz();
597   
598   hNCellsPerClusterMod4->GetYaxis()->SetTitleOffset(1.2);
599   hNCellsPerClusterMod4->GetYaxis()->SetLabelSize(0.03);
600   hNCellsPerClusterMod4->GetZaxis()->SetLabelSize(0.05);
601   hNCellsPerClusterMod4->GetZaxis()->SetTitleSize(0.04);
602   hNCellsPerClusterMod4->GetZaxis()->SetTitleOffset(0.03);
603   hNCellsPerClusterMod4->GetYaxis()->SetRangeUser(0.,30.);
604   hNCellsPerClusterMod4->GetXaxis()->SetRangeUser(0.,20.);
605   hNCellsPerClusterMod4->Draw("colz");
606   
607   
608   
609   c35->cd(6);
610   gPad->SetLogz();
611   
612   hNCellsPerClusterMod5->GetYaxis()->SetTitleOffset(1.2);
613   hNCellsPerClusterMod5->GetYaxis()->SetLabelSize(0.03);
614   hNCellsPerClusterMod5->GetZaxis()->SetLabelSize(0.05);
615   hNCellsPerClusterMod5->GetZaxis()->SetTitleSize(0.04);
616   hNCellsPerClusterMod5->GetZaxis()->SetTitleOffset(0.03);
617   hNCellsPerClusterMod5->GetYaxis()->SetRangeUser(0.,30.);
618   hNCellsPerClusterMod5->GetXaxis()->SetRangeUser(0.,20.);
619   hNCellsPerClusterMod5->Draw("colz");
620   
621   
622   c35->cd(7);
623   gPad->SetLogz();
624   
625   hNCellsPerClusterMod6->GetYaxis()->SetTitleOffset(1.2);
626   hNCellsPerClusterMod6->GetYaxis()->SetLabelSize(0.03);
627   hNCellsPerClusterMod6->GetZaxis()->SetLabelSize(0.05);
628   hNCellsPerClusterMod6->GetZaxis()->SetTitleSize(0.04);
629   hNCellsPerClusterMod6->GetZaxis()->SetTitleOffset(0.03);
630   hNCellsPerClusterMod6->GetYaxis()->SetRangeUser(0.,30.);
631   hNCellsPerClusterMod6->GetXaxis()->SetRangeUser(0.,20.);
632   hNCellsPerClusterMod6->Draw("colz");
633   
634   c35->cd(8);
635   gPad->SetLogz();
636   
637   hNCellsPerClusterMod7->GetYaxis()->SetTitleOffset(1.2);
638   hNCellsPerClusterMod7->GetYaxis()->SetLabelSize(0.03);
639   hNCellsPerClusterMod7->GetZaxis()->SetLabelSize(0.05);
640   hNCellsPerClusterMod7->GetZaxis()->SetTitleSize(0.04);
641   hNCellsPerClusterMod7->GetZaxis()->SetTitleOffset(0.03);
642   hNCellsPerClusterMod7->GetYaxis()->SetRangeUser(0.,30.);
643   hNCellsPerClusterMod7->GetXaxis()->SetRangeUser(0.,20.);
644   hNCellsPerClusterMod7->Draw("colz");
645   
646   
647   c35->cd(9);
648   
649   gPad->SetLogz();
650   hNCellsPerClusterMod8->GetYaxis()->SetTitleOffset(1.2);
651   hNCellsPerClusterMod8->GetYaxis()->SetLabelSize(0.03);
652   hNCellsPerClusterMod8->GetZaxis()->SetLabelSize(0.05);
653   hNCellsPerClusterMod8->GetZaxis()->SetTitleSize(0.04);
654   hNCellsPerClusterMod8->GetZaxis()->SetTitleOffset(0.03);
655   hNCellsPerClusterMod8->GetYaxis()->SetRangeUser(0.,30.);
656   hNCellsPerClusterMod8->GetXaxis()->SetRangeUser(0.,20.);
657   hNCellsPerClusterMod8->Draw("colz");
658   
659   c35->cd(10);
660   gPad->SetLogz();
661   
662   hNCellsPerClusterMod9->GetYaxis()->SetTitleOffset(1.2);
663   hNCellsPerClusterMod9->GetYaxis()->SetLabelSize(0.03);
664   hNCellsPerClusterMod9->GetZaxis()->SetLabelSize(0.05);
665   hNCellsPerClusterMod9->GetZaxis()->SetTitleSize(0.04);
666   hNCellsPerClusterMod9->GetZaxis()->SetTitleOffset(0.03);
667   hNCellsPerClusterMod9->GetYaxis()->SetRangeUser(0.,30.);
668   hNCellsPerClusterMod9->GetXaxis()->SetRangeUser(0.,20.);
669   hNCellsPerClusterMod9->Draw("colz");
670   
671   outfilename = base + "CellsperCluster.pdf";
672   outfilename2 = base + "CellsperCluster.gif";
673   
674   
675   c35->SaveAs(outfilename);
676   c35->SaveAs(outfilename2);
677   
678 }