ROOT logo
/**
 * @file   CompareCorrs.C
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Fri Jan 28 23:01:59 2011
 * 
 * @brief  Utilities for comparing correction objects 
 * 
 *
 * @ingroup pwglf_forward_scripts_corr
 * 
 */
#ifndef __CINT__
#include <TCanvas.h>
#include <TFile.h>
#include <TLatex.h>
#include <TStyle.h>
#include <TMath.h>
#include "AliForwardCorrectionManager.h"
#endif


//======================================================================
/**
 * A canvas 
 * 
 *
 * @ingroup pwglf_forward_scripts_corr
 */
struct Canvas 
{
  //____________________________________________________________________
  /** 
   * CTOR
   * 
   * @param name  Name 
   * @param title Title 
   * @param n1    N1, 
   * @param n2    N2 
   */  
  Canvas(const char* name, const char* title,
	 const char* n1,   const char* n2)
    : fName(name),
      fTitle(title),
      fN1(n1), 
      fN2(n2),
      fCanvas(0),
      fBody(0)
  {
    gStyle->SetPalette(1);
    gStyle->SetTitleX(.10);
    gStyle->SetTitleY(.99);
    gStyle->SetTitleW(.85);
    gStyle->SetTitleH(.085);
    gStyle->SetTitleFillColor(0);
    gStyle->SetTitleBorderSize(0);
  }
  //____________________________________________________________________
  /** 
   * Open it
   * 
   */
  void Open() 
  {
    fCanvas = new TCanvas(fName, fTitle, 800, TMath::Sqrt(2)*800);
    fCanvas->SetFillColor(0);
  
    fCanvas->Print("comparison.pdf[", "pdf");
  }
  //____________________________________________________________________
  /** 
   * Clear pad 
   * 
   * @param nPad Pad number 
   * @param d    Detector
   * @param r    Ring 
   * 
   * @return Pointer to pad 
   */
  TPad* 
  Clear(UShort_t nPad, UShort_t d, Char_t r)
  {
    fCanvas->Clear();
    TPad* top = new TPad("top", "Top", 0, .95, 1, 1, 0, 0);
    top->Draw();
    top->cd();

    TLatex* l = new TLatex(.5, .5, Form("%s for FMD%d%c (%s / %s)", 
					fTitle, d, r, fN1, fN2));
    l->SetNDC();
    l->SetTextAlign(22);
    l->SetTextSize(0.3);
    l->Draw();
  
    fCanvas->cd();
    fBody = new TPad("body", "Body", 0, 0, 1, .95, 0, 0);
    fBody->SetTopMargin(0.05);
    fBody->SetRightMargin(0.05);
    fBody->Divide(2, (nPad+1)/2, 0.001, 0.001);
    fBody->Draw();
    
    return fBody;
  }  
  //____________________________________________________________________
  /** 
   * Change to pad 
   * 
   * @param i Pad number 
   * 
   * @return Pointer to pad 
   */
  TVirtualPad* cd(Int_t i) 
  {
    if (!fBody) return 0;
    
    return fBody->cd(i);
  }
  //____________________________________________________________________
  /** 
   * Print information
   * 
   * @param d Detector
   * @param r Ring 
   * @param extra  more stuff
   */
  void Print(UShort_t d, Char_t r, const char* extra="")
  {
    fCanvas->Print("comparison.pdf", 
		   Form("Title:FMD%d%c %s", d, r, extra));
  }
  //____________________________________________________________________
  /** 
   * Close it 
   * 
   */
  void Close()
  {
    fCanvas->Print("comparison.pdf]", "pdf");
  }    
  //____________________________________________________________________
  /// NAme 
  const char* fName;
  /// Title
  const char* fTitle;
  /// N1
  const char* fN1;
  /// N2
  const char* fN2;
  /// Canvas
  TCanvas*    fCanvas;
  /// Body 
  TPad*       fBody;
};

//======================================================================
/** 
 * 
 * 
 * @param what 
 * @param fn1 
 * @param fn2 
 * @param o1 
 * @param o2 
 *
 * @ingroup pwglf_forward_scripts_corr
 */
