ROOT logo
/**
 * @file   DrawRecAnaEloss.C
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Thu Jul  7 10:58:50 2011
 * 
 * @brief  Draw energ-loss before/after merging and used in the
 * density calculations 
 *
 * @deprecated Use QATrender instead
 * @ingroup pwglf_forward_scripts_qa
 */

#ifndef __CINT__
#include <TList.h>
#include <TH1.h>
#include <TH2.h>
#include <TCanvas.h>
#include <TLatex.h>
#include <TLine.h>
#include <TFile.h>
#include <TError.h>
#include <TParameter.h>
#include <TStyle.h>
#else
class TLatex;
#endif

/** 
 * Draw some text
 * 
 * @param l    LaTeX object
 * @param x    x coordinate
 * @param y    y coordinate (incremented on return)
 * @param c1   First string
 * @param c2   Second string 
 *
 * @deprecated Use QATrender instead
 * @ingroup pwglf_forward_scripts_qa
 */
void 
DrawText(TLatex* l, Double_t x, Double_t& y, const char* c1, const char* c2)
{
  y -= 1.2*l->GetTextSize();
  l->DrawLatex(x,    y, c1);
  l->DrawLatex(x+.4, y, c2);
}
/** 
 * Draw the energy loss before/after mergin for a single ring
 * 
 * @param p      List 1 
 * @param p2     List 2
 * @param lowCut Low cut
 * @param d      Detector
 * @param r      Ring 
 *
 * @deprecated Use QATrender instead
 * @ingroup pwglf_forward_scripts_qa
 */
