Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ccal_dig_pedestal.C
Go to the documentation of this file.
1 // hnamepath: /ccal/digOcc2D
2 // hnamepath: /ccal/digPed2D
3 // hnamepath: /ccal/digPedSq2D
4 // hnamepath: /ccal/digPed
5 // hnamepath: /ccal/digPedChan
6 
7 {
8 
9  TDirectory *dir = (TDirectory*)gDirectory->FindObjectAny("ccal");
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", "CCAL 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  //digPed->GetXaxis()->SetRangeUser(200,600);
35  c1->cd( 1 );
36  digPed->Draw();
37  }
38 
39  if( digPedChan ){
40 
41  digPedChan->SetStats( 0 );
42  digPedChan->GetYaxis()->SetRangeUser(300,500);
43  c1->cd( 2 );
44  digPedChan->Draw();
45  }
46 
47  if( digPed2D && digOcc2D && digPed ){
48 
49  TH2F* digPed2DAvg = (TH2F*)digPed2D->Clone( "digPed2DAvg" );
50  digPed2DAvg->Divide( digOcc2D );
51  double avgPed = digPed->GetMean();
52  digPed2DAvg->SetTitle( "CCAL Pedestal - Average Pedestal" );
53 
54  for( int x = 1; x <= digPed2DAvg->GetNbinsX(); ++x ){
55  for( int y = 1; y <= digPed2DAvg->GetNbinsY(); ++y ){
56 
57  digPed2DAvg->SetBinContent( x, y, digPed2DAvg->GetBinContent( x, y ) - avgPed );
58  }
59  }
60 
61  digPed2DAvg->SetStats( 0 );
62  digPed2DAvg->SetMinimum( -0.2*avgPed );
63  digPed2DAvg->SetMaximum( 0.2*avgPed );
64  c1->cd( 3 );
65  digPed2DAvg->Draw( "colz" );
66  }
67 
68  if( digPed2D && digPedSq2D && digOcc2D && digPed ){
69 
70  TH2F* digPed2DAvg = (TH2F*)digPed2D->Clone( "digPed2DAvg" );
71  TH2F* digPed2DRMS = (TH2F*)digPed2D->Clone( "digPed2DRMS" );
72  TH2F* digPedSq2DAvg = (TH2F*)digPedSq2D->Clone( "digPedSq2DAvg" );
73  digPed2DAvg->Divide( digOcc2D );
74  digPedSq2DAvg->Divide( digOcc2D );
75 
76  digPed2DRMS->SetTitle( "CCAL Pedestal RMS [ADC Counts]" );
77 
78  for( int x = 1; x <= digPed2DAvg->GetNbinsX(); ++x ){
79  for( int y = 1; y <= digPed2DAvg->GetNbinsY(); ++y ){
80 
81  double var = digPedSq2DAvg->GetBinContent( x, y );
82  var -= ( digPed2DAvg->GetBinContent( x, y ) *
83  digPed2DAvg->GetBinContent( x, y ) );
84 
85  if( digOcc2D->GetBinContent( x, y ) != 0 ){
86 
87  digPed2DRMS->SetBinContent( x, y, TMath::Sqrt( var ) );
88  }
89  else{
90 
91  // set these below minimum so that they appear
92  // white in the histogram
93  digPed2DRMS->SetBinContent( x, y, -1 );
94  }
95  }
96  }
97 
98  digPed2DRMS->SetStats( 0 );
99  digPed2DRMS->SetMinimum( 0 );
100  c1->cd( 4 );
101  digPed2DRMS->Draw( "colz" );
102  }
103 }
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