void
GetObjects(UShort_t    what, 
	   const char* fn1, const char* fn2, 
	   TObject*&   o1,  TObject*&   o2)
{
  // --- Open files --------------------------------------------------
  TFile* file1 = TFile::Open(fn1, "READ");
  TFile* file2 = TFile::Open(fn2, "READ");

  if (!file1) { 
    Error("CompareSecMaps", "File %s cannot be opened", fn1);
    return;
  }

  if (!file2) { 
    Error("CompareSecMaps", "File %s cannot be opened", fn2);
    return;
  }
  
  // --- Find Objects ------------------------------------------------
  AliForwardCorrectionManager::ECorrection ewhat = what;
  // (AliForwardCorrectionManager::ECorrection)what;
  const char* objName = 
    AliForwardCorrectionManager::Instance().GetObjectName(ewhat);
  
  o1 = file1->Get(objName);
  o2 = file2->Get(objName);
  
  if (!o1) {
    Error("CompareSecMaps", "File %s does not contain an object named %s", 
	  fn1, objName);
    return;
  }
  if (!o2) {
    Error("CompareSecMaps", "File %s does not contain an object named %s", 
	  fn2, objName);
    return;
  }
};



//
// EOF
//
 CompareCorrs.C:1
 CompareCorrs.C:2
 CompareCorrs.C:3
 CompareCorrs.C:4
 CompareCorrs.C:5
 CompareCorrs.C:6
 CompareCorrs.C:7
 CompareCorrs.C:8
 CompareCorrs.C:9
 CompareCorrs.C:10
 CompareCorrs.C:11
 CompareCorrs.C:12
 CompareCorrs.C:13
 CompareCorrs.C:14
 CompareCorrs.C:15
 CompareCorrs.C:16
 CompareCorrs.C:17
 CompareCorrs.C:18
 CompareCorrs.C:19
 CompareCorrs.C:20
 CompareCorrs.C:21
 CompareCorrs.C:22
 CompareCorrs.C:23
 CompareCorrs.C:24
 CompareCorrs.C:25
 CompareCorrs.C:26
 CompareCorrs.C:27
 CompareCorrs.C:28
 CompareCorrs.C:29
 CompareCorrs.C:30
 CompareCorrs.C:31
 CompareCorrs.C:32
 CompareCorrs.C:33
 CompareCorrs.C:34
 CompareCorrs.C:35
 CompareCorrs.C:36
 CompareCorrs.C:37
 CompareCorrs.C:38
 CompareCorrs.C:39
 CompareCorrs.C:40
 CompareCorrs.C:41
 CompareCorrs.C:42
 CompareCorrs.C:43
 CompareCorrs.C:44
 CompareCorrs.C:45
 CompareCorrs.C:46
 CompareCorrs.C:47
 CompareCorrs.C:48
 CompareCorrs.C:49
 CompareCorrs.C:50
 CompareCorrs.C:51
 CompareCorrs.C:52
 CompareCorrs.C:53
 CompareCorrs.C:54
 CompareCorrs.C:55
 CompareCorrs.C:56
 CompareCorrs.C:57
 CompareCorrs.C:58
 CompareCorrs.C:59
 CompareCorrs.C:60
 CompareCorrs.C:61
 CompareCorrs.C:62
 CompareCorrs.C:63
 CompareCorrs.C:64
 CompareCorrs.C:65
 CompareCorrs.C:66
 CompareCorrs.C:67
 CompareCorrs.C:68
 CompareCorrs.C:69
 CompareCorrs.C:70
 CompareCorrs.C:71
 CompareCorrs.C:72
 CompareCorrs.C:73
 CompareCorrs.C:74
 CompareCorrs.C:75
 CompareCorrs.C:76
 CompareCorrs.C:77
 CompareCorrs.C:78
 CompareCorrs.C:79
 CompareCorrs.C:80
 CompareCorrs.C:81
 CompareCorrs.C:82
 CompareCorrs.C:83
 CompareCorrs.C:84
 CompareCorrs.C:85
 CompareCorrs.C:86
 CompareCorrs.C:87
 CompareCorrs.C:88
 CompareCorrs.C:89
 CompareCorrs.C:90
 CompareCorrs.C:91
 CompareCorrs.C:92
 CompareCorrs.C:93
 CompareCorrs.C:94
 CompareCorrs.C:95
 CompareCorrs.C:96
 CompareCorrs.C:97
 CompareCorrs.C:98
 CompareCorrs.C:99
 CompareCorrs.C:100
 CompareCorrs.C:101
 CompareCorrs.C:102
 CompareCorrs.C:103
 CompareCorrs.C:104
 CompareCorrs.C:105
 CompareCorrs.C:106
 CompareCorrs.C:107
 CompareCorrs.C:108
 CompareCorrs.C:109
 CompareCorrs.C:110
 CompareCorrs.C:111
 CompareCorrs.C:112
 CompareCorrs.C:113
 CompareCorrs.C:114
 CompareCorrs.C:115
 CompareCorrs.C:116
 CompareCorrs.C:117
 CompareCorrs.C:118
 CompareCorrs.C:119
 CompareCorrs.C:120
 CompareCorrs.C:121
 CompareCorrs.C:122
 CompareCorrs.C:123
 CompareCorrs.C:124
 CompareCorrs.C:125
 CompareCorrs.C:126
 CompareCorrs.C:127
 CompareCorrs.C:128
 CompareCorrs.C:129
 CompareCorrs.C:130
 CompareCorrs.C:131
 CompareCorrs.C:132
 CompareCorrs.C:133
 CompareCorrs.C:134
 CompareCorrs.C:135
 CompareCorrs.C:136
 CompareCorrs.C:137
 CompareCorrs.C:138
 CompareCorrs.C:139
 CompareCorrs.C:140
 CompareCorrs.C:141
 CompareCorrs.C:142
 CompareCorrs.C:143
 CompareCorrs.C:144
 CompareCorrs.C:145
 CompareCorrs.C:146
 CompareCorrs.C:147
 CompareCorrs.C:148
 CompareCorrs.C:149
 CompareCorrs.C:150
 CompareCorrs.C:151
 CompareCorrs.C:152
 CompareCorrs.C:153
 CompareCorrs.C:154
 CompareCorrs.C:155
 CompareCorrs.C:156
 CompareCorrs.C:157
 CompareCorrs.C:158
 CompareCorrs.C:159
 CompareCorrs.C:160
 CompareCorrs.C:161
 CompareCorrs.C:162
 CompareCorrs.C:163
 CompareCorrs.C:164
 CompareCorrs.C:165
 CompareCorrs.C:166
 CompareCorrs.C:167
 CompareCorrs.C:168
 CompareCorrs.C:169
 CompareCorrs.C:170
 CompareCorrs.C:171
 CompareCorrs.C:172
 CompareCorrs.C:173
 CompareCorrs.C:174
 CompareCorrs.C:175
 CompareCorrs.C:176
 CompareCorrs.C:177
 CompareCorrs.C:178
 CompareCorrs.C:179
 CompareCorrs.C:180
 CompareCorrs.C:181
 CompareCorrs.C:182
 CompareCorrs.C:183
 CompareCorrs.C:184
 CompareCorrs.C:185
 CompareCorrs.C:186
 CompareCorrs.C:187
 CompareCorrs.C:188
 CompareCorrs.C:189
 CompareCorrs.C:190
 CompareCorrs.C:191
 CompareCorrs.C:192
 CompareCorrs.C:193
 CompareCorrs.C:194
 CompareCorrs.C:195
 CompareCorrs.C:196
 CompareCorrs.C:197
 CompareCorrs.C:198
 CompareCorrs.C:199
 CompareCorrs.C:200
 CompareCorrs.C:201
 CompareCorrs.C:202
 CompareCorrs.C:203
 CompareCorrs.C:204
 CompareCorrs.C:205
 CompareCorrs.C:206
 CompareCorrs.C:207
 CompareCorrs.C:208
 CompareCorrs.C:209
 CompareCorrs.C:210
 CompareCorrs.C:211