]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/PlotMuonQAPbPb.C
Adding PWG4Base library
[u/mrichter/AliRoot.git] / PWG3 / muon / PlotMuonQAPbPb.C
1 //--------------------------------------------------------------------------\r
2 // Macro for QA monitoring.\r
3 //\r
4 // In case it is not run with full aliroot, it needs the following libraries to compile:\r
5 //  - libSTEERBase.so\r
6 //  - libESD.so\r
7 //  - libAOD.so\r
8 //  - libANALYSIS.so\r
9 //  - libANALYSISalice.so\r
10 //  - libCORRFW.so\r
11 //  - libPWG3muon.so\r
12 //\r
13 // The macro reads results of the QA task and produce monitoring plots.\r
14 //\r
15 // Author: Philippe Pillot - SUBATECH Nantes, Christophe Suire - IPN Orsay \r
16 // and Cynthia Hadjidakis - IPN Orsay\r
17 //--------------------------------------------------------------------------\r
18 \r
19 #if !defined(__CINT__) || defined(__MAKECINT__)\r
20 \r
21 #include <Riostream.h>\r
22 \r
23 // ROOT includes\r
24 #include "TMath.h"\r
25 #include "TGrid.h"\r
26 #include "TFile.h"\r
27 #include "TH1.h"\r
28 #include "TSystem.h"\r
29 #include "TStyle.h"\r
30 #include "TCanvas.h"\r
31 #include "TPad.h"\r
32 \r
33 // ALIROOT includes\r
34 #include "../PWG3/base/AliCounterCollection.h"\r
35 \r
36 #endif\r
37 \r
38 //--------------------------------------------------------------------------\r
39 void PlotMuonQAPbPb(const char* baseDir, const char* runList = 0x0, Bool_t selectPhysics = kFALSE)\r
40 {\r
41   /// Macro for QA monitoring.\r
42   /// Examples: \r
43   /// baseDir = "alien:///alice/cern.ch/user/p/ppillot/pp7TeV/LHC10d/MuonQA/pass1/results"\r
44   /// baseDir = "results"\r
45   /// If runList != 0x0: only the given runs will be used. Otherwise use all runs found in baseDir.\r
46   /// Usage (local/grid)\r
47   /// .x PlotMuonQAPbPb.C("alien:///alice/cern.ch/user/s/suire/QAP2LHC10h/output",0,kTRUE)\r
48   \r
49 \r
50   #if defined(__CINT__) && !defined(__MAKECINT__)\r
51   gSystem->Load("libTree");\r
52   gSystem->Load("libGeom");\r
53   gSystem->Load("libVMC");\r
54   gSystem->Load("libPhysics");\r
55   gSystem->Load("libSTEERBase");\r
56   gSystem->Load("libESD");\r
57   gSystem->Load("libAOD");\r
58   gSystem->Load("libANALYSIS");\r
59   gSystem->Load("libANALYSISalice");\r
60   gSystem->Load("libCORRFW");\r
61   gSystem->Load("libPWG3base");\r
62   gSystem->Load("libPWG3muon");\r
63   #endif\r
64   \r
65   // Cosmetics and configuration\r
66   gStyle->SetFillColor(10);\r
67   gStyle->SetPadGridX(kTRUE);\r
68   gStyle->SetPadGridY(kTRUE);\r
69   gStyle->SetPadRightMargin(0.01);\r
70 \r
71   TString LHCPeriod = "LHC10hpass2"; \r
72 \r
73   TString OutFileName = "muonQA_";  OutFileName += LHCPeriod;\r
74   TString OutFileNamePDF=  OutFileName.Data();  OutFileNamePDF+= ".pdf";\r
75   TString OutFileNamePDF_open = OutFileNamePDF.Data(); OutFileNamePDF_open += "[";  \r
76   TString OutFileNamePDF_close= OutFileNamePDF.Data(); OutFileNamePDF_close += "]";  \r
77   TString OutFileNameROOT=  OutFileName.Data();  OutFileNameROOT+= ".root";\r
78 \r
79   //TString QAFileName = "QAresults.root";\r
80   TString QAFileName = "AnalysisResults.root";\r
81   TString MergedQAFileName = "Merged"; MergedQAFileName+= QAFileName.Data();\r
82 \r
83   Int_t PRINTSTAT = 1; \r
84 \r
85   Int_t ALIENFASTREAD = 0 ; \r
86 \r
87   if (ALIENFASTREAD){ // Equivalent to the fast read option\r
88     gEnv->SetValue("XNet.ConnectTimeout",10);\r
89     gEnv->SetValue("XNet.RequestTimeout",10);\r
90     gEnv->SetValue("XNet.MaxRedirectCount",2);\r
91     gEnv->SetValue("XNet.ReconnectTimeout",10);\r
92     gEnv->SetValue("XNet.FirstConnectMaxCnt",1);\r
93   }\r
94 \r
95   TH1::AddDirectory(kFALSE);\r
96   \r
97   TString alienBaseDir = baseDir;\r
98   \r
99   if (alienBaseDir.Contains("alien:") && !TGrid::Connect("alien://")) {\r
100       Error("PlotMuonQA","cannot connect to grid");\r
101       return;\r
102   }\r
103   \r
104   Float_t LabelSize = 0.03; \r
105   \r
106     \r
107   //---------------------------------- //\r
108   //          Run selection            //\r
109   //---------------------------------- //\r
110   \r
111 \r
112   // list runs to be analyzed\r
113   TString selectRuns = "run:";\r
114   TObjArray runs;\r
115   runs.SetOwner();\r
116   if (runList) {\r
117     \r
118     // only the ones in the runList\r
119     ifstream inFile(runList);\r
120     if (!inFile.is_open()) {\r
121       Error("PlotMuonQAPbPb",Form("unable to open file %s", runList));\r
122       return;\r
123     }\r
124     \r
125     TString currRun;\r
126     while (!inFile.eof()) {\r
127       currRun.ReadLine(inFile, kTRUE);\r
128       if (currRun.IsNull()) continue;\r
129       if (!currRun.IsDigit()) {\r
130         Error("PlotMuonQAPbPb","invalid run number: %s", currRun.Data());\r
131         return;\r
132       }\r
133       runs.AddLast(new TObjString(Form("%09d", currRun.Atoi())));\r
134       selectRuns += Form("%s,",currRun.Data());\r
135     }\r
136     selectRuns.Remove(TString::kTrailing, ',');\r
137     \r
138     inFile.close();\r
139     \r
140   } else {\r
141     \r
142     // all runs\r
143     runs.AddLast(new TObjString("*"));\r
144     \r
145   }\r
146   \r
147   // physics selection\r
148   TString select = selectPhysics ? "selected:yes" : "";\r
149   \r
150   \r
151   //---------------------------------- //\r
152   //        plot global counter        //\r
153   //---------------------------------- //\r
154   \r
155   TFile *globalFile = TFile::Open(Form("%s/%s", baseDir,MergedQAFileName.Data()));\r
156   if (!globalFile || ! globalFile->IsOpen()) {\r
157     Error("PlotQA", Form("failed to open file: %s/%s", baseDir,MergedQAFileName.Data()));\r
158     return;\r
159   }\r
160   globalFile->Cd("MUON_QA");\r
161   \r
162 \r
163 \r
164   // get counters\r
165   AliCounterCollection* eventCounters = static_cast<AliCounterCollection*>(globalFile->FindObjectAny("eventCounters"));\r
166   AliCounterCollection* trackCounters = static_cast<AliCounterCollection*>(globalFile->FindObjectAny("trackCounters"));\r
167   if (!runList) selectRuns += trackCounters->GetKeyWords("run");\r
168 \r
169 \r
170   //declare a default canvas c1 \r
171   TString CanvasName = "c1";\r
172   TCanvas *c1 = new TCanvas(CanvasName.Data());\r
173   c1->cd();\r
174 \r
175   //TString allTriggers = "trigger:CMBAC-B,CMBS2A-B,CMBS2C-B,CMBACS2-B,C0SMH-B";\r
176   //TString minBiasTrigers = "trigger:CMBAC-B,CMBS2A-B,CMBS2C-B,CMBACS2-B";\r
177   TString allTriggers = "trigger:any"; //"trigger:CMBAC-B,CMBS2A-B,CMBS2C-B,C0SMH-B";\r
178   TString minBiasTrigers = "trigger:any"; //CMBAC-B,CMBS2A-B,CMBS2C-B";\r
179   TString bckTriggers = "trigger:CMBACS2-A,CMBACS2-C,CMBS2A-A,CMBS2A-C,CMBS2C-A,CMBS2C-C,CMBAC-A,CMBAC-A,C0SMH-A,C0SMH-C";\r
180 \r
181   // Histo trigger without Phys. Sel. \r
182   TH1* hAllTriggersNoPS = eventCounters->Draw("run",Form("%s/%s",allTriggers.Data(), selectRuns.Data()));\r
183   hAllTriggersNoPS->Sumw2();\r
184   Int_t NumOfAllTriggersNoPS = hAllTriggersNoPS->Integral();\r
185   TH1* hAllTriggerslowNoPS = eventCounters->Draw("run",Form("v0mult:low/%s/%s",allTriggers.Data(), selectRuns.Data()));\r
186   hAllTriggerslowNoPS->Sumw2();\r
187   TH1* hAllTriggershighNoPS = eventCounters->Draw("run",Form("v0mult:high/%s/%s",allTriggers.Data(), selectRuns.Data()));\r
188   hAllTriggershighNoPS->Sumw2();\r
189   TH1* hMBBNoPS = eventCounters->Draw("run",Form("v0mult:low,int,high/%s/%s",minBiasTrigers.Data(), selectRuns.Data()));\r
190   hMBBNoPS->Sumw2();\r
191   Int_t NumOfMBBNoPS = hMBBNoPS->Integral();\r
192   TH1* hMBBlowNoPS = eventCounters->Draw("run",Form("v0mult:low/%s/%s",minBiasTrigers.Data(), selectRuns.Data()));\r
193   hMBBlowNoPS->Sumw2();\r
194   Int_t NumOfMBBlowNoPS = hMBBlowNoPS->Integral();\r
195   TH1* hMBBhighNoPS = eventCounters->Draw("run",Form("v0mult:high/%s/%s",minBiasTrigers.Data(), selectRuns.Data()));\r
196   hMBBhighNoPS->Sumw2();\r
197   Int_t NumOfMBBhighNoPS = hMBBhighNoPS->Integral();\r
198   //TH1* hCMUS1BNoPS = eventCounters->Draw("run",Form("trigger:CMUS1B/%s", selectRuns.Data()));\r
199   //hCMUS1BNoPS->Sumw2();\r
200   //Int_t NumOfCMUS1BNoPS = hCMUS1BNoPS->Integral();\r
201   //TH1* hCSH1BNoPS = eventCounters->Draw("run",Form("trigger:CSH1B/%s", selectRuns.Data()));\r
202   //hCSH1BNoPS->Sumw2();\r
203   //Int_t NumOfCSH1BNoPS = hCSH1BNoPS->Integral();\r
204 \r
205   TH1* hBckTriggersNoPS = eventCounters->Draw("run",Form("v0mult:low,int,high/%s/%s",bckTriggers.Data(), selectRuns.Data()));\r
206   hBckTriggersNoPS->Sumw2();                                  \r
207                                               \r
208 \r
209   // Histo trigger with Phys. Sel. \r
210   TH1* hAllTriggersWithPS = eventCounters->Draw("run",Form("%s/%s/selected:yes",allTriggers.Data(), selectRuns.Data()));\r
211   hAllTriggersWithPS->Sumw2();\r
212   Int_t  NumOfAllTriggersWithPS = hAllTriggersWithPS->Integral();\r
213   TH1* hAllTriggersLowWithPS = eventCounters->Draw("run",Form("v0mult:low/%s/%s/selected:yes",allTriggers.Data(), selectRuns.Data()));\r
214   hAllTriggersWithPS->Sumw2();\r
215   TH1* hAllTriggersHighWithPS = eventCounters->Draw("run",Form("v0mult:high/%s/%s/selected:yes",allTriggers.Data(), selectRuns.Data()));\r
216   hAllTriggersWithPS->Sumw2();\r
217   TH1* hMBBWithPS = eventCounters->Draw("run",Form("v0mult:low,int,high/%s/%s/selected:yes",minBiasTrigers.Data(), selectRuns.Data()));\r
218   hMBBWithPS->Sumw2();\r
219   Int_t NumOfMBBWithPS = hMBBWithPS->Integral();\r
220   TH1* hMBBlowWithPS = eventCounters->Draw("run",Form("v0mult:low/%s/%s/selected:yes",minBiasTrigers.Data(), selectRuns.Data()));\r
221   hMBBlowWithPS->Sumw2();\r
222   Int_t NumOfMBBlowWithPS = hMBBlowWithPS->Integral();\r
223   TH1* hMBBhighWithPS = eventCounters->Draw("run",Form("v0mult:high/%s/%s/selected:yes",minBiasTrigers.Data(), selectRuns.Data()));\r
224   hMBBhighWithPS->Sumw2();\r
225   Int_t NumOfMBBhighWithPS = hMBBhighWithPS->Integral();\r
226   \r
227   // Histo trigger : Phys. Sel.  is selected or not depending on the macro arguments\r
228   TH1* hAllTriggers = eventCounters->Draw("run",Form("%s/%s/%s",allTriggers.Data(), selectRuns.Data(), select.Data()));\r
229   hAllTriggers->Sumw2();\r
230   TH1* hMBB = eventCounters->Draw("run",Form("v0mult:low,int,high/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
231   hMBB->Sumw2();\r
232   TH1* hMBBlow = eventCounters->Draw("run",Form("v0mult:low/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
233   hMBBlow->Sumw2();\r
234   TH1* hMBBhigh = eventCounters->Draw("run",Form("v0mult:high/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
235   hMBBhigh->Sumw2();\r
236 \r
237   // Histo tracking : Phys. Sel.  is selected or not depending on the macro arguments\r
238   TH1* hAllTracksMBB = trackCounters->Draw("run",Form("v0mult:low,int,high/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
239   hAllTracksMBB->Sumw2();\r
240   TH1* hTriggerMBB = trackCounters->Draw("run",Form("v0mult:low,int,high/track:triggeronly/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
241   hTriggerMBB->Sumw2();\r
242   TH1* hTrackerMBB = trackCounters->Draw("run",Form("v0mult:low,int,high/track:trackeronly/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
243   hTrackerMBB->Sumw2();\r
244   TH1* hMatchedMBB = trackCounters->Draw("run",Form("v0mult:low,int,high/track:matched/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
245   hMatchedMBB->Sumw2();\r
246   TH1* hAllTracksMBBlow = trackCounters->Draw("run",Form("v0mult:low/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
247   hAllTracksMBBlow->Sumw2();\r
248   TH1* hTriggerMBBlow = trackCounters->Draw("run",Form("v0mult:low/track:triggeronly/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
249   hTriggerMBBlow->Sumw2();\r
250   TH1* hTrackerMBBlow = trackCounters->Draw("run",Form("v0mult:low/track:trackeronly/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
251   hTrackerMBBlow->Sumw2();\r
252   TH1* hMatchedMBBlow = trackCounters->Draw("run",Form("v0mult:low/track:matched/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
253   hMatchedMBBlow->Sumw2();\r
254   TH1* hAllTracksMBBhigh = trackCounters->Draw("run",Form("v0mult:high/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
255   hAllTracksMBBhigh->Sumw2();\r
256   TH1* hTriggerMBBhigh = trackCounters->Draw("run",Form("v0mult:high/track:triggeronly/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
257   hTriggerMBBhigh->Sumw2();\r
258   TH1* hTrackerMBBhigh = trackCounters->Draw("run",Form("v0mult:high/track:trackeronly/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
259   hTrackerMBBhigh->Sumw2();\r
260   TH1* hMatchedMBBhigh = trackCounters->Draw("run",Form("v0mult:high/track:matched/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
261   hMatchedMBBhigh->Sumw2();\r
262   \r
263   TH1* hMatchedLowPtMBB = trackCounters->Draw("run",Form("v0mult:low,int,high/track:matched/acc:in/%s/%s/%s/pt:low",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
264   hMatchedLowPtMBB->Sumw2();\r
265   TH1* hMatchedHighPtMBB = trackCounters->Draw("run",Form("v0mult:low,int,high/track:matched/acc:in/%s/%s/%s/pt:high",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
266   hMatchedHighPtMBB->Sumw2();\r
267   TH1* hMatchedLowPtMBBlow = trackCounters->Draw("run",Form("v0mult:low/track:matched/acc:in/%s/%s/%s/pt:low",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
268   hMatchedLowPtMBBlow->Sumw2();\r
269   TH1* hMatchedHighPtMBBlow = trackCounters->Draw("run",Form("v0mult:low/track:matched/acc:in/%s/%s/%s/pt:high",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
270   hMatchedHighPtMBBlow->Sumw2();\r
271   TH1* hMatchedLowPtMBBhigh = trackCounters->Draw("run",Form("v0mult:high/track:matched/acc:in/%s/%s/%s/pt:low",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
272   hMatchedLowPtMBBhigh->Sumw2();\r
273   TH1* hMatchedHighPtMBBhigh = trackCounters->Draw("run",Form("v0mult:high/track:matched/acc:in/%s/%s/%s/pt:high",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));\r
274   hMatchedHighPtMBBhigh->Sumw2();\r
275   \r
276   \r
277   // for MBB only, low and high mult\r
278   TH1 *hPosMatchedMBBlow =  trackCounters->Draw("run",Form("v0mult:low/track:matched/charge:pos/acc:in/%s/%s/%s",minBiasTrigers.Data(),select.Data(),selectRuns.Data()));\r
279   hPosMatchedMBBlow->Sumw2();\r
280   TH1 *hNegMatchedMBBlow=  trackCounters->Draw("run",Form("v0mult:low/track:matched/charge:neg/acc:in/%s/%s/%s",minBiasTrigers.Data(),select.Data(),selectRuns.Data())); \r
281   hNegMatchedMBBlow->Sumw2();\r
282   TH1 *hAllMatchedMBBlow=  trackCounters->Draw("run",Form("v0mult:low/track:matched/acc:in/%s/%s/%s",minBiasTrigers.Data(),select.Data(),selectRuns.Data())); \r
283   hAllMatchedMBBlow->Sumw2();\r
284   TH1 *hPosMatchedMBBhigh =  trackCounters->Draw("run",Form("v0mult:high/track:matched/charge:pos/acc:in/%s/%s/%s",minBiasTrigers.Data(),select.Data(),selectRuns.Data()));\r
285   hPosMatchedMBBhigh->Sumw2();\r
286   TH1 *hNegMatchedMBBhigh=  trackCounters->Draw("run",Form("v0mult:high/track:matched/charge:neg/acc:in/%s/%s/%s",minBiasTrigers.Data(),select.Data(),selectRuns.Data())); \r
287   hNegMatchedMBBhigh->Sumw2();\r
288   TH1 *hAllMatchedMBBhigh=  trackCounters->Draw("run",Form("v0mult:high/track:matched/acc:in/%s/%s/%s",minBiasTrigers.Data(),select.Data(),selectRuns.Data())); \r
289   hAllMatchedMBBhigh->Sumw2();\r
290   \r
291 \r
292   TH1* hAll = eventCounters->Draw("trigger","run","run:any/selected:yes");\r
293   hAll->Draw("TEXT");\r
294   \r
295 \r
296   //===================================================================================\r
297   // Put all plots in a pdf file, easier to publish (Twiki)\r
298   c1->Print(OutFileNamePDF_open.Data());\r
299 \r
300   TFile *rootFileOut = TFile::Open(OutFileNameROOT.Data(),"RECREATE");\r
301   \r
302   //===================================================================================\r
303   // new canvas of the statistic wrt trigger w/  physics selection\r
304   CanvasName =  LHCPeriod.Data() ; \r
305   CanvasName += "_StatByTrigger"; \r
306   TCanvas *cStatByTrigger = new TCanvas(CanvasName.Data(),"cStatByTrigger",1200,900);\r
307   cStatByTrigger->SetTopMargin(0.05);\r
308   cStatByTrigger->SetRightMargin(0.01);\r
309   cStatByTrigger->SetGridy(1);\r
310   cStatByTrigger->SetLogy(1);\r
311   cStatByTrigger->cd();\r
312 \r
313   //hAllTriggersWithPS->SetLabelSize(LabelSize);\r
314   //hAllTriggersWithPS->SetTitle("Statistic per trigger  w/  Phys. Sel."); \r
315   hAllTriggersWithPS->SetTitle(""); \r
316   hAllTriggersWithPS->SetLineWidth(2);\r
317   hAllTriggersWithPS->SetMinimum(10);\r
318   hAllTriggersWithPS->SetLabelSize(LabelSize);\r
319 \r
320   hAllTriggersWithPS->Draw("E");\r
321   hMBBWithPS->SetLineWidth(2);\r
322   hMBBWithPS->SetLineColor(kBlue);\r
323   hMBBWithPS->Draw("ESAME");\r
324   hMBBlowWithPS->SetMarkerStyle(27);\r
325   hMBBlowWithPS->SetMarkerSize(2);\r
326   hMBBlowWithPS->SetMarkerColor(kBlue);\r
327   hMBBlowWithPS->SetLineColor(kBlue);\r
328   hMBBlowWithPS->Draw("ESAME");\r
329   hMBBhighWithPS->SetMarkerStyle(24);\r
330   hMBBhighWithPS->SetMarkerSize(2);\r
331   hMBBhighWithPS->SetMarkerColor(kBlue);\r
332   hMBBhighWithPS->SetLineColor(kBlue);\r
333   hMBBhighWithPS->Draw("ESAME");\r
334 \r
335 \r
336   TLegend* legcSBT = new TLegend(0.12,0.15,0.42,0.3);\r
337   legcSBT->SetHeader("Trigger Statistic w/ Phys. Sel.");\r
338   legcSBT->AddEntry(hAllTriggersWithPS,"All collisions triggers","l");\r
339   legcSBT->AddEntry(hMBBWithPS,"Min Bias [0-80]% from V0 amplitude","l");\r
340   legcSBT->AddEntry(hMBBlowWithPS,"MB low multiplicity events [60-80]%","p"); \r
341   legcSBT->AddEntry(hMBBhighWithPS,"MB high multiplicity events [0-10]%","p"); \r
342   legcSBT->Draw("same");\r
343 \r
344   cStatByTrigger->Print(OutFileNamePDF.Data());\r
345   cStatByTrigger->Write();\r
346 \r
347 \r
348   //===================================================================================\r
349   // new canvas with the relative content of each trigger w/ and w/o  physics selection\r
350   TH1 *ratioMBB = static_cast<TH1*>(hMBBWithPS->Clone("ratioMBB"));\r
351   ratioMBB->Divide(hMBBNoPS);\r
352   ratioMBB->SetLineColor(kBlack);\r
353   ratioMBB->SetLineWidth(2);\r
354   TH1 *ratioMBBlow = static_cast<TH1*>(hMBBlowWithPS->Clone("ratioMBBlow"));\r
355   ratioMBBlow->Divide(hMBBlowNoPS);\r
356   ratioMBBlow->SetLineColor(kBlue);\r
357   ratioMBBlow->SetLineWidth(2);\r
358   ratioMBBlow->SetMarkerSize(0);\r
359   ratioMBBlow->SetMarkerColor(kBlue);\r
360   TH1 *ratioMBBhigh = static_cast<TH1*>(hMBBhighWithPS->Clone("ratioMBBhigh"));\r
361   ratioMBBhigh->Divide(hMBBhighNoPS);\r
362   ratioMBBhigh->SetLineColor(kRed);\r
363   ratioMBBhigh->SetLineWidth(2);\r
364   ratioMBBhigh->SetMarkerSize(0);\r
365   ratioMBBhigh->SetMarkerColor(kRed);\r
366 \r
367 \r
368   TH1 *ratioMBBNoPS = static_cast<TH1*>(hMBBNoPS->Clone("ratioMBBNoPS"));\r
369   ratioMBBNoPS->Divide(hMBBNoPS);\r
370   ratioMBBNoPS->SetLineColor(kBlack);\r
371   ratioMBBNoPS->SetLineWidth(0);\r
372   ratioMBBNoPS->SetLineStyle(2);\r
373   ratioMBBNoPS->SetMarkerColor(kBlack);\r
374   ratioMBBNoPS->SetMarkerStyle(24);\r
375   ratioMBBNoPS->SetMarkerSize(1);\r
376   TH1 *ratioMBBlowNoPS = static_cast<TH1*>(hMBBlowNoPS->Clone("ratioMBBlowNoPS"));\r
377   ratioMBBlowNoPS->Divide(hMBBlowNoPS);\r
378   ratioMBBlowNoPS->SetLineColor(kBlue);\r
379   ratioMBBlowNoPS->SetLineWidth(0);\r
380   ratioMBBlowNoPS->SetLineStyle(2);\r
381   ratioMBBlowNoPS->SetMarkerColor(kBlue);\r
382   ratioMBBlowNoPS->SetMarkerStyle(24);\r
383   ratioMBBlowNoPS->SetMarkerSize(1);\r
384   TH1 *ratioMBBhighNoPS = static_cast<TH1*>(hMBBhighNoPS->Clone("ratioMBBhighNoPS"));\r
385   ratioMBBhighNoPS->Divide(hMBBhighNoPS);\r
386   ratioMBBhighNoPS->SetLineColor(kRed);\r
387   ratioMBBhighNoPS->SetLineWidth(0);\r
388   ratioMBBhighNoPS->SetLineStyle(2);\r
389   ratioMBBhighNoPS->SetMarkerColor(kRed);\r
390   ratioMBBhighNoPS->SetMarkerStyle(24);\r
391   ratioMBBhighNoPS->SetMarkerSize(1);\r
392   \r
393 \r
394   TH1 *ratioBck = static_cast<TH1*>(hBckTriggersNoPS->Clone("ratioBck"));\r
395   ratioBck->Divide(hMBBNoPS);\r
396   ratioBck->SetLineColor(kBlack);\r
397   ratioBck->SetLineWidth(3);\r
398   ratioBck->SetLineStyle(3);\r
399   ratioBck->Scale(10);\r
400 \r
401   CanvasName =  LHCPeriod.Data() ; \r
402   CanvasName += "_RelativeTriggerContent"; \r
403   TCanvas *cRelativeTriggerContent = new TCanvas(CanvasName.Data(),"cRelativeTriggerContent",1200,900);\r
404   cRelativeTriggerContent->SetTopMargin(0.05);\r
405   cRelativeTriggerContent->SetRightMargin(0.01);\r
406   cRelativeTriggerContent->SetGridy(1);\r
407   //cRelativeTriggerContent->SetLogy(1);\r
408   cRelativeTriggerContent->cd();\r
409 \r
410   ratioMBB->SetMaximum(1.0);\r
411   ratioMBB->SetMinimum(0.05);\r
412   ratioMBB->SetTitle("");\r
413   ratioMBB->SetLabelSize(LabelSize);\r
414   ratioMBB->LabelsOption("v");\r
415   ratioMBB->GetYaxis()->SetTitle("Relative trigger content w/ and w/o Phys. Sel."); \r
416 \r
417   ratioMBB->Draw("E");\r
418   ratioMBBlow->Draw("ESAME");\r
419   ratioMBBhigh->Draw("ESAME");\r
420   ratioMBBNoPS->Draw("EPSAME");\r
421   ratioMBBlowNoPS->Draw("EPSAME");\r
422   ratioMBBhighNoPS->Draw("EPSAME");\r
423   ratioBck->Draw("EPSAME");\r
424 \r
425   TLegend* legcRTC = new TLegend(0.4,0.25,0.70,0.45);\r
426   legcRTC->SetHeader("Physics Selection");\r
427   legcRTC->AddEntry(".","applied :","");\r
428   legcRTC->AddEntry(ratioMBB,"MBB","l");\r
429   legcRTC->AddEntry(ratioMBBlow,"MBB low mult.","l");\r
430   legcRTC->AddEntry(ratioMBBhigh,"MBB high mult.","l");\r
431   legcRTC->AddEntry(".","not applied :","");\r
432   legcRTC->AddEntry(ratioMBBNoPS,"MBB","p");\r
433   legcRTC->AddEntry(ratioMBBlowNoPS,"MBB low mult.","p");\r
434   legcRTC->AddEntry(ratioMBBhighNoPS,"MBB high mult.","p");\r
435   legcRTC->AddEntry(ratioBck,"Background (x10)","l");\r
436   legcRTC->Draw("same");\r
437   \r
438   cRelativeTriggerContent->Print(OutFileNamePDF.Data());\r
439   cRelativeTriggerContent->Write();\r
440 \r
441 \r
442   //===================================================================================\r
443   // new canvas with the relative ratio of multiplicity bin after physic selection\r
444   TH1 *relratioMBBlow = static_cast<TH1*>(hMBBlowWithPS->Clone("relratioMBBlow"));\r
445   relratioMBBlow->Divide(hMBBWithPS);\r
446   relratioMBBlow->SetLineColor(kBlue);\r
447   relratioMBBlow->SetLineWidth(2);\r
448   relratioMBBlow->SetMarkerSize(0);\r
449   TH1 *relratioMBBhigh = static_cast<TH1*>(hMBBhighWithPS->Clone("relratioMBBhigh"));\r
450   relratioMBBhigh->Divide(hMBBWithPS);\r
451   relratioMBBhigh->SetLineColor(kRed);\r
452   relratioMBBhigh->SetLineWidth(2);\r
453   relratioMBBhigh->SetMarkerSize(0);\r
454 \r
455 \r
456   TH1 *relratioMBBlowNoPS = static_cast<TH1*>(hMBBlowNoPS->Clone("relratioMBBlowNoPS"));\r
457   relratioMBBlowNoPS->Divide(hMBBNoPS);\r
458   relratioMBBlowNoPS->SetLineColor(kBlue);\r
459   relratioMBBlowNoPS->SetLineWidth(0);\r
460   relratioMBBlowNoPS->SetLineStyle(2);\r
461   relratioMBBlowNoPS->SetMarkerColor(kBlue);\r
462   relratioMBBlowNoPS->SetMarkerStyle(24);\r
463   relratioMBBlowNoPS->SetMarkerSize(1);\r
464   TH1 *relratioMBBhighNoPS = static_cast<TH1*>(hMBBhighNoPS->Clone("relratioMBBhighNoPS"));\r
465   relratioMBBhighNoPS->Divide(hMBBNoPS);\r
466   relratioMBBhighNoPS->SetLineColor(kRed);\r
467   relratioMBBhighNoPS->SetLineWidth(0);\r
468   relratioMBBhighNoPS->SetLineStyle(2);\r
469   relratioMBBhighNoPS->SetMarkerColor(kRed);\r
470   relratioMBBhighNoPS->SetMarkerStyle(24);\r
471   relratioMBBhighNoPS->SetMarkerSize(1);\r
472   \r
473   CanvasName =  LHCPeriod.Data() ; \r
474   CanvasName += "_CentralityPercentileCheck"; \r
475   TCanvas *cCentralityPercentileCheck = new TCanvas(CanvasName.Data(),"CentralityPercentileCheck",1200,900);\r
476   cCentralityPercentileCheck->SetTopMargin(0.05);\r
477   cCentralityPercentileCheck->SetRightMargin(0.01);\r
478   cCentralityPercentileCheck->SetGridy(1);\r
479   //cCentralityPercentileCheck->SetLogy(1);\r
480   cCentralityPercentileCheck->cd();\r
481 \r
482   relratioMBBlow->Scale(0.8);\r
483   relratioMBBhigh->Scale(0.8);\r
484   relratioMBBlowNoPS->Scale(0.8);\r
485   relratioMBBhighNoPS->Scale(0.8);\r
486 \r
487   relratioMBBlow->SetMaximum(0.3);\r
488   relratioMBBlow->SetMinimum(0.01);\r
489   relratioMBBlow->SetTitle("");\r
490   relratioMBBlow->SetLabelSize(LabelSize);\r
491   relratioMBBlow->GetYaxis()->SetTitle("Centrality percentile check"); \r
492 \r
493   relratioMBBlow->Draw();\r
494   relratioMBBhigh->Draw("ESAME");\r
495   relratioMBBlowNoPS->Draw("EPSAME");\r
496   relratioMBBhighNoPS->Draw("EPSAME");\r
497 \r
498   TLegend* legcCPC = new TLegend(0.12,0.15,0.42,0.30);\r
499   legcCPC->SetHeader("Physics Selection");\r
500   legcCPC->AddEntry(".","applied :","");\r
501   legcCPC->AddEntry(relratioMBBlow,"MBB low mult.","l");\r
502   legcCPC->AddEntry(relratioMBBhigh,"MBB high mult.","l");\r
503   legcCPC->AddEntry(".","not applied :","");\r
504   legcCPC->AddEntry(relratioMBBlowNoPS,"MBB low mult.","p");\r
505   legcCPC->AddEntry(relratioMBBhighNoPS,"MBB high mult.","p");\r
506   legcCPC->Draw("same");\r
507   \r
508   cCentralityPercentileCheck->Print(OutFileNamePDF.Data());\r
509   cCentralityPercentileCheck->Write();\r
510 \r
511 \r
512   //====================================================\r
513   // Draw ratio of tracks over MBB versus run \r
514   TH1* hTrackerPerMBB= static_cast<TH1*>(hTrackerMBB->Clone("hTrackerPerMBB"));\r
515   hTrackerPerMBB->Divide(hMBB);\r
516   hTrackerPerMBB->SetLineWidth(2);\r
517   hTrackerPerMBB->SetLineColor(kRed);\r
518 \r
519   TH1* hTriggerPerMBB= static_cast<TH1*>(hTriggerMBB->Clone("hTriggerPerMBB"));\r
520   hTriggerPerMBB->Divide(hMBB);\r
521   hTriggerPerMBB->SetLineWidth(2);\r
522   hTriggerPerMBB->SetLineColor(kBlue);\r
523 \r
524 \r
525   TH1* hMatchedPerMBB= static_cast<TH1*>(hMatchedMBB->Clone("hMatchedPerMBB"));\r
526   hMatchedPerMBB->Divide(hMBB);\r
527   hMatchedPerMBB->SetLineWidth(2);\r
528   hMatchedPerMBB->SetLineColor(kViolet);\r
529 \r
530 \r
531   TH1* hAllTracksPerMBB= static_cast<TH1*>(hAllTracksMBB->Clone("hAllTracksPerMBB"));\r
532   hAllTracksPerMBB->Divide(hMBB);\r
533   hAllTracksPerMBB->SetLineWidth(3);\r
534   hAllTracksPerMBB->SetLineColor(kBlack);\r
535 \r
536 \r
537   CanvasName =  LHCPeriod.Data() ; \r
538   CanvasName += "_RatioTrackTypesMBB"; \r
539   TCanvas *cRatioTrackTypesMBB = new TCanvas(CanvasName.Data(),"cRatioTrackTypesMBB",1200,900);\r
540   cRatioTrackTypesMBB->SetRightMargin(0.01);\r
541   cRatioTrackTypesMBB->SetGridy(1);\r
542   //cRatioTrackTypesMBB->SetLogy(1);\r
543   cRatioTrackTypesMBB->cd();\r
544 \r
545   hAllTracksPerMBB->SetTitle("Ratio (Number of Tracks)/MBB for [0-80]% centrality");\r
546   hAllTracksPerMBB->SetMaximum(4);\r
547   hAllTracksPerMBB->SetMinimum(0.1);\r
548   hAllTracksPerMBB->SetLabelSize(LabelSize);\r
549   hAllTracksPerMBB->Draw("E");\r
550 \r
551   hTrackerPerMBB->Draw("Esame");\r
552   hMatchedPerMBB->Draw("Esame");\r
553   hTriggerPerMBB->Draw("Esame");\r
554 \r
555   TLegend* legcTTMBB = new TLegend(0.15,0.50,0.35,0.70);\r
556   legcTTMBB->AddEntry(hAllTracksPerMBB,"All tracks","l");\r
557   legcTTMBB->AddEntry(hTrackerPerMBB,"Tracking (only) tracks","l");\r
558   legcTTMBB->AddEntry(hMatchedPerMBB,"Matched tracks","l");\r
559   legcTTMBB->AddEntry(hTriggerPerMBB,"Trigger (only) tracks","l");\r
560   legcTTMBB->Draw("same");\r
561 \r
562   cRatioTrackTypesMBB->Print(OutFileNamePDF.Data());\r
563   cRatioTrackTypesMBB->Write();\r
564 \r
565   //==========================================================================\r
566   // Draw ratio of tracks over MBB versus runs and low and high multiplicities \r
567 \r
568   TH1* hTrackerPerMBBlow= static_cast<TH1*>(hTrackerMBBlow->Clone("hTrackerPerMBBlow"));\r
569   hTrackerPerMBBlow->Divide(hMBBlow);\r
570   hTrackerPerMBBlow->SetLineWidth(2);\r
571   hTrackerPerMBBlow->SetLineStyle(2);\r
572   hTrackerPerMBBlow->SetLineColor(kRed);\r
573   hTrackerPerMBBlow->SetMarkerColor(kRed);\r
574   hTrackerPerMBBlow->SetMarkerSize(2);\r
575   hTrackerPerMBBlow->SetMarkerStyle(27);\r
576   TH1* hTrackerPerMBBhigh= static_cast<TH1*>(hTrackerMBBhigh->Clone("hTrackerPerMBBhigh"));\r
577   hTrackerPerMBBhigh->Divide(hMBBhigh);\r
578   hTrackerPerMBBhigh->SetLineWidth(2);\r
579   hTrackerPerMBBhigh->SetLineStyle(2);\r
580   hTrackerPerMBBhigh->SetLineColor(kRed);\r
581   hTrackerPerMBBhigh->SetMarkerColor(kRed);\r
582   hTrackerPerMBBhigh->SetMarkerSize(2);\r
583   hTrackerPerMBBhigh->SetMarkerStyle(24);\r
584 \r
585 \r
586   TH1* hTriggerPerMBBlow= static_cast<TH1*>(hTriggerMBBlow->Clone("hTriggerPerMBBlow"));\r
587   hTriggerPerMBBlow->Divide(hMBBlow);\r
588   hTriggerPerMBBlow->SetLineWidth(2);\r
589   hTriggerPerMBBlow->SetLineStyle(2);\r
590   hTriggerPerMBBlow->SetLineColor(kBlue);\r
591   hTriggerPerMBBlow->SetMarkerColor(kBlue);\r
592   hTriggerPerMBBlow->SetMarkerSize(2);\r
593   hTriggerPerMBBlow->SetMarkerStyle(27);\r
594   TH1* hTriggerPerMBBhigh= static_cast<TH1*>(hTriggerMBBhigh->Clone("hTriggerPerMBBhigh"));\r
595   hTriggerPerMBBhigh->Divide(hMBBhigh);\r
596   hTriggerPerMBBhigh->SetLineWidth(2);\r
597   hTriggerPerMBBhigh->SetLineStyle(2);\r
598   hTriggerPerMBBhigh->SetLineColor(kBlue);\r
599   hTriggerPerMBBhigh->SetMarkerColor(kBlue);\r
600   hTriggerPerMBBhigh->SetMarkerSize(2);\r
601   hTriggerPerMBBhigh->SetMarkerStyle(24);\r
602 \r
603 \r
604   TH1* hMatchedPerMBBlow= static_cast<TH1*>(hMatchedMBBlow->Clone("hMatchedPerMBBlow"));\r
605   hMatchedPerMBBlow->Divide(hMBBlow);\r
606   hMatchedPerMBBlow->SetLineWidth(2);\r
607   hMatchedPerMBBlow->SetLineStyle(2);\r
608   hMatchedPerMBBlow->SetLineColor(kViolet);\r
609   hMatchedPerMBBlow->SetMarkerColor(kViolet);\r
610   hMatchedPerMBBlow->SetMarkerSize(2);\r
611   hMatchedPerMBBlow->SetMarkerStyle(27);\r
612   TH1* hMatchedPerMBBhigh= static_cast<TH1*>(hMatchedMBBhigh->Clone("hMatchedPerMBBhigh"));\r
613   hMatchedPerMBBhigh->Divide(hMBBhigh);\r
614   hMatchedPerMBBhigh->SetLineWidth(2);\r
615   hMatchedPerMBBhigh->SetLineStyle(2);\r
616   hMatchedPerMBBhigh->SetLineColor(kViolet);\r
617   hMatchedPerMBBhigh->SetMarkerColor(kViolet);\r
618   hMatchedPerMBBhigh->SetMarkerSize(2);\r
619   hMatchedPerMBBhigh->SetMarkerStyle(24);\r
620 \r
621 \r
622   TH1* hAllTracksPerMBBlow= static_cast<TH1*>(hAllTracksMBBlow->Clone("hAllTracksPerMBBlow"));\r
623   hAllTracksPerMBBlow->Divide(hMBBlow);\r
624   hAllTracksPerMBBlow->SetLineWidth(2);\r
625   hAllTracksPerMBBlow->SetLineStyle(2);\r
626   hAllTracksPerMBBlow->SetLineColor(kBlack);\r
627   hAllTracksPerMBBlow->SetMarkerColor(kBlack);\r
628   hAllTracksPerMBBlow->SetMarkerSize(2);\r
629   hAllTracksPerMBBlow->SetMarkerStyle(27);\r
630   TH1* hAllTracksPerMBBhigh= static_cast<TH1*>(hAllTracksMBBhigh->Clone("hAllTracksPerMBBhigh"));\r
631   hAllTracksPerMBBhigh->Divide(hMBBhigh);\r
632   hAllTracksPerMBBhigh->SetLineWidth(2);\r
633   hAllTracksPerMBBhigh->SetLineStyle(2);\r
634   hAllTracksPerMBBhigh->SetLineColor(kBlack);\r
635   hAllTracksPerMBBhigh->SetMarkerColor(kBlack);\r
636   hAllTracksPerMBBhigh->SetMarkerSize(2);\r
637   hAllTracksPerMBBhigh->SetMarkerStyle(24);\r
638 \r
639 \r
640   CanvasName =  LHCPeriod.Data() ; \r
641   CanvasName += "_RatioTrackTypesMBBVsMult"; \r
642   TCanvas *cRatioTrackTypesMBBVsMult = new TCanvas(CanvasName.Data(),"cRatioTrackTypesMBBVsMult",1200,900);\r
643   cRatioTrackTypesMBBVsMult->SetRightMargin(0.01);\r
644   cRatioTrackTypesMBBVsMult->SetGridy(1);\r
645   //cRatioTrackTypesMBBVsMult->SetLogy(1);\r
646 \r
647 \r
648   cRatioTrackTypesMBBVsMult->Divide(1,2);\r
649 \r
650 \r
651   cRatioTrackTypesMBBVsMult->cd(1);\r
652 \r
653   hAllTracksPerMBBlow->SetTitle("Ratio (Number of Tracks)/MBB low mult");\r
654   hAllTracksPerMBBlow->SetMaximum(0.30);\r
655   hAllTracksPerMBBlow->SetMinimum(0.001);\r
656   hAllTracksPerMBBlow->SetLabelSize(LabelSize);\r
657   hAllTracksPerMBBlow->Draw("E");\r
658   hTrackerPerMBBlow->Draw("Esame");\r
659   hTriggerPerMBBlow->Draw("Esame");\r
660   hMatchedPerMBBlow->Draw("Esame");\r
661 \r
662   TLegend* legcTTMBBlow = new TLegend(0.40,0.8,0.60,1.);\r
663   legcTTMBBlow->AddEntry(hAllTracksPerMBBlow,"All tracks","p");\r
664   legcTTMBBlow->AddEntry(hTrackerPerMBBlow,"Tracking (only) tracks","p");\r
665   legcTTMBBlow->AddEntry(hMatchedPerMBBlow,"Matched tracks","p");\r
666   legcTTMBBlow->AddEntry(hTriggerPerMBBlow,"Trigger (only) tracks","p");\r
667   legcTTMBBlow->Draw("same");\r
668  \r
669 \r
670   cRatioTrackTypesMBBVsMult->cd(2);\r
671   hAllTracksPerMBBhigh->SetTitle("Ratio (Number of Tracks)/MBB high mult");\r
672   hAllTracksPerMBBhigh->SetMaximum(15);\r
673   hAllTracksPerMBBhigh->SetMinimum(0.01);\r
674   hAllTracksPerMBBhigh->SetLabelSize(LabelSize);\r
675   hAllTracksPerMBBhigh->Draw("E");\r
676   hTrackerPerMBBhigh->Draw("Esame");\r
677   hTriggerPerMBBhigh->Draw("Esame");\r
678   hMatchedPerMBBhigh->Draw("Esame");\r
679 \r
680 \r
681 \r
682   TLegend* legcTTMBBhigh = new TLegend(0.40,0.8,0.60,1.);\r
683   legcTTMBBhigh->AddEntry(hAllTracksPerMBBhigh,"All tracks","p");\r
684   legcTTMBBhigh->AddEntry(hTrackerPerMBBhigh,"Tracking (only) tracks","p");\r
685   legcTTMBBhigh->AddEntry(hMatchedPerMBBhigh,"Matched tracks","p");\r
686   legcTTMBBhigh->AddEntry(hTriggerPerMBBhigh,"Trigger (only) tracks","p");\r
687   legcTTMBBhigh->Draw("same");\r
688     \r
689 \r
690   //   cRatioTrackTypesMBBVsMult->cd();\r
691   //   TPaveText pt1(0.2,0.2,0.7,0.9);\r
692   //   TText* t1=pt1.AddText("All tracks (tracking-only + trigger-only + matched)");\r
693   //   t1->SetTextColor(kBlack);\r
694   //   pt1.Draw();\r
695   //   break;\r
696 \r
697   cRatioTrackTypesMBBVsMult->Print(OutFileNamePDF.Data());\r
698   cRatioTrackTypesMBBVsMult->Write();\r
699 \r
700 \r
701   //===========================================\r
702   // draw ratio of track (summed, i.e all trigger=(matched+trigger-only)) for MB  versus run for low mult\r
703   CanvasName =  LHCPeriod.Data() ; \r
704   CanvasName += "_TrackMultBBlow";   \r
705   TCanvas* cTrackMultBBlow = new TCanvas("cTrackMultBBlow","cTrackMultBBlow",1200,900);\r
706   // must be applied on the pads created by  divide\r
707   cTrackMultBBlow->Divide(1,2);\r
708   cTrackMultBBlow->cd(1);\r
709 \r
710   TH1* hSumTriggerOverMBBlow = static_cast<TH1*>(hTriggerMBBlow->Clone("hSumTriggerOverMBBlow"));\r
711   hSumTriggerOverMBBlow->Add(hMatchedMBBlow);\r
712   hSumTriggerOverMBBlow->Divide(hMBBlow);\r
713   hSumTriggerOverMBBlow->SetTitle("Sum of trigger tracks (matched+trigger-only) in MBB events / # MBB events in low mult.");\r
714   //hSumTriggerOverMBBlow->LabelsOption("u");\r
715   hSumTriggerOverMBBlow->SetLabelSize(LabelSize);\r
716   hSumTriggerOverMBBlow->SetLineWidth(2);\r
717   hSumTriggerOverMBBlow->SetLineColor(kBlue);\r
718   hSumTriggerOverMBBlow->Draw("e");\r
719   cTrackMultBBlow->cd(2);\r
720   TH1* hSumTrackerOverMBBlow = static_cast<TH1*>(hTrackerMBBlow->Clone("hSumTrackerOverMBBlow"));\r
721   hSumTrackerOverMBBlow->Add(hMatchedMBBlow);\r
722   hSumTrackerOverMBBlow->Divide(hMBBlow);\r
723   hSumTrackerOverMBBlow->SetTitle("Sum tracker tracks (matched+tracker-only) in MBB events / # MBB events in low mult.");\r
724   //hSumTrackerOverMBBlow->LabelsOption("u");\r
725   hSumTrackerOverMBBlow->SetLabelSize(LabelSize);\r
726   hSumTrackerOverMBBlow->SetLineWidth(2);\r
727   hSumTrackerOverMBBlow->SetLineColor(kBlue);\r
728   hSumTrackerOverMBBlow->Draw("e");\r
729 \r
730 \r
731   cTrackMultBBlow->Print(OutFileNamePDF.Data());\r
732   cTrackMultBBlow->Write();\r
733 \r
734 \r
735 \r
736   //===========================================\r
737   // draw ratio of track (summed, i.e all trigger=(matched+trigger-only)) for MB  versus run for high mult\r
738   CanvasName =  LHCPeriod.Data() ; \r
739   CanvasName += "_TrackMultBBhigh";   \r
740   TCanvas* cTrackMultBBhigh = new TCanvas("cTrackMultBBhigh","cTrackMultBBhigh",1200,900);\r
741   // must be applied on the pads created by  divide\r
742   cTrackMultBBhigh->Divide(1,2);\r
743   cTrackMultBBhigh->cd(1);\r
744 \r
745   TH1* hSumTriggerOverMBBhigh = static_cast<TH1*>(hTriggerMBBhigh->Clone("hSumTriggerOverMBBhigh"));\r
746   hSumTriggerOverMBBhigh->Add(hMatchedMBBhigh);\r
747   hSumTriggerOverMBBhigh->Divide(hMBBhigh);\r
748   hSumTriggerOverMBBhigh->SetTitle("Sum of trigger tracks (matched+trigger-only) in MBB events / # MBB events in high mult.");\r
749   //hSumTriggerOverMBBhigh->LabelsOption("u");\r
750   hSumTriggerOverMBBhigh->SetLabelSize(LabelSize);\r
751   hSumTriggerOverMBBhigh->SetLineWidth(2);\r
752   hSumTriggerOverMBBhigh->SetLineColor(kBlue);\r
753   hSumTriggerOverMBBhigh->Draw("e");\r
754   cTrackMultBBhigh->cd(2);\r
755   TH1* hSumTrackerOverMBBhigh = static_cast<TH1*>(hTrackerMBBhigh->Clone("hSumTrackerOverMBBhigh"));\r
756   hSumTrackerOverMBBhigh->Add(hMatchedMBBhigh);\r
757   hSumTrackerOverMBBhigh->Divide(hMBBhigh);\r
758   hSumTrackerOverMBBhigh->SetTitle("Sum tracker tracks (matched+tracker-only) in MBB events / # MBB events in high mult.");\r
759   //hSumTrackerOverMBBhigh->LabelsOption("u");\r
760   hSumTrackerOverMBBhigh->SetLabelSize(LabelSize);\r
761   hSumTrackerOverMBBhigh->SetLineWidth(2);\r
762   hSumTrackerOverMBBhigh->SetLineColor(kBlue);\r
763   hSumTrackerOverMBBhigh->Draw("e");\r
764 \r
765 \r
766   cTrackMultBBhigh->Print(OutFileNamePDF.Data());\r
767   cTrackMultBBhigh->Write();\r
768 \r
769   \r
770   \r
771   //===========================================\r
772   // draw mixed ratio of track over track versus run for MBB in low mult \r
773   CanvasName =  LHCPeriod.Data() ; \r
774   CanvasName += "_RatioTrackMBBlow";   \r
775   TCanvas* cRatioTrackMBBlow = new TCanvas("cRatioTrackMBBlow","cRatioTrackMBBlow",1200,900);\r
776   cRatioTrackMBBlow->Divide(1,3);\r
777 \r
778   cRatioTrackMBBlow->cd(1);\r
779   TH1* hTrackerOverTriggerMBBlow = static_cast<TH1*>(hTrackerMBBlow->Clone("hTrackerOverTriggerMBBlow"));\r
780   hTrackerOverTriggerMBBlow->Divide(hTriggerMBBlow);\r
781   hTrackerOverTriggerMBBlow->SetTitle("# tracker tracks / # trigger tracks in MBB low mult.");\r
782   //hTrackerOverTriggerMBBlow->LabelsOption("u");\r
783   hTrackerOverTriggerMBBlow->SetLabelSize(LabelSize);\r
784   hTrackerOverTriggerMBBlow->SetLineWidth(2);\r
785   hTrackerOverTriggerMBBlow->SetLineColor(kBlue);\r
786   hTrackerOverTriggerMBBlow->Draw("e");\r
787 \r
788   cRatioTrackMBBlow->cd(2);\r
789   TH1* hMatchedOverTriggerMBBlow = static_cast<TH1*>(hMatchedMBBlow->Clone("hMatchedOverTriggerMBBlow"));\r
790   hMatchedOverTriggerMBBlow->Divide(hTriggerMBBlow);\r
791   hMatchedOverTriggerMBBlow->SetTitle("# matched tracks / # trigger tracks in MBB low mult.");\r
792   //hMatchedOverTriggerMBBlow->LabelsOption("u");\r
793   hMatchedOverTriggerMBBlow->SetLabelSize(LabelSize);\r
794   hMatchedOverTriggerMBBlow->SetLineWidth(2);\r
795   hMatchedOverTriggerMBBlow->SetLineColor(kBlue);\r
796   hMatchedOverTriggerMBBlow->Draw("e");\r
797 \r
798   cRatioTrackMBBlow->cd(3);\r
799   TH1* hMatchedOverTrackerMBBlow = static_cast<TH1*>(hMatchedMBBlow->Clone("hMatchedOverTrackerMBBlow"));\r
800   hMatchedOverTrackerMBBlow->Divide(hTrackerMBBlow);\r
801   hMatchedOverTrackerMBBlow->SetTitle("# matched tracks / # tracker tracks in MBB low mult.");\r
802   //hMatchedOverTrackerMBBlow->LabelsOption("u");\r
803   hMatchedOverTrackerMBBlow->SetLabelSize(LabelSize);\r
804   hMatchedOverTrackerMBBlow->SetLineWidth(2);\r
805   hMatchedOverTrackerMBBlow->SetLineColor(kBlue);\r
806   hMatchedOverTrackerMBBlow->Draw("e");\r
807   \r
808   cRatioTrackMBBlow->Print(OutFileNamePDF.Data());\r
809   cRatioTrackMBBlow->Write();\r
810 \r
811   \r
812   //===========================================\r
813   // draw mixed ratio of track over track versus run for MBB in high mult \r
814   CanvasName =  LHCPeriod.Data() ; \r
815   CanvasName += "_RatioTrackMBBhigh";   \r
816   TCanvas* cRatioTrackMBBhigh = new TCanvas("cRatioTrackMBBhigh","cRatioTrackMBBhigh",1200,900);\r
817   cRatioTrackMBBhigh->Divide(1,3);\r
818 \r
819   cRatioTrackMBBhigh->cd(1);\r
820   TH1* hTrackerOverTriggerMBBhigh = static_cast<TH1*>(hTrackerMBBhigh->Clone("hTrackerOverTriggerMBBhigh"));\r
821   hTrackerOverTriggerMBBhigh->Divide(hTriggerMBBhigh);\r
822   hTrackerOverTriggerMBBhigh->SetTitle("# tracker tracks / # trigger tracks in MBB high mult.");\r
823   //hTrackerOverTriggerMBBhigh->LabelsOption("u");\r
824   hTrackerOverTriggerMBBhigh->SetLabelSize(LabelSize);\r
825   hTrackerOverTriggerMBBhigh->SetLineWidth(2);\r
826   hTrackerOverTriggerMBBhigh->SetLineColor(kBlue);\r
827   hTrackerOverTriggerMBBhigh->Draw("e");\r
828 \r
829   cRatioTrackMBBhigh->cd(2);\r
830   TH1* hMatchedOverTriggerMBBhigh = static_cast<TH1*>(hMatchedMBBhigh->Clone("hMatchedOverTriggerMBBhigh"));\r
831   hMatchedOverTriggerMBBhigh->Divide(hTriggerMBBhigh);\r
832   hMatchedOverTriggerMBBhigh->SetTitle("# matched tracks / # trigger tracks in MBB high mult.");\r
833   //hMatchedOverTriggerMBBhigh->LabelsOption("u");\r
834   hMatchedOverTriggerMBBhigh->SetLabelSize(LabelSize);\r
835   hMatchedOverTriggerMBBhigh->SetLineWidth(2);\r
836   hMatchedOverTriggerMBBhigh->SetLineColor(kBlue);\r
837   hMatchedOverTriggerMBBhigh->Draw("e");\r
838 \r
839   cRatioTrackMBBhigh->cd(3);\r
840   TH1* hMatchedOverTrackerMBBhigh = static_cast<TH1*>(hMatchedMBBhigh->Clone("hMatchedOverTrackerMBBhigh"));\r
841   hMatchedOverTrackerMBBhigh->Divide(hTrackerMBBhigh);\r
842   hMatchedOverTrackerMBBhigh->SetTitle("# matched tracks / # tracker tracks in MBB high mult.");\r
843   //hMatchedOverTrackerMBBhigh->LabelsOption("u");\r
844   hMatchedOverTrackerMBBhigh->SetLabelSize(LabelSize);\r
845   hMatchedOverTrackerMBBhigh->SetLineWidth(2);\r
846   hMatchedOverTrackerMBBhigh->SetLineColor(kBlue);\r
847   hMatchedOverTrackerMBBhigh->Draw("e");\r
848   \r
849   cRatioTrackMBBhigh->Print(OutFileNamePDF.Data());\r
850   cRatioTrackMBBhigh->Write();\r
851 \r
852 \r
853 \r
854 \r
855 \r
856 //   //===========================================\r
857 //   // Draw ratio of tracks over CMUS1B versus run\r
858 //   TH1* hTrackerPerCMUS1B= static_cast<TH1*>(hTrackerCMUS1B->Clone("hTrackerPerCMUS1B"));\r
859 //   hTrackerPerCMUS1B->Divide(hCMUS1B);\r
860 //   hTrackerPerCMUS1B->SetLineWidth(2);\r
861 //   hTrackerPerCMUS1B->SetLineColor(kRed);\r
862 \r
863 //   TH1* hTriggerPerCMUS1B= static_cast<TH1*>(hTriggerCMUS1B->Clone("hTriggerPerCMUS1B"));\r
864 //   hTriggerPerCMUS1B->Divide(hCMUS1B);\r
865 //   hTriggerPerCMUS1B->SetLineWidth(2);\r
866 //   hTriggerPerCMUS1B->SetLineColor(kBlue);\r
867 \r
868 //   TH1* hMatchedPerCMUS1B= static_cast<TH1*>(hMatchedCMUS1B->Clone("hMatchedPerCMUS1B"));\r
869 //   hMatchedPerCMUS1B->Divide(hCMUS1B);\r
870 //   hMatchedPerCMUS1B->SetLineWidth(2);\r
871 //   hMatchedPerCMUS1B->SetLineColor(kViolet);\r
872 \r
873 \r
874 //   TH1* hAllTracksPerCMUS1B= static_cast<TH1*>(hAllTracksCMUS1B->Clone("hAllTracksPerCMUS1B"));\r
875 //   hAllTracksPerCMUS1B->Divide(hCMUS1B);\r
876 //   hAllTracksPerCMUS1B->SetLineWidth(3);\r
877 //   hAllTracksPerCMUS1B->SetLineColor(kBlack);\r
878 \r
879 \r
880 //   CanvasName =  LHCPeriod.Data() ; \r
881 //   CanvasName += "_RatioTrackTypesCMUS1B"; \r
882 //   TCanvas *cRatioTrackTypesCMUS1B = new TCanvas(CanvasName.Data(),"cRatioTrackTypesCMUS1B",1200,900);\r
883 //   cRatioTrackTypesCMUS1B->SetRightMargin(0.01);\r
884 //   cRatioTrackTypesCMUS1B->SetGridy(1);\r
885 //   cRatioTrackTypesCMUS1B->cd();\r
886 \r
887 //   hAllTracksPerCMUS1B->SetTitle("Ratio (Number of Tracks)/CMUS1B");\r
888 //   hAllTracksPerCMUS1B->SetMinimum(0.01);\r
889 //   hAllTracksPerCMUS1B->SetLabelSize(LabelSize);\r
890 //   hAllTracksPerCMUS1B->Draw("E");\r
891 \r
892 //   hTrackerPerCMUS1B->Draw("Esame");\r
893 //   hMatchedPerCMUS1B->Draw("Esame");\r
894 //   hTriggerPerCMUS1B->Draw("Esame");\r
895 \r
896 //   TLegend* legcTTCMUS1B = new TLegend(0.75,0.55,0.90,0.75);\r
897 //   legcTTCMUS1B->AddEntry(hAllTracksPerCMUS1B,"All tracks","l");\r
898 //   legcTTCMUS1B->AddEntry(hTrackerPerCMUS1B,"Tracking (only) tracks","l");\r
899 //   legcTTCMUS1B->AddEntry(hMatchedPerCMUS1B,"Matched tracks","l");\r
900 //   legcTTCMUS1B->AddEntry(hTriggerPerCMUS1B,"Trigger (only) tracks","l");\r
901 //   legcTTCMUS1B->Draw("same");\r
902 \r
903 //   cRatioTrackTypesCMUS1B->Print(OutFileNamePDF.Data());\r
904 //   cRatioTrackTypesCMUS1B->Write();\r
905 \r
906 \r
907 //   //===========================================\r
908 //   // draw ratio of track (summed, i.e all trigger=(matched+trigger-only)) over CMUS1B versus run\r
909 //   TCanvas* cTrackMultCMUS1B = new TCanvas("cTrackMultCMUS1B","cTrackMultCMUS1B",1200,900);\r
910 //   cTrackMultCMUS1B->Divide(1,2);\r
911 //   cTrackMultCMUS1B->cd(1);\r
912 //   TH1* hSumTriggerOverCMUS1B = static_cast<TH1*>(hTriggerCMUS1B->Clone("hSumTriggerOverCMUS1B"));\r
913 //   hSumTriggerOverCMUS1B->Add(hMatchedCMUS1B);\r
914 //   hSumTriggerOverCMUS1B->Divide(hCMUS1B);\r
915 //   hSumTriggerOverCMUS1B->SetTitle("Sum of trigger tracks (matched+trigger-only) in CMUS1B events / # CMUS1B events");\r
916 //   //hSumTriggerOverCMUS1B->LabelsOption("u");\r
917 //   hSumTriggerOverCMUS1B->SetLabelSize(LabelSize);\r
918 //   hSumTriggerOverCMUS1B->SetLineWidth(2);\r
919 //   hSumTriggerOverCMUS1B->SetLineColor(kRed);\r
920 //   hSumTriggerOverCMUS1B->Draw("e");\r
921 \r
922 //   cTrackMultCMUS1B->cd(2);\r
923 //   TH1* hSumTrackerOverCMUS1B = static_cast<TH1*>(hTrackerCMUS1B->Clone("hSumTrackerOverCMUS1B"));\r
924 //   hSumTrackerOverCMUS1B->Add(hMatchedCMUS1B);\r
925 //   hSumTrackerOverCMUS1B->Divide(hCMUS1B);\r
926 //   hSumTrackerOverCMUS1B->SetTitle("Sum of tracker tracks (matched+tracker-only) in CMUS1B events / # CMUS1B events");\r
927 //   //hSumTrackerOverCMUS1B->LabelsOption("u");\r
928 //   hSumTrackerOverCMUS1B->SetLabelSize(LabelSize);\r
929 //   hSumTrackerOverCMUS1B->SetLineWidth(2);\r
930 //   hSumTrackerOverCMUS1B->SetLineColor(kRed);\r
931 //   hSumTrackerOverCMUS1B->Draw("e");\r
932 \r
933 //   cTrackMultCMUS1B->Print(OutFileNamePDF.Data());\r
934 //   cTrackMultCMUS1B->Write();\r
935   \r
936 //   //===========================================\r
937 //   // draw mixed ratio of track over track versus run for CMUS1B\r
938 //   TCanvas* cRatioTrackCMUS1B = new TCanvas("cRatioTrackCMUS1B","cRatioTrackCMUS1B",1200,900);\r
939 //   cRatioTrackCMUS1B->Divide(1,3);\r
940 \r
941 //   cRatioTrackCMUS1B->cd(1);\r
942 //   TH1* hTrackerOverTriggerCMUS1B = static_cast<TH1*>(hTrackerCMUS1B->Clone("hTrackerOverTriggerCMUS1B"));\r
943 //   hTrackerOverTriggerCMUS1B->Divide(hTriggerCMUS1B);\r
944 //   hTrackerOverTriggerCMUS1B->SetTitle("# tracker tracks / # trigger tracks in CMUS1B");\r
945 //   //hTrackerOverTriggerCMUS1B->LabelsOption("u");\r
946 //   hTrackerOverTriggerCMUS1B->SetLabelSize(LabelSize);\r
947 //   hTrackerOverTriggerCMUS1B->SetLineWidth(2);\r
948 //   hTrackerOverTriggerCMUS1B->SetLineColor(kRed);\r
949 //   hTrackerOverTriggerCMUS1B->Draw("e");\r
950 \r
951 //   cRatioTrackCMUS1B->cd(2);\r
952 //   TH1* hMatchedOverTriggerCMUS1B = static_cast<TH1*>(hMatchedCMUS1B->Clone("hMatchedOverTriggerCMUS1B"));\r
953 //   hMatchedOverTriggerCMUS1B->Divide(hTriggerCMUS1B);\r
954 //   hMatchedOverTriggerCMUS1B->SetTitle("# matched tracks / # trigger tracks in CMUS1B");\r
955 //   //hMatchedOverTriggerCMUS1B->LabelsOption("u");\r
956 //   hMatchedOverTriggerCMUS1B->SetLabelSize(LabelSize);\r
957 //   hMatchedOverTriggerCMUS1B->SetLineWidth(2);\r
958 //   hMatchedOverTriggerCMUS1B->SetLineColor(kRed);\r
959 //   hMatchedOverTriggerCMUS1B->Draw("e");\r
960 \r
961 //   cRatioTrackCMUS1B->cd(3);\r
962 //   TH1* hMatchedOverTrackerCMUS1B = static_cast<TH1*>(hMatchedCMUS1B->Clone("hMatchedOverTrackerCMUS1B"));\r
963 //   hMatchedOverTrackerCMUS1B->Divide(hTrackerCMUS1B);\r
964 //   hMatchedOverTrackerCMUS1B->SetTitle("# matched tracks / # tracker tracks in CMUS1B");\r
965 //   //hMatchedOverTrackerCMUS1B->LabelsOption("u");\r
966 //   hMatchedOverTrackerCMUS1B->SetLabelSize(LabelSize);\r
967 //   hMatchedOverTrackerCMUS1B->SetLineWidth(2);\r
968 //   hMatchedOverTrackerCMUS1B->SetLineColor(kRed);\r
969 //   hMatchedOverTrackerCMUS1B->Draw("e");\r
970   \r
971 //   cRatioTrackCMUS1B->Print(OutFileNamePDF.Data());\r
972 //   cRatioTrackCMUS1B->Write();\r
973 \r
974    //==================================================\r
975    // Draw matched tracks charge asymetry in low mult for MBB  triggers  \r
976    TH1 *hDiffMatchedMBBlow= static_cast<TH1*>(hPosMatchedMBBlow->Clone("hDiffMatchedMBBlow"));\r
977    hDiffMatchedMBBlow->Add(hNegMatchedMBBlow,-1);\r
978    hDiffMatchedMBBlow->Sumw2();\r
979   \r
980    TH1 *hAsymMatchedMBBlow= static_cast<TH1*>(hDiffMatchedMBBlow->Clone("hAsymMatchedMBBlow"));\r
981    hAsymMatchedMBBlow->Divide(hAllMatchedMBBlow);\r
982    hAsymMatchedMBBlow->SetLineColor(kBlue);\r
983    hAsymMatchedMBBlow->SetLineWidth(2);\r
984    hAsymMatchedMBBlow->SetMinimum(-0.2);\r
985    hAsymMatchedMBBlow->SetMaximum(0.2);\r
986    hAsymMatchedMBBlow->SetLabelSize(LabelSize);\r
987    hAsymMatchedMBBlow->SetTitle("Matched tracks charge asymmetry in Physics Selected events for MBB low (blue) and high (red) mult.");\r
988 \r
989    TH1 *hDiffMatchedMBBhigh= static_cast<TH1*>(hPosMatchedMBBhigh->Clone("hDiffMatchedMBBhigh"));\r
990    hDiffMatchedMBBhigh->Add(hNegMatchedMBBhigh,-1);\r
991    hDiffMatchedMBBhigh->Sumw2();\r
992   \r
993    TH1 *hAsymMatchedMBBhigh= static_cast<TH1*>(hDiffMatchedMBBhigh->Clone("hAsymMatchedMBBhigh"));\r
994    hAsymMatchedMBBhigh->Divide(hAllMatchedMBBhigh);\r
995    hAsymMatchedMBBhigh->SetLineColor(kRed);\r
996    hAsymMatchedMBBhigh->SetLineWidth(2);\r
997    hAsymMatchedMBBhigh->SetMinimum(-0.2);\r
998    hAsymMatchedMBBhigh->SetMaximum(0.2);\r
999    hAsymMatchedMBBhigh->SetLabelSize(LabelSize);\r
1000    hAsymMatchedMBBhigh->SetTitle("Matched tracks asymetry in Physics Selected events");\r
1001   \r
1002 \r
1003    CanvasName =  LHCPeriod.Data() ; \r
1004    CanvasName += "_AsymMatched"; \r
1005    TCanvas *cAsymMatched = new TCanvas(CanvasName.Data(),"cAsymMatched",1200,900);\r
1006    cAsymMatched->SetRightMargin(0.01);\r
1007    cAsymMatched->SetGridy(1);\r
1008    cAsymMatched->cd();\r
1009    hAsymMatchedMBBlow->GetYaxis()->SetTitle("Charge asymmetry");  \r
1010    hAsymMatchedMBBlow->Draw("EH");\r
1011    hAsymMatchedMBBhigh->Draw("EHsame");\r
1012    \r
1013    TLegend* legcAMT = new TLegend(0.60,0.25,0.98,0.45);\r
1014    legcAMT->SetHeader("Charge asymmetry  of matched track per MBB (include Vtx, #eta  and R_{Abs} cuts) ");\r
1015    legcAMT->AddEntry(hAsymMatchedMBBlow," Low mult. events","l");\r
1016    legcAMT->AddEntry(hAsymMatchedMBBhigh," High mult. events ","l");\r
1017    legcAMT->Draw("same");\r
1018 \r
1019    cAsymMatched->Print(OutFileNamePDF.Data());\r
1020    cAsymMatched->Write();\r
1021 \r
1022 \r
1023   //=========================================================\r
1024   // Draw low/high pt tracks in acceptance  per MBB  all mult \r
1025   TH1* hMatchedLowPtPerMBB = static_cast<TH1*> (hMatchedLowPtMBB->Clone("hMatchedLowPtPerMBB"));\r
1026   hMatchedLowPtPerMBB->Sumw2();\r
1027   hMatchedLowPtPerMBB->Divide(hMBB);\r
1028   hMatchedLowPtPerMBB->SetLineWidth(2);\r
1029   hMatchedLowPtPerMBB->SetLineColor(kBlue);\r
1030 \r
1031   TH1* hMatchedHighPtPerMBB = static_cast<TH1*> (hMatchedHighPtMBB->Clone("hMatchedHighPtPerMBB"));\r
1032   hMatchedHighPtPerMBB->Sumw2();\r
1033   hMatchedHighPtPerMBB->Divide(hMBB);\r
1034   hMatchedHighPtPerMBB->SetLineWidth(2);\r
1035   hMatchedHighPtPerMBB->SetLineColor(kRed);\r
1036 \r
1037   TH1* hMatchedLowPtPerMBBlow = static_cast<TH1*> (hMatchedLowPtMBBlow->Clone("hMatchedLowPtPerMBBlow"));\r
1038   hMatchedLowPtPerMBBlow->Sumw2();\r
1039   hMatchedLowPtPerMBBlow->Divide(hMBBlow);\r
1040   hMatchedLowPtPerMBBlow->SetLineWidth(2);\r
1041   hMatchedLowPtPerMBBlow->SetMarkerSize(2);\r
1042   hMatchedLowPtPerMBBlow->SetMarkerStyle(27);\r
1043   hMatchedLowPtPerMBBlow->SetMarkerColor(kBlue);\r
1044   hMatchedLowPtPerMBBlow->SetLineWidth(2);\r
1045   hMatchedLowPtPerMBBlow->SetLineColor(kBlue);\r
1046 \r
1047   TH1* hMatchedHighPtPerMBBlow = static_cast<TH1*> (hMatchedHighPtMBBlow->Clone("hMatchedHighPtPerMBBlow"));\r
1048   hMatchedHighPtPerMBBlow->Sumw2();\r
1049   hMatchedHighPtPerMBBlow->Divide(hMBB);\r
1050   hMatchedHighPtPerMBBlow->SetLineWidth(2);\r
1051   hMatchedHighPtPerMBBlow->SetLineColor(kRed);\r
1052   hMatchedHighPtPerMBBlow->SetMarkerSize(2);\r
1053   hMatchedHighPtPerMBBlow->SetMarkerStyle(27);\r
1054   hMatchedHighPtPerMBBlow->SetMarkerColor(kRed);\r
1055 \r
1056   TH1* hMatchedLowPtPerMBBhigh = static_cast<TH1*> (hMatchedLowPtMBBhigh->Clone("hMatchedLowPtPerMBBhigh"));\r
1057   hMatchedLowPtPerMBBhigh->Sumw2();\r
1058   hMatchedLowPtPerMBBhigh->Divide(hMBBhigh);\r
1059   hMatchedLowPtPerMBBhigh->SetLineWidth(2);\r
1060   hMatchedLowPtPerMBBhigh->SetLineColor(kBlue);\r
1061   hMatchedLowPtPerMBBhigh->SetMarkerSize(2);\r
1062   hMatchedLowPtPerMBBhigh->SetMarkerStyle(24);\r
1063   hMatchedLowPtPerMBBhigh->SetMarkerColor(kBlue);\r
1064 \r
1065 \r
1066   TH1* hMatchedHighPtPerMBBhigh = static_cast<TH1*> (hMatchedHighPtMBBhigh->Clone("hMatchedHighPtPerMBBhigh"));\r
1067   hMatchedHighPtPerMBBhigh->Sumw2();\r
1068   hMatchedHighPtPerMBBhigh->Divide(hMBB);\r
1069   hMatchedHighPtPerMBBhigh->SetLineWidth(2);\r
1070   hMatchedHighPtPerMBBhigh->SetLineColor(kRed);\r
1071   hMatchedHighPtPerMBBhigh->SetMarkerSize(2);\r
1072   hMatchedHighPtPerMBBhigh->SetMarkerStyle(24);\r
1073   hMatchedHighPtPerMBBhigh->SetMarkerColor(kRed);\r
1074 \r
1075 \r
1076   CanvasName =  LHCPeriod.Data() ; \r
1077   CanvasName += "_HighPtMuons"; \r
1078   TCanvas *cHighPtMuons = new TCanvas(CanvasName.Data(),"cHighPtMuons",1200,900);\r
1079   cHighPtMuons->SetTopMargin(0.05);\r
1080   cHighPtMuons->SetRightMargin(0.01);\r
1081   //cHighPtMuons->SetLogy(1);\r
1082   cHighPtMuons->SetGridy(1);\r
1083   cHighPtMuons->cd();\r
1084 \r
1085   hMatchedLowPtPerMBB->SetTitle("");\r
1086   hMatchedLowPtPerMBB->GetYaxis()->SetTitle("Ratio per MBB");\r
1087   hMatchedLowPtPerMBB->SetMaximum(0.13);\r
1088   hMatchedLowPtPerMBB->SetMinimum(0.02);\r
1089   hMatchedLowPtPerMBB->SetLabelSize(LabelSize);\r
1090 \r
1091   hMatchedLowPtPerMBB->Draw("E");\r
1092   hMatchedHighPtPerMBB->Scale(5);\r
1093   hMatchedHighPtPerMBB->Draw("Esame");\r
1094     \r
1095   TLegend* legcHPM = new TLegend(0.60,0.50,0.98,0.65);\r
1096   legcHPM->SetHeader("Number of matched track per MBB (include Vtx, #eta  and R_{Abs} cuts) ");\r
1097   legcHPM->AddEntry(hMatchedLowPtPerMBB," p_{T} > 1 GeV/c ","l");\r
1098   legcHPM->AddEntry(hMatchedHighPtPerMBB," (x5) p_{T} >  2 GeV/c ","l");\r
1099   legcHPM->Draw("same");\r
1100 \r
1101   cHighPtMuons->Print(OutFileNamePDF.Data());\r
1102   cHighPtMuons->Write(); \r
1103 \r
1104 \r
1105   //=====================================================================\r
1106   // Draw low/high pt tracks in acceptance per MBB  in low and high  mult \r
1107   CanvasName =  LHCPeriod.Data() ; \r
1108   CanvasName += "_HighPtMuonsVsMult"; \r
1109   TCanvas *cHighPtMuonsVsMult = new TCanvas(CanvasName.Data(),"cHighPtMuonsVsMult",1200,900);\r
1110   cHighPtMuonsVsMult->SetTopMargin(0.05);\r
1111   cHighPtMuonsVsMult->SetRightMargin(0.01);\r
1112   cHighPtMuonsVsMult->SetLogy(1);\r
1113   cHighPtMuonsVsMult->SetGridy(1);\r
1114   cHighPtMuonsVsMult->Divide(1,2);\r
1115 \r
1116 \r
1117   cHighPtMuonsVsMult->cd(1);\r
1118 \r
1119   hMatchedLowPtPerMBBlow->SetTitle("");\r
1120   hMatchedLowPtPerMBBlow->GetYaxis()->SetTitle("Ratio per MBB in low mult");\r
1121   hMatchedLowPtPerMBBlow->SetMaximum(0.015);\r
1122   hMatchedLowPtPerMBBlow->SetMinimum(0.000001);\r
1123   hMatchedLowPtPerMBBlow->SetLabelSize(LabelSize);\r
1124 \r
1125   hMatchedLowPtPerMBBlow->Draw("E");\r
1126   hMatchedHighPtPerMBBlow->Scale(10);\r
1127   hMatchedHighPtPerMBBlow->Draw("Esame");\r
1128   TLegend* legcHPMlow = new TLegend(0.60,0.35,0.98,0.5);\r
1129   legcHPMlow->SetHeader("Number of matched track per MBB (include Vtx, #eta  and R_{Abs} cuts) ");\r
1130   legcHPMlow->AddEntry(hMatchedLowPtPerMBBlow," p_{T} > 1 GeV/c in low mult","p");\r
1131   legcHPMlow->AddEntry(hMatchedHighPtPerMBBlow,"(x10) p_{T} >  2 GeV/c in low mult","p");\r
1132   legcHPMlow->Draw("same");\r
1133 \r
1134 \r
1135   cHighPtMuonsVsMult->cd(2);\r
1136   hMatchedLowPtPerMBBhigh->SetTitle("");\r
1137   hMatchedLowPtPerMBBhigh->GetYaxis()->SetTitle("Ratio per MBB in high mult");\r
1138   hMatchedLowPtPerMBBhigh->SetMinimum(0.005);\r
1139   hMatchedLowPtPerMBBhigh->Draw("E");\r
1140   hMatchedHighPtPerMBBhigh->Scale(10);\r
1141   hMatchedHighPtPerMBBhigh->Draw("Esame");\r
1142     \r
1143   TLegend* legcHPMhigh = new TLegend(0.60,0.4,0.98,0.55);\r
1144   legcHPMhigh->SetHeader("Number of matched track per MBB (include Vtx, #eta  and R_{Abs} cuts) ");\r
1145   legcHPMhigh->AddEntry(hMatchedLowPtPerMBBhigh," p_{T} > 1 GeV/c in high mult","p");\r
1146   legcHPMhigh->AddEntry(hMatchedHighPtPerMBBhigh,"(x10)  p_{T} >  2 GeV/c in high mult","p");\r
1147   legcHPMhigh->Draw("same");\r
1148   \r
1149   cHighPtMuonsVsMult->Print(OutFileNamePDF.Data());\r
1150   cHighPtMuonsVsMult->Write(); \r
1151 \r
1152   // close merged file\r
1153   globalFile->Close();\r
1154 \r
1155 \r
1156   //--------------------------------------------- //\r
1157   //        monitor quantities run per run        //\r
1158   //--------------------------------------------- //\r
1159   \r
1160 \r
1161   // Are the runs stored locally or in alien?\r
1162   Int_t isAlienFile = 0;\r
1163   if(alienBaseDir.Contains("alien:")){\r
1164     isAlienFile = 1;\r
1165     alienBaseDir.ReplaceAll("alien://","");\r
1166   }\r
1167 \r
1168   /*   if ( ! alienBaseDir.Contains("alien:")){\r
1169        Info("PlotMuonQA","Working locally, stopping here");\r
1170        rootFileOut->Close();\r
1171        return;\r
1172        }\r
1173   */ \r
1174   //   else (!TGrid::Connect("alien://")) {\r
1175   //     Error("PlotMuonQA","cannot connect to grid. It's really needed here");\r
1176   //     c1->Print(OutFileNamePDF_close.Data());\r
1177   //     rootFileOut->Close();\r
1178   //     return;\r
1179   //   }\r
1180 \r
1181   TH1F* hNClustersPerTrackVsRun_Mean = new TH1F("hNClustersPerTrackVsRun_Mean", "averaged number of associated clusters per track;run;<n_{clusters}>",10000,1,10000);\r
1182   TH1F* hNClustersPerTrackVsRun_Sigma = new TH1F("hNClustersPerTrackVsRun_Sigma", "dispersion of the number of associated clusters per track;run;#sigma_{n_{clusters}}",10000,1,10000);\r
1183   TH1F* hNChamberHitPerTrack_Mean = new TH1F("hNChamberHitPerTrack_Mean", "averaged number of chambers hit per track;run;<n_{chamber hit}>",10000,1,10000);\r
1184   TH1F* hNChamberHitPerTrack_Sigma = new TH1F("hNChamberHitPerTrack_Sigma", "dispersion of the number of chambers hit per track;run;#sigma_{n_{chamber hit}}",10000,1,10000);\r
1185   TH1F* hChi2_Mean = new TH1F("hChi2_Mean", "averaged normalized #chi^{2} distribution;run;<#chi^{2} / ndf>",10000,1,10000);\r
1186   TH1F* hChi2_Sigma = new TH1F("hChi2_Sigma", "dispersion of normalized #chi^{2} distribution;run;#sigma_{#chi^{2} / ndf}",10000,1,10000);\r
1187   TH1F* hNClustersInCh[10];\r
1188   for (Int_t ich=0; ich<10; ich++){\r
1189     hNClustersInCh[ich] = new TH1F(Form("hNClustersInCh%d",ich+1), Form("averaged number of clusters in chamber %d per track;run;<n_{clusters}>",ich+1),10000,1,10000);\r
1190   }\r
1191   TH1F* hClusterHitMapXInCh[10];\r
1192   for (Int_t ich=0; ich<10; ich++){\r
1193     hClusterHitMapXInCh[ich] = new TH1F(Form("hClusterHitMapXInCh%d",ich+1), Form("averaged cluster position distribution in chamber %d;X (cm)",ich+1),10000,1,10000);\r
1194   }\r
1195   TH1F* hClusterHitMapYInCh[10];\r
1196   for (Int_t ich=0; ich<10; ich++){\r
1197     hClusterHitMapYInCh[ich] = new TH1F(Form("hClusterHitMapYInCh%d",ich+1), Form("averaged cluster position distribution in chamber %d;Y (cm)",ich+1),10000,1,10000);\r
1198   }\r
1199 \r
1200   Int_t ibin = 1;\r
1201   \r
1202   // loop over runs\r
1203   for ( Int_t irun=0; irun<runs.GetEntriesFast(); irun++ ) { //loop over runs \r
1204     \r
1205     TString run = ((TObjString*)runs.UncheckedAt(irun))->GetString();\r
1206     // get the file (or list of files) to be analyzed\r
1207     TString command;\r
1208     TGridResult *res = 0;\r
1209     TObjString *objs = 0;\r
1210   \r
1211     if(isAlienFile){\r
1212       // get the file (or list of files) to be analyzed\r
1213       command = Form("find %s/ %s/%s", alienBaseDir.Data(), run.Data(), QAFileName.Data());\r
1214       res = gGrid->Command(command);\r
1215       if (!res) {\r
1216         Error("PlotMuonQAPbPb",Form("no result for the command: %s",command.Data()));\r
1217         return;\r
1218       }\r
1219     }\r
1220     else{\r
1221       res = new TGridResult();\r
1222 \r
1223       if(runList){\r
1224         objs = new TObjString(Form("%s/%s/AnalysisResults.root", alienBaseDir.Data(), run.Data()));\r
1225         res->Add(objs);\r
1226       }\r
1227       else {\r
1228         //loop over the directory to find the root files                                                                                                                     \r
1229         void *dir = gSystem->OpenDirectory(alienBaseDir.Data());\r
1230         TString sDirFilename;\r
1231         Int_t iEntry=0, iFile=0;\r
1232 \r
1233         while(kTRUE){\r
1234           iEntry++;\r
1235           const char* dirFilename = gSystem->GetDirEntry(dir);\r
1236           if(!dirFilename) break;\r
1237           sDirFilename = dirFilename;\r
1238           if(!sDirFilename.IsDigit()) continue;\r
1239           iFile++;\r
1240           objs = new TObjString(Form("%s/%s/AnalysisResults.root", alienBaseDir.Data(), sDirFilename.Data()));\r
1241           res->Add(objs);\r
1242         }\r
1243       }\r
1244     }\r
1245 \r
1246     // Loop over the 'find' results and get next LFN\r
1247     TIter nextmap(res);\r
1248     TMap *map = 0;\r
1249     TObjString *objs;\r
1250 \r
1251     //some checks\r
1252     Int_t iLoop=0, iLoopMax=1000;\r
1253 \r
1254     while (kTRUE){\r
1255       // get the current file url\r
1256       if(isAlienFile){\r
1257         map=(TMap*)nextmap();\r
1258         if(!map) break;\r
1259         objs = dynamic_cast<TObjString*>(map->GetValue("turl"));\r
1260       }\r
1261       else{\r
1262         objs=(TObjString*)nextmap();\r
1263         if(!objs) break;\r
1264       }\r
1265 \r
1266       //in case of infinite loop\r
1267       iLoop++;\r
1268       if(iLoop>iLoopMax) break;\r
1269 \r
1270 \r
1271       if (!objs || !objs->GetString().Length()) {\r
1272         Error("PlotMuonQA","turl not found for the run %s... SKIPPING", run.Data());\r
1273         continue;\r
1274       }\r
1275       \r
1276       // open the outfile for this run\r
1277       TFile *runFile = TFile::Open(objs->GetString());\r
1278       if (!runFile || ! runFile->IsOpen()) {\r
1279         Error("PlotMuonQA", Form("failed to open file: %s", objs->GetName()));\r
1280         return;\r
1281       }\r
1282 \r
1283       // change here\r
1284       runFile->Cd("MUON_QA");\r
1285       \r
1286       // get interesting histos\r
1287       TObjArray* general1 = static_cast<TObjArray*>(runFile->FindObjectAny("general1"));\r
1288       TObjArray* general2 = static_cast<TObjArray*>(runFile->FindObjectAny("general2"));\r
1289       TObjArray* expert = static_cast<TObjArray*>(runFile->FindObjectAny("expert"));\r
1290 \r
1291       if (!general1 || !general2 || !expert){\r
1292         Error("PlotMUONQAPbPb", Form("All objects not here !!! ===> Skipping...for %s",objs->GetName()));\r
1293         continue;\r
1294       }\r
1295 \r
1296       TH1* hNClustersPerTrack = static_cast<TH1*>(general1->FindObject("hNClustersPerTrack"));\r
1297       TH1* hNChamberHitPerTrack = static_cast<TH1*>(general1->FindObject("hNChamberHitPerTrack"));\r
1298       TH1* hChi2 = static_cast<TH1*>(general1->FindObject("hChi2"));\r
1299       TH1* hNClustersPerCh = static_cast<TH1*>(general2->FindObject("hNClustersPerCh"));\r
1300 \r
1301       TH2* hClusterHitMapInCh[10];\r
1302       for(Int_t ich=0; ich<10; ich++) hClusterHitMapInCh[ich] = static_cast<TH2*>(expert->FindObject(Form("hClusterHitMapInCh%d",ich+1)));\r
1303 \r
1304       // do not skip empty runs butrather set values to 0\r
1305       if (!hNClustersPerCh) {\r
1306         Warning("PlotQA", Form("File: %s has empty histograms !", objs->GetName()));\r
1307         hNClustersPerTrackVsRun_Mean->SetBinContent(ibin, 0.);\r
1308         hNClustersPerTrackVsRun_Mean->SetBinError(ibin, 1.);\r
1309         hNClustersPerTrackVsRun_Sigma->SetBinContent(ibin, 0.);\r
1310         hNClustersPerTrackVsRun_Sigma->SetBinError(ibin, 1.);\r
1311         hNChamberHitPerTrack_Mean->SetBinContent(ibin, 0.);\r
1312         hNChamberHitPerTrack_Mean->SetBinError(ibin, 1.);\r
1313         hNChamberHitPerTrack_Sigma->SetBinContent(ibin, 0.);\r
1314         hNChamberHitPerTrack_Sigma->SetBinError(ibin, 1.);\r
1315         hChi2_Mean->SetBinContent(ibin, 0.);\r
1316         hChi2_Mean->SetBinError(ibin, 1.);\r
1317         hChi2_Sigma->SetBinContent(ibin, 0.);\r
1318         hChi2_Sigma->SetBinError(ibin, 1.);\r
1319         for (Int_t ich=0; ich<10; ich++) {\r
1320           hNClustersInCh[ich]->SetBinContent(ibin,0.);\r
1321           hNClustersInCh[ich]->SetBinError(ibin,1.);\r
1322           hClusterHitMapXInCh[ich]->SetBinContent(ibin,0.);\r
1323           hClusterHitMapXInCh[ich]->SetBinError(ibin,1.);\r
1324           hClusterHitMapYInCh[ich]->SetBinContent(ibin,0.);\r
1325           hClusterHitMapYInCh[ich]->SetBinError(ibin,1.);       \r
1326         }\r
1327         //runFile->Close();\r
1328         //continue;\r
1329       }\r
1330       else {\r
1331         // fill monitoring plots\r
1332         hNClustersPerTrackVsRun_Mean->SetBinContent(ibin, hNClustersPerTrack->GetMean());\r
1333         hNClustersPerTrackVsRun_Mean->SetBinError(ibin, hNClustersPerTrack->GetMeanError());\r
1334         hNClustersPerTrackVsRun_Sigma->SetBinContent(ibin, hNClustersPerTrack->GetRMS());\r
1335         hNClustersPerTrackVsRun_Sigma->SetBinError(ibin, hNClustersPerTrack->GetRMSError());\r
1336         hNChamberHitPerTrack_Mean->SetBinContent(ibin, hNChamberHitPerTrack->GetMean());\r
1337         hNChamberHitPerTrack_Mean->SetBinError(ibin, hNChamberHitPerTrack->GetMeanError());\r
1338         hNChamberHitPerTrack_Sigma->SetBinContent(ibin, hNChamberHitPerTrack->GetRMS());\r
1339         hNChamberHitPerTrack_Sigma->SetBinError(ibin, hNChamberHitPerTrack->GetRMSError());\r
1340         hChi2_Mean->SetBinContent(ibin, hChi2->GetMean());\r
1341         hChi2_Mean->SetBinError(ibin, hChi2->GetMeanError());\r
1342         hChi2_Sigma->SetBinContent(ibin, hChi2->GetRMS());\r
1343         hChi2_Sigma->SetBinError(ibin, hChi2->GetRMSError());\r
1344         for (Int_t ich=0; ich<10; ich++) {\r
1345           hNClustersInCh[ich]->SetBinContent(ibin,hNClustersPerCh->GetBinContent(ich+1));\r
1346           hNClustersInCh[ich]->SetBinError(ibin,hNClustersPerCh->GetBinError(ich+1));\r
1347           hClusterHitMapXInCh[ich]->SetBinContent(ibin,hClusterHitMapInCh[ich]->GetMean(1));\r
1348           hClusterHitMapXInCh[ich]->SetBinError(ibin,hClusterHitMapInCh[ich]->GetMeanError(1));\r
1349           hClusterHitMapYInCh[ich]->SetBinContent(ibin,hClusterHitMapInCh[ich]->GetMean(2));\r
1350           hClusterHitMapYInCh[ich]->SetBinError(ibin,hClusterHitMapInCh[ich]->GetMeanError(2));\r
1351         }\r
1352       }\r
1353 \r
1354       // set labels\r
1355       run = objs->GetString();\r
1356       run.ReplaceAll(baseDir, "");\r
1357       run.Remove(TString::kLeading, '/');\r
1358       run.Remove(TString::kLeading, '0');\r
1359       run.ReplaceAll(QAFileName.Data(),"");\r
1360       run.Remove(TString::kTrailing, '/');\r
1361       hNClustersPerTrackVsRun_Mean->GetXaxis()->SetBinLabel(ibin, run.Data());\r
1362       hNClustersPerTrackVsRun_Sigma->GetXaxis()->SetBinLabel(ibin, run.Data());\r
1363       hNChamberHitPerTrack_Mean->GetXaxis()->SetBinLabel(ibin, run.Data());\r
1364       hNChamberHitPerTrack_Sigma->GetXaxis()->SetBinLabel(ibin, run.Data());\r
1365       hChi2_Mean->GetXaxis()->SetBinLabel(ibin, run.Data());\r
1366       hChi2_Sigma->GetXaxis()->SetBinLabel(ibin, run.Data());\r
1367       for (Int_t ich=0; ich<10; ich++) {\r
1368         hNClustersInCh[ich]->GetXaxis()->SetBinLabel(ibin, run.Data());\r
1369         hClusterHitMapXInCh[ich]->GetXaxis()->SetBinLabel(ibin, run.Data());\r
1370         hClusterHitMapYInCh[ich]->GetXaxis()->SetBinLabel(ibin, run.Data());\r
1371       }\r
1372       // close outfile for this run\r
1373       runFile->Close();\r
1374       ibin++;      \r
1375     }\r
1376     \r
1377     delete res;\r
1378   }\r
1379 \r
1380   //sort label\r
1381   hNClustersPerTrackVsRun_Mean->LabelsOption("a");\r
1382   hNClustersPerTrackVsRun_Sigma->LabelsOption("a");\r
1383   hNChamberHitPerTrack_Mean->LabelsOption("a");\r
1384   hNChamberHitPerTrack_Sigma->LabelsOption("a");\r
1385   hChi2_Mean->LabelsOption("a");\r
1386   hChi2_Sigma->LabelsOption("a");\r
1387 \r
1388   for(Int_t ich=0; ich<10; ich++){\r
1389     hNClustersInCh[ich]->LabelsOption("a");\r
1390     hClusterHitMapXInCh[ich]->LabelsOption("a");\r
1391     hClusterHitMapYInCh[ich]->LabelsOption("a");\r
1392   }\r
1393   \r
1394   TString dirToGo =  OutFileNameROOT.Data(); dirToGo+=":/";\r
1395   gDirectory->Cd(dirToGo.Data());\r
1396   //==================================================\r
1397   //Display Mean and Sigma of the number of associated clusters to a track \r
1398   TLegend *lNClusters = new TLegend(0.75,0.85,0.99,0.99);\r
1399   lNClusters->AddEntry(hNClustersPerTrackVsRun_Mean,"clusters","PL");\r
1400   lNClusters->AddEntry(hNChamberHitPerTrack_Mean,"chamber hit","PL");\r
1401   \r
1402   TCanvas* cNClusters = new TCanvas("cNClusters","cNClusters",1200,900);\r
1403   cNClusters->SetLogy(0);\r
1404   cNClusters->Divide(1,2);\r
1405   cNClusters->cd(1);\r
1406   //hNClustersPerTrackVsRun_Mean->SetMaximum(11);\r
1407   hNClustersPerTrackVsRun_Mean->SetMinimum(7);\r
1408   hNClustersPerTrackVsRun_Mean->SetStats(kFALSE);\r
1409   hNClustersPerTrackVsRun_Mean->GetXaxis()->SetRange(1,ibin-1);\r
1410   hNClustersPerTrackVsRun_Mean->GetXaxis()->SetNdivisions(1,kFALSE);\r
1411   //hNClustersPerTrackVsRun_Mean->LabelsOption("u");\r
1412   hNClustersPerTrackVsRun_Mean->SetLabelSize(LabelSize);\r
1413   hNClustersPerTrackVsRun_Mean->SetTitle("averaged number of associated clusters or of the number of chamber hit per track");\r
1414   hNClustersPerTrackVsRun_Mean->SetLineWidth(2);\r
1415   hNClustersPerTrackVsRun_Mean->Draw("e");\r
1416   hNChamberHitPerTrack_Mean->SetLineColor(kRed);\r
1417   hNChamberHitPerTrack_Mean->SetLineWidth(2);\r
1418   hNChamberHitPerTrack_Mean->Draw("esame");\r
1419   lNClusters->Draw("same");\r
1420 \r
1421   cNClusters->cd(2);\r
1422   //hNClustersPerTrackVsRun_Sigma->SetMaximum(1.1);\r
1423   hNClustersPerTrackVsRun_Sigma->SetMinimum(0.4);\r
1424   hNClustersPerTrackVsRun_Sigma->SetStats(kFALSE);\r
1425   hNClustersPerTrackVsRun_Sigma->GetXaxis()->SetRange(1,ibin-1);\r
1426   hNClustersPerTrackVsRun_Sigma->GetXaxis()->SetNdivisions(1,kFALSE);\r
1427   //hNClustersPerTrackVsRun_Sigma->LabelsOption("u");\r
1428   hNClustersPerTrackVsRun_Sigma->SetLabelSize(LabelSize);\r
1429   hNClustersPerTrackVsRun_Sigma->SetTitle("dispersion of the number of associated clusters or of the number of chamber hit per track");\r
1430   hNClustersPerTrackVsRun_Sigma->SetLineWidth(2);\r
1431   hNClustersPerTrackVsRun_Sigma->Draw("e");\r
1432   hNChamberHitPerTrack_Sigma->SetLineWidth(2);\r
1433   hNChamberHitPerTrack_Sigma->SetLineColor(kRed);\r
1434   hNChamberHitPerTrack_Sigma->Draw("esame");\r
1435   lNClusters->Draw("same");\r
1436 \r
1437   cNClusters->Print(OutFileNamePDF.Data());\r
1438   cNClusters->Write();\r
1439 \r
1440 \r
1441   //==================================================\r
1442   // Display average number of cluster per chamber\r
1443   TLegend *lNClustersPerCh = new TLegend(0.92,0.45,0.99,0.99);\r
1444   TCanvas* cNClustersPerCh = new TCanvas("cNClustersPerCh","cNClustersPerCh",1200,900);\r
1445   cNClustersPerCh->cd();\r
1446   cNClustersPerCh->SetRightMargin(0.1);\r
1447   hNClustersInCh[0]->SetStats(kFALSE);\r
1448   hNClustersInCh[0]->GetXaxis()->SetRange(1,ibin-1);\r
1449   hNClustersInCh[0]->GetXaxis()->SetNdivisions(1,kFALSE);\r
1450   //hNClustersInCh[0]->LabelsOption("u");\r
1451   hNClustersInCh[0]->SetLabelSize(LabelSize);\r
1452   hNClustersInCh[0]->SetTitle("averaged number of clusters in chamber i per track");\r
1453   hNClustersInCh[0]->SetMaximum(1.2);\r
1454   hNClustersInCh[0]->SetMinimum(0.01);\r
1455   for (Int_t ich=0; ich<10; ich++) {\r
1456     hNClustersInCh[ich]->SetLineColor(ich+1+ich/9);\r
1457     hNClustersInCh[ich]->SetLineWidth(2);\r
1458     if (ich == 0) hNClustersInCh[ich]->Draw("e");\r
1459     else hNClustersInCh[ich]->Draw("esame");\r
1460     lNClustersPerCh->AddEntry(hNClustersInCh[ich],Form("ch%d",ich+1),"PL");\r
1461   }\r
1462   lNClustersPerCh->Draw("same");\r
1463   \r
1464   cNClustersPerCh->Print(OutFileNamePDF.Data());\r
1465   cNClustersPerCh->Write();\r
1466 \r
1467   //==================================================\r
1468   // Display average X and Y position of clusters per chamber\r
1469   TLegend *lClusterHitMapPerCh = new TLegend(0.92,0.45,0.99,0.99);\r
1470   TCanvas* cClusterHitMapPerCh = new TCanvas("cClusterHitMapPerCh","cClusterHitMapPerCh",1200,900);\r
1471   cClusterHitMapPerCh->Divide(1,2);\r
1472   cClusterHitMapPerCh->GetPad(1)->SetRightMargin(0.1);\r
1473   cClusterHitMapPerCh->GetPad(2)->SetRightMargin(0.1);\r
1474         \r
1475   cClusterHitMapPerCh->cd(1);\r
1476   hClusterHitMapXInCh[0]->SetStats(kFALSE);\r
1477   hClusterHitMapXInCh[0]->GetXaxis()->SetRange(1,ibin-1);\r
1478   hClusterHitMapXInCh[0]->GetXaxis()->SetNdivisions(1,kFALSE);\r
1479   //hNClustersInCh[0]->LabelsOption("u");\r
1480   hClusterHitMapXInCh[0]->SetLabelSize(LabelSize);\r
1481   hClusterHitMapXInCh[0]->SetTitle("<X> of clusters - associated to a track - in chamber i");\r
1482   hClusterHitMapXInCh[0]->SetMaximum(30);\r
1483   hClusterHitMapXInCh[0]->SetMinimum(-30);\r
1484   for (Int_t ich=0; ich<10; ich++) {\r
1485     hClusterHitMapXInCh[ich]->SetLineColor(ich+1+ich/9);\r
1486     hClusterHitMapXInCh[ich]->SetLineWidth(2);\r
1487     if (ich == 0) hClusterHitMapXInCh[ich]->Draw("e");\r
1488     else hClusterHitMapXInCh[ich]->Draw("esame");\r
1489                 \r
1490     lClusterHitMapPerCh->AddEntry(hClusterHitMapXInCh[ich],Form("ch%d",ich+1),"PL");\r
1491   }\r
1492   lClusterHitMapPerCh->Draw("same");\r
1493   \r
1494   cClusterHitMapPerCh->cd(2);\r
1495   hClusterHitMapYInCh[0]->SetStats(kFALSE);\r
1496   hClusterHitMapYInCh[0]->GetXaxis()->SetRange(1,ibin-1);\r
1497   hClusterHitMapYInCh[0]->GetXaxis()->SetNdivisions(1,kFALSE);\r
1498   //hNClustersInCh[0]->LabelsOption("u");\r
1499   hClusterHitMapYInCh[0]->SetLabelSize(LabelSize);\r
1500   hClusterHitMapYInCh[0]->SetTitle("<Y> of clusters - associated to a track - in chamber i");\r
1501   hClusterHitMapYInCh[0]->SetMaximum(30);\r
1502   hClusterHitMapYInCh[0]->SetMinimum(-30);\r
1503   for (Int_t ich=0; ich<10; ich++) {\r
1504     hClusterHitMapYInCh[ich]->SetLineColor(ich+1+ich/9);\r
1505     hClusterHitMapYInCh[ich]->SetLineWidth(2);\r
1506     if (ich == 0) hClusterHitMapYInCh[ich]->Draw("e");\r
1507     else hClusterHitMapYInCh[ich]->Draw("esame");\r
1508   }\r
1509   lClusterHitMapPerCh->Draw("same");\r
1510   \r
1511   cClusterHitMapPerCh->Print(OutFileNamePDF.Data());\r
1512   cClusterHitMapPerCh->Write();\r
1513 \r
1514 \r
1515   //==================================================\r
1516   // Display tracks ChiSquare \r
1517   TCanvas* cChi2 = new TCanvas("cChi2","cChi2",1200,900);\r
1518   cChi2->Divide(1,2);\r
1519   cChi2->cd(1);\r
1520   hChi2_Mean->SetStats(kFALSE);\r
1521   hChi2_Mean->GetXaxis()->SetRange(1,ibin-1);\r
1522   hChi2_Mean->GetXaxis()->SetNdivisions(1,kFALSE);\r
1523   //hChi2_Mean->LabelsOption("u");\r
1524   hChi2_Mean->SetLabelSize(LabelSize);\r
1525   hChi2_Mean->SetLineWidth(2);\r
1526   hChi2_Mean->Draw("e");\r
1527 \r
1528   cChi2->cd(2);\r
1529   hChi2_Sigma->SetStats(kFALSE);\r
1530   hChi2_Sigma->GetXaxis()->SetRange(1,ibin-1);\r
1531   hChi2_Sigma->GetXaxis()->SetNdivisions(1,kFALSE);\r
1532   //hChi2_Sigma->LabelsOption("u");\r
1533   hChi2_Sigma->SetLabelSize(LabelSize);\r
1534   hChi2_Sigma->SetLineWidth(2);\r
1535   hChi2_Sigma->Draw("e");\r
1536 \r
1537   cChi2->Print(OutFileNamePDF.Data());\r
1538   cChi2->Write();\r
1539 \r
1540   // close the PDF file\r
1541   c1->Print(OutFileNamePDF_close.Data());\r
1542   rootFileOut->Close();\r
1543     \r
1544   //====================================================\r
1545   if (PRINTSTAT){\r
1546     // set the format to print labels\r
1547     THashList* labels = hMBB->GetXaxis()->GetLabels();\r
1548     TString format(Form("\n%%%ds %%9d",0));\r
1549   \r
1550     // print value for each label\r
1551     TObjString* label = 0x0;\r
1552     TIter nextLabel(labels);\r
1553     cout << "-------------------------------------------------" << endl;\r
1554     cout << "Run Number" << "\t Number of CMBB after Phys. Sel. " << endl ;  \r
1555     while ((label = static_cast<TObjString*>(nextLabel()))) {\r
1556       Int_t bin = (Int_t) label->GetUniqueID();\r
1557       printf(format.Data(), label->String().Data(), (Int_t) hMBB->GetBinContent(bin));\r
1558     }\r
1559     printf("\n\n");\r
1560 \r
1561 \r
1562     cout << "-------------------------------------------------" << endl;\r
1563     cout << "Total statistic" << endl; \r
1564     cout << " " << endl ; \r
1565     cout << "Number of  NumOfAllTriggers " << endl ;\r
1566     cout << "\t before selection " << NumOfAllTriggersNoPS << "\t  after selection " <<   NumOfAllTriggersWithPS << " --> rejection = " <<  (Double_t) (NumOfAllTriggersNoPS-NumOfAllTriggersWithPS)/(NumOfAllTriggersNoPS)*100. << "%" << endl ; \r
1567     cout << "Number of  NumOfCMBB " << endl ;\r
1568     cout << "\t before selection " << NumOfMBBNoPS << "\t  after selection " <<   NumOfMBBWithPS << " --> rejection = " <<  (Double_t) (NumOfMBBNoPS-NumOfMBBWithPS)/(NumOfMBBNoPS)*100. << "%" << endl ; \r
1569     cout << " " << endl ; \r
1570     \r
1571   }\r
1572 }\r