]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/muon/PlotMuonQAPbPb.C
Adding PWG4Base library
[u/mrichter/AliRoot.git] / PWG3 / muon / PlotMuonQAPbPb.C
CommitLineData
4916d740 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
39void 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