Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Calibration/HLDetectorTiming/HistMacro_OnlineCalorimeter.C
Go to the documentation of this file.
1 // hnamepath: /HLDetectorTiming/BCAL/BCALHit ADC time
2 // hnamepath: /HLDetectorTiming/BCAL/BCALHit TDC time
3 // hnamepath: /HLDetectorTiming/BCAL/BCALHit Downstream Per Channel TDC-ADC Hit Time
4 // hnamepath: /HLDetectorTiming/BCAL/BCALHit Upstream Per Channel TDC-ADC Hit Time
5 // hnamepath: /HLDetectorTiming/FCAL/FCALHit time
6 // hnamepath: /HLDetectorTiming/FCAL/FCALHit Local Time
7 // hnamepath: /HLDetectorTiming/FCAL/FCALHit Occupancy
8 
9 {
10  //Goto Path
11  TDirectory *locDirectory = (TDirectory*)gDirectory->FindObjectAny("HLDetectorTiming");
12  if(!locDirectory)
13  return;
14  locDirectory->cd();
15 
16  //Setpoints
17  double nominalFCALTime = 17.;
18  double nominalBCALADCTime = 15.;
19  double nominalBCALTDCTime = 15.;
20 
21  //Get Histograms
22  TH1I* BCAL_ADC_Timing = (TH1I*)gDirectory->Get("BCAL/BCALHit ADC time");
23  TH1I* BCAL_TDC_Timing = (TH1I*)gDirectory->Get("BCAL/BCALHit TDC time");
24  TH1I* BCAL_TDC_ADC_DS_Timing = (TH1I*)gDirectory->Get("BCAL/BCALHit Downstream Per Channel TDC-ADC Hit Time");
25  TH1I* BCAL_TDC_ADC_US_Timing = (TH1I*)gDirectory->Get("BCAL/BCALHit Upstream Per Channel TDC-ADC Hit Time");
26  TH1I* FCAL_ADC_Timing = (TH1I*)gDirectory->Get("FCAL/FCALHit time");
27  TH1I* FCAL_Local_Timing = (TH1I*)gDirectory->Get("FCAL/FCALHit Local Time");
28  TH1I* FCAL_Occupancy = (TH1I*)gDirectory->Get("FCAL/FCALHit Occupancy");
29 
30  //Get/Make Canvas
31  TCanvas *locCanvas = NULL;
32  if(TVirtualPad::Pad() == NULL)
33  locCanvas = new TCanvas("OnlineCalorimeter", "OnlineCalorimeter", 1200, 800); //for testing
34  else
35  locCanvas = gPad->GetCanvas();
36  locCanvas->Divide(3, 2);
37 
38  //Draw
39  locCanvas->cd(1);
40  gPad->SetTicks();
41  gPad->SetGrid();
42  if(FCAL_ADC_Timing != NULL)
43  {
44  FCAL_ADC_Timing->GetXaxis()->SetRangeUser(-200,200);
45  FCAL_ADC_Timing->Draw();
46  FCAL_ADC_Timing->SetFillColor(kGray);
47  locCanvas->Update();
48 
49  TLine *ln = new TLine(nominalFCALTime, gPad->GetUymin(), nominalFCALTime, gPad->GetUymax());
50  ln->SetLineColor(2);
51  ln->Draw();
52  }
53  else{
54  TPaveText *text = new TPaveText(0.1, 0.4, 0.9, 0.6);
55  text->AddText("No FCAL ADC hits!");
56  text->Draw();
57  }
58 
59  locCanvas->cd(2);
60  gPad->SetTicks();
61  gPad->SetGrid();
62  if(BCAL_ADC_Timing != NULL)
63  {
64  BCAL_ADC_Timing->GetXaxis()->SetRangeUser(-200,200);
65  BCAL_ADC_Timing->Draw();
66  BCAL_ADC_Timing->SetFillColor(kGray);
67  locCanvas->Update();
68 
69  TLine *ln = new TLine(nominalFCALTime, gPad->GetUymin(), nominalBCALADCTime, gPad->GetUymax());
70  ln->SetLineColor(2);
71  ln->Draw();
72  }
73  else{
74  TPaveText *text = new TPaveText(0.1, 0.4, 0.9, 0.6);
75  text->AddText("No BCAL ADC hits!");
76  text->Draw();
77  }
78 
79  locCanvas->cd(3);
80  gPad->SetTicks();
81  gPad->SetGrid();
82  if(BCAL_TDC_Timing != NULL)
83  {
84  BCAL_TDC_Timing->GetXaxis()->SetRangeUser(-200,200);
85  BCAL_TDC_Timing->Draw();
86  BCAL_TDC_Timing->SetFillColor(kGray);
87  locCanvas->Update();
88 
89  TLine *ln = new TLine(nominalFCALTime, gPad->GetUymin(), nominalBCALTDCTime, gPad->GetUymax());
90  ln->SetLineColor(2);
91  ln->Draw();
92  }
93  else{
94  TPaveText *text = new TPaveText(0.1, 0.4, 0.9, 0.6);
95  text->AddText("No BCAL TDC hits!");
96  text->Draw();
97  }
98 
99 
100  locCanvas->cd(4);
101  gPad->SetTicks();
102  gPad->SetGrid();
103  if(FCAL_Local_Timing != NULL && FCAL_Occupancy != NULL)
104  {
105  TH2F* FCAL_Avg_Timing = (TH2F*)FCAL_Local_Timing->Clone( "FCALHit Local Time" );
106  FCAL_Avg_Timing->Divide( FCAL_Occupancy );
107 
108  for( int x = 1; x <= FCAL_Avg_Timing->GetNbinsX(); ++x ){
109  for( int y = 1; y <= FCAL_Avg_Timing->GetNbinsY(); ++y ){
110 
111  if( FCAL_Occupancy->GetBinContent( x, y ) == 0 ){
112 
113  // set this off scale low so unused blocks
114  // appear white in the plot
115  FCAL_Avg_Timing->SetBinContent( x, y, -1E3 );
116  }
117  }
118  }
119 
120  FCAL_Avg_Timing->SetMinimum(-10 );
121  FCAL_Avg_Timing->SetMaximum( 10 );
122  FCAL_Avg_Timing->SetStats( 0 );
123  FCAL_Avg_Timing->Draw( "colz" );
124 
125  }
126  else{
127  TPaveText *text = new TPaveText(0.1, 0.4, 0.9, 0.6);
128  text->AddText("No FCAL ADC hits!");
129  text->Draw();
130  }
131 
132 
133  locCanvas->cd(5);
134  gPad->SetTicks();
135  gPad->SetGrid();
136  if(BCAL_TDC_ADC_DS_Timing != NULL)
137  {
138  BCAL_TDC_ADC_DS_Timing->Draw("COLZ");
139  }
140  else{
141  TPaveText *text = new TPaveText(0.1, 0.4, 0.9, 0.6);
142  text->AddText("No BCAL ADC and TDC hits!");
143  text->Draw();
144  }
145 
146 
147  locCanvas->cd(6);
148  gPad->SetTicks();
149  gPad->SetGrid();
150  if(BCAL_TDC_ADC_US_Timing != NULL)
151  {
152  BCAL_TDC_ADC_US_Timing->Draw("COLZ");
153  }
154  else{
155  TPaveText *text = new TPaveText(0.1, 0.4, 0.9, 0.6);
156  text->AddText("No BCAL ADC and TDC hits!");
157  text->Draw();
158  }
159 
160 
161 }
162 
Double_t x[NCHANNELS]
Definition: st_tw_resols.C:39
#define y
static double E3[100]
TDirectory * locDirectory
TCanvas * locCanvas
char text[100]