ROOT logo
#ifndef ALIBALANCETRIGGERED_H
#define ALIBALANCETRIGGERED_H
/*  See cxx source for full Copyright notice */


//-------------------------------------------------------------------------
//                          Class AliBalanceTriggered
//   This is the class for the Balance Function analysis
//
//    Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
//    Modified: Michael Weber, m.weber@cern.ch
//-------------------------------------------------------------------------

#include <TObject.h>
#include "TString.h"

class TGraphErrors;
class TH1D;
class AliTHn;

const Int_t kTrackVarsSingle = 4;       // track variables in histogram (eta, phi, pTtrig, centrality)
const Int_t kTrackVarsPair   = 5;       // track variables in histogram (dEta, dPhi, pT, pTtrig, centrality)

class AliBalanceTriggered : public TObject {
 public:

  AliBalanceTriggered();
  AliBalanceTriggered(const AliBalanceTriggered& balance);
  ~AliBalanceTriggered();
  
  // analysis setters
  void SetAnalysisLevel(const char* analysisLevel) {
    fAnalysisLevel = analysisLevel;}

  // analysis getters
  const char* GetAnalysisLevel() {return fAnalysisLevel.Data();}

  // initialize histograms
  void InitHistograms(void);

  // histogram setters
  void SetHistNp(AliTHn *gHist)  { fHistP  = gHist;}
  void SetHistNn(AliTHn *gHist)  { fHistN  = gHist;}
  void SetHistNpn(AliTHn *gHist) { fHistPN = gHist;}
  void SetHistNnp(AliTHn *gHist) { fHistNP = gHist;}
  void SetHistNpp(AliTHn *gHist) { fHistPP = gHist;}
  void SetHistNnn(AliTHn *gHist) { fHistNN = gHist;}
 
  // histogram getters
  AliTHn *GetHistNp() { return fHistP;}
  AliTHn *GetHistNn() { return fHistN;}
  AliTHn *GetHistNpn() { return fHistPN;}
  AliTHn *GetHistNnp() { return fHistNP;}
  AliTHn *GetHistNpp() { return fHistPP;}
  AliTHn *GetHistNnn() { return fHistNN;}

  // Fill balance function histograms
  void FillBalance(Float_t fCentrality,TObjArray* particles,TObjArray* particlesMixed);
 
  // Get the balance function histogram 
  TH1D *GetBalanceFunctionHistogram1D(Int_t var, Double_t pTMinTrigger, Double_t pTMaxTrigger, Double_t pTMin, Double_t pTMax, Double_t centrMin, Double_t centrMax, Double_t etaGap = -1);

  // Get the balance function histogram (2D) 
  TH2D *GetBalanceFunctionHistogram2D(Int_t var1, Int_t var2, Double_t pTMinTrigger, Double_t pTMaxTrigger, Double_t pTMin, Double_t pTMax, Double_t centrMin, Double_t centrMax);

  // Get 1D histogram
  TH1D* GetHistogram1D(Int_t histo, Int_t var, Double_t pTMinTrigger, Double_t pTMaxTrigger, Double_t pTMin, Double_t pTMax, Double_t centrMin, Double_t centrMax, Double_t etaGap = -1);

  // Get 2D histogram
  TH2D* GetHistogram2D(Int_t histo, Int_t var1, Int_t var2, Double_t pTMinTrigger, Double_t pTMaxTrigger, Double_t pTMin, Double_t pTMax, Double_t centrMin, Double_t centrMax);

 private:
  TString fAnalysisLevel; // ESD, AOD or MC

  AliTHn *fHistP;  //N+
  AliTHn *fHistN;  //N-
  AliTHn *fHistPN; //N+-
  AliTHn *fHistNP; //N-+
  AliTHn *fHistPP; //N++
  AliTHn *fHistNN; //N--

  AliBalanceTriggered & operator=(const AliBalanceTriggered & ) {return *this;}

  ClassDef(AliBalanceTriggered, 1)
};

#endif
 AliBalanceTriggered.h:1
 AliBalanceTriggered.h:2
 AliBalanceTriggered.h:3
 AliBalanceTriggered.h:4
 AliBalanceTriggered.h:5
 AliBalanceTriggered.h:6
 AliBalanceTriggered.h:7
 AliBalanceTriggered.h:8
 AliBalanceTriggered.h:9
 AliBalanceTriggered.h:10
 AliBalanceTriggered.h:11
 AliBalanceTriggered.h:12
 AliBalanceTriggered.h:13
 AliBalanceTriggered.h:14
 AliBalanceTriggered.h:15
 AliBalanceTriggered.h:16
 AliBalanceTriggered.h:17
 AliBalanceTriggered.h:18
 AliBalanceTriggered.h:19
 AliBalanceTriggered.h:20
 AliBalanceTriggered.h:21
 AliBalanceTriggered.h:22
 AliBalanceTriggered.h:23
 AliBalanceTriggered.h:24
 AliBalanceTriggered.h:25
 AliBalanceTriggered.h:26
 AliBalanceTriggered.h:27
 AliBalanceTriggered.h:28
 AliBalanceTriggered.h:29
 AliBalanceTriggered.h:30
 AliBalanceTriggered.h:31
 AliBalanceTriggered.h:32
 AliBalanceTriggered.h:33
 AliBalanceTriggered.h:34
 AliBalanceTriggered.h:35
 AliBalanceTriggered.h:36
 AliBalanceTriggered.h:37
 AliBalanceTriggered.h:38
 AliBalanceTriggered.h:39
 AliBalanceTriggered.h:40
 AliBalanceTriggered.h:41
 AliBalanceTriggered.h:42
 AliBalanceTriggered.h:43
 AliBalanceTriggered.h:44
 AliBalanceTriggered.h:45
 AliBalanceTriggered.h:46
 AliBalanceTriggered.h:47
 AliBalanceTriggered.h:48
 AliBalanceTriggered.h:49
 AliBalanceTriggered.h:50
 AliBalanceTriggered.h:51
 AliBalanceTriggered.h:52
 AliBalanceTriggered.h:53
 AliBalanceTriggered.h:54
 AliBalanceTriggered.h:55
 AliBalanceTriggered.h:56
 AliBalanceTriggered.h:57
 AliBalanceTriggered.h:58
 AliBalanceTriggered.h:59
 AliBalanceTriggered.h:60
 AliBalanceTriggered.h:61
 AliBalanceTriggered.h:62
 AliBalanceTriggered.h:63
 AliBalanceTriggered.h:64
 AliBalanceTriggered.h:65
 AliBalanceTriggered.h:66
 AliBalanceTriggered.h:67
 AliBalanceTriggered.h:68
 AliBalanceTriggered.h:69
 AliBalanceTriggered.h:70
 AliBalanceTriggered.h:71
 AliBalanceTriggered.h:72
 AliBalanceTriggered.h:73
 AliBalanceTriggered.h:74
 AliBalanceTriggered.h:75
 AliBalanceTriggered.h:76
 AliBalanceTriggered.h:77
 AliBalanceTriggered.h:78
 AliBalanceTriggered.h:79
 AliBalanceTriggered.h:80
 AliBalanceTriggered.h:81
 AliBalanceTriggered.h:82
 AliBalanceTriggered.h:83
 AliBalanceTriggered.h:84
 AliBalanceTriggered.h:85
 AliBalanceTriggered.h:86
 AliBalanceTriggered.h:87