Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
fcal_hit_timing.C
Go to the documentation of this file.
1 
2 // hnamepath: /fcal/hitOcc2D
3 // hnamepath: /fcal/hitTmT02D
4 // hnamepath: /fcal/hitTmT0Sq2D
5 // hnamepath: /fcal/hitTmT0
6 // hnamepath: /fcal/hitT0
7 
8 {
9 
10  TDirectory *dir = (TDirectory*)gDirectory->FindObjectAny("fcal");
11  if(dir) dir->cd();
12 
13  TH2F* hitOcc2D = (TH2F*)gDirectory->FindObjectAny("hitOcc2D");
14  TH2F* hitTmT02D = (TH2F*)gDirectory->FindObjectAny("hitTmT02D");
15  TH2F* hitTmT0Sq2D = (TH2F*)gDirectory->FindObjectAny("hitTmT0Sq2D");
16  TH1I* hitTmT0 = (TH1I*)gDirectory->FindObjectAny("hitTmT0");
17  TH1I* hitT0 = (TH1I*)gDirectory->FindObjectAny("hitT0");
18 
19  if(gPad == NULL){
20 
21  TCanvas *c1 = new TCanvas( "c1", "FCAL Monitor", 800, 800 );
22  c1->cd(0);
23  c1->Draw();
24  c1->Update();
25  }
26 
27  if( !gPad ) return;
28  TCanvas* c1 = gPad->GetCanvas();
29  c1->Divide( 2, 2 );
30 
31  if( hitT0 ){
32 
33  hitT0->SetStats( 0 );
34  hitT0->SetFillColor( kYellow );
35  c1->cd( 1 );
36  hitT0->Draw();
37  }
38 
39  if( hitTmT0 ){
40 
41  hitTmT0->SetStats( 0 );
42  hitTmT0->SetFillColor( kYellow );
43  c1->cd( 2 );
44  hitTmT0->Draw();
45  }
46 
47  if( hitTmT02D && hitOcc2D ){
48 
49  TH2F* hitTmT02DAvg = (TH2F*)hitTmT02D->Clone( "hitTmT02DAvg" );
50  hitTmT02DAvg->Divide( hitOcc2D );
51 
52  for( int x = 1; x <= hitTmT02DAvg->GetNbinsX(); ++x ){
53  for( int y = 1; y <= hitTmT02DAvg->GetNbinsY(); ++y ){
54 
55  if( hitOcc2D->GetBinContent( x, y ) == 0 ){
56 
57  // set this off scale low so unused blocks
58  // appear white in the plot
59  hitTmT02DAvg->SetBinContent( x, y, -1E3 );
60  }
61  }
62  }
63 
64  hitTmT02DAvg->SetMinimum(-10 );
65  hitTmT02DAvg->SetMaximum( 10 );
66  hitTmT02DAvg->SetStats( 0 );
67  c1->cd( 3 );
68  hitTmT02DAvg->Draw( "colz" );
69  }
70 
71  if( hitTmT02D && hitTmT0Sq2D && hitOcc2D ){
72 
73  TH2F* hitTmT02DAvg = (TH2F*)hitTmT02D->Clone( "hitTmT02DAvg" );
74  TH2F* hitTmT02DRMS = (TH2F*)hitTmT02D->Clone( "hitTmT02DRMS" );
75  TH2F* hitTmT0Sq2DAvg = (TH2F*)hitTmT0Sq2D->Clone( "hitTmT0Sq2DAvg" );
76  hitTmT02DAvg->Divide( hitOcc2D );
77  hitTmT0Sq2DAvg->Divide( hitOcc2D );
78 
79  hitTmT02DRMS->SetTitle( "FCAL Local Hit Time RMS [ns]" );
80 
81  for( int x = 1; x <= hitTmT02DAvg->GetNbinsX(); ++x ){
82  for( int y = 1; y <= hitTmT02DAvg->GetNbinsY(); ++y ){
83 
84  if( hitOcc2D->GetBinContent( x, y ) != 0 ){
85 
86  double var = hitTmT0Sq2DAvg->GetBinContent( x, y );
87  var -= ( hitTmT02DAvg->GetBinContent( x, y ) *
88  hitTmT02DAvg->GetBinContent( x, y ) );
89 
90  hitTmT02DRMS->SetBinContent( x, y, TMath::Sqrt( var ) );
91  }
92  else{
93 
94  // set this off scale low so unused blocks
95  // appear white in the plot
96  hitTmT02DRMS->SetBinContent( x, y, -1 );
97  }
98  }
99  }
100 
101  hitTmT02DRMS->SetMinimum( 0 );
102  hitTmT02DRMS->SetMaximum( 10 );
103  hitTmT02DRMS->SetStats( 0 );
104  c1->cd( 4 );
105  hitTmT02DRMS->Draw( "colz" );
106  }
107 }
Double_t x[NCHANNELS]
Definition: st_tw_resols.C:39
#define y
Double_t c1[2][NMODULES]
Definition: tw_corr.C:68
static double E3[100]
TDirectory * dir
Definition: bcal_hist_eff.C:31