Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PS_occupancy.C
Go to the documentation of this file.
1 
2 // The following are special comments used by RootSpy to know
3 // which histograms to fetch for the macro.
4 //
5 // hnamepath: /occupancy/ps_num_events
6 // hnamepath: /occupancy/psc_adc_left_occ
7 // hnamepath: /occupancy/psc_adc_right_occ
8 // hnamepath: /occupancy/psc_tdc_left_occ
9 // hnamepath: /occupancy/psc_tdc_right_occ
10 // hnamepath: /occupancy/ps_left_occ
11 // hnamepath: /occupancy/ps_right_occ
12 //
13 // e-mail: davidl@jlab.org
14 // e-mail: somov@jlab.org
15 // e-mail: tbritton@jlab.org
16 //
17 
18 {
19  // RootSpy saves the current directory and style before
20  // calling the macro and restores it after so it is OK to
21  // change them and not change them back.
22  TDirectory *savedir = gDirectory;
23  TDirectory *dir = (TDirectory*)gDirectory->FindObjectAny("occupancy");
24  if(dir) dir->cd();
25 
26  double Nevents = 1.0;
27  TH1I *ps_num_events = (TH1I*)gDirectory->FindObjectAny("ps_num_events");
28  if(ps_num_events) Nevents = (double)ps_num_events->GetBinContent(1);
29 
30  TH1I *psc_adc_left_occ = (TH1I*)gDirectory->FindObjectAny("psc_adc_left_occ");
31  TH1I *psc_adc_right_occ = (TH1I*)gDirectory->FindObjectAny("psc_adc_right_occ");
32  TH1I *psc_tdc_left_occ = (TH1I*)gDirectory->FindObjectAny("psc_tdc_left_occ");
33  TH1I *psc_tdc_right_occ = (TH1I*)gDirectory->FindObjectAny("psc_tdc_right_occ");
34  TH1I *ps_left_occ = (TH1I*)gDirectory->FindObjectAny("ps_left_occ");
35  TH1I *ps_right_occ = (TH1I*)gDirectory->FindObjectAny("ps_right_occ");
36 
37  TLegend *legend_sa = new TLegend(0.1,0.85,0.3,0.9);
38  TLegend *legend_na = new TLegend(0.3,0.85,0.5,0.9);
39 
40  if(psc_tdc_left_occ){
41  psc_tdc_left_occ->SetBarWidth(0.5);
42  psc_tdc_left_occ->SetBarOffset(0);
43  psc_tdc_left_occ->SetFillColor(kGreen);
44  psc_tdc_left_occ->SetStats(0);
45  psc_tdc_left_occ->SetXTitle("Module number");
46  psc_tdc_left_occ->SetYTitle("fADC/TDC occupancy");
47  psc_tdc_left_occ->SetTitleSize(0.05,"X");
48  psc_tdc_left_occ->GetXaxis()->CenterTitle();
49  psc_tdc_left_occ->SetTitleSize(0.05,"Y");
50  psc_tdc_left_occ->GetYaxis()->CenterTitle();
51  }
52 
53  if(psc_adc_left_occ){
54  psc_adc_left_occ->SetBarWidth(0.5);
55  psc_adc_left_occ->SetBarOffset(0.5);
56  psc_adc_left_occ->SetFillColor(kRed);
57  psc_adc_left_occ->SetStats(0);
58  }
59 
60  if(psc_tdc_right_occ){
61  psc_tdc_right_occ->SetBarWidth(0.5);
62  psc_tdc_right_occ->SetBarOffset(0);
63  psc_tdc_right_occ->SetFillColor(kGreen);
64  psc_tdc_right_occ->SetStats(0);
65  psc_tdc_right_occ->SetXTitle("Module number");
66  psc_tdc_right_occ->SetYTitle("fADC/TDC occupancy");
67  psc_tdc_right_occ->SetTitleSize(0.05,"X");
68  psc_tdc_right_occ->GetXaxis()->CenterTitle();
69  psc_tdc_right_occ->SetTitleSize(0.05,"Y");
70  psc_tdc_right_occ->GetYaxis()->CenterTitle();
71  }
72 
73  if(psc_adc_right_occ){
74  psc_adc_right_occ->SetBarWidth(0.5);
75  psc_adc_right_occ->SetBarOffset(0.5);
76  psc_adc_right_occ->SetFillColor(kRed);
77  psc_adc_right_occ->SetStats(0);
78  }
79 
80  if(ps_left_occ){
81  ps_left_occ->SetBarWidth(0.5);
82  ps_left_occ->SetBarOffset(0);
83  ps_left_occ->SetFillColor(kRed);
84  ps_left_occ->SetStats(0);
85  ps_left_occ->SetXTitle("Column number");
86  ps_left_occ->SetYTitle("fADC occupancy");
87  ps_left_occ->SetTitleSize(0.05,"X");
88  ps_left_occ->GetXaxis()->CenterTitle();
89  ps_left_occ->SetTitleSize(0.05,"Y");
90  ps_left_occ->GetYaxis()->CenterTitle();
91  }
92 
93  if(ps_right_occ){
94  ps_right_occ->SetBarWidth(0.5);
95  ps_right_occ->SetBarOffset(0);
96  ps_right_occ->SetFillColor(kRed);
97  ps_right_occ->SetStats(0);
98  ps_right_occ->SetXTitle("Column number");
99  ps_right_occ->SetYTitle("fADC occupancy");
100  ps_right_occ->SetTitleSize(0.05,"X");
101  ps_right_occ->GetXaxis()->CenterTitle();
102  ps_right_occ->SetTitleSize(0.05,"Y");
103  ps_right_occ->GetYaxis()->CenterTitle();
104  }
105 
106  legend_sa->AddEntry(psc_tdc_left_occ,"TDC","f");
107  legend_na->AddEntry(psc_adc_left_occ,"fADC","f");
108 
109 
110  // Just for testing
111  if(gPad == NULL){
112  TCanvas *c1 = new TCanvas("c1");
113  c1->cd(0);
114  c1->Draw();
115  c1->Update();
116  }
117  if(!gPad) {savedir->cd(); return;}
118 
119  TCanvas *c1 = gPad->GetCanvas();
120  c1->cd(0);
121  c1->Clear();
122 
123  c1->Divide(2,2);
124  TVirtualPad *pad1 = c1->cd(1);
125  pad1->SetTicks();
126  pad1->SetGridy();
127  if(psc_tdc_left_occ) psc_tdc_left_occ->DrawCopy("BAR");
128  if(psc_adc_left_occ) psc_adc_left_occ->DrawCopy("BAR same");
129 
130  legend_sa->Draw();
131  legend_na->Draw();
132 
133  TVirtualPad *pad2 = c1->cd(2);
134  pad2->SetTicks();
135  pad2->SetGridy();
136  if(psc_tdc_right_occ) psc_tdc_right_occ->DrawCopy("BAR");
137  if(psc_adc_right_occ) psc_adc_right_occ->DrawCopy("BAR same");
138 
139  legend_sa->Draw();
140  legend_na->Draw();
141 
142  TVirtualPad *pad3 = c1->cd(3);
143  pad3->SetTicks();
144  pad3->SetGridy();
145  if(ps_left_occ) ps_left_occ->DrawCopy();
146 
147  legend_na->Draw("BAR");
148 
149 
150  TVirtualPad *pad4 = c1->cd(4);
151  pad4->SetTicks();
152  pad4->SetGridy();
153  if(ps_right_occ) ps_right_occ->DrawCopy();
154 
155  legend_na->Draw("BAR");
156 
157 }
static TH1I * ps_num_events
TVirtualPad * pad4
TVirtualPad * pad1
Double_t c1[2][NMODULES]
Definition: tw_corr.C:68
double Nevents
TDirectory * savedir
TDirectory * dir
Definition: bcal_hist_eff.C:31
TVirtualPad * pad3
TVirtualPad * pad2