ROOT logo
#include <TFile.h>
#include <TH1.h>
#include <TROOT.h>
#include <TString.h>
#include <TSystem.h>

#include <iostream>

#include "AliHighPtDeDxBase.h"

using namespace std;



//_____________________________________________________________________________


AliHighPtDeDxBase* GetObject(TFile* file, Int_t filter, Bool_t phiCut, 
			     Int_t run, Bool_t etaAbs, 
			     Int_t etaLow, Int_t etaHigh, const Char_t* baseName="filter",
			     const Char_t* endName=0);

TFile* FindFileFresh(const Char_t* fileName);
TFile* FindFile(const Char_t* fileName);
void CutHistogram(TH1* hist, Double_t xMin, Double_t xMax);
void SetHistError(TH1* hist, Double_t error);
void CreateDir(const Char_t* dirName);

//___________________________________________________________________________
AliHighPtDeDxBase* GetObject(TFile* file, Int_t filter, Bool_t phiCut, Int_t run, Bool_t etaAbs, 
			     Int_t etaLow, Int_t etaHigh,
			     const Char_t* baseName, const Char_t* endName)
{
  TString objectName(baseName);
  if(filter>0)
  objectName += filter;
  if(phiCut)
    objectName += "phicut";
  if(run) {
    objectName += "_";
    objectName += run;
  }
  if(etaAbs) {
    objectName += "etaabs";
    objectName += etaLow;
    objectName += etaHigh;
  }

  if(endName)
    objectName += endName;

  cout << "Getting object: " << objectName.Data() << endl;

  return (AliHighPtDeDxBase*)(file->Get(objectName.Data()));
}

//______________________________________________________________________
TFile* FindFileFresh(const Char_t* fileName)
{
  // Find file
  TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(fileName);
  if(file) {
    file->Close();
    delete file;
  }

  file = TFile::Open(fileName, "READ");

  if(!file)
    cout << "File : " << fileName << " was not found" << endl;

  return file;
}

//______________________________________________________________________
TFile* FindFile(const Char_t* fileName)
{
  // Find file
  TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(fileName);
  if(file) {
    return file;
  }

  file = TFile::Open(fileName, "READ");

  if(!file)
    cout << "File : " << fileName << " was not found" << endl;

  return file;
}

//______________________________________________________________________
void CutHistogram(TH1* hist, Double_t xMin, Double_t xMax)
{
  const Int_t n = hist->GetNbinsX();
  
  for(Int_t bin = 1; bin <= n; bin++) {
    
    Float_t x = hist->GetXaxis()->GetBinCenter(bin);
    if(x < xMin) {
      hist->SetBinContent(bin, 0);
      hist->SetBinError(bin, 0);
    } else if(x > xMax) {
      hist->SetBinContent(bin, 0);
      hist->SetBinError(bin, 0);
    }

  }
}

//______________________________________________________________________
void SetHistError(TH1* hist, Double_t error)
{
  const Int_t n = hist->GetNbinsX();
  
  for(Int_t bin = 1; bin <= n; bin++) {
    
    //    Float_t x = hist->GetXaxis()->GetBinCenter(bin);
    hist->SetBinError(bin, error);
  }
}

//______________________________________________________________________
void CreateDir(const Char_t* dirName)
{
  TString pwd(gSystem->pwd());
  gSystem->cd(pwd.Data());
  
  if(gSystem->cd(dirName)) {
    gSystem->cd(pwd.Data());
  } else {
    gSystem->mkdir(dirName, kTRUE); // kTRUE means recursive
  }
}
 my_tools.C:1
 my_tools.C:2
 my_tools.C:3
 my_tools.C:4
 my_tools.C:5
 my_tools.C:6
 my_tools.C:7
 my_tools.C:8
 my_tools.C:9
 my_tools.C:10
 my_tools.C:11
 my_tools.C:12
 my_tools.C:13
 my_tools.C:14
 my_tools.C:15
 my_tools.C:16
 my_tools.C:17
 my_tools.C:18
 my_tools.C:19
 my_tools.C:20
 my_tools.C:21
 my_tools.C:22
 my_tools.C:23
 my_tools.C:24
 my_tools.C:25
 my_tools.C:26
 my_tools.C:27
 my_tools.C:28
 my_tools.C:29
 my_tools.C:30
 my_tools.C:31
 my_tools.C:32
 my_tools.C:33
 my_tools.C:34
 my_tools.C:35
 my_tools.C:36
 my_tools.C:37
 my_tools.C:38
 my_tools.C:39
 my_tools.C:40
 my_tools.C:41
 my_tools.C:42
 my_tools.C:43
 my_tools.C:44
 my_tools.C:45
 my_tools.C:46
 my_tools.C:47
 my_tools.C:48
 my_tools.C:49
 my_tools.C:50
 my_tools.C:51
 my_tools.C:52
 my_tools.C:53
 my_tools.C:54
 my_tools.C:55
 my_tools.C:56
 my_tools.C:57
 my_tools.C:58
 my_tools.C:59
 my_tools.C:60
 my_tools.C:61
 my_tools.C:62
 my_tools.C:63
 my_tools.C:64
 my_tools.C:65
 my_tools.C:66
 my_tools.C:67
 my_tools.C:68
 my_tools.C:69
 my_tools.C:70
 my_tools.C:71
 my_tools.C:72
 my_tools.C:73
 my_tools.C:74
 my_tools.C:75
 my_tools.C:76
 my_tools.C:77
 my_tools.C:78
 my_tools.C:79
 my_tools.C:80
 my_tools.C:81
 my_tools.C:82
 my_tools.C:83
 my_tools.C:84
 my_tools.C:85
 my_tools.C:86
 my_tools.C:87
 my_tools.C:88
 my_tools.C:89
 my_tools.C:90
 my_tools.C:91
 my_tools.C:92
 my_tools.C:93
 my_tools.C:94
 my_tools.C:95
 my_tools.C:96
 my_tools.C:97
 my_tools.C:98
 my_tools.C:99
 my_tools.C:100
 my_tools.C:101
 my_tools.C:102
 my_tools.C:103
 my_tools.C:104
 my_tools.C:105
 my_tools.C:106
 my_tools.C:107
 my_tools.C:108
 my_tools.C:109
 my_tools.C:110
 my_tools.C:111
 my_tools.C:112
 my_tools.C:113
 my_tools.C:114
 my_tools.C:115
 my_tools.C:116
 my_tools.C:117
 my_tools.C:118
 my_tools.C:119
 my_tools.C:120
 my_tools.C:121
 my_tools.C:122
 my_tools.C:123
 my_tools.C:124
 my_tools.C:125
 my_tools.C:126
 my_tools.C:127
 my_tools.C:128
 my_tools.C:129
 my_tools.C:130
 my_tools.C:131
 my_tools.C:132
 my_tools.C:133
 my_tools.C:134
 my_tools.C:135