ROOT logo
//-*- Mode: C++ -*-

#ifndef ALIANALYSISTASKNETPARTICLE_H
#define ALIANALYSISTASKNETPARTICLE_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
 
/**
 * Class for NetParticle Distributions
 * -- AnalysisTask
 * Authors: Jochen Thaeder <jochen@thaeder.de>
 *          Michael Weber <m.weber@cern.ch>
 */

#include "AliAnalysisTaskSE.h"
#include "TList.h"
#include "THnSparse.h"

#include "AliAnalysisNetParticleHelper.h"
#include "AliAnalysisNetParticleEffCont.h"
#include "AliAnalysisNetParticleDCA.h"
#include "AliAnalysisNetParticleDistribution.h"
#include "AliAnalysisNetParticleQA.h"

class AliESDEvent;
class AliESDInputHandler;
class AliAODEvent;
class AliAODInputHandler;
class AliMCEvent;
class AliStack;
class AliPIDResponse;
class AliESDResponse;

class AliAnalysisTaskNetParticle : public AliAnalysisTaskSE {

 public:

  AliAnalysisTaskNetParticle(const char *name = "AliAnalysisTaskNetParticle");
  virtual ~AliAnalysisTaskNetParticle();
  
  /*
   * ---------------------------------------------------------------------------------
   *                                  Task Methods
   * ---------------------------------------------------------------------------------
   */

  virtual void UserCreateOutputObjects();
  virtual void UserExec(Option_t *option);
  virtual void Terminate(Option_t *);

  /*
   * ---------------------------------------------------------------------------------
   *                                 Public Methods
   * ---------------------------------------------------------------------------------
   */

  /** Initialize Task */
  Int_t Initialize();

  /*
   * ---------------------------------------------------------------------------------
   *                                    Setter
   * ---------------------------------------------------------------------------------
   */

  void SetIsMC()                             {fIsMC             = kTRUE;}
  void SetIsAOD(Bool_t b)                    {fIsAOD            = b;}
  
  void SetESDTrackCutMode(Int_t i)           {fESDTrackCutMode  = i;}
  void SetModeEffCreation(Int_t i)           {fModeEffCreation  = i;}
  void SetModeDCACreation(Int_t i)           {fModeDCACreation  = i;}
  void SetModeDistCreation(Int_t i)          {fModeDistCreation = i;}
  void SetModeQACreation(Int_t i)            {fModeQACreation   = i;}
 
  void SetEtaMax(Float_t f)                  {fEtaMax           = f;}
  void SetEtaMaxEff(Float_t f)               {fEtaMaxEff        = f;}
  void SetPtRange(Float_t f1, Float_t f2)    {fPtRange[0]       = f1; fPtRange[1]    = f2;}
  void SetPtRangeEff(Float_t f1, Float_t f2) {fPtRangeEff[0]    = f1; fPtRangeEff[1] = f2;}

  void SetTrackFilterBit(Int_t i)            {fAODtrackCutBit   = i;}
  
  void SetNetParticleHelper(AliAnalysisNetParticleHelper *helper) {
    if (fHelper) 
      delete fHelper;
    fHelper = helper;
  }

  ///////////////////////////////////////////////////////////////////////////////////

 private:

  AliAnalysisTaskNetParticle(const AliAnalysisTaskNetParticle&); // not implemented
  AliAnalysisTaskNetParticle& operator=(const AliAnalysisTaskNetParticle&); // not implemented

  /*
   * ---------------------------------------------------------------------------------
   *                            Setup/Reset Methods - private
   * ---------------------------------------------------------------------------------
   */
  
  /** Setup Event */
  Int_t SetupEvent();

  /** Setup ESD Event */
  Int_t SetupESDEvent();

  /** Setup AOD Event */
  Int_t SetupAODEvent();

  /** Setup MC Event */
  Int_t SetupMCEvent();

  /** Reset Event */
  void ResetEvent();

  /*
   * ---------------------------------------------------------------------------------
   *                             Members - private
   * ---------------------------------------------------------------------------------
   */
  
  AliAnalysisNetParticleHelper       *fHelper;  //  Helper class
  AliAnalysisNetParticleEffCont      *fEffCont; //! Efficiency and Contamination class
  AliAnalysisNetParticleDCA          *fDCA;     //! DCA class
  AliAnalysisNetParticleDistribution *fDist;    //! Distributions class
  AliAnalysisNetParticleQA           *fQA;      //! QA class

  // --- OutLists ----------------------------------------------------------
  TList              *fOutList;                 //! Ptr to output data container
  TList              *fOutListEff;              //! Ptr to output data container - efficiency
  TList              *fOutListCont;             //! Ptr to output data container - contamination
  TList              *fOutListDCA;              //! Ptr to output data container - DCA
  TList              *fOutListQA;               //! Ptr to output data container - QA

  // --- ESD only ----------------------------------------------------------
  AliESDEvent        *fESD;                     //! Ptr to ESD event
  AliESDInputHandler *fESDHandler;              //! Ptr to ESD Handler
  // -----------------------------------------------------------------------
  AliESDtrackCuts    *fESDTrackCutsBase;        //! ESD cuts - base settings
  AliESDtrackCuts    *fESDTrackCuts;            //! ESD cuts  
  AliESDtrackCuts    *fESDTrackCutsBkg;         //! ESD cuts for Bkg
  AliESDtrackCuts    *fESDTrackCutsEff;         //! ESD cuts for efficiency determination -> larger pt Range

  // --- AOD only ----------------------------------------------------------
  AliAODEvent        *fAOD;                     //! Ptr to AOD event
  AliAODInputHandler *fAODHandler;              //! Ptr to AOD Handler
  
  // --- Flags -------------------------------------------------------------
  Bool_t              fIsMC;                    //  Is MC event
  Bool_t              fIsAOD;                   //  analysis mode            : 0 = ESDs  | 1 = AODs
  Int_t               fESDTrackCutMode;         //  ESD track cut mode       : 0 = clean | 1 = dirty
  Int_t               fModeEffCreation ;        //  Correction creation mode : 1 = on    | 0 = off
  Int_t               fModeDCACreation;         //  DCA creation mode        : 1 = on    | 0 = off
  Int_t               fModeDistCreation;        //  Dist creation mode       : 1 = on    | 0 = off
  Int_t               fModeQACreation;          //  QA creation mode         : 1 = on    | 0 = off

  // --- MC only -----------------------------------------------------------
  AliMCEvent         *fMCEvent;                 //! Ptr to MC event
  AliStack           *fMCStack;                 //! Ptr to MC stack
  // -----------------------------------------------------------------------
  Float_t             fEtaMax;                  //  Max, absolut eta 
  Float_t             fEtaMaxEff;               //  Max, absolut eta for efficiency
  Float_t             fPtRange[2];              //  Array of pt [min,max]
  Float_t             fPtRangeEff[2];           //  Array of pt [min,max] for efficiency
  // -----------------------------------------------------------------------
  Int_t               fAODtrackCutBit;          //  Track filter bit for AOD tracks
  // =======================================================================

  
  ClassDef(AliAnalysisTaskNetParticle, 1);
};

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