ROOT logo
/**
 * @file   DrawOccupancy.C
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Thu Jul  7 10:24:58 2011
 * 
 * @brief  A script to draw the occupancy as given by Poisson method
 *
 * @deprecated Use QATrender instead
 * @ingroup pwglf_forward_scripts_qa
 * 
 */
#ifndef __CINT__
# include <TH1.h>
# include <TH2.h>
# include <TList.h>
# include <TFile.h>
# include <TString.h>
# include <TError.h>
# include <TPad.h>
# include <TCanvas.h>
# include <TLine.h>
# include <TLatex.h>
# include <TStyle.h>
#else
class TList;
#endif

/** 
 * Draw the Poisson estimate of the occupancy in a given ring.
 * 
 * @param p            List 
 * @param d            Detector
 * @param r            Ring
 * 
 * @return The occupancy (in percent)
 *
 * @deprecated Use QATrender instead
 * @ingroup pwglf_forward_scripts_qa
 */
Double_t
DrawRingOccupancy(TList* p, UShort_t d, Char_t r)
{
  if (!p) return 0;

  TList* ring = static_cast<TList*>(p->FindObject(Form("FMD%d%c",d,r)));
  if (!ring) { 
    Error("DrawOccupancy", "List FMD%d%c not found in %s",d,r,p->GetName());
    return 0;
  }
  
  TH1* corr = static_cast<TH1*>(ring->FindObject("occupancy"));
  if (!corr) { 
    Error("DrawRingOccupancy", "Histogram occupancy not found in FMD%d%c",
	  d, r);
    return 0;
  }
  corr->Rebin(4);

  TPad* pad = static_cast<TPad*>(gPad);
  pad->SetGridy();
  pad->SetGridx();
  pad->SetLogy();
  pad->SetFillColor(0);
    pad->SetRightMargin(0.01);
#if 0
  if (d == 3) { 
    pad->SetPad(pad->GetXlowNDC(), pad->GetYlowNDC(), .99, 
		 pad->GetYlowNDC()+pad->GetHNDC());
    pad->SetRightMargin(0.15);
  }
#endif

  corr->Draw("hist");

  TLatex* ltx = new TLatex(.95, .95, Form("FMD%d%c", d, r));
  ltx->SetNDC();
  ltx->SetTextAlign(33);
  ltx->SetTextSize(.08);
  ltx->Draw();

  return corr->GetMean();
}

/** 
 * Draw the Poisson estimate of the occupancy
 * 
 * @param filename Input file name 
 * @param folder   Input folder name in file
 * 
 * @deprecated Use QATrender instead
 * @ingroup pwglf_forward_scripts_qa
 */
