Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HistMacro_Matching_TOF2.C
Go to the documentation of this file.
1 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPoint/PVsTheta_HasHit
2 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPoint/PVsTheta_NoHit
3 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPoint/TrackTOF2DPaddles_HasHit
4 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPoint/TrackTOF2DPaddles_NoHit
5 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPaddle/TrackYVsVerticalPaddle_HasHit
6 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPaddle/TrackYVsVerticalPaddle_NoHit
7 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPaddle/HorizontalPaddleVsTrackX_HasHit
8 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPaddle/HorizontalPaddleVsTrackX_NoHit
9 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPoint/TrackTOFP_HasHit
10 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPoint/TrackTOFP_NoHit
11 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPoint/TrackTOFR_HasHit
12 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/TOFPoint/TrackTOFR_NoHit
13 {
14  double locMinNumCountsForRatio = 50.0;
15 
16  //Goto Path
17  TDirectory *locDirectory = (TDirectory*)gDirectory->FindObjectAny("Hist_DetectorMatching");
18  if(!locDirectory)
19  return;
20  locDirectory->cd();
21 
22  //Get Histograms
23  gDirectory->cd("TimeBased/TOFPaddle");
24  TH2I* locHist_TrackYVsVerticalPaddle_HasHit = (TH2I*)gDirectory->Get("TrackYVsVerticalPaddle_HasHit");
25  TH2I* locHist_TrackYVsVerticalPaddle_NoHit = (TH2I*)gDirectory->Get("TrackYVsVerticalPaddle_NoHit");
26  TH2I* locHist_HorizontalPaddleVsTrackX_HasHit = (TH2I*)gDirectory->Get("HorizontalPaddleVsTrackX_HasHit");
27  TH2I* locHist_HorizontalPaddleVsTrackX_NoHit = (TH2I*)gDirectory->Get("HorizontalPaddleVsTrackX_NoHit");
28 
29  gDirectory->cd("../TOFPoint");
30  TH2I* locHist_PVsTheta_HasHit = (TH2I*)gDirectory->Get("PVsTheta_HasHit");
31  TH2I* locHist_PVsTheta_NoHit = (TH2I*)gDirectory->Get("PVsTheta_NoHit");
32  TH2I* locHist_TrackTOF2DPaddles_HasHit = (TH2I*)gDirectory->Get("TrackTOF2DPaddles_HasHit");
33  TH2I* locHist_TrackTOF2DPaddles_NoHit = (TH2I*)gDirectory->Get("TrackTOF2DPaddles_NoHit");
34  TH1I* locHist_TrackTOFP_HasHit_TOF = (TH1I*)gDirectory->Get("TrackTOFP_HasHit");
35  TH1I* locHist_TrackTOFP_NoHit_TOF = (TH1I*)gDirectory->Get("TrackTOFP_NoHit");
36  TH1I* locHist_TrackTOFR_HasHit_TOF = (TH1I*)gDirectory->Get("TrackTOFR_HasHit");
37  TH1I* locHist_TrackTOFR_NoHit_TOF = (TH1I*)gDirectory->Get("TrackTOFR_NoHit");
38 
39  //Get original pad margins
40  double locLeftPadMargin = gStyle->GetPadLeftMargin();
41  double locRightPadMargin = gStyle->GetPadRightMargin();
42  double locTopPadMargin = gStyle->GetPadTopMargin();
43  double locBottomPadMargin = gStyle->GetPadBottomMargin();
44 
45  //Set new pad margins
46  gStyle->SetPadLeftMargin(0.15);
47  gStyle->SetPadRightMargin(0.15);
48 // gStyle->SetPadTopMargin(locTopPadMargin);
49 // gStyle->SetPadBottomMargin(locBottomPadMargin);
50 
51  //Get/Make Canvas
52  TCanvas *locCanvas = NULL;
53  if(TVirtualPad::Pad() == NULL)
54  locCanvas = new TCanvas("Matching_TOF2", "Matching_TOF2", 1200, 800);
55  else
56  locCanvas = gPad->GetCanvas();
57  locCanvas->Divide(3, 2);
58 
59  //Draw
60  locCanvas->cd(1);
61  gPad->SetTicks();
62  gPad->SetGrid();
63  if((locHist_TrackYVsVerticalPaddle_HasHit != NULL) && (locHist_TrackYVsVerticalPaddle_NoHit != NULL))
64  {
65  locHist_TrackYVsVerticalPaddle_HasHit->Rebin2D(1, 5); //44x260 -> 44x52
66  locHist_TrackYVsVerticalPaddle_NoHit->Rebin2D(1, 5); //44x260 -> 44x52
67 
68  TH2I* locFoundHist = locHist_TrackYVsVerticalPaddle_HasHit;
69  TH2I* locMissingHist = locHist_TrackYVsVerticalPaddle_NoHit;
70  string locHistName = string(locFoundHist->GetName()) + string("_Acceptance");
71  string locHistTitle = string("TOF Paddle Match Rate (p > 1 GeV/c);") + string(locFoundHist->GetXaxis()->GetTitle()) + string(";") + string(locFoundHist->GetYaxis()->GetTitle());
72 
73  TH2D* locAcceptanceHist = new TH2D(locHistName.c_str(), locHistTitle.c_str(), locFoundHist->GetNbinsX(), locFoundHist->GetXaxis()->GetXmin(), locFoundHist->GetXaxis()->GetXmax(), locFoundHist->GetNbinsY(), locFoundHist->GetYaxis()->GetXmin(), locFoundHist->GetYaxis()->GetXmax());
74  for(Int_t loc_m = 1; loc_m <= locFoundHist->GetNbinsX(); ++loc_m)
75  {
76  for(Int_t loc_j = 1; loc_j <= locFoundHist->GetNbinsY(); ++loc_j)
77  {
78  double locNumMissing = locMissingHist->GetBinContent(loc_m, loc_j);
79  double locNumFound = locFoundHist->GetBinContent(loc_m, loc_j);
80  double locTotal = locNumMissing + locNumFound;
81  if(!(locTotal >= locMinNumCountsForRatio))
82  {
83  locAcceptanceHist->SetBinContent(loc_m, loc_j, 0.0);
84  locAcceptanceHist->SetBinError(loc_m, loc_j, 1.0/0.0);
85  continue;
86  }
87 
88  double locAcceptance = locNumFound/locTotal;
89  if(!(locAcceptance > 0.0))
90  locAcceptance = 0.00001; //so that it shows up on the histogram
91  locAcceptanceHist->SetBinContent(loc_m, loc_j, locAcceptance);
92  double locNumFoundError = sqrt(locNumFound*(1.0 - locAcceptance));
93 
94  double locAcceptanceError = locNumFoundError/locTotal;
95  locAcceptanceHist->SetBinError(loc_m, loc_j, locAcceptanceError);
96  }
97  }
98  locAcceptanceHist->SetEntries(locMissingHist->GetEntries() + locFoundHist->GetEntries());
99  locAcceptanceHist->SetStats(kFALSE);
100 
101  locAcceptanceHist->GetYaxis()->SetTitleOffset(1.5);
102  locAcceptanceHist->GetXaxis()->SetTitleSize(0.05);
103  locAcceptanceHist->GetYaxis()->SetTitleSize(0.05);
104  locAcceptanceHist->GetXaxis()->SetLabelSize(0.05);
105  locAcceptanceHist->GetYaxis()->SetLabelSize(0.05);
106  locAcceptanceHist->GetZaxis()->SetRangeUser(0.6, 1.);
107  locAcceptanceHist->Draw("COLZ");
108  }
109 
110  locCanvas->cd(2);
111  gPad->SetTicks();
112  gPad->SetGrid();
113  if((locHist_HorizontalPaddleVsTrackX_HasHit != NULL) && (locHist_HorizontalPaddleVsTrackX_NoHit != NULL))
114  {
115  locHist_HorizontalPaddleVsTrackX_HasHit->Rebin2D(5, 1); //260x44 -> 52x44
116  locHist_HorizontalPaddleVsTrackX_NoHit->Rebin2D(5, 1); //260x44 -> 52x44
117 
118  TH2I* locFoundHist = locHist_HorizontalPaddleVsTrackX_HasHit;
119  TH2I* locMissingHist = locHist_HorizontalPaddleVsTrackX_NoHit;
120  string locHistName = string(locFoundHist->GetName()) + string("_Acceptance");
121  string locHistTitle = string("TOF Paddle Match Rate (p > 1 GeV/c);") + string(locFoundHist->GetXaxis()->GetTitle()) + string(";") + string(locFoundHist->GetYaxis()->GetTitle());
122 
123  TH2D* locAcceptanceHist = new TH2D(locHistName.c_str(), locHistTitle.c_str(), locFoundHist->GetNbinsX(), locFoundHist->GetXaxis()->GetXmin(), locFoundHist->GetXaxis()->GetXmax(), locFoundHist->GetNbinsY(), locFoundHist->GetYaxis()->GetXmin(), locFoundHist->GetYaxis()->GetXmax());
124  for(Int_t loc_m = 1; loc_m <= locFoundHist->GetNbinsX(); ++loc_m)
125  {
126  for(Int_t loc_j = 1; loc_j <= locFoundHist->GetNbinsY(); ++loc_j)
127  {
128  double locNumMissing = locMissingHist->GetBinContent(loc_m, loc_j);
129  double locNumFound = locFoundHist->GetBinContent(loc_m, loc_j);
130  double locTotal = locNumMissing + locNumFound;
131  if(!(locTotal >= locMinNumCountsForRatio))
132  {
133  locAcceptanceHist->SetBinContent(loc_m, loc_j, 0.0);
134  locAcceptanceHist->SetBinError(loc_m, loc_j, 1.0/0.0);
135  continue;
136  }
137 
138  double locAcceptance = locNumFound/locTotal;
139  if(!(locAcceptance > 0.0))
140  locAcceptance = 0.00001; //so that it shows up on the histogram
141  locAcceptanceHist->SetBinContent(loc_m, loc_j, locAcceptance);
142  double locNumFoundError = sqrt(locNumFound*(1.0 - locAcceptance));
143 
144  double locAcceptanceError = locNumFoundError/locTotal;
145  locAcceptanceHist->SetBinError(loc_m, loc_j, locAcceptanceError);
146  }
147  }
148  locAcceptanceHist->SetEntries(locMissingHist->GetEntries() + locFoundHist->GetEntries());
149  locAcceptanceHist->SetStats(kFALSE);
150 
151  locAcceptanceHist->GetYaxis()->SetTitleOffset(1.2);
152  locAcceptanceHist->GetXaxis()->SetTitleSize(0.05);
153  locAcceptanceHist->GetYaxis()->SetTitleSize(0.05);
154  locAcceptanceHist->GetXaxis()->SetLabelSize(0.05);
155  locAcceptanceHist->GetYaxis()->SetLabelSize(0.05);
156  locAcceptanceHist->GetZaxis()->SetRangeUser(0.6, 1.);
157  locAcceptanceHist->Draw("COLZ");
158  }
159 
160  locCanvas->cd(3);
161  gPad->SetTicks();
162  gPad->SetGrid();
163  if((locHist_PVsTheta_HasHit != NULL) && (locHist_PVsTheta_NoHit != NULL))
164  {
165  locHist_PVsTheta_HasHit->Rebin2D(8, 5); //280x400 -> 35x80
166  locHist_PVsTheta_NoHit->Rebin2D(8, 5); //280x400 -> 35x80
167 
168  TH2I* locFoundHist = locHist_PVsTheta_HasHit;
169  TH2I* locMissingHist = locHist_PVsTheta_NoHit;
170  string locHistName = string(locFoundHist->GetName()) + string("_Acceptance");
171  string locHistTitle = string("TOF Point Match Rate;") + string(locFoundHist->GetXaxis()->GetTitle()) + string(";") + string(locFoundHist->GetYaxis()->GetTitle());
172 
173  TH2D* locAcceptanceHist = new TH2D(locHistName.c_str(), locHistTitle.c_str(), locFoundHist->GetNbinsX(), locFoundHist->GetXaxis()->GetXmin(), locFoundHist->GetXaxis()->GetXmax(), locFoundHist->GetNbinsY(), locFoundHist->GetYaxis()->GetXmin(), locFoundHist->GetYaxis()->GetXmax());
174  for(Int_t loc_m = 1; loc_m <= locFoundHist->GetNbinsX(); ++loc_m)
175  {
176  for(Int_t loc_j = 1; loc_j <= locFoundHist->GetNbinsY(); ++loc_j)
177  {
178  double locNumMissing = locMissingHist->GetBinContent(loc_m, loc_j);
179  double locNumFound = locFoundHist->GetBinContent(loc_m, loc_j);
180  double locTotal = locNumMissing + locNumFound;
181  if(!(locTotal >= locMinNumCountsForRatio))
182  {
183  locAcceptanceHist->SetBinContent(loc_m, loc_j, 0.0);
184  locAcceptanceHist->SetBinError(loc_m, loc_j, 1.0/0.0);
185  continue;
186  }
187 
188  double locAcceptance = locNumFound/locTotal;
189  if(!(locAcceptance > 0.0))
190  locAcceptance = 0.00001; //so that it shows up on the histogram
191  locAcceptanceHist->SetBinContent(loc_m, loc_j, locAcceptance);
192  double locNumFoundError = sqrt(locNumFound*(1.0 - locAcceptance));
193 
194  double locAcceptanceError = locNumFoundError/locTotal;
195  locAcceptanceHist->SetBinError(loc_m, loc_j, locAcceptanceError);
196  }
197  }
198  locAcceptanceHist->SetEntries(locMissingHist->GetEntries() + locFoundHist->GetEntries());
199  locAcceptanceHist->SetStats(kFALSE);
200 
201  locAcceptanceHist->GetYaxis()->SetTitleOffset(1.2);
202  locAcceptanceHist->GetXaxis()->SetTitleSize(0.05);
203  locAcceptanceHist->GetYaxis()->SetTitleSize(0.05);
204  locAcceptanceHist->GetXaxis()->SetLabelSize(0.05);
205  locAcceptanceHist->GetYaxis()->SetLabelSize(0.05);
206  locAcceptanceHist->GetZaxis()->SetRangeUser(0.6, 1.);
207  locAcceptanceHist->Draw("COLZ");
208  }
209 
210  locCanvas->cd(4);
211  gPad->SetTicks();
212  gPad->SetGrid();
213  if((locHist_TrackTOF2DPaddles_HasHit != NULL) && (locHist_TrackTOF2DPaddles_NoHit != NULL))
214  {
215  TH2I* locFoundHist = locHist_TrackTOF2DPaddles_HasHit;
216  TH2I* locMissingHist = locHist_TrackTOF2DPaddles_NoHit;
217  string locHistName = string(locFoundHist->GetName()) + string("_Acceptance");
218  string locHistTitle = string("TOF Point Match Rate (p > 1 GeV/c);") + string(locFoundHist->GetXaxis()->GetTitle()) + string(";") + string(locFoundHist->GetYaxis()->GetTitle());
219 
220  TH2D* locAcceptanceHist = new TH2D(locHistName.c_str(), locHistTitle.c_str(), locFoundHist->GetNbinsX(), locFoundHist->GetXaxis()->GetXmin(), locFoundHist->GetXaxis()->GetXmax(), locFoundHist->GetNbinsY(), locFoundHist->GetYaxis()->GetXmin(), locFoundHist->GetYaxis()->GetXmax());
221  for(Int_t loc_m = 1; loc_m <= locFoundHist->GetNbinsX(); ++loc_m)
222  {
223  for(Int_t loc_j = 1; loc_j <= locFoundHist->GetNbinsY(); ++loc_j)
224  {
225  double locNumMissing = locMissingHist->GetBinContent(loc_m, loc_j);
226  double locNumFound = locFoundHist->GetBinContent(loc_m, loc_j);
227  double locTotal = locNumMissing + locNumFound;
228  if(!(locTotal >= locMinNumCountsForRatio))
229  {
230  locAcceptanceHist->SetBinContent(loc_m, loc_j, 0.0);
231  locAcceptanceHist->SetBinError(loc_m, loc_j, 1.0/0.0);
232  continue;
233  }
234 
235  double locAcceptance = locNumFound/locTotal;
236  if(!(locAcceptance > 0.0))
237  locAcceptance = 0.00001; //so that it shows up on the histogram
238  locAcceptanceHist->SetBinContent(loc_m, loc_j, locAcceptance);
239  double locNumFoundError = sqrt(locNumFound*(1.0 - locAcceptance));
240 
241  double locAcceptanceError = locNumFoundError/locTotal;
242  locAcceptanceHist->SetBinError(loc_m, loc_j, locAcceptanceError);
243  }
244  }
245  locAcceptanceHist->SetEntries(locMissingHist->GetEntries() + locFoundHist->GetEntries());
246  locAcceptanceHist->SetStats(kFALSE);
247 
248  locAcceptanceHist->GetYaxis()->SetTitleOffset(1.2);
249  locAcceptanceHist->GetXaxis()->SetTitleSize(0.05);
250  locAcceptanceHist->GetYaxis()->SetTitleSize(0.05);
251  locAcceptanceHist->GetXaxis()->SetLabelSize(0.05);
252  locAcceptanceHist->GetYaxis()->SetLabelSize(0.05);
253  locAcceptanceHist->GetZaxis()->SetRangeUser(0.6, 1.);
254  locAcceptanceHist->Draw("COLZ");
255  }
256 
257  locCanvas->cd(5);
258  gPad->SetTicks();
259  gPad->SetGrid();
260  if((locHist_TrackTOFP_HasHit_TOF != NULL) && (locHist_TrackTOFP_NoHit_TOF != NULL))
261  {
262  TH1I* locFoundHist = locHist_TrackTOFP_HasHit_TOF;
263  locFoundHist->Rebin(10);
264  TH1I* locMissingHist = locHist_TrackTOFP_NoHit_TOF;
265  locMissingHist->Rebin(10);
266 
267  string locHistName = string(locFoundHist->GetName()) + string("_Acceptance");
268  string locHistTitle = string("TOF Match Rate;") + string(locFoundHist->GetXaxis()->GetTitle());
269  TH1D* locAcceptanceHist = new TH1D(locHistName.c_str(), locHistTitle.c_str(), locFoundHist->GetNbinsX(), locFoundHist->GetXaxis()->GetXmin(), locFoundHist->GetXaxis()->GetXmax());
270  for(Int_t loc_m = 1; loc_m <= locFoundHist->GetNbinsX(); ++loc_m)
271  {
272  double locNumMissing = locMissingHist->GetBinContent(loc_m);
273  double locNumFound = locFoundHist->GetBinContent(loc_m);
274  double locTotal = locNumMissing + locNumFound;
275  if(!(locTotal >= locMinNumCountsForRatio))
276  {
277  locAcceptanceHist->SetBinContent(loc_m, 0.0);
278  locAcceptanceHist->SetBinError(loc_m, 0.0);
279  continue;
280  }
281 
282  double locAcceptance = locNumFound/locTotal;
283  locAcceptanceHist->SetBinContent(loc_m, locAcceptance);
284  double locNumFoundError = sqrt(locNumFound*(1.0 - locAcceptance));
285 
286  double locAcceptanceError = locNumFoundError/locTotal;
287  locAcceptanceHist->SetBinError(loc_m, locAcceptanceError);
288  }
289  locAcceptanceHist->SetEntries(locMissingHist->GetEntries() + locFoundHist->GetEntries());
290  locAcceptanceHist->SetStats(kFALSE);
291 
292  locAcceptanceHist->GetXaxis()->SetTitleSize(0.05);
293  locAcceptanceHist->GetYaxis()->SetTitleSize(0.05);
294  locAcceptanceHist->GetXaxis()->SetLabelSize(0.05);
295  locAcceptanceHist->GetYaxis()->SetLabelSize(0.05);
296  locAcceptanceHist->Draw("E1");
297  }
298 
299  locCanvas->cd(6);
300  gPad->SetTicks();
301  gPad->SetGrid();
302  if((locHist_TrackTOFR_HasHit_TOF != NULL) && (locHist_TrackTOFR_NoHit_TOF != NULL))
303  {
304  TH1I* locFoundHist = locHist_TrackTOFR_HasHit_TOF;
305  locFoundHist->Rebin(4);
306  TH1I* locMissingHist = locHist_TrackTOFR_NoHit_TOF;
307  locMissingHist->Rebin(4);
308 
309  string locHistName = string(locFoundHist->GetName()) + string("_Acceptance");
310  string locHistTitle = string("TOF Match Rate (p > 1 GeV/c);") + string(locFoundHist->GetXaxis()->GetTitle());
311  TH1D* locAcceptanceHist = new TH1D(locHistName.c_str(), locHistTitle.c_str(), locFoundHist->GetNbinsX(), locFoundHist->GetXaxis()->GetXmin(), locFoundHist->GetXaxis()->GetXmax());
312  for(Int_t loc_m = 1; loc_m <= locFoundHist->GetNbinsX(); ++loc_m)
313  {
314  double locNumMissing = locMissingHist->GetBinContent(loc_m);
315  double locNumFound = locFoundHist->GetBinContent(loc_m);
316  double locTotal = locNumMissing + locNumFound;
317  if(!(locTotal >= locMinNumCountsForRatio))
318  {
319  locAcceptanceHist->SetBinContent(loc_m, 0.0);
320  locAcceptanceHist->SetBinError(loc_m, 0.0);
321  continue;
322  }
323 
324  double locAcceptance = locNumFound/locTotal;
325  locAcceptanceHist->SetBinContent(loc_m, locAcceptance);
326  double locNumFoundError = sqrt(locNumFound*(1.0 - locAcceptance));
327 
328  double locAcceptanceError = locNumFoundError/locTotal;
329  locAcceptanceHist->SetBinError(loc_m, locAcceptanceError);
330  }
331  locAcceptanceHist->SetEntries(locMissingHist->GetEntries() + locFoundHist->GetEntries());
332  locAcceptanceHist->SetStats(kFALSE);
333 
334  locAcceptanceHist->GetXaxis()->SetRangeUser(0.0, 130.0);
335  locAcceptanceHist->GetXaxis()->SetTitleSize(0.05);
336  locAcceptanceHist->GetYaxis()->SetTitleSize(0.05);
337  locAcceptanceHist->GetXaxis()->SetLabelSize(0.05);
338  locAcceptanceHist->GetYaxis()->SetLabelSize(0.05);
339  locAcceptanceHist->Draw("E1");
340  }
341 
342  //Reset original pad margins
343  gStyle->SetPadLeftMargin(locLeftPadMargin);
344  gStyle->SetPadRightMargin(locRightPadMargin);
345  gStyle->SetPadTopMargin(locTopPadMargin);
346  gStyle->SetPadBottomMargin(locBottomPadMargin);
347 }
348 
TH2I * locHist_TrackYVsVerticalPaddle_HasHit
TH2I * locHist_TrackTOF2DPaddles_NoHit
char string[256]
double locLeftPadMargin
TH2I * locHist_PVsTheta_NoHit
double locTopPadMargin
TH2I * locHist_HorizontalPaddleVsTrackX_HasHit
double locBottomPadMargin
double locRightPadMargin
TH2I * locHist_TrackYVsVerticalPaddle_NoHit
TH2I * locHist_HorizontalPaddleVsTrackX_NoHit
TDirectory * locDirectory
TH1I * locHist_TrackTOFR_HasHit_TOF
double sqrt(double)
TH1I * locHist_TrackTOFP_NoHit_TOF
TH2I * locHist_TrackTOF2DPaddles_HasHit
TH1I * locHist_TrackTOFR_NoHit_TOF
TCanvas * locCanvas
TH2I * locHist_PVsTheta_HasHit
TH1I * locHist_TrackTOFP_HasHit_TOF