Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HistMacro_Matching_FCAL.C
Go to the documentation of this file.
1 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/FCAL/FCALTrackDistanceVsP
2 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/FCAL/FCALTrackDistanceVsTheta
3 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/FCAL/PVsTheta_HasHit
4 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/FCAL/PVsTheta_NoHit
5 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/FCAL/TrackFCALRowVsColumn_HasHit
6 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/FCAL/TrackFCALRowVsColumn_NoHit
7 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/FCAL/TrackFCALP_HasHit
8 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/FCAL/TrackFCALP_NoHit
9 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/FCAL/TrackFCALR_HasHit
10 // hnamepath: /Independent/Hist_DetectorMatching/TimeBased/FCAL/TrackFCALR_NoHit
11 {
12  double locMinNumCountsForRatio = 50.0;
13 
14  //Goto Path
15  TDirectory *locDirectory = (TDirectory*)gDirectory->FindObjectAny("Hist_DetectorMatching");
16  if(!locDirectory)
17  return;
18  locDirectory->cd();
19 
20  //Get Histograms
21  gDirectory->cd("TimeBased/FCAL");
22  TH2I* locHist_FCAL_TrackDistanceVsP = (TH2I*)gDirectory->Get("FCALTrackDistanceVsP");
23  TH2I* locHist_FCAL_TrackDistanceVsTheta = (TH2I*)gDirectory->Get("FCALTrackDistanceVsTheta");
24  TH2I* locHist_PVsTheta_HasHit_FCAL = (TH2I*)gDirectory->Get("PVsTheta_HasHit");
25  TH2I* locHist_PVsTheta_NoHit_FCAL = (TH2I*)gDirectory->Get("PVsTheta_NoHit");
26  TH2I* locHist_TrackFCALRowVsColumn_HasHit_FCAL = (TH2I*)gDirectory->Get("TrackFCALRowVsColumn_HasHit");
27  TH2I* locHist_TrackFCALRowVsColumn_NoHit_FCAL = (TH2I*)gDirectory->Get("TrackFCALRowVsColumn_NoHit");
28  TH1I* locHist_TrackFCALP_HasHit_FCAL = (TH1I*)gDirectory->Get("TrackFCALP_HasHit");
29  TH1I* locHist_TrackFCALP_NoHit_FCAL = (TH1I*)gDirectory->Get("TrackFCALP_NoHit");
30  TH1I* locHist_TrackFCALR_HasHit_FCAL = (TH1I*)gDirectory->Get("TrackFCALR_HasHit");
31  TH1I* locHist_TrackFCALR_NoHit_FCAL = (TH1I*)gDirectory->Get("TrackFCALR_NoHit");
32 
33  //Get original pad margins
34  double locLeftPadMargin = gStyle->GetPadLeftMargin();
35  double locRightPadMargin = gStyle->GetPadRightMargin();
36  double locTopPadMargin = gStyle->GetPadTopMargin();
37  double locBottomPadMargin = gStyle->GetPadBottomMargin();
38 
39  //Set new pad margins
40  gStyle->SetPadLeftMargin(0.15);
41  gStyle->SetPadRightMargin(0.15);
42 // gStyle->SetPadTopMargin(locTopPadMargin);
43 // gStyle->SetPadBottomMargin(locBottomPadMargin);
44 
45  //FCAL, by element (1 plot)
46  //Get/Make Canvas
47  TCanvas *locCanvas = NULL;
48  if(TVirtualPad::Pad() == NULL)
49  locCanvas = new TCanvas("Matching_FCAL", "Matching_FCAL", 1200, 800);
50  else
51  locCanvas = gPad->GetCanvas();
52  locCanvas->Divide(3, 2);
53 
54  //Draw
55  locCanvas->cd(1);
56  gPad->SetTicks();
57  gPad->SetGrid();
58  if(locHist_FCAL_TrackDistanceVsP != NULL)
59  {
60  locHist_FCAL_TrackDistanceVsP->Rebin2D(2, 2);
61  locHist_FCAL_TrackDistanceVsP->GetYaxis()->SetTitleOffset(1.3);
62  locHist_FCAL_TrackDistanceVsP->GetXaxis()->SetTitleSize(0.05);
63  locHist_FCAL_TrackDistanceVsP->GetYaxis()->SetTitleSize(0.05);
64  locHist_FCAL_TrackDistanceVsP->GetXaxis()->SetLabelSize(0.05);
65  locHist_FCAL_TrackDistanceVsP->GetYaxis()->SetLabelSize(0.05);
66  locHist_FCAL_TrackDistanceVsP->Draw("COLZ");
67  TF1* locFunc = new TF1("FCAL_LCut_VsP", "2.75", 0.0, 10.0);
68  locFunc->Draw("SAME");
69  }
70 
71  locCanvas->cd(2);
72  gPad->SetTicks();
73  gPad->SetGrid();
74  if(locHist_FCAL_TrackDistanceVsTheta != NULL)
75  {
76  locHist_FCAL_TrackDistanceVsTheta->Rebin2D(2, 2);
77  locHist_FCAL_TrackDistanceVsTheta->GetYaxis()->SetTitleOffset(1.3);
78  locHist_FCAL_TrackDistanceVsTheta->GetXaxis()->SetTitleSize(0.05);
79  locHist_FCAL_TrackDistanceVsTheta->GetYaxis()->SetTitleSize(0.05);
80  locHist_FCAL_TrackDistanceVsTheta->GetXaxis()->SetLabelSize(0.05);
81  locHist_FCAL_TrackDistanceVsTheta->GetYaxis()->SetLabelSize(0.05);
82  locHist_FCAL_TrackDistanceVsTheta->Draw("COLZ");
83  TF1* locFunc = new TF1("FCAL_LCut_VsTheta", "2.75*(1.+0.002*x*x)", 0.0, 20.0);
84  locFunc->Draw("SAME");
85  }
86 
87  locCanvas->cd(3);
88  gPad->SetTicks();
89  gPad->SetGrid();
90  if((locHist_PVsTheta_HasHit_FCAL != NULL) && (locHist_PVsTheta_NoHit_FCAL != NULL))
91  {
92  locHist_PVsTheta_HasHit_FCAL->Rebin2D(8, 5); //280x250 -> 35x50
93  locHist_PVsTheta_NoHit_FCAL->Rebin2D(8, 5); //280x250 -> 35x50
94 
95  TH2I* locFoundHist = locHist_PVsTheta_HasHit_FCAL;
96  TH2I* locMissingHist = locHist_PVsTheta_NoHit_FCAL;
97  string locHistName = string(locFoundHist->GetName()) + string("_Acceptance");
98  string locHistTitle = string("Track / FCAL Match Rate;") + string(locFoundHist->GetXaxis()->GetTitle()) + string(";") + string(locFoundHist->GetYaxis()->GetTitle());
99  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());
100  for(Int_t loc_m = 1; loc_m <= locFoundHist->GetNbinsX(); ++loc_m)
101  {
102  for(Int_t loc_j = 1; loc_j <= locFoundHist->GetNbinsY(); ++loc_j)
103  {
104  double locNumMissing = locMissingHist->GetBinContent(loc_m, loc_j);
105  double locNumFound = locFoundHist->GetBinContent(loc_m, loc_j);
106  double locTotal = locNumMissing + locNumFound;
107  if(!(locTotal >= locMinNumCountsForRatio))
108  {
109  locAcceptanceHist->SetBinContent(loc_m, loc_j, 0.0);
110  locAcceptanceHist->SetBinError(loc_m, loc_j, 1.0/0.0);
111  continue;
112  }
113 
114  double locAcceptance = locNumFound/locTotal;
115  if(!(locAcceptance > 0.0))
116  locAcceptance = 0.00001; //so that it shows up on the histogram
117  locAcceptanceHist->SetBinContent(loc_m, loc_j, locAcceptance);
118  double locNumFoundError = sqrt(locNumFound*(1.0 - locAcceptance));
119 
120  double locAcceptanceError = locNumFoundError/locTotal;
121  locAcceptanceHist->SetBinError(loc_m, loc_j, locAcceptanceError);
122  }
123  }
124  locAcceptanceHist->SetEntries(locMissingHist->GetEntries() + locFoundHist->GetEntries());
125  locAcceptanceHist->SetStats(kFALSE);
126  locAcceptanceHist->GetYaxis()->SetTitleOffset(1.3);
127  locAcceptanceHist->GetXaxis()->SetTitleSize(0.05);
128  locAcceptanceHist->GetYaxis()->SetTitleSize(0.05);
129  locAcceptanceHist->GetXaxis()->SetLabelSize(0.05);
130  locAcceptanceHist->GetYaxis()->SetLabelSize(0.05);
131  locAcceptanceHist->Draw("COLZ");
132  }
133 
134  locCanvas->cd(4);
135  gPad->SetTicks();
136  gPad->SetGrid();
137  if((locHist_TrackFCALRowVsColumn_HasHit_FCAL != NULL) && (locHist_TrackFCALRowVsColumn_NoHit_FCAL != NULL))
138  {
139  TH2I* locFoundHist = locHist_TrackFCALRowVsColumn_HasHit_FCAL;
140  TH2I* locMissingHist = locHist_TrackFCALRowVsColumn_NoHit_FCAL;
141  string locHistName = string(locFoundHist->GetName()) + string("_Acceptance");
142  string locHistTitle = string("FCAL Match Rate (p > 1 GeV/c);") + string(locFoundHist->GetXaxis()->GetTitle()) + string(";") + string(locFoundHist->GetYaxis()->GetTitle());
143  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());
144  for(Int_t loc_m = 1; loc_m <= locFoundHist->GetNbinsX(); ++loc_m)
145  {
146  for(Int_t loc_j = 1; loc_j <= locFoundHist->GetNbinsY(); ++loc_j)
147  {
148  double locNumMissing = locMissingHist->GetBinContent(loc_m, loc_j);
149  double locNumFound = locFoundHist->GetBinContent(loc_m, loc_j);
150  double locTotal = locNumMissing + locNumFound;
151  if(!(locTotal >= locMinNumCountsForRatio))
152  {
153  locAcceptanceHist->SetBinContent(loc_m, loc_j, 0.0);
154  locAcceptanceHist->SetBinError(loc_m, loc_j, 1.0/0.0);
155  continue;
156  }
157 
158  double locAcceptance = locNumFound/locTotal;
159  if(!(locAcceptance > 0.0))
160  locAcceptance = 0.00001; //so that it shows up on the histogram
161  locAcceptanceHist->SetBinContent(loc_m, loc_j, locAcceptance);
162  double locNumFoundError = sqrt(locNumFound*(1.0 - locAcceptance));
163 
164  double locAcceptanceError = locNumFoundError/locTotal;
165  locAcceptanceHist->SetBinError(loc_m, loc_j, locAcceptanceError);
166  }
167  }
168  locAcceptanceHist->SetEntries(locMissingHist->GetEntries() + locFoundHist->GetEntries());
169  locAcceptanceHist->SetStats(kFALSE);
170  locAcceptanceHist->GetYaxis()->SetTitleOffset(1.3);
171  locAcceptanceHist->GetXaxis()->SetTitleSize(0.05);
172  locAcceptanceHist->GetYaxis()->SetTitleSize(0.05);
173  locAcceptanceHist->GetXaxis()->SetLabelSize(0.05);
174  locAcceptanceHist->GetYaxis()->SetLabelSize(0.05);
175  locAcceptanceHist->Draw("COLZ");
176  }
177 
178  locCanvas->cd(5);
179  gPad->SetTicks();
180  gPad->SetGrid();
181  if((locHist_TrackFCALP_HasHit_FCAL != NULL) && (locHist_TrackFCALP_NoHit_FCAL != NULL))
182  {
183  TH1I* locFoundHist = locHist_TrackFCALP_HasHit_FCAL;
184  locFoundHist->Rebin(4);
185  TH1I* locMissingHist = locHist_TrackFCALP_NoHit_FCAL;
186  locMissingHist->Rebin(4);
187 
188  string locHistName = string(locFoundHist->GetName()) + string("_Acceptance");
189  string locHistTitle = string("Track / FCAL Match Rate;") + string(locFoundHist->GetXaxis()->GetTitle());
190  TH1D* locAcceptanceHist = new TH1D(locHistName.c_str(), locHistTitle.c_str(), locFoundHist->GetNbinsX(), locFoundHist->GetXaxis()->GetXmin(), locFoundHist->GetXaxis()->GetXmax());
191  for(Int_t loc_m = 1; loc_m <= locFoundHist->GetNbinsX(); ++loc_m)
192  {
193  double locNumMissing = locMissingHist->GetBinContent(loc_m);
194  double locNumFound = locFoundHist->GetBinContent(loc_m);
195  double locTotal = locNumMissing + locNumFound;
196  if(!(locTotal >= locMinNumCountsForRatio))
197  {
198  locAcceptanceHist->SetBinContent(loc_m, 0.0);
199  locAcceptanceHist->SetBinError(loc_m, 0.0);
200  continue;
201  }
202 
203  double locAcceptance = locNumFound/locTotal;
204  locAcceptanceHist->SetBinContent(loc_m, locAcceptance);
205  double locNumFoundError = sqrt(locNumFound*(1.0 - locAcceptance));
206 
207  double locAcceptanceError = locNumFoundError/locTotal;
208  locAcceptanceHist->SetBinError(loc_m, locAcceptanceError);
209  }
210  locAcceptanceHist->SetEntries(locMissingHist->GetEntries() + locFoundHist->GetEntries());
211  locAcceptanceHist->SetStats(kFALSE);
212 
213  locAcceptanceHist->GetXaxis()->SetTitleSize(0.05);
214  locAcceptanceHist->GetYaxis()->SetTitleSize(0.05);
215  locAcceptanceHist->GetXaxis()->SetLabelSize(0.05);
216  locAcceptanceHist->GetYaxis()->SetLabelSize(0.05);
217  locAcceptanceHist->Draw("E1");
218  }
219 
220  locCanvas->cd(6);
221  gPad->SetTicks();
222  gPad->SetGrid();
223  if((locHist_TrackFCALR_HasHit_FCAL != NULL) && (locHist_TrackFCALR_NoHit_FCAL != NULL))
224  {
225  TH1I* locFoundHist = locHist_TrackFCALR_HasHit_FCAL;
226  locFoundHist->Rebin(2);
227  TH1I* locMissingHist = locHist_TrackFCALR_NoHit_FCAL;
228  locMissingHist->Rebin(2);
229 
230  string locHistName = string(locFoundHist->GetName()) + string("_Acceptance");
231  string locHistTitle = string("FCAL Match Rate (p > 1 GeV/c);") + string(locFoundHist->GetXaxis()->GetTitle());
232  TH1D* locAcceptanceHist = new TH1D(locHistName.c_str(), locHistTitle.c_str(), locFoundHist->GetNbinsX(), locFoundHist->GetXaxis()->GetXmin(), locFoundHist->GetXaxis()->GetXmax());
233  for(Int_t loc_m = 1; loc_m <= locFoundHist->GetNbinsX(); ++loc_m)
234  {
235  double locNumMissing = locMissingHist->GetBinContent(loc_m);
236  double locNumFound = locFoundHist->GetBinContent(loc_m);
237  double locTotal = locNumMissing + locNumFound;
238  if(!(locTotal >= locMinNumCountsForRatio))
239  {
240  locAcceptanceHist->SetBinContent(loc_m, 0.0);
241  locAcceptanceHist->SetBinError(loc_m, 0.0);
242  continue;
243  }
244 
245  double locAcceptance = locNumFound/locTotal;
246  locAcceptanceHist->SetBinContent(loc_m, locAcceptance);
247  double locNumFoundError = sqrt(locNumFound*(1.0 - locAcceptance));
248 
249  double locAcceptanceError = locNumFoundError/locTotal;
250  locAcceptanceHist->SetBinError(loc_m, locAcceptanceError);
251  }
252  locAcceptanceHist->SetEntries(locMissingHist->GetEntries() + locFoundHist->GetEntries());
253  locAcceptanceHist->SetStats(kFALSE);
254 
255  locAcceptanceHist->GetXaxis()->SetTitleSize(0.05);
256  locAcceptanceHist->GetYaxis()->SetTitleSize(0.05);
257  locAcceptanceHist->GetXaxis()->SetLabelSize(0.05);
258  locAcceptanceHist->GetYaxis()->SetLabelSize(0.05);
259  locAcceptanceHist->Draw("E1");
260  }
261 
262  //Reset original pad margins
263  gStyle->SetPadLeftMargin(locLeftPadMargin);
264  gStyle->SetPadRightMargin(locRightPadMargin);
265  gStyle->SetPadTopMargin(locTopPadMargin);
266  gStyle->SetPadBottomMargin(locBottomPadMargin);
267 }
268 
TH1I * locHist_TrackFCALR_HasHit_FCAL
char string[256]
double locLeftPadMargin
TH2I * locHist_TrackFCALRowVsColumn_NoHit_FCAL
double locTopPadMargin
TH1I * locHist_TrackFCALP_NoHit_FCAL
double locBottomPadMargin
double locRightPadMargin
TH2I * locHist_FCAL_TrackDistanceVsTheta
TH1I * locHist_TrackFCALP_HasHit_FCAL
TDirectory * locDirectory
TH2I * locHist_PVsTheta_HasHit_FCAL
TH2I * locHist_FCAL_TrackDistanceVsP
TH2I * locHist_PVsTheta_NoHit_FCAL
TH1I * locHist_TrackFCALR_NoHit_FCAL
double sqrt(double)
TH2I * locHist_TrackFCALRowVsColumn_HasHit_FCAL
TCanvas * locCanvas