ROOT logo
/**
 * @file 
 * 
 * Scripts to draw energy loss fits from correction object file 
 *
 * @ingroup pwglf_forward_scripts_corr
 */
/** 
 * Clear canvas 
 * 
 * @param c Canvas to clear 
 *
 * @ingroup pwglf_forward_scripts_corr
 */
void
ClearCanvas(TCanvas* c)
{
  c->SetLeftMargin(.1);
  c->SetRightMargin(.05);
  c->SetBottomMargin(.1);
  c->SetTopMargin(.05);
  c->Clear();
}

/** 
 * Draw energy loss fits to a multi-page PDF. 
 *
 * @par Input: 
 * The input file is expected to contain a AliFMDCorrELossFit object
 * named @c elossfits in the top level directory.
 * 
 * @par Output: 
 * A multi-page PDF.  Note, that the PDF generated by ROOT in this way
 * is broken (cannot be read by Acrobat Reader on Windows and MacOSX)
 * and one should pass it through a filter to correct these problems.
 * 
 * @param fname   File name 
 * @param option  Drawing options 
 *
 * @ingroup pwglf_forward_scripts_corr
 */
void
DrawCorrVtxBias(const char* fname, const char* option="colz")
{
  //__________________________________________________________________
  // Load libraries and object 
  gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");

  TFile* file = TFile::Open(fname, "READ");
  if (!file) { 
    Error("DrawCorrVtxBias", "Failed to open %s", fname);
    return;
  }
  TString pname(fname);
  pname.ReplaceAll(".root", ".pdf");

  const char* objName = 
    AliForwardCorrectionManager::Instance()
    .GetObjectName(AliForwardCorrectionManager::kVertexBias);
  AliFMDCorrVertexBias* corr = 
    static_cast<AliFMDCorrVertexBias*>(file->Get(objName));
  if (!corr) { 
    Error("DrawCorrVtxBias", "Object '%s' not found in %s", objName, fname);
    return;
  }

  //__________________________________________________________________
  // Create a canvas
  TCanvas* c = new TCanvas("c", "c", 800 / TMath::Sqrt(2), 800);
  c->SetFillColor(0);
  c->SetBorderSize(0);
  c->SetBorderMode(0);
  c->Print(Form("%s[", pname.Data()));
  
  gStyle->SetOptStat(0);
  gStyle->SetTitleColor(0);
  gStyle->SetTitleStyle(0);
  gStyle->SetTitleBorderSize(0);
  gStyle->SetTitleX(.1);
  gStyle->SetTitleY(1);
  gStyle->SetTitleW(.8);
  gStyle->SetTitleH(.09);
  gStyle->SetFrameFillColor(kWhite);
  gStyle->SetFrameBorderSize(1);
  gStyle->SetFrameBorderMode(1);
  gStyle->SetPalette(1);

  ClearCanvas(c);
  //__________________________________________________________________
  // Create a title page 
  TLatex* ll = new TLatex(.5,.8, fname);
  ll->SetTextAlign(22);
  ll->SetTextSize(0.03);
  ll->SetNDC();
  ll->Draw();

  TLatex* l = new TLatex(.5,.8, fname);
  l->SetNDC();
  l->SetTextSize(0.03);
  l->SetTextFont(132);
  l->SetTextAlign(12);
  l->DrawLatex(0.2, 0.70, "Vertex Bias Corrections");
  l->SetTextAlign(22);
  l->DrawLatex(0.5, 0.60,  "c_{v}(#eta,#phi)=#frac{1/N_{t}}{1/N_{v}}"
	       "#sum_{i}^{N_{tv}}N_{ch,i}(#eta,#phi) / "
	       "#sum_{i}^{N_{v}}N_{ch,i}(#eta,#phi)");
  l->SetTextAlign(12);
  l->DrawLatex(0.2, 0.50, "N_{t}: Number of events w/triggers");
  l->DrawLatex(0.2, 0.45, "N_{v}: Number of events w/vertex");
  l->DrawLatex(0.2, 0.40, "N_{tv}: Number of events w/trigger and vertex");
  l->DrawLatex(0.2, 0.35, "N_{ch,i}(#eta,#phi): Number of charged, "
	       "particles in (#eta,#phi) bin");
  l->DrawLatex(0.2, 0.30, "All quantities determined in MC");
  
  c->Print(pname.Data(), "Title:Title page");

  ClearCanvas(c);

  //__________________________________________________________________
  // Draw all corrections
  const TAxis& vtxAxis = corr->GetVertexAxis();
  Int_t        nVtx    = vtxAxis.GetNbins();
  UShort_t     nQ      = 2;
  UShort_t     d       = 0;
  for (UShort_t q = 0; q < nQ; q++) { 
    Char_t r = (q == 0 ? 'I' : 'O');

    ClearCanvas(c);
    c->Divide(2, (nVtx+1)/2);
    for (UShort_t v=1; v <= nVtx; v++) { 
      TVirtualPad* p = c->cd(v);
      
      
      TH2* h1 = corr->GetCorrection(r, v);
      if (!h1) { 
	Warning("DrawCorrVtxBias", "No correction for r=%c, v=%d", r, v);
	continue;
      }
      h1->Draw(option);
    }
    c->Print(pname.Data(), Form("Title:FMDX%c", r));
  }

  //__________________________________________________________________
  // Close output file 
  c->Print(Form("%s]", pname.Data()));
}
//
// EOF
//
 DrawCorrVtxBias.C:1
 DrawCorrVtxBias.C:2
 DrawCorrVtxBias.C:3
 DrawCorrVtxBias.C:4
 DrawCorrVtxBias.C:5
 DrawCorrVtxBias.C:6
 DrawCorrVtxBias.C:7
 DrawCorrVtxBias.C:8
 DrawCorrVtxBias.C:9
 DrawCorrVtxBias.C:10
 DrawCorrVtxBias.C:11
 DrawCorrVtxBias.C:12
 DrawCorrVtxBias.C:13
 DrawCorrVtxBias.C:14
 DrawCorrVtxBias.C:15
 DrawCorrVtxBias.C:16
 DrawCorrVtxBias.C:17
 DrawCorrVtxBias.C:18
 DrawCorrVtxBias.C:19
 DrawCorrVtxBias.C:20
 DrawCorrVtxBias.C:21
 DrawCorrVtxBias.C:22
 DrawCorrVtxBias.C:23
 DrawCorrVtxBias.C:24
 DrawCorrVtxBias.C:25
 DrawCorrVtxBias.C:26
 DrawCorrVtxBias.C:27
 DrawCorrVtxBias.C:28
 DrawCorrVtxBias.C:29
 DrawCorrVtxBias.C:30
 DrawCorrVtxBias.C:31
 DrawCorrVtxBias.C:32
 DrawCorrVtxBias.C:33
 DrawCorrVtxBias.C:34
 DrawCorrVtxBias.C:35
 DrawCorrVtxBias.C:36
 DrawCorrVtxBias.C:37
 DrawCorrVtxBias.C:38
 DrawCorrVtxBias.C:39
 DrawCorrVtxBias.C:40
 DrawCorrVtxBias.C:41
 DrawCorrVtxBias.C:42
 DrawCorrVtxBias.C:43
 DrawCorrVtxBias.C:44
 DrawCorrVtxBias.C:45
 DrawCorrVtxBias.C:46
 DrawCorrVtxBias.C:47
 DrawCorrVtxBias.C:48
 DrawCorrVtxBias.C:49
 DrawCorrVtxBias.C:50
 DrawCorrVtxBias.C:51
 DrawCorrVtxBias.C:52
 DrawCorrVtxBias.C:53
 DrawCorrVtxBias.C:54
 DrawCorrVtxBias.C:55
 DrawCorrVtxBias.C:56
 DrawCorrVtxBias.C:57
 DrawCorrVtxBias.C:58
 DrawCorrVtxBias.C:59
 DrawCorrVtxBias.C:60
 DrawCorrVtxBias.C:61
 DrawCorrVtxBias.C:62
 DrawCorrVtxBias.C:63
 DrawCorrVtxBias.C:64
 DrawCorrVtxBias.C:65
 DrawCorrVtxBias.C:66
 DrawCorrVtxBias.C:67
 DrawCorrVtxBias.C:68
 DrawCorrVtxBias.C:69
 DrawCorrVtxBias.C:70
 DrawCorrVtxBias.C:71
 DrawCorrVtxBias.C:72
 DrawCorrVtxBias.C:73
 DrawCorrVtxBias.C:74
 DrawCorrVtxBias.C:75
 DrawCorrVtxBias.C:76
 DrawCorrVtxBias.C:77
 DrawCorrVtxBias.C:78
 DrawCorrVtxBias.C:79
 DrawCorrVtxBias.C:80
 DrawCorrVtxBias.C:81
 DrawCorrVtxBias.C:82
 DrawCorrVtxBias.C:83
 DrawCorrVtxBias.C:84
 DrawCorrVtxBias.C:85
 DrawCorrVtxBias.C:86
 DrawCorrVtxBias.C:87
 DrawCorrVtxBias.C:88
 DrawCorrVtxBias.C:89
 DrawCorrVtxBias.C:90
 DrawCorrVtxBias.C:91
 DrawCorrVtxBias.C:92
 DrawCorrVtxBias.C:93
 DrawCorrVtxBias.C:94
 DrawCorrVtxBias.C:95
 DrawCorrVtxBias.C:96
 DrawCorrVtxBias.C:97
 DrawCorrVtxBias.C:98
 DrawCorrVtxBias.C:99
 DrawCorrVtxBias.C:100
 DrawCorrVtxBias.C:101
 DrawCorrVtxBias.C:102
 DrawCorrVtxBias.C:103
 DrawCorrVtxBias.C:104
 DrawCorrVtxBias.C:105
 DrawCorrVtxBias.C:106
 DrawCorrVtxBias.C:107
 DrawCorrVtxBias.C:108
 DrawCorrVtxBias.C:109
 DrawCorrVtxBias.C:110
 DrawCorrVtxBias.C:111
 DrawCorrVtxBias.C:112
 DrawCorrVtxBias.C:113
 DrawCorrVtxBias.C:114
 DrawCorrVtxBias.C:115
 DrawCorrVtxBias.C:116
 DrawCorrVtxBias.C:117
 DrawCorrVtxBias.C:118
 DrawCorrVtxBias.C:119
 DrawCorrVtxBias.C:120
 DrawCorrVtxBias.C:121
 DrawCorrVtxBias.C:122
 DrawCorrVtxBias.C:123
 DrawCorrVtxBias.C:124
 DrawCorrVtxBias.C:125
 DrawCorrVtxBias.C:126
 DrawCorrVtxBias.C:127
 DrawCorrVtxBias.C:128
 DrawCorrVtxBias.C:129
 DrawCorrVtxBias.C:130
 DrawCorrVtxBias.C:131
 DrawCorrVtxBias.C:132
 DrawCorrVtxBias.C:133
 DrawCorrVtxBias.C:134
 DrawCorrVtxBias.C:135
 DrawCorrVtxBias.C:136
 DrawCorrVtxBias.C:137
 DrawCorrVtxBias.C:138
 DrawCorrVtxBias.C:139
 DrawCorrVtxBias.C:140
 DrawCorrVtxBias.C:141
 DrawCorrVtxBias.C:142
 DrawCorrVtxBias.C:143
 DrawCorrVtxBias.C:144
 DrawCorrVtxBias.C:145
 DrawCorrVtxBias.C:146
 DrawCorrVtxBias.C:147
 DrawCorrVtxBias.C:148
 DrawCorrVtxBias.C:149
 DrawCorrVtxBias.C:150
 DrawCorrVtxBias.C:151