void
DrawRingRecAnaEloss(TList* p, TList* p2, Double_t lowCut, UShort_t d, Char_t r)
{
  if (!p) return;

  TList* ring = static_cast<TList*>(p->FindObject(Form("FMD%d%c",d,r)));
  if (!ring) { 
    Error("DrawRecAnaEloss", "List FMD%d%c not found in %s",d,r,p->GetName());
    return;
  }
  TList* ring2 = static_cast<TList*>(p2->FindObject(Form("FMD%d%c",d,r)));
  if (!ring2){
    Error("DrawRecAnaEloss","List FMD%d%c not found in %s",d,r,p2->GetName());
    return;
  }

  TH1* before = static_cast<TH1D*>(ring->FindObject("esdEloss"));
  if (!before) { 
    Error("DrawRingRecAnaEloss", "Histogram esdEloss not found in FMD%d%c",
	  d, r);
    return;
  }
  TH1* after = static_cast<TH1D*>(ring->FindObject("anaEloss"));
  if (!after) { 
    Error("DrawRingRecAnaEloss", "Histogram anaEloss not found in FMD%d%c",
	  d, r);
    return;
  }
  TH1* presented = static_cast<TH1D*>(ring2->FindObject("eloss"));
  if (!presented) {
    Error("DrawRingRecAnaEloss", "Histogram eloss not found in FMD%d%c",
	  d, r);
    return;
  }
  TH1* used = static_cast<TH1D*>(ring2->FindObject("elossUsed"));
  if (!used) {
    Error("DrawRingRecAnaEloss", "Histogram elossUsed not found in FMD%d%c",
	  d, r);
    return;
  }


  Int_t low = before->GetXaxis()->FindBin(lowCut);
  Int_t ib  = Int_t(before->Integral(low,before->GetNbinsX()));
  Int_t ia  = Int_t(after->Integral(low,after->GetNbinsX()));
  Int_t ip  = Int_t(presented->Integral(low,presented->GetNbinsX()));
  Int_t iu  = Int_t(used->Integral(low,used->GetNbinsX()));
  // before->Scale(1. / ib);
  // after->Scale(1. / ib);
  // presented->Scale(1. / ib);
  // used->Scale(1. / ib);

  gPad->SetLogy();
  gPad->SetFillColor(0);
  before->SetTitle(Form("FMD%d%c",d,r));
  before->Draw("");
  after->Draw("same");
  presented->Draw("same");
  used->Draw("same");
  
  // ib           = before->Integral(low,before->GetNbinsX());
  // ia           = after->Integral(low,after->GetNbinsX());
  // ip           = presented->Integral(low,presented->GetNbinsX());
  // iu           = used->Integral(low,used->GetNbinsX());
  Double_t ts  = 0.03;
  Double_t x   = gPad->GetLeftMargin() + .25;
  Double_t y   = 1-gPad->GetTopMargin()-gStyle->GetTitleH()+ts;
  TLatex*  ltx = new TLatex(x, y, Form("FMD%d%c", d, r));
  ltx->SetNDC();
  ltx->SetTextAlign(13);
  ltx->SetTextSize(ts);
  // ltx->Draw();
  // ltx->SetTextSize(.05);
  TString inte(Form("Integral [%4.2f,#infty]", lowCut));
  DrawText(ltx, x, y, Form("%s before:", inte.Data()), Form("%9d", ib));
  DrawText(ltx, x, y, Form("%s after:",  inte.Data()), Form("%9d", ia));
  DrawText(ltx, x, y, Form("%s input:",  inte.Data()), Form("%9d", ip));
  DrawText(ltx, x, y, Form("%s user:",   inte.Data()), Form("%9d", iu));
  TLine* l = new TLine;
  l->SetLineWidth(1);
  l->DrawLineNDC(x, y-0.9*ts, 1-gPad->GetRightMargin()-0.01, y-0.9*ts);
  if (ib != 0 && ia != 0) {
    DrawText(ltx, x, y, "Change (merging)", Form("%5.1f%%", (100.*(ia-ib))/ib));
    DrawText(ltx, x, y, "Change (input)",   Form("%5.1f%% (%5.1f%%)", 
						 (100.*(ip-ia))/ia,
						 (100.*(ip-ib))/ib));
    DrawText(ltx, x, y, "Change (use)",     Form("%5.1f%% (%5.1f%%)", 
						 (100.*(iu-ip))/ip,
						 (100.*(iu-ib))/ib));
  }
  before->GetXaxis()->SetRangeUser(0, 4);
  gPad->cd();
}

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

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

  TList* sf = static_cast<TList*>(forward->FindObject("fmdSharingFilter"));
  if (!sf) { 
    Error("DrawRecAnaEloss", "List fmdSharingFilter not found in Forward");
    return;
  }
  TList* dc = static_cast<TList*>(forward->FindObject("fmdDensityCalculator"));
  if (!dc) {
    Error("DrawRecAnaEloss","List fmdDensityCalculator not found in Forward");
    return;
  }

  TParameter<double>* lowCut = 
    static_cast<TParameter<double>*>(sf->FindObject("lowCut"));
  Double_t low = (lowCut ? lowCut->GetVal() : 0.15);
  if (!lowCut)
    Warning("DrawRecAnaEloss", "Low cut not found in %s, assuming %f",
	    sf->GetName(), low);
  TCanvas* c = new TCanvas("recAnaELoss", 
			   "Reconstructed and Analysed energy loss", 900, 700);
  c->SetFillColor(0);
  c->SetBorderSize(0);
  c->SetLeftMargin(0.15);
  c->SetRightMargin(0.02);
  c->SetTopMargin(0.02);
  c->Divide(3, 2, 0, 0);
  
  c->cd(1); DrawRingRecAnaEloss(sf, dc, low, 1, 'I');
  c->cd(2); DrawRingRecAnaEloss(sf, dc, low, 2, 'I');
  c->cd(5); DrawRingRecAnaEloss(sf, dc, low, 2, 'O');
  c->cd(3); DrawRingRecAnaEloss(sf, dc, low, 3, 'I');
  c->cd(6); DrawRingRecAnaEloss(sf, dc, low, 3, 'O');
  TVirtualPad* p = c->cd(4);
  // p->SetTopMargin(0.05);
  p->SetRightMargin(0.15);
  p->SetFillColor(0);
  TH2D* highCuts = static_cast<TH2D*>(sf->FindObject("highCuts"));
  if (highCuts) highCuts->Draw("colz");
  c->cd();
  c->SaveAs("recAnaELoss.png");
}
 
