Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
psc_mon.C
Go to the documentation of this file.
1 // Monitoring macro to check t_PSC - t_RF and the sigma of the distributions
2 
3 {
4  // Define constants
5  Int_t NMODULES = 8;
6 
7  TDirectory *mainDir = gDirectory;
8  TDirectory *pluginDir;
9 
10  mainDir->cd();
11 
12  TH1F* h_means = new TH1F("means_dt","Mean time difference for each PSC counter;Counter (1-8 left, 9-16 right);#Deltat (PSC - RF) [ns]",16,1.0,17.0);
13  TH1F* h_sigmas = new TH1F("sigmas_dt","Sigmas for time difference for each PSC counter;Counter (1-8 left, 9-16);Sigma [ns]",16,1.0,17.0);
14  TH2I* h_dt_vs_pp;
15  TH1D* h_proj;
16 
17  h_means->SetMinimum(-0.3);
18  h_means->SetMaximum(0.3);
19  h_means->GetYaxis()->SetTitleOffset(1.8);
20  h_sigmas->SetMinimum(0.08);
21  h_sigmas->SetMaximum(0.22);
22  h_sigmas->GetYaxis()->SetTitleOffset(1.8);
23 
24  for (Int_t i = 0; i < NMODULES; ++i)
25  {
26  h_dt_vs_pp = (TH2I*)gROOT->FindObject(Form("h_dt_vs_pp_l_%i",i+1));
27  h_proj = h_dt_vs_pp->ProjectionY();
28  TFitResultPtr fitptr = h_proj->Fit("gaus","sqn");
29  double fitmean = fitptr->Parameters()[1];
30  double fitsig = fitptr->Parameters()[2];
31 
32  fitptr = h_proj->Fit("gaus","sqn","",fitmean-2*fitsig,fitmean+2*fitsig);
33  fitmean = fitptr->Parameters()[1];
34  double fitmeanerr = fitptr->ParError(1);
35  fitsig = fitptr->Parameters()[2];
36  double fitsigerr = fitptr->ParError(2);
37 
38  h_means->Fill(i+1,fitmean);
39  h_means->SetBinError(i+1,fitmeanerr);
40  h_sigmas->Fill(i+1,fitsig);
41  h_sigmas->SetBinError(i+1,fitsigerr);
42 
43  h_dt_vs_pp->Reset();
44  h_proj->Reset();
45  h_dt_vs_pp = (TH2I*)gROOT->FindObject(Form("h_dt_vs_pp_r_%i",i+1));
46  h_proj = h_dt_vs_pp->ProjectionY();
47  fitptr = h_proj->Fit("gaus","sqn");
48  fitmean = fitptr->Parameters()[1];
49  fitsig = fitptr->Parameters()[2];
50 
51  fitptr = h_proj->Fit("gaus","sqn","",fitmean-2*fitsig,fitmean+2*fitsig);
52  fitmean = fitptr->Parameters()[1];
53  fitmeanerr = fitptr->ParError(1);
54  fitsig = fitptr->Parameters()[2];
55  fitsigerr = fitptr->ParError(2);
56 
57  h_means->Fill(i+NMODULES+1,fitmean);
58  h_means->SetBinError(i+NMODULES+1,fitmeanerr);
59  h_sigmas->Fill(i+NMODULES+1,fitsig);
60  h_sigmas->SetBinError(i+NMODULES+1,fitsigerr);
61  }
62 
63  TCanvas *c = NULL;
64  if (TVirtualPad::Pad() == NULL)
65  c = new TCanvas("PSC_TW","PSC_TW",1200,600);
66  else
67  c = gPad->GetCanvas();
68  c->Clear();
69  c->Divide(2,1);
70  gStyle->SetOptStat(0);
71 
72  c->cd(1);
73  TPad* pad = (TPad*)c->GetPad(1);
74  pad->SetLeftMargin(0.15);
75  if (h_means != NULL)
76  h_means->Draw("E");
77 
78  c->cd(2);
79  pad = (TPad*)c->GetPad(2);
80  pad->SetLeftMargin(0.15);
81  if (h_sigmas != NULL)
82  h_sigmas->Draw("E");
83 }
TH1D * h_proj
Definition: psc_mon.C:15
TPad * pad
Definition: psc_mon.C:73
#define c
TDirectory * pluginDir
Definition: psc_mon.C:8
TDirectory * mainDir
Definition: p2k_hists.C:2
TH2I * h_dt_vs_pp
Definition: psc_mon.C:14
TH1F * h_sigmas
Definition: psc_mon.C:13
const uint32_t NMODULES
TH1F * h_means
Definition: psc_mon.C:12