void
DrawOccupancy(const char* filename="forward.root", 
	      const char* folder="ForwardResults")
{
  gStyle->SetPalette(1);
  gStyle->SetOptFit(0);
  gStyle->SetOptStat(0);
  gStyle->SetOptTitle(0);
  gStyle->SetTitleW(.4);
  gStyle->SetTitleH(.1);
  gStyle->SetTitleX(.4);
  // gStyle->SetTitleY(.1);
  gStyle->SetTitleColor(0);
  gStyle->SetTitleStyle(0);
  gStyle->SetTitleBorderSize(0);
  
  TFile* file = TFile::Open(filename, "READ");
  if (!file) { 
    Error("DrawOccupancy", "failed to open %s", filename);
    return;
  }

  TList* forward = static_cast<TList*>(file->Get(folder));
  if (!forward) { 
    Error("DrawOccupancy", "List %s not found in %s", folder, filename);
    return;
  }

  TList* dc = static_cast<TList*>(forward->FindObject("fmdDensityCalculator"));
  if (!dc) { 
    Error("DrawOccupancy", "List fmdDensityCalculator not found in Forward");
    return;
  }
  
  TCanvas* c = new TCanvas("occupancy", 
			   "Mean Occupancy", 900, 700);
  c->SetFillColor(0);
  c->SetBorderSize(0);
  c->SetBorderMode(0);
  c->SetHighLightColor(0);
  c->SetBottomMargin(.15);
  c->SetTopMargin(.02);
  c->SetRightMargin(.02);
  c->SetLeftMargin(.15);
  c->Divide(3, 2, 0, 0);
  

  Double_t corrs[5];
  c->cd(1); corrs[0] = DrawRingOccupancy(dc, 1, 'I');
  c->cd(2); corrs[1] = DrawRingOccupancy(dc, 2, 'I');
  c->cd(5); corrs[2] = DrawRingOccupancy(dc, 2, 'O');
  c->cd(3); corrs[3] = DrawRingOccupancy(dc, 3, 'I');
  c->cd(6); corrs[4] = DrawRingOccupancy(dc, 3, 'O');

  TVirtualPad* p = c->cd(4);
  p->SetTopMargin(0.05);
  p->SetRightMargin(0.10);
  p->SetLeftMargin(0.15);
  p->SetBottomMargin(0.15);
  p->SetFillColor(0);

  TH1D* hc = new TH1D("occ", "Mean occupancy", 5, .5, 5.5);
  hc->SetFillColor(kRed+1);
  hc->SetFillStyle(3001);
  hc->SetMinimum(0.0);
  hc->GetXaxis()->SetBinLabel(1,"FMD1i"); hc->SetBinContent(1,corrs[0]);
  hc->GetXaxis()->SetBinLabel(2,"FMD2i"); hc->SetBinContent(2,corrs[1]);
  hc->GetXaxis()->SetBinLabel(3,"FMD2o"); hc->SetBinContent(3,corrs[2]);
  hc->GetXaxis()->SetBinLabel(4,"FMD3i"); hc->SetBinContent(4,corrs[3]);
  hc->GetXaxis()->SetBinLabel(5,"FMD3o"); hc->SetBinContent(5,corrs[4]);
  hc->GetXaxis()->SetLabelSize(0.08);
  hc->GetYaxis()->SetTitle("#bar{occupancy}");
  hc->SetMarkerSize(1.5);
  hc->Draw("text hist");
  hc->SetMaximum(hc->GetMaximum()*1.5);

  // TH2D* highCuts = static_cast<TH2D*>(dc->FindObject("highCuts"));
  // if (highCuts) highCuts->Draw("colz");
  c->cd();
  c->SaveAs("occupancy.png");
}
//
// EOF
//
 DrawOccupancy.C:1
 DrawOccupancy.C:2
 DrawOccupancy.C:3
 DrawOccupancy.C:4
 DrawOccupancy.C:5
 DrawOccupancy.C:6
 DrawOccupancy.C:7
 DrawOccupancy.C:8
 DrawOccupancy.C:9
 DrawOccupancy.C:10
 DrawOccupancy.C:11
 DrawOccupancy.C:12
 DrawOccupancy.C:13
 DrawOccupancy.C:14
 DrawOccupancy.C:15
 DrawOccupancy.C:16
 DrawOccupancy.C:17
 DrawOccupancy.C:18
 DrawOccupancy.C:19
 DrawOccupancy.C:20
 DrawOccupancy.C:21
 DrawOccupancy.C:22
 DrawOccupancy.C:23
 DrawOccupancy.C:24
 DrawOccupancy.C:25
 DrawOccupancy.C:26
 DrawOccupancy.C:27
 DrawOccupancy.C:28
 DrawOccupancy.C:29
 DrawOccupancy.C:30
 DrawOccupancy.C:31
 DrawOccupancy.C:32
 DrawOccupancy.C:33
 DrawOccupancy.C:34
 DrawOccupancy.C:35
 DrawOccupancy.C:36
 DrawOccupancy.C:37
 DrawOccupancy.C:38
 DrawOccupancy.C:39
 DrawOccupancy.C:40
 DrawOccupancy.C:41
 DrawOccupancy.C:42
 DrawOccupancy.C:43
 DrawOccupancy.C:44
 DrawOccupancy.C:45
 DrawOccupancy.C:46
 DrawOccupancy.C:47
 DrawOccupancy.C:48
 DrawOccupancy.C:49
 DrawOccupancy.C:50
 DrawOccupancy.C:51
 DrawOccupancy.C:52
 DrawOccupancy.C:53
 DrawOccupancy.C:54
 DrawOccupancy.C:55
 DrawOccupancy.C:56
 DrawOccupancy.C:57
 DrawOccupancy.C:58
 DrawOccupancy.C:59
 DrawOccupancy.C:60
 DrawOccupancy.C:61
 DrawOccupancy.C:62
 DrawOccupancy.C:63
 DrawOccupancy.C:64
 DrawOccupancy.C:65
 DrawOccupancy.C:66
 DrawOccupancy.C:67
 DrawOccupancy.C:68
 DrawOccupancy.C:69
 DrawOccupancy.C:70
 DrawOccupancy.C:71
 DrawOccupancy.C:72
 DrawOccupancy.C:73
 DrawOccupancy.C:74
 DrawOccupancy.C:75
 DrawOccupancy.C:76
 DrawOccupancy.C:77
 DrawOccupancy.C:78
 DrawOccupancy.C:79
 DrawOccupancy.C:80
 DrawOccupancy.C:81
 DrawOccupancy.C:82
 DrawOccupancy.C:83
 DrawOccupancy.C:84
 DrawOccupancy.C:85
 DrawOccupancy.C:86
 DrawOccupancy.C:87
 DrawOccupancy.C:88
 DrawOccupancy.C:89
 DrawOccupancy.C:90
 DrawOccupancy.C:91
 DrawOccupancy.C:92
 DrawOccupancy.C:93
 DrawOccupancy.C:94
 DrawOccupancy.C:95
 DrawOccupancy.C:96
 DrawOccupancy.C:97
 DrawOccupancy.C:98
 DrawOccupancy.C:99
 DrawOccupancy.C:100
 DrawOccupancy.C:101
 DrawOccupancy.C:102
 DrawOccupancy.C:103
 DrawOccupancy.C:104
 DrawOccupancy.C:105
 DrawOccupancy.C:106
 DrawOccupancy.C:107
 DrawOccupancy.C:108
 DrawOccupancy.C:109
 DrawOccupancy.C:110
 DrawOccupancy.C:111
 DrawOccupancy.C:112
 DrawOccupancy.C:113
 DrawOccupancy.C:114
 DrawOccupancy.C:115
 DrawOccupancy.C:116
 DrawOccupancy.C:117
 DrawOccupancy.C:118
 DrawOccupancy.C:119
 DrawOccupancy.C:120
 DrawOccupancy.C:121
 DrawOccupancy.C:122
 DrawOccupancy.C:123
 DrawOccupancy.C:124
 DrawOccupancy.C:125
 DrawOccupancy.C:126
 DrawOccupancy.C:127
 DrawOccupancy.C:128
 DrawOccupancy.C:129
 DrawOccupancy.C:130
 DrawOccupancy.C:131
 DrawOccupancy.C:132
 DrawOccupancy.C:133
 DrawOccupancy.C:134
 DrawOccupancy.C:135
 DrawOccupancy.C:136
 DrawOccupancy.C:137
 DrawOccupancy.C:138
 DrawOccupancy.C:139
 DrawOccupancy.C:140
 DrawOccupancy.C:141
 DrawOccupancy.C:142
 DrawOccupancy.C:143
 DrawOccupancy.C:144
 DrawOccupancy.C:145
 DrawOccupancy.C:146
 DrawOccupancy.C:147
 DrawOccupancy.C:148
 DrawOccupancy.C:149
 DrawOccupancy.C:150
 DrawOccupancy.C:151
 DrawOccupancy.C:152
 DrawOccupancy.C:153
 DrawOccupancy.C:154
 DrawOccupancy.C:155
 DrawOccupancy.C:156
 DrawOccupancy.C:157
 DrawOccupancy.C:158
 DrawOccupancy.C:159
 DrawOccupancy.C:160
 DrawOccupancy.C:161
 DrawOccupancy.C:162
 DrawOccupancy.C:163
 DrawOccupancy.C:164
 DrawOccupancy.C:165
 DrawOccupancy.C:166
 DrawOccupancy.C:167
 DrawOccupancy.C:168
 DrawOccupancy.C:169
 DrawOccupancy.C:170
 DrawOccupancy.C:171
 DrawOccupancy.C:172
 DrawOccupancy.C:173
 DrawOccupancy.C:174
 DrawOccupancy.C:175
 DrawOccupancy.C:176
 DrawOccupancy.C:177