//
// EOF
//
 DrawRecAnaEloss.C:1
 DrawRecAnaEloss.C:2
 DrawRecAnaEloss.C:3
 DrawRecAnaEloss.C:4
 DrawRecAnaEloss.C:5
 DrawRecAnaEloss.C:6
 DrawRecAnaEloss.C:7
 DrawRecAnaEloss.C:8
 DrawRecAnaEloss.C:9
 DrawRecAnaEloss.C:10
 DrawRecAnaEloss.C:11
 DrawRecAnaEloss.C:12
 DrawRecAnaEloss.C:13
 DrawRecAnaEloss.C:14
 DrawRecAnaEloss.C:15
 DrawRecAnaEloss.C:16
 DrawRecAnaEloss.C:17
 DrawRecAnaEloss.C:18
 DrawRecAnaEloss.C:19
 DrawRecAnaEloss.C:20
 DrawRecAnaEloss.C:21
 DrawRecAnaEloss.C:22
 DrawRecAnaEloss.C:23
 DrawRecAnaEloss.C:24
 DrawRecAnaEloss.C:25
 DrawRecAnaEloss.C:26
 DrawRecAnaEloss.C:27
 DrawRecAnaEloss.C:28
 DrawRecAnaEloss.C:29
 DrawRecAnaEloss.C:30
 DrawRecAnaEloss.C:31
 DrawRecAnaEloss.C:32
 DrawRecAnaEloss.C:33
 DrawRecAnaEloss.C:34
 DrawRecAnaEloss.C:35
 DrawRecAnaEloss.C:36
 DrawRecAnaEloss.C:37
 DrawRecAnaEloss.C:38
 DrawRecAnaEloss.C:39
 DrawRecAnaEloss.C:40
 DrawRecAnaEloss.C:41
 DrawRecAnaEloss.C:42
 DrawRecAnaEloss.C:43
 DrawRecAnaEloss.C:44
 DrawRecAnaEloss.C:45
 DrawRecAnaEloss.C:46
 DrawRecAnaEloss.C:47
 DrawRecAnaEloss.C:48
 DrawRecAnaEloss.C:49
 DrawRecAnaEloss.C:50
 DrawRecAnaEloss.C:51
 DrawRecAnaEloss.C:52
 DrawRecAnaEloss.C:53
 DrawRecAnaEloss.C:54
 DrawRecAnaEloss.C:55
 DrawRecAnaEloss.C:56
 DrawRecAnaEloss.C:57
 DrawRecAnaEloss.C:58
 DrawRecAnaEloss.C:59
 DrawRecAnaEloss.C:60
 DrawRecAnaEloss.C:61
 DrawRecAnaEloss.C:62
 DrawRecAnaEloss.C:63
 DrawRecAnaEloss.C:64
 DrawRecAnaEloss.C:65
 DrawRecAnaEloss.C:66
 DrawRecAnaEloss.C:67
 DrawRecAnaEloss.C:68
 DrawRecAnaEloss.C:69
 DrawRecAnaEloss.C:70
 DrawRecAnaEloss.C:71
 DrawRecAnaEloss.C:72
 DrawRecAnaEloss.C:73
 DrawRecAnaEloss.C:74
 DrawRecAnaEloss.C:75
 DrawRecAnaEloss.C:76
 DrawRecAnaEloss.C:77
 DrawRecAnaEloss.C:78
 DrawRecAnaEloss.C:79
 DrawRecAnaEloss.C:80
 DrawRecAnaEloss.C:81
 DrawRecAnaEloss.C:82
 DrawRecAnaEloss.C:83
 DrawRecAnaEloss.C:84
 DrawRecAnaEloss.C:85
 DrawRecAnaEloss.C:86
 DrawRecAnaEloss.C:87
 DrawRecAnaEloss.C:88
 DrawRecAnaEloss.C:89
 DrawRecAnaEloss.C:90
 DrawRecAnaEloss.C:91
 DrawRecAnaEloss.C:92
 DrawRecAnaEloss.C:93
 DrawRecAnaEloss.C:94
 DrawRecAnaEloss.C:95
 DrawRecAnaEloss.C:96
 DrawRecAnaEloss.C:97
 DrawRecAnaEloss.C:98
 DrawRecAnaEloss.C:99
 DrawRecAnaEloss.C:100
 DrawRecAnaEloss.C:101
 DrawRecAnaEloss.C:102
 DrawRecAnaEloss.C:103
 DrawRecAnaEloss.C:104
 DrawRecAnaEloss.C:105
 DrawRecAnaEloss.C:106
 DrawRecAnaEloss.C:107
 DrawRecAnaEloss.C:108
 DrawRecAnaEloss.C:109
 DrawRecAnaEloss.C:110
 DrawRecAnaEloss.C:111
 DrawRecAnaEloss.C:112
 DrawRecAnaEloss.C:113
 DrawRecAnaEloss.C:114
 DrawRecAnaEloss.C:115
 DrawRecAnaEloss.C:116
 DrawRecAnaEloss.C:117
 DrawRecAnaEloss.C:118
 DrawRecAnaEloss.C:119
 DrawRecAnaEloss.C:120
 DrawRecAnaEloss.C:121
 DrawRecAnaEloss.C:122
 DrawRecAnaEloss.C:123
 DrawRecAnaEloss.C:124
 DrawRecAnaEloss.C:125
 DrawRecAnaEloss.C:126
 DrawRecAnaEloss.C:127
 DrawRecAnaEloss.C:128
 DrawRecAnaEloss.C:129
 DrawRecAnaEloss.C:130
 DrawRecAnaEloss.C:131
 DrawRecAnaEloss.C:132
 DrawRecAnaEloss.C:133
 DrawRecAnaEloss.C:134
 DrawRecAnaEloss.C:135
 DrawRecAnaEloss.C:136
 DrawRecAnaEloss.C:137
 DrawRecAnaEloss.C:138
 DrawRecAnaEloss.C:139
 DrawRecAnaEloss.C:140
 DrawRecAnaEloss.C:141
 DrawRecAnaEloss.C:142
 DrawRecAnaEloss.C:143
 DrawRecAnaEloss.C:144
 DrawRecAnaEloss.C:145
 DrawRecAnaEloss.C:146
 DrawRecAnaEloss.C:147
 DrawRecAnaEloss.C:148
 DrawRecAnaEloss.C:149
 DrawRecAnaEloss.C:150
 DrawRecAnaEloss.C:151
 DrawRecAnaEloss.C:152
 DrawRecAnaEloss.C:153
 DrawRecAnaEloss.C:154
 DrawRecAnaEloss.C:155
 DrawRecAnaEloss.C:156
 DrawRecAnaEloss.C:157
 DrawRecAnaEloss.C:158
 DrawRecAnaEloss.C:159
 DrawRecAnaEloss.C:160
 DrawRecAnaEloss.C:161
 DrawRecAnaEloss.C:162
 DrawRecAnaEloss.C:163
 DrawRecAnaEloss.C:164
 DrawRecAnaEloss.C:165
 DrawRecAnaEloss.C:166
 DrawRecAnaEloss.C:167
 DrawRecAnaEloss.C:168
 DrawRecAnaEloss.C:169
 DrawRecAnaEloss.C:170
 DrawRecAnaEloss.C:171
 DrawRecAnaEloss.C:172
 DrawRecAnaEloss.C:173
 DrawRecAnaEloss.C:174
 DrawRecAnaEloss.C:175
 DrawRecAnaEloss.C:176
 DrawRecAnaEloss.C:177
 DrawRecAnaEloss.C:178
 DrawRecAnaEloss.C:179
 DrawRecAnaEloss.C:180
 DrawRecAnaEloss.C:181
 DrawRecAnaEloss.C:182
 DrawRecAnaEloss.C:183
 DrawRecAnaEloss.C:184
 DrawRecAnaEloss.C:185
 DrawRecAnaEloss.C:186
 DrawRecAnaEloss.C:187
 DrawRecAnaEloss.C:188
 DrawRecAnaEloss.C:189
 DrawRecAnaEloss.C:190
 DrawRecAnaEloss.C:191
 DrawRecAnaEloss.C:192
 DrawRecAnaEloss.C:193
 DrawRecAnaEloss.C:194
 DrawRecAnaEloss.C:195
 DrawRecAnaEloss.C:196
 DrawRecAnaEloss.C:197
 DrawRecAnaEloss.C:198
 DrawRecAnaEloss.C:199
 DrawRecAnaEloss.C:200
 DrawRecAnaEloss.C:201
 DrawRecAnaEloss.C:202
 DrawRecAnaEloss.C:203
 DrawRecAnaEloss.C:204
 DrawRecAnaEloss.C:205
 DrawRecAnaEloss.C:206
 DrawRecAnaEloss.C:207
 DrawRecAnaEloss.C:208
 DrawRecAnaEloss.C:209
 DrawRecAnaEloss.C:210
 DrawRecAnaEloss.C:211
 DrawRecAnaEloss.C:212
 DrawRecAnaEloss.C:213
 DrawRecAnaEloss.C:214
 DrawRecAnaEloss.C:215
 DrawRecAnaEloss.C:216
 DrawRecAnaEloss.C:217
 DrawRecAnaEloss.C:218
 DrawRecAnaEloss.C:219
 DrawRecAnaEloss.C:220
 DrawRecAnaEloss.C:221
 DrawRecAnaEloss.C:222
 DrawRecAnaEloss.C:223
 DrawRecAnaEloss.C:224
 DrawRecAnaEloss.C:225
 DrawRecAnaEloss.C:226
 DrawRecAnaEloss.C:227
 DrawRecAnaEloss.C:228
 DrawRecAnaEloss.C:229
 DrawRecAnaEloss.C:230
 DrawRecAnaEloss.C:231
 DrawRecAnaEloss.C:232
 DrawRecAnaEloss.C:233