1 //--------------------------------------------------------------------------
\r
2 // Macro for QA monitoring.
\r
4 // In case it is not run with full aliroot, it needs the following libraries to compile:
\r
9 // - libANALYSISalice.so
\r
13 // The macro reads results of the QA task and produce monitoring plots.
\r
15 // Author: Philippe Pillot - SUBATECH Nantes, Christophe Suire - IPN Orsay
\r
16 // and Cynthia Hadjidakis - IPN Orsay
\r
17 //--------------------------------------------------------------------------
\r
19 #if !defined(__CINT__) || defined(__MAKECINT__)
\r
21 #include <Riostream.h>
\r
28 #include "TSystem.h"
\r
30 #include "TCanvas.h"
\r
34 #include "../PWG3/base/AliCounterCollection.h"
\r
38 //--------------------------------------------------------------------------
\r
39 void PlotMuonQAPbPb(const char* baseDir, const char* runList = 0x0, Bool_t selectPhysics = kFALSE)
\r
41 /// Macro for QA monitoring.
\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
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
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
71 TString LHCPeriod = "LHC10hpass2";
\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
79 //TString QAFileName = "QAresults.root";
\r
80 TString QAFileName = "AnalysisResults.root";
\r
81 TString MergedQAFileName = "Merged"; MergedQAFileName+= QAFileName.Data();
\r
83 Int_t PRINTSTAT = 1;
\r
85 Int_t ALIENFASTREAD = 0 ;
\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
95 TH1::AddDirectory(kFALSE);
\r
97 TString alienBaseDir = baseDir;
\r
99 if (alienBaseDir.Contains("alien:") && !TGrid::Connect("alien://")) {
\r
100 Error("PlotMuonQA","cannot connect to grid");
\r
104 Float_t LabelSize = 0.03;
\r
107 //---------------------------------- //
\r
108 // Run selection //
\r
109 //---------------------------------- //
\r
112 // list runs to be analyzed
\r
113 TString selectRuns = "run:";
\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
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
133 runs.AddLast(new TObjString(Form("%09d", currRun.Atoi())));
\r
134 selectRuns += Form("%s,",currRun.Data());
\r
136 selectRuns.Remove(TString::kTrailing, ',');
\r
143 runs.AddLast(new TObjString("*"));
\r
147 // physics selection
\r
148 TString select = selectPhysics ? "selected:yes" : "";
\r
151 //---------------------------------- //
\r
152 // plot global counter //
\r
153 //---------------------------------- //
\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
160 globalFile->Cd("MUON_QA");
\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
170 //declare a default canvas c1
\r
171 TString CanvasName = "c1";
\r
172 TCanvas *c1 = new TCanvas(CanvasName.Data());
\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
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
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
205 TH1* hBckTriggersNoPS = eventCounters->Draw("run",Form("v0mult:low,int,high/%s/%s",bckTriggers.Data(), selectRuns.Data()));
\r
206 hBckTriggersNoPS->Sumw2();
\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
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
232 TH1* hMBBlow = eventCounters->Draw("run",Form("v0mult:low/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));
\r
234 TH1* hMBBhigh = eventCounters->Draw("run",Form("v0mult:high/%s/%s/%s",minBiasTrigers.Data(), selectRuns.Data(), select.Data()));
\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
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
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
292 TH1* hAll = eventCounters->Draw("trigger","run","run:any/selected:yes");
\r
293 hAll->Draw("TEXT");
\r
296 //===================================================================================
\r
297 // Put all plots in a pdf file, easier to publish (Twiki)
\r
298 c1->Print(OutFileNamePDF_open.Data());
\r
300 TFile *rootFileOut = TFile::Open(OutFileNameROOT.Data(),"RECREATE");
\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
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
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
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
344 cStatByTrigger->Print(OutFileNamePDF.Data());
\r
345 cStatByTrigger->Write();
\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
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
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
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
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
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
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
438 cRelativeTriggerContent->Print(OutFileNamePDF.Data());
\r
439 cRelativeTriggerContent->Write();
\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
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
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
482 relratioMBBlow->Scale(0.8);
\r
483 relratioMBBhigh->Scale(0.8);
\r
484 relratioMBBlowNoPS->Scale(0.8);
\r
485 relratioMBBhighNoPS->Scale(0.8);
\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
493 relratioMBBlow->Draw();
\r
494 relratioMBBhigh->Draw("ESAME");
\r
495 relratioMBBlowNoPS->Draw("EPSAME");
\r
496 relratioMBBhighNoPS->Draw("EPSAME");
\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
508 cCentralityPercentileCheck->Print(OutFileNamePDF.Data());
\r
509 cCentralityPercentileCheck->Write();
\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
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
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
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
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
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
551 hTrackerPerMBB->Draw("Esame");
\r
552 hMatchedPerMBB->Draw("Esame");
\r
553 hTriggerPerMBB->Draw("Esame");
\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
562 cRatioTrackTypesMBB->Print(OutFileNamePDF.Data());
\r
563 cRatioTrackTypesMBB->Write();
\r
565 //==========================================================================
\r
566 // Draw ratio of tracks over MBB versus runs and low and high multiplicities
\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
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
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
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
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
648 cRatioTrackTypesMBBVsMult->Divide(1,2);
\r
651 cRatioTrackTypesMBBVsMult->cd(1);
\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
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
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
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
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
697 cRatioTrackTypesMBBVsMult->Print(OutFileNamePDF.Data());
\r
698 cRatioTrackTypesMBBVsMult->Write();
\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
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
731 cTrackMultBBlow->Print(OutFileNamePDF.Data());
\r
732 cTrackMultBBlow->Write();
\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
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
766 cTrackMultBBhigh->Print(OutFileNamePDF.Data());
\r
767 cTrackMultBBhigh->Write();
\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
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
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
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
808 cRatioTrackMBBlow->Print(OutFileNamePDF.Data());
\r
809 cRatioTrackMBBlow->Write();
\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
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
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
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
849 cRatioTrackMBBhigh->Print(OutFileNamePDF.Data());
\r
850 cRatioTrackMBBhigh->Write();
\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
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
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
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
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
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
892 // hTrackerPerCMUS1B->Draw("Esame");
\r
893 // hMatchedPerCMUS1B->Draw("Esame");
\r
894 // hTriggerPerCMUS1B->Draw("Esame");
\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
903 // cRatioTrackTypesCMUS1B->Print(OutFileNamePDF.Data());
\r
904 // cRatioTrackTypesCMUS1B->Write();
\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
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
933 // cTrackMultCMUS1B->Print(OutFileNamePDF.Data());
\r
934 // cTrackMultCMUS1B->Write();
\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
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
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
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
971 // cRatioTrackCMUS1B->Print(OutFileNamePDF.Data());
\r
972 // cRatioTrackCMUS1B->Write();
\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
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
989 TH1 *hDiffMatchedMBBhigh= static_cast<TH1*>(hPosMatchedMBBhigh->Clone("hDiffMatchedMBBhigh"));
\r
990 hDiffMatchedMBBhigh->Add(hNegMatchedMBBhigh,-1);
\r
991 hDiffMatchedMBBhigh->Sumw2();
\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
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
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
1019 cAsymMatched->Print(OutFileNamePDF.Data());
\r
1020 cAsymMatched->Write();
\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
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
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
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
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
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
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
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
1091 hMatchedLowPtPerMBB->Draw("E");
\r
1092 hMatchedHighPtPerMBB->Scale(5);
\r
1093 hMatchedHighPtPerMBB->Draw("Esame");
\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
1101 cHighPtMuons->Print(OutFileNamePDF.Data());
\r
1102 cHighPtMuons->Write();
\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
1117 cHighPtMuonsVsMult->cd(1);
\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
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
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
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
1149 cHighPtMuonsVsMult->Print(OutFileNamePDF.Data());
\r
1150 cHighPtMuonsVsMult->Write();
\r
1152 // close merged file
\r
1153 globalFile->Close();
\r
1156 //--------------------------------------------- //
\r
1157 // monitor quantities run per run //
\r
1158 //--------------------------------------------- //
\r
1161 // Are the runs stored locally or in alien?
\r
1162 Int_t isAlienFile = 0;
\r
1163 if(alienBaseDir.Contains("alien:")){
\r
1165 alienBaseDir.ReplaceAll("alien://","");
\r
1168 /* if ( ! alienBaseDir.Contains("alien:")){
\r
1169 Info("PlotMuonQA","Working locally, stopping here");
\r
1170 rootFileOut->Close();
\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
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
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
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
1203 for ( Int_t irun=0; irun<runs.GetEntriesFast(); irun++ ) { //loop over runs
\r
1205 TString run = ((TObjString*)runs.UncheckedAt(irun))->GetString();
\r
1206 // get the file (or list of files) to be analyzed
\r
1208 TGridResult *res = 0;
\r
1209 TObjString *objs = 0;
\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
1216 Error("PlotMuonQAPbPb",Form("no result for the command: %s",command.Data()));
\r
1221 res = new TGridResult();
\r
1224 objs = new TObjString(Form("%s/%s/AnalysisResults.root", alienBaseDir.Data(), run.Data()));
\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
1235 const char* dirFilename = gSystem->GetDirEntry(dir);
\r
1236 if(!dirFilename) break;
\r
1237 sDirFilename = dirFilename;
\r
1238 if(!sDirFilename.IsDigit()) continue;
\r
1240 objs = new TObjString(Form("%s/%s/AnalysisResults.root", alienBaseDir.Data(), sDirFilename.Data()));
\r
1246 // Loop over the 'find' results and get next LFN
\r
1247 TIter nextmap(res);
\r
1252 Int_t iLoop=0, iLoopMax=1000;
\r
1255 // get the current file url
\r
1257 map=(TMap*)nextmap();
\r
1259 objs = dynamic_cast<TObjString*>(map->GetValue("turl"));
\r
1262 objs=(TObjString*)nextmap();
\r
1266 //in case of infinite loop
\r
1268 if(iLoop>iLoopMax) break;
\r
1271 if (!objs || !objs->GetString().Length()) {
\r
1272 Error("PlotMuonQA","turl not found for the run %s... SKIPPING", run.Data());
\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
1284 runFile->Cd("MUON_QA");
\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
1291 if (!general1 || !general2 || !expert){
\r
1292 Error("PlotMUONQAPbPb", Form("All objects not here !!! ===> Skipping...for %s",objs->GetName()));
\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
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
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
1327 //runFile->Close();
\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
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
1372 // close outfile for this run
\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
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
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
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
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
1437 cNClusters->Print(OutFileNamePDF.Data());
\r
1438 cNClusters->Write();
\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
1462 lNClustersPerCh->Draw("same");
\r
1464 cNClustersPerCh->Print(OutFileNamePDF.Data());
\r
1465 cNClustersPerCh->Write();
\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
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
1490 lClusterHitMapPerCh->AddEntry(hClusterHitMapXInCh[ich],Form("ch%d",ich+1),"PL");
\r
1492 lClusterHitMapPerCh->Draw("same");
\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
1509 lClusterHitMapPerCh->Draw("same");
\r
1511 cClusterHitMapPerCh->Print(OutFileNamePDF.Data());
\r
1512 cClusterHitMapPerCh->Write();
\r
1515 //==================================================
\r
1516 // Display tracks ChiSquare
\r
1517 TCanvas* cChi2 = new TCanvas("cChi2","cChi2",1200,900);
\r
1518 cChi2->Divide(1,2);
\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
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
1537 cChi2->Print(OutFileNamePDF.Data());
\r
1540 // close the PDF file
\r
1541 c1->Print(OutFileNamePDF_close.Data());
\r
1542 rootFileOut->Close();
\r
1544 //====================================================
\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
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
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