Skip to content

Commit 72ed8a1

Browse files
authored
Merge pull request #768 from JeffersonLab/ctof_fmwpc_offmon
added energy and timing plots
2 parents 8b1263c + 9a84a42 commit 72ed8a1

File tree

5 files changed

+328
-5
lines changed

5 files changed

+328
-5
lines changed
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
2+
// The following are special comments used by RootSpy to know
3+
// which histograms to fetch for the macro.
4+
//
5+
// hnamepath: /FMWPC/h1_ctof_dE
6+
// hnamepath: /FMWPC/h2_ctof_t
7+
// hnamepath: /FMWPC/h2_ctof_t_adc
8+
//
9+
//
10+
11+
{
12+
TDirectory *savedir = gDirectory;
13+
TDirectory *dir = (TDirectory*)gDirectory->FindObjectAny("FMWPC");
14+
if(dir) dir->cd();
15+
16+
TH1I *hr_u = (TH1I*)gDirectory->FindObjectAny("h1_ctof_occ_up");
17+
TH1I *hr_d = (TH1I*)gDirectory->FindObjectAny("h1_ctof_occ_down");
18+
19+
TH2F *h_de = (TH2F*)gDirectory->FindObjectAny("h1_ctof_dE");
20+
TH2D *h_t = (TH2D*)gDirectory->FindObjectAny("h2_ctof_t");
21+
TH2D *h_t_adc = (TH2D*)gDirectory->FindObjectAny("h2_ctof_t_adc");
22+
TH2D *h_adc_tdc = (TH2D*)gDirectory->FindObjectAny("h2_ctof_t_adc_tdc");
23+
24+
TLegend *legend_ru = new TLegend(0.5,0.85,0.7,0.9);
25+
TLegend *legend_rd = new TLegend(0.7,0.85,0.9,0.9);
26+
27+
if(hr_u){
28+
hr_u->SetBarWidth(0.5);
29+
hr_u->SetBarOffset(0);
30+
hr_u->SetFillColor(2);
31+
hr_u->SetStats(0);
32+
hr_u->SetXTitle("Bar Number");
33+
hr_u->SetYTitle("Occupancy");
34+
hr_u->SetTitleSize(0.05,"X");
35+
hr_u->GetXaxis()->CenterTitle();
36+
hr_u->SetTitleSize(0.05,"Y");
37+
hr_u->GetYaxis()->CenterTitle();
38+
hr_u->GetYaxis()->SetRangeUser(0,1.1*hr_u->GetMaximum());
39+
}
40+
if(hr_d){
41+
hr_d->SetBarWidth(0.5);
42+
hr_d->SetBarOffset(0.5);
43+
hr_d->SetFillColor(3);
44+
hr_d->SetStats(0);
45+
}
46+
47+
if(h_de){
48+
h_de->SetXTitle("Bar Number");
49+
h_de->SetYTitle("Energy GeV");
50+
h_de->SetStats(0);
51+
h_de->SetTitleSize(0.05,"X");
52+
h_de->GetXaxis()->CenterTitle();
53+
h_de->SetTitleSize(0.05,"Y");
54+
h_de->GetYaxis()->CenterTitle();
55+
}
56+
57+
if(h_t){
58+
h_t->SetXTitle("Bar Number");
59+
h_t->SetYTitle("Calibrated Time");
60+
h_t->SetStats(0);
61+
h_t->SetTitleSize(0.05,"X");
62+
h_t->GetXaxis()->CenterTitle();
63+
h_t->SetTitleSize(0.05,"Y");
64+
h_t->GetYaxis()->CenterTitle();
65+
}
66+
67+
if(h_t_adc){
68+
h_t_adc->SetXTitle("Bar Number");
69+
h_t_adc->SetYTitle("Calibrated ADC Time");
70+
h_t_adc->SetStats(0);
71+
h_t_adc->SetTitleSize(0.05,"X");
72+
h_t_adc->GetXaxis()->CenterTitle();
73+
h_t_adc->SetTitleSize(0.05,"Y");
74+
h_t_adc->GetYaxis()->CenterTitle();
75+
}
76+
77+
if(h_adc_tdc){
78+
h_adc_tdc->SetXTitle("Bar Number");
79+
h_adc_tdc->SetYTitle("ADC - TDC Time");
80+
h_adc_tdc->SetTitleSize(0.05,"X");
81+
h_adc_tdc->GetXaxis()->CenterTitle();
82+
h_adc_tdc->SetTitleSize(0.05,"Y");
83+
h_adc_tdc->GetYaxis()->CenterTitle();
84+
}
85+
86+
legend_ru->AddEntry(hr_u,"Up","f");
87+
legend_rd->AddEntry(hr_d,"Down","f");
88+
89+
if(gPad == NULL){
90+
TCanvas *c1 = new TCanvas("c1");
91+
c1->cd(0);
92+
c1->Draw();
93+
c1->Update();
94+
}
95+
if(!gPad) {savedir->cd(); return;}
96+
97+
TCanvas *c1 = gPad->GetCanvas();
98+
c1->cd(0);
99+
c1->Clear();
100+
101+
c1->Divide(3,1);
102+
103+
//TVirtualPad *pad1 = c1->cd(1);
104+
//pad1->SetTicks();
105+
//pad1->SetGridy();
106+
//if(hr_u) hr_u->Draw("BAR");
107+
//if(hr_d) hr_d->Draw("BAR sames");
108+
109+
//legend_ru->Draw();
110+
//legend_rd->Draw();
111+
112+
TVirtualPad *pad1 = c1->cd(1);
113+
pad1->SetTicks();
114+
pad1->SetGridy();
115+
if(h_de) h_de->Draw("BAR colz0");
116+
117+
TVirtualPad *pad2 = c1->cd(2);
118+
pad2->SetTicks();
119+
pad2->SetGridy();
120+
if(h_t) h_t->Draw("BAR colz0");
121+
122+
//TVirtualPad *pad4 = c1->cd(4);
123+
//pad4->SetTicks();
124+
//pad4->SetGridy();
125+
//if(h_t_adc) h_t_adc->Draw("BAR colz0");
126+
127+
TVirtualPad *pad3 = c1->cd(3);
128+
pad3->SetTicks();
129+
pad3->SetGridy();
130+
if(h_adc_tdc) h_adc_tdc->Draw("BAR colz0");
131+
132+
#ifdef ROOTSPY_MACROS
133+
// ------ The following is used by RSAI --------
134+
if( rs_GetFlag("Is_RSAI")==1 ){
135+
auto min_events = 5*rs_GetFlag("MIN_EVENTS_RSAI");
136+
if( min_events < 1 ) min_events = 5E5;
137+
if( adc_events >= min_events ) {
138+
cout << "CTOF Flagging AI check after " << adc_events << " events (>=" << min_events << ")" << endl;
139+
rs_SavePad("CTOF_occupancy", 0);
140+
rs_ResetAllMacroHistos("//CTOF_occupancy");
141+
}
142+
}
143+
#endif
144+
145+
}

