EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
QA_Draw_HCALIN_G4Hit.C
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file QA_Draw_HCALIN_G4Hit.C
1 // $Id: $
2 
11 #include <TFile.h>
12 #include <TLine.h>
13 #include <TString.h>
14 #include <TTree.h>
15 #include <cassert>
16 #include <cmath>
17 
18 //some common style files
19 #include "sPhenixStyle.C"
20 #include "QA_Draw_Utility.C"
21 using namespace std;
22 
24  const char *qa_file_name_new =
25  "/phenix/u/jinhuang/links/ePHENIX_work/sPHENIX_work/production_analysis_updates/spacal1d/fieldmap/G4Hits_sPHENIX_pi-_eta0.30_32GeV-0000.root_qa.root",
26  const char *qa_file_name_ref =
27  "/phenix/u/jinhuang/links/ePHENIX_work/sPHENIX_work/production_analysis_updates/spacal1d/fieldmap/G4Hits_sPHENIX_pi+_eta0.30_32GeV-0000.root_qa.root")
28 
29 {
31  TVirtualFitter::SetDefaultFitter("Minuit2");
32 
33  TFile *qa_file_new = new TFile(qa_file_name_new);
34  assert(qa_file_new->IsOpen());
35 
36  TFile *qa_file_ref = NULL;
37  if (qa_file_name_ref)
38  {
39  qa_file_ref = new TFile(qa_file_name_ref);
40  assert(qa_file_ref->IsOpen());
41  }
42 
43  TCanvas *c1 = new TCanvas("QA_Draw_HCALIN_G4Hit", "QA_Draw_HCALIN_G4Hit",
44  1800, 900);
45  c1->Divide(4, 2);
46  int idx = 1;
47  TPad *p;
48 
49  p = (TPad *) c1->cd(idx++);
50  c1->Update();
51  p->SetLogz();
52 
53  TH2F *h_QAG4Sim_HCALIN_G4Hit_XY = (TH2F *) qa_file_new->GetObjectChecked(
54  "h_QAG4Sim_HCALIN_G4Hit_XY", "TH2F");
55  assert(h_QAG4Sim_HCALIN_G4Hit_XY);
56  h_QAG4Sim_HCALIN_G4Hit_XY->GetYaxis()->SetTitleOffset(1.5);
57  h_QAG4Sim_HCALIN_G4Hit_XY->Draw("COLZ");
58 
59  p = (TPad *) c1->cd(idx++);
60  c1->Update();
61  p->SetLogz();
62 
63  TH2F *h_QAG4Sim_HCALIN_G4Hit_RZ = (TH2F *) qa_file_new->GetObjectChecked(
64  "h_QAG4Sim_HCALIN_G4Hit_RZ", "TH2F");
65  assert(h_QAG4Sim_HCALIN_G4Hit_RZ);
66  h_QAG4Sim_HCALIN_G4Hit_RZ->GetYaxis()->SetTitleOffset(1.5);
67  h_QAG4Sim_HCALIN_G4Hit_RZ->Draw("COLZ");
68 
69  p = (TPad *) c1->cd(idx++);
70  c1->Update();
71  // p->SetLogz();
72 
73  {
74  TH2F *h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection =
75  (TH2F *) qa_file_new->GetObjectChecked(
76  "h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection", "TH2F");
77  assert(h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection);
78 
79  TH1D *proj_new =
80  h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection->ProjectionX(
81  "qa_file_new_h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection_px");
82 
83  proj_new->Scale(1. / proj_new->GetSum());
84 
85  TH1D *proj_ref = NULL;
86  if (qa_file_ref)
87  {
88  TH2F *h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection =
89  (TH2F *) qa_file_ref->GetObjectChecked(
90  "h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection", "TH2F");
91  assert(h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection);
92 
93  proj_ref = h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection->ProjectionX(
94  "qa_file_ref_h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection_px");
95  proj_ref->Scale(1. / proj_ref->GetSum());
96  }
97 
98  proj_new->GetYaxis()->SetTitle("Normalized energy distribution");
99  // proj_new->GetXaxis()->SetRangeUser(-10, 10);
100 
101  DrawReference(proj_new, proj_ref);
102  }
103 
104  p = (TPad *) c1->cd(idx++);
105  c1->Update();
106  // p->SetLogz();
107 
108  {
109  TH2F *h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection =
110  (TH2F *) qa_file_new->GetObjectChecked(
111  "h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection", "TH2F");
112  assert(h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection);
113 
114  TH1D *proj_new =
115  h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection->ProjectionY(
116  "qa_file_new_h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection_py");
117 
118  proj_new->Scale(1. / proj_new->GetSum());
119 
120  TH1D *proj_ref = NULL;
121  if (qa_file_ref)
122  {
123  TH2F *h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection =
124  (TH2F *) qa_file_ref->GetObjectChecked(
125  "h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection", "TH2F");
126  assert(h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection);
127 
128  proj_ref = h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection->ProjectionY(
129  "qa_file_ref_h_QAG4Sim_HCALIN_G4Hit_LateralTruthProjection_py");
130  proj_ref->Scale(1. / proj_ref->GetSum());
131  }
132 
133  proj_new->GetYaxis()->SetTitle("Normalized energy distribution");
134  // proj_new->GetXaxis()->SetRangeUser(-10, 10);
135 
136  DrawReference(proj_new, proj_ref);
137  }
138 
139  p = (TPad *) c1->cd(idx++);
140  c1->Update();
141  p->SetLogx();
142  p->SetLogy();
143 
144  {
145  TH1F *h_new = (TH1F *) qa_file_new->GetObjectChecked(
146  "h_QAG4Sim_HCALIN_G4Hit_HitTime", "TH1F");
147  assert(h_new);
148 
149  h_new->Scale(1. / h_new->GetSum());
150 
151  TH1F *h_ref = NULL;
152  if (qa_file_ref)
153  {
154  h_ref = (TH1F *) qa_file_ref->GetObjectChecked(
155  "h_QAG4Sim_HCALIN_G4Hit_HitTime", "TH1F");
156  assert(h_ref);
157 
158  h_ref->Scale(1. / h_ref->GetSum());
159  }
160 
161  h_new->GetYaxis()->SetTitleOffset(1.5);
162  h_new->GetYaxis()->SetTitle("Normalized energy per bin");
163  // h_new->GetXaxis()->SetRangeUser(-0, .1);
164 
165  DrawReference(h_new, h_ref);
166  }
167 
168  p = (TPad *) c1->cd(idx++);
169  c1->Update();
170  // p->SetLogx();
171  p->SetLogy();
172 
173  {
174  TH1F *h_new = (TH1F *) qa_file_new->GetObjectChecked(
175  "h_QAG4Sim_HCALIN_G4Hit_FractionTruthEnergy", "TH1F");
176  assert(h_new);
177 
178  h_new->Rebin(20);
179  h_new->Sumw2();
180  h_new->Scale(1. / h_new->GetSum());
181 
182  TH1F *h_ref = NULL;
183  if (qa_file_ref)
184  {
185  h_ref = (TH1F *) qa_file_ref->GetObjectChecked(
186  "h_QAG4Sim_HCALIN_G4Hit_FractionTruthEnergy", "TH1F");
187  assert(h_ref);
188 
189  h_ref->Rebin(20);
190  h_ref->Scale(1. / h_ref->GetSum());
191  }
192 
193  h_new->GetYaxis()->SetTitleOffset(1.5);
194  h_new->GetYaxis()->SetTitle("Probability per bin");
195  // h_new->GetXaxis()->SetRangeUser(-0, .1);
196 
197  DrawReference(h_new, h_ref);
198  }
199 
200  p = (TPad *) c1->cd(idx++);
201  c1->Update();
202  // p->SetLogz();
203 
204  {
205  TH1F *h_new = (TH1F *) qa_file_new->GetObjectChecked(
206  "h_QAG4Sim_HCALIN_G4Hit_VSF", "TH1F");
207  assert(h_new);
208 
209  h_new->Rebin(2);
210  // h_new->Sumw2();
211  h_new->Scale(1. / h_new->GetSum());
212 
213  TH1F *h_ref = NULL;
214  if (qa_file_ref)
215  {
216  h_ref = (TH1F *) qa_file_ref->GetObjectChecked(
217  "h_QAG4Sim_HCALIN_G4Hit_VSF", "TH1F");
218  assert(h_ref);
219 
220  h_ref->Rebin(2);
221  h_ref->Scale(1. / h_ref->GetSum());
222  }
223 
224  h_new->GetYaxis()->SetTitleOffset(1.5);
225  h_new->GetYaxis()->SetTitle("Probability per bin");
226  h_new->GetXaxis()->SetRangeUser(-0, .2);
227 
228  DrawReference(h_new, h_ref);
229  }
230 
231  p = (TPad *) c1->cd(idx++);
232  c1->Update();
233  // p->SetLogz();
234 
235  {
236  TH1F *h_new = (TH1F *) qa_file_new->GetObjectChecked(
237  "h_QAG4Sim_HCALIN_G4Hit_FractionEMVisibleEnergy", "TH1F");
238  assert(h_new);
239 
240  h_new->Rebin(4);
241  h_new->Sumw2();
242  h_new->Scale(1. / h_new->GetSum());
243 
244  TH1F *h_ref = NULL;
245  if (qa_file_ref)
246  {
247  h_ref = (TH1F *) qa_file_ref->GetObjectChecked(
248  "h_QAG4Sim_HCALIN_G4Hit_FractionEMVisibleEnergy", "TH1F");
249  assert(h_ref);
250 
251  h_ref->Rebin(4);
252  h_ref->Scale(1. / h_ref->GetSum());
253  }
254 
255  h_new->GetYaxis()->SetTitleOffset(1.5);
256  h_new->GetYaxis()->SetTitle("Probability per bin");
257  // h_new->GetXaxis()->SetRangeUser(-0, .1);
258 
259  DrawReference(h_new, h_ref);
260  }
261 
262 // PutInputFileName(c1, .04, qa_file_name_new, qa_file_name_ref);
263  SaveCanvas(c1, TString(qa_file_name_new) + TString(c1->GetName()), true);
264 }