ROOT logo
#ifndef ALIANALYSISTASKEFFICIENCYBFPSI_cxx
#define ALIANALYSISTASKEFFICIENCYBFPSI_cxx

// ---------------------------------------------------------------------
//
// Task for calculating the efficiency of the Balance Function 
// for single particles and pairs: multi-D analysis
//
// Authors: Panos Christakoglou, Michael Weber
// 
// ---------------------------------------------------------------------

class TH1F;
class TH3D;
class TH2F;
class TString;
class AliESDEvent;
class AliESDtrackCuts;
#include "AliTHn.h"

#include "AliAnalysisTaskSE.h"

const Int_t kVariablesSingle = 2;       // track variables in histogram (phi-Psi2, pTtrig)
const Int_t kVariablesPair   = 5;       // track variables in histogram (phi-Psi2, dEta, dPhi, pTtrig, ptAssociated)

class AliAnalysisTaskEfficiencyBFPsi : public AliAnalysisTaskSE {
 public:
  AliAnalysisTaskEfficiencyBFPsi() : AliAnalysisTaskSE(), 
    fESD(0), fQAList(0), fOutputList(0), 
    fHistEventStats(0), fHistCentrality(0), fHistNMult(0), 
    fHistGeneratedPlus(0), fHistSurvivedPlus(0),
    fHistGeneratedMinus(0),fHistSurvivedMinus(0),
    fHistGeneratedPlusPlus(0), fHistSurvivedPlusPlus(0),
    fHistGeneratedMinusMinus(0), fHistSurvivedMinusMinus(0),
    fHistGeneratedPlusMinus(0), fHistSurvivedPlusMinus(0),
    fHistGeneratedMinusPlus(0), fHistSurvivedMinusPlus(0),
    fESDtrackCuts(0), fAnalysisMode(0), 
    fCentralityEstimator("V0M"), 
    fCentralityPercentileMin(0.0), fCentralityPercentileMax(10.0), 
    fVxMax(3.0), fVyMax(3.0), fVzMax(10.), 
    fMinNumberOfTPCClusters(80), fMaxChi2PerTPCCluster(4.0), 
    fMaxDCAxy(3.0), fMaxDCAz(3.0),
    fMinPt(0.3), fMaxPt(1.5), fMaxEta(0.8), fEtaRangeMax(0.8), 
    fPtRangeMin(0.1), fPtRangeMax(5.0), fPhiRangeMin(0.0),fPhiRangeMax(6.28){}
  AliAnalysisTaskEfficiencyBFPsi(const char *name);
  virtual ~AliAnalysisTaskEfficiencyBFPsi() {}
  
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);
  
  Bool_t   IsLabelUsed(TArrayI array, Int_t label);

  void SetAnalysisCutObject(AliESDtrackCuts *const trackCuts) {
    fESDtrackCuts = trackCuts;}
  void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) {
    fVxMax = vx;
    fVyMax = vy;
    fVzMax = vz;
  }
 
  //Centrality
  void SetCentralityEstimator(const char* centralityEstimator) {
    fCentralityEstimator = centralityEstimator;}
  void SetCentralityPercentileRange(Float_t min, Float_t max) { 
    fCentralityPercentileMin=min;
    fCentralityPercentileMax=max;
  }

  void SetAnalysisMode(const char* analysisMode) {
    fAnalysisMode = analysisMode;}

  //Track cuts
  void SetMinNumberOfTPCClusters(Double_t min) {
    fMinNumberOfTPCClusters = min;}
  void SetMaxChi2PerTPCCluster(Double_t max) {
    fMaxChi2PerTPCCluster = max;}
  void SetMaxDCAxy(Double_t max) {
    fMaxDCAxy = max;}
  void SetMaxDCAz(Double_t max) {
    fMaxDCAz = max;}
  void SetMinPt(Double_t minPt) {
    fMinPt = minPt;}
  void SetMaxPt(Double_t maxPt) {
    fMaxPt = maxPt;}
  void SetMaxEta(Double_t maxEta) {
    fMaxEta = maxEta;}

  void SetEtaRangeMax(Double_t maxRangeEta){
    fEtaRangeMax = maxRangeEta;}//
  void SetPtRangeMin(Double_t minRangePt){
    fPtRangeMin = minRangePt;} // 
  void SetPtRangeMax(Double_t maxRangePt){
    fPtRangeMax = maxRangePt;} //
  void SetPhiRangeMin(Double_t minRangePhi){
    fPhiRangeMin = minRangePhi;} //
  void SetPhiRangeMax(Double_t maxRangePhi){
    fPhiRangeMax = maxRangePhi;} //
  
   
 private:
  AliESDEvent *fESD;    //! ESD object
  TList       *fQAList; //! QA list
  TList       *fOutputList; //! Output list
  
  // QA histograms
  TH1F *fHistEventStats; //!event stats
  TH1F *fHistCentrality; //!centrality
  TH1F *fHistNMult; //! nmult   

  // output histograms (single particles)
  AliTHn *fHistGeneratedPlus;//!correction map for positives (generated)
  AliTHn *fHistSurvivedPlus;//!correction map positives (survived)
  AliTHn *fHistGeneratedMinus;//!correction map for negatives (generated)
  AliTHn *fHistSurvivedMinus;//!correction map negatives (survived)

  // output histograms (pairs)
  AliTHn *fHistGeneratedPlusPlus;//!correction map for ++ (generated)
  AliTHn *fHistSurvivedPlusPlus;//!correction map ++ (survived)
  AliTHn *fHistGeneratedMinusMinus;//!correction map for -- (generated)
  AliTHn *fHistSurvivedMinusMinus;//!correction map -- (survived)
  AliTHn *fHistGeneratedPlusMinus;//!correction map for +- (generated)
  AliTHn *fHistSurvivedPlusMinus;//!correction map +- (survived)
  AliTHn *fHistGeneratedMinusPlus;//!correction map for -+ (generated)
  AliTHn *fHistSurvivedMinusPlus;//!correction map -+ (survived)
  //============//

  AliESDtrackCuts *fESDtrackCuts; //ESD track cuts

  TString fAnalysisMode;//"TPC", "Global"

  TString fCentralityEstimator;//"V0M","TRK","TKL","ZDC","FMD"
  Float_t fCentralityPercentileMin, fCentralityPercentileMax; //min-max centrality percentile

  Double_t fVxMax;//vxmax
  Double_t fVyMax;//vymax
  Double_t fVzMax;//vzmax

  Double_t fMinNumberOfTPCClusters;
  Double_t fMaxChi2PerTPCCluster;
  Double_t fMaxDCAxy, fMaxDCAz;
  Double_t fMinPt, fMaxPt;
  Double_t fMaxEta;
  Double_t fEtaRangeMax; // acceptance cuts
  Double_t fPtRangeMin;  //acceptance cuts
  Double_t fPtRangeMax;  //acceptance cuts
  Double_t fPhiRangeMin; //acceptance cuts
  Double_t fPhiRangeMax; // acceptance cuts

  AliAnalysisTaskEfficiencyBFPsi(const AliAnalysisTaskEfficiencyBFPsi&); // not implemented
  AliAnalysisTaskEfficiencyBFPsi& operator=(const AliAnalysisTaskEfficiencyBFPsi&); // not implemented
  
  ClassDef(AliAnalysisTaskEfficiencyBFPsi, 1); // example of analysis
};

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