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