ROOT logo
#ifndef ALIANALYSISTASKAODFILTERBITQA_H
#define ALIANALYSISTASKAODFILTERBITQA_H

// Analysis task for the QA of AOD track filter bits
// Authors: m.weber@cern.ch

#define gBitMax 16// number of maximum filter bits
#define gNCharge 2// number of charges

class TList;
class TH2D;
class TH3D;


class AliAnalysisTaskAODFilterBitQA : public AliAnalysisTaskSE {
 public:
  AliAnalysisTaskAODFilterBitQA(const char *name = "AliAnalysisTaskAODFilterBitQA");
  virtual ~AliAnalysisTaskAODFilterBitQA(); 
   
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   FinishTaskOutput();
  virtual void   Terminate(Option_t *);

  void SetFillOnlySecondaries(){
    fillOnlySecondaries = kTRUE;
  }

  void SetFillHFVertexingTracks(TString HFBranchName="D0toKpi", Int_t bitIgnore1 = -1, Int_t bitIgnore2 = -1){
    fillHFVertexingTracks = kTRUE;
    fHFBranchName         = HFBranchName;
    fBitIgnore1           = bitIgnore1;
    fBitIgnore2           = bitIgnore2;
  }
  
  void SetCentralityPercentileRange(Double_t min, Double_t max){
    useCentrality            = kTRUE;
    fCentralityPercentileMin = min;
    fCentralityPercentileMax = max;
  }

  void SetPtRange(Double_t min, Double_t max){
    fPtMin = min;
    fPtMax = max;
  }

  void SetEtaRange(Double_t min, Double_t max){
    fEtaMin = min;
    fEtaMax = max;
  }

 private:
  Double_t IsEventAccepted(AliVEvent *event);
  void GetAcceptedTracks(AliVEvent *event, Double_t gCentrality);
  void GetAcceptedHFVertexingTracks(AliVEvent *event, Double_t gCentrality);
  
  AliAnalysisTaskAODFilterBitQA(const AliAnalysisTaskAODFilterBitQA&); // not implemented
  AliAnalysisTaskAODFilterBitQA& operator=(const AliAnalysisTaskAODFilterBitQA&); // not implemented

  TClonesArray *fArrayMC;//MC track array for AODs

  TList *fListQA;//output list for QA histograms

  Bool_t useCentrality;// use centrality as event class estimator (default = OFF)
  Bool_t fillOnlySecondaries;//fill only secondary particles (only for MC running)
  Bool_t fillHFVertexingTracks;//fill HF vertexing tracks

  TString fHFBranchName;// name of HF branch: D0toKpi, Dstar, ...

  Int_t fBitIgnore1;//filter bit to be skipped when looping over tracks (-1 = OFF)
  Int_t fBitIgnore2;//filter bit to be skipped when looping over tracks (-1 = OFF)

  Double_t fCentralityPercentileMin;// minimum centrality threshold (default = 0)
  Double_t fCentralityPercentileMax;// maximum centrality threshold (default = 80)
  Double_t fPtMin;// minimum pT threshold (default = 0)
  Double_t fPtMax;// maximum pT threshold (default = 1000)
  Double_t fEtaMin;// minimum eta threshold (default = -10)
  Double_t fEtaMax;// maximum eta threshold (default = 10)

  TH2D* fHistTrackStats;//QA histogram for track filter bit statistics vs. centrality
  TH3D* fHistKinematics[gNCharge][gBitMax];//QA histograms for kinematics (eta, phi, pT) for different filter bits
  TH2D* fHistDCAconstrained[gNCharge][gBitMax];//QA histograms for DCA (xy,z) for different filter bits for constrained tracks (stored in DCA methods)
  TH3D* fHistDCAglobal[gNCharge][gBitMax];//QA histograms for DCA (xy,z) for different filter bits for global tracks (stored in Position methods)
  TH2D* fHistChiClus[gNCharge][gBitMax];//QA histograms for Chi2 and number of TPC clusters for different filter bits


  
  ClassDef(AliAnalysisTaskAODFilterBitQA, 0); //
};



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