ROOT logo
#ifndef ALIANALYSISTASKSEHFQUALITYASSURANCE_H
#define ALIANALYSISTASKSEHFQUALITYASSURANCE_H

/* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */ 

//*************************************************************************
// Class AliAnalysisTaskSEHFQA
// AliAnalysisTaskSE for HF quality assurance
// Authors: C.Bianchin, chiara.bianchin@pd.infn.it
//*************************************************************************

#include <TROOT.h>
#include <TSystem.h>

#include "AliAnalysisTaskSE.h"

class AliRDHFCuts;
class TH1F;
class AliAODEvent;
class AliFlowEvent;
class AliFlowTrackCuts;

class AliAnalysisTaskSEHFQA : public AliAnalysisTaskSE
{

 public:

  enum DecChannel {kDplustoKpipi,kD0toKpi,kDstartoKpipi,kDstoKKpi,kD0toKpipipi,kLambdactopKpi,kLambdactoV0};

  AliAnalysisTaskSEHFQA();
  AliAnalysisTaskSEHFQA(const char *name, DecChannel ch, AliRDHFCuts* cuts);
  virtual ~AliAnalysisTaskSEHFQA();

  // Implementation of interface methods
  virtual void UserCreateOutputObjects();
  virtual void Init();
  virtual void LocalInit() {Init();}
  virtual void UserExec(Option_t *option);
  virtual void Terminate(Option_t *option);

  //setters
  void SetReadMC(Bool_t mcflag){fReadMC=mcflag;}
  void SetSimpleMode(Bool_t flag){fSimpleMode=flag;}
  void SetTrackOn(Bool_t trackon=kTRUE){fOnOff[0]=trackon;}
  void SetPIDOn(Bool_t pidon=kTRUE){fOnOff[1]=pidon;}
  void SetCentralityOn(Bool_t centron=kTRUE){fOnOff[2]=centron;}
  void SetEvSelectionOn(Bool_t evselon=kTRUE){fOnOff[3]=evselon;}
  void SetFlowObsOn(Bool_t flowobson=kTRUE){fOnOff[4]=flowobson;}
  void SetUseSelectionBit(Bool_t selectionbiton=kTRUE){fUseSelectionBit=selectionbiton;}
  void SetSecondCentralityEstimator(AliRDHFCuts::ECentrality est){fEstimator = est;}
  void SetFillDistributionsForTrackEffChecks(Bool_t filldistrtrackeffcheckson=kFALSE){fFillDistrTrackEffChecks = filldistrtrackeffcheckson;}

  //getters
  AliRDHFCuts* GetCutObject() const {return fCuts;}
  DecChannel GetDecayChannel()const {return fDecayChannel;}
  Bool_t GetTrackStatus() const {return fOnOff[0];}
  Bool_t GetPIDStatus() const {return fOnOff[1];}
  Bool_t GetCentralityStatus() const {return fOnOff[2];}
  Bool_t GetEvSelStatus() const {return fOnOff[3];}
  Bool_t GetFlowObsStatus() const {return fOnOff[4];}
  Bool_t GetUseSelectionBit() const {return fUseSelectionBit;}
  AliRDHFCuts::ECentrality GetSecondCentralityEstimator()const {return fEstimator;}
  Bool_t GetFillDistributionsForTrackEffChecks()const {return fFillDistrTrackEffChecks;}

 private:
  AliAnalysisTaskSEHFQA(const AliAnalysisTaskSEHFQA &source);
  AliAnalysisTaskSEHFQA operator=(const AliAnalysisTaskSEHFQA &source);
  void FillFlowObs(AliAODEvent *aod);

 TList* fOutputEntries;    //! list sent on output slot 1
 TList* fOutputPID;        //! list sent on output slot 2
 TList* fOutputTrack;      //! list sent on output slot 3
 TList* fOutputCounters;   //! list sent on output slot 5
 TList* fOutputCheckCentrality;   //! list sent on output slot 6
 TList* fOutputEvSelection; //! list sent on output slot 7
 TList* fOutputFlowObs;    //! list sent on output slot 8
 DecChannel fDecayChannel; //identify the decay channel
 AliRDHFCuts* fCuts;       // object containing cuts 
 AliFlowEvent *fFlowEvent; //! to handle the reusage of the flowEvent object
 AliFlowTrackCuts *fRFPcuts; //! reference flow particle cuts
 AliRDHFCuts::ECentrality fEstimator; //2nd estimator for centrality
 Bool_t fReadMC;           // flag to read MC
 Bool_t fSimpleMode;       // if true, don't do candidates (much faster in PbPb)
 Bool_t fUseSelectionBit;  // flag to use or not the selection bit
 Bool_t fOnOff[5];         // on-off the QA on tracks (0), PID (1), centrality (2), event selection -- default is {kTRUE,kTRUE,kTRUE,kTRUE}
 Bool_t fFillDistrTrackEffChecks;

 ClassDef(AliAnalysisTaskSEHFQA,10); //AnalysisTaskSE for the quality assurance of HF in hadrons

};

#endif

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