]>
Commit | Line | Data |
---|---|---|
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 | |
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 |