ROOT logo
/**
 * @file 
 * 
 * Scripts to draw energy loss fits from correction object file 
 *
 * @ingroup pwglf_forward_scripts_corr
 */
void Setup(Bool_t compile)
{
  const char* post = (compile ? "++g" : "");
  const char* fwd  = "$ALICE_ROOT/PWGLF/FORWARD/analysis2";
  if (!gROOT->GetClass("AliFMDCorrELossFit"))
    gROOT->Macro(Form("%s/scripts/LoadLibs.C", fwd));
  gSystem->AddIncludePath(Form("-I%s/scripts -I%s/corrs -I%s "
			       "-I$ALICE_ROOT/include", fwd, fwd, fwd));
  gROOT->LoadMacro(Form("%s/scripts/SummaryDrawer.C%s", fwd, post));
  gROOT->LoadMacro(Form("%s/corrs/CorrDrawer.C%s", fwd, post));

}
/** 
 * 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 runNo   Run number
 * @param sys     Collision system 
 * @param sNN     Collision energy in GeV
 * @param field   L3 field strength
 * @param mc      For simulation input 
 * @param sat     For satellite interactions 
 * @param fname   File name 
 * @param details Drawing options 
 *
 * @ingroup pwglf_forward_scripts_corr
 */
void
DrawCorrELoss(ULong_t runNo, UShort_t sys, UShort_t sNN, Short_t field,
	      Bool_t mc=false, Bool_t sat=false, 
	      const char* fname=0, Bool_t details=true)
{
  // Load libraries and object 
  // const char* fwd = "$ALICE_ROOT/PWGLF/FORWARD/analysis2";
  Setup(false);

  CorrDrawer d;
  d.Summarize(AliForwardCorrectionManager::kELossFits, runNo, sys, sNN, field, 
	      mc, sat, "", fname);
}
/** 
 * Draw the energy loss correction
 * 
 * @param mc    For MC 
 * @param file  Input file with the full fits 
 * @param local Local correction database 
 */
void
DrawCorrELoss(Bool_t      mc, 
	      const char* file="forward_eloss.root", 
	      const char* local="fmd_corrections.root")
{
  Setup(true);

  CorrDrawer::Summarize(AliForwardCorrectionManager::kELossFits, 
			mc, file, local, "LANDSCAPE FEW");
}
/** 
 * Draw the energy loss correction
 * 
 * @param mc    For MC 
 * @param dummy Not used
 * @param file  Input file with the full fits 
 */
void 
DrawCorrELoss(Bool_t mc, Bool_t dummy, 
	      const char* file="forward_eloss_rerun.root")
{
  Setup(true);

  Printf("Drawing fit results from %s", file);
  TFile* hist = TFile::Open(file, "READ");
  if (!hist) { 
    Error("DrawCorrELoss", "Failed to open %s", file);
    return;
  }
  TList* res = static_cast<TList*>(hist->Get("ForwardELossResults"));
  if (!res) { 
    Error("DrawCorrEloss", "Failed to get ForwardELossResults from %s", file);
    return;
  }
  TList* ef = static_cast<TList*>(res->FindObject("fmdEnergyFitter"));
  if (!ef) { 
    Error("DrawCorrEloss", "Failed to get fmdEnergyFitter from %s:/%s", 
	  file, res->GetName());
    return;
  }

  AliFMDCorrELossFit* fits = 
    static_cast<AliFMDCorrELossFit*>(ef->FindObject("AliFMDCorrELossFit"));
  if (!fits) {
    Error("DrawCorrEloss", "Failed to get AliFMDCorrELossFit from %s:/%s/%s", 
	  file, res->GetName(), ef->GetName());
    return;
  }
  
  CorrDrawer* cd = new CorrDrawer;
  cd->fELossExtra = file;
  cd->fMinQuality = 8;
  // cd->fLandscape = true;
  cd->Summarize(const_cast<const AliFMDCorrELossFit*>(fits), true);
}