src/plugins/monitoring/FMWPC_online/CTOF_occupancy.C

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
h_d->SetStats(0);
8181
}
8282

83+
8384
legend_ua->AddEntry(ha_u,"Up","f");
8485
legend_da->AddEntry(ha_d,"Down","f");
8586

@@ -100,7 +101,7 @@
100101
c1->cd(0);
101102
c1->Clear();
102103

103-
c1->Divide(1,2);
104+
c1->Divide(2,1);
104105
TVirtualPad *pad1 = c1->cd(1);
105106
pad1->SetTicks();
106107
pad1->SetGridy();
@@ -117,7 +118,7 @@
117118
if(h_d) h_d->Draw("BAR sames");
118119

119120
legend_u->Draw();
120-
legend_d->Draw();
121+
legend_d->Draw();
121122

122123
#ifdef ROOTSPY_MACROS
123124
// ------ The following is used by RSAI --------
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
// The following are special comments used by RootSpy to know
2+
// which histograms to fetch for the macro.
3+
//
4+
// hnamepath: /FMWPC/h2_fmwpc_time_chamber
5+
// hnamepath: /FMWPC/h2_fmwpc_pic_chamber
6+
{
7+
TDirectory *savedir = gDirectory;
8+
TDirectory *dir = (TDirectory*)gDirectory->FindObjectAny("FMWPC");
9+
if(dir) dir->cd();
10+
11+
//Calibrated Hit
12+
TH1F *fmwpc_hit_layer_1 = (TH1F*)gDirectory->FindObjectAny("fmwpc_hit_layer_1");
13+
TH1F *fmwpc_hit_layer_2 = (TH1F*)gDirectory->FindObjectAny("fmwpc_hit_layer_2");
14+
TH1F *fmwpc_hit_layer_3 = (TH1F*)gDirectory->FindObjectAny("fmwpc_hit_layer_3");
15+
TH1F *fmwpc_hit_layer_4 = (TH1F*)gDirectory->FindObjectAny("fmwpc_hit_layer_4");
16+
TH1F *fmwpc_hit_layer_5 = (TH1F*)gDirectory->FindObjectAny("fmwpc_hit_layer_5");
17+
TH1F *fmwpc_hit_layer_6 = (TH1F*)gDirectory->FindObjectAny("fmwpc_hit_layer_6");
18+
19+
//Chamber Times
20+
TH1F *fmwpc_time_chamber_1 = (TH1F*)gDirectory->FindObjectAny("fmwpc_time_chamber_1");
21+
TH1F *fmwpc_time_chamber_2 = (TH1F*)gDirectory->FindObjectAny("fmwpc_time_chamber_2");
22+
TH1F *fmwpc_time_chamber_3 = (TH1F*)gDirectory->FindObjectAny("fmwpc_time_chamber_3");
23+
TH1F *fmwpc_time_chamber_4 = (TH1F*)gDirectory->FindObjectAny("fmwpc_time_chamber_4");
24+
TH1F *fmwpc_time_chamber_5 = (TH1F*)gDirectory->FindObjectAny("fmwpc_time_chamber_5");
25+
TH1F *fmwpc_time_chamber_6 = (TH1F*)gDirectory->FindObjectAny("fmwpc_time_chamber_6");
26+
27+
//Chamber Pulse Integral
28+
TH1D *fmwpc_pulse_integral_chamber_1 = (TH1D*)gDirectory->FindObjectAny("fmwpc_pulse_integral_chamber_1");
29+
TH1D *fmwpc_pulse_integral_chamber_2 = (TH1D*)gDirectory->FindObjectAny("fmwpc_pulse_integral_chamber_2");
30+
TH1D *fmwpc_pulse_integral_chamber_3 = (TH1D*)gDirectory->FindObjectAny("fmwpc_pulse_integral_chamber_3");
31+
TH1D *fmwpc_pulse_integral_chamber_4 = (TH1D*)gDirectory->FindObjectAny("fmwpc_pulse_integral_chamber_4");
32+
TH1D *fmwpc_pulse_integral_chamber_5 = (TH1D*)gDirectory->FindObjectAny("fmwpc_pulse_integral_chamber_5");
33+
TH1D *fmwpc_pulse_integral_chamber_6 = (TH1D*)gDirectory->FindObjectAny("fmwpc_pulse_integral_chamber_6");
34+
35+
TH1I *fmwpc_occ_chamber = (TH1I*)gDirectory->FindObjectAny("h1_fmwpc_occ_chamber");
36+
37+
//For Rootspy
38+
TH2F *h2_fmwpc_time_chamber = (TH2F*)gDirectory->FindObjectAny("h2_fmwpc_time_chamber");
39+
TH2D *h2_fmwpc_pi_chamber = (TH2D*)gDirectory->FindObjectAny("h2_fmwpc_pi_chamber");
40+
41+
// Just for testing
42+
if(gPad == NULL){
43+
TCanvas *c1 = new TCanvas("c1");
44+
c1->cd(0);
45+
c1->Draw();
46+
c1->Update();
47+
}
48+
if(!gPad) {savedir->cd(); return;}
49+
50+
TCanvas *c1 = gPad->GetCanvas();
51+
c1->Divide(2,1);
52+
53+
TVirtualPad *pad1 = c1->cd(1);
54+
pad1->SetTicks();
55+
pad1->SetLeftMargin(0.15);
56+
pad1->SetRightMargin(0.15);
57+
if(h2_fmwpc_time_chamber){
58+
h2_fmwpc_time_chamber->SetStats(0);
59+
h2_fmwpc_time_chamber->GetXaxis()->SetLabelSize(0.05);
60+
h2_fmwpc_time_chamber->GetYaxis()->SetLabelSize(0.05);
61+
h2_fmwpc_time_chamber->GetXaxis()->SetTitleSize(0.05);
62+
h2_fmwpc_time_chamber->Draw("h colz0");
63+
}
64+
65+
TVirtualPad *pad2 = c1->cd(2);
66+
pad2->SetTicks();
67+
pad2->SetLeftMargin(0.15);
68+
pad2->SetRightMargin(0.15);
69+
if(h2_fmwpc_pi_chamber){
70+
h2_fmwpc_pi_chamber->SetStats(0);
71+
h2_fmwpc_pi_chamber->GetXaxis()->SetLabelSize(0.05);
72+
h2_fmwpc_pi_chamber->GetYaxis()->SetLabelSize(0.05);
73+
h2_fmwpc_pi_chamber->GetXaxis()->SetTitleSize(0.05);
74+
h2_fmwpc_pi_chamber->Draw("h colz0");
75+
}
76+
77+
#ifdef ROOTSPY_MACROS
78+
// ------ The following is used by RSAI --------
79+
if( rs_GetFlag("Is_RSAI")==1 ){
80+
auto min_events = 5*rs_GetFlag("MIN_EVENTS_RSAI");
81+
if( min_events < 1 ) min_events = 5E5;
82+
if( Nevents >= min_events ) {
83+
cout << "FMWPC Flagging AI check after " << Nevents << " events (>=" << min_events << ")" << endl;
84+
rs_SavePad("FMWPC_occupancy", 0);
85+
rs_ResetAllMacroHistos("//FMWPC_occupancy");
86+
}
87+
}
88+
#endif
89+
90+
}

src/plugins/monitoring/FMWPC_online/FMWPC_occupancy.C

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
double Nevents = 1.0;
2929
TH1I *fmwpc_num_events = (TH1I*)gDirectory->FindObjectAny("fmwpc_num_events");
3030
if(fmwpc_num_events) Nevents = (double)fmwpc_num_events->GetBinContent(1);
31-
31+
3232
// Just for testing
3333
if(gPad == NULL){
3434
TCanvas *c1 = new TCanvas("c1");
@@ -138,6 +138,8 @@
138138
fmwpc_norm_layer_6->Draw("h");
139139
}
140140

141+
142+
141143
#ifdef ROOTSPY_MACROS
142144
// ------ The following is used by RSAI --------
143145
if( rs_GetFlag("Is_RSAI")==1 ){

0 commit comments

Comments
 (0)