//
// EOF
//
 DrawCorrELoss.C:1
 DrawCorrELoss.C:2
 DrawCorrELoss.C:3
 DrawCorrELoss.C:4
 DrawCorrELoss.C:5
 DrawCorrELoss.C:6
 DrawCorrELoss.C:7
 DrawCorrELoss.C:8
 DrawCorrELoss.C:9
 DrawCorrELoss.C:10
 DrawCorrELoss.C:11
 DrawCorrELoss.C:12
 DrawCorrELoss.C:13
 DrawCorrELoss.C:14
 DrawCorrELoss.C:15
 DrawCorrELoss.C:16
 DrawCorrELoss.C:17
 DrawCorrELoss.C:18
 DrawCorrELoss.C:19
 DrawCorrELoss.C:20
 DrawCorrELoss.C:21
 DrawCorrELoss.C:22
 DrawCorrELoss.C:23
 DrawCorrELoss.C:24
 DrawCorrELoss.C:25
 DrawCorrELoss.C:26
 DrawCorrELoss.C:27
 DrawCorrELoss.C:28
 DrawCorrELoss.C:29
 DrawCorrELoss.C:30
 DrawCorrELoss.C:31
 DrawCorrELoss.C:32
 DrawCorrELoss.C:33
 DrawCorrELoss.C:34
 DrawCorrELoss.C:35
 DrawCorrELoss.C:36
 DrawCorrELoss.C:37
 DrawCorrELoss.C:38
 DrawCorrELoss.C:39
 DrawCorrELoss.C:40
 DrawCorrELoss.C:41
 DrawCorrELoss.C:42
 DrawCorrELoss.C:43
 DrawCorrELoss.C:44
 DrawCorrELoss.C:45
 DrawCorrELoss.C:46
 DrawCorrELoss.C:47
 DrawCorrELoss.C:48
 DrawCorrELoss.C:49
 DrawCorrELoss.C:50
 DrawCorrELoss.C:51
 DrawCorrELoss.C:52
 DrawCorrELoss.C:53
 DrawCorrELoss.C:54
 DrawCorrELoss.C:55
 DrawCorrELoss.C:56
 DrawCorrELoss.C:57
 DrawCorrELoss.C:58
 DrawCorrELoss.C:59
 DrawCorrELoss.C:60
 DrawCorrELoss.C:61
 DrawCorrELoss.C:62
 DrawCorrELoss.C:63
 DrawCorrELoss.C:64
 DrawCorrELoss.C:65
 DrawCorrELoss.C:66
 DrawCorrELoss.C:67
 DrawCorrELoss.C:68
 DrawCorrELoss.C:69
 DrawCorrELoss.C:70
 DrawCorrELoss.C:71
 DrawCorrELoss.C:72
 DrawCorrELoss.C:73
 DrawCorrELoss.C:74
 DrawCorrELoss.C:75
 DrawCorrELoss.C:76
 DrawCorrELoss.C:77
 DrawCorrELoss.C:78
 DrawCorrELoss.C:79
 DrawCorrELoss.C:80
 DrawCorrELoss.C:81
 DrawCorrELoss.C:82
 DrawCorrELoss.C:83
 DrawCorrELoss.C:84
 DrawCorrELoss.C:85
 DrawCorrELoss.C:86
 DrawCorrELoss.C:87
 DrawCorrELoss.C:88
 DrawCorrELoss.C:89
 DrawCorrELoss.C:90
 DrawCorrELoss.C:91
 DrawCorrELoss.C:92
 DrawCorrELoss.C:93
 DrawCorrELoss.C:94
 DrawCorrELoss.C:95
 DrawCorrELoss.C:96
 DrawCorrELoss.C:97
 DrawCorrELoss.C:98
 DrawCorrELoss.C:99
 DrawCorrELoss.C:100
 DrawCorrELoss.C:101
 DrawCorrELoss.C:102
 DrawCorrELoss.C:103
 DrawCorrELoss.C:104
 DrawCorrELoss.C:105
 DrawCorrELoss.C:106
 DrawCorrELoss.C:107
 DrawCorrELoss.C:108
 DrawCorrELoss.C:109
 DrawCorrELoss.C:110
 DrawCorrELoss.C:111
 DrawCorrELoss.C:112
 DrawCorrELoss.C:113
 DrawCorrELoss.C:114
 DrawCorrELoss.C:115
 DrawCorrELoss.C:116
 DrawCorrELoss.C:117
 DrawCorrELoss.C:118
 DrawCorrELoss.C:119
 DrawCorrELoss.C:120
 DrawCorrELoss.C:121
 DrawCorrELoss.C:122