ROOT logo
#ifndef ALIEBYEPIDRATIOTASK_H
#define ALIEBYEPIDRATIOTASK_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
//=========================================================================//
//             AliEbyE Analysis for Particle Ratio Fluctuation             //
//                   Deepika Rathee  | Satyajit Jena                       //
//                   drathee@cern.ch | sjena@cern.ch                       //
//                  Date: Wed Jul  9 18:38:30 CEST 2014                    // 
//          New approch to find particle ratio to reduce memory            //
//                             (Test Only)                                 //
//        Copied from NetParticle Classes
//        Origin: Authors: Jochen Thaeder <jochen@thaeder.de>
//                         Michael Weber <m.weber@cern.ch>
//=========================================================================//

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

#include "AliEbyEPidRatioHelper.h"
#include "AliEbyEPidRatioEffCont.h"
#include "AliEbyEPidRatioEffContExtra.h"
#include "AliEbyEPidRatioDCA.h"
#include "AliEbyEPidRatioPhy.h"
#include "AliEbyEPidRatioQA.h"

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

class AliEbyEPidRatioTask : public AliAnalysisTaskSE {

 public:

  AliEbyEPidRatioTask(const char *name = "AliEbyEPidRatioTask");
  virtual ~AliEbyEPidRatioTask();
  
  virtual void UserCreateOutputObjects();
  virtual void UserExec(Option_t *option);
  virtual void Terminate(Option_t *);

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

  void SetIsMC()                             {fIsMC         = kTRUE;}
  void SetIsRatio(Int_t i);
  void SetIsPer()                            {fIsPer        = kTRUE;}
  void SetEffExtra()                         {fIsEffExtra   = 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(AliEbyEPidRatioHelper *helper) {
    if (fHelper) 
      delete fHelper;
    fHelper = helper;
  }

 private:

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

  /** 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();

  AliEbyEPidRatioHelper       *fHelper;  //  Helper class
  AliEbyEPidRatioEffCont      *fEffCont; //! Efficiency and Contamination class
  AliEbyEPidRatioEffContExtra *fEffContExtra; //! Efficiency and Contamination class
  AliEbyEPidRatioDCA          *fDCA;     //! DCA class
  AliEbyEPidRatioPhy          *fDist;    //! Distributions class
  AliEbyEPidRatioQA           *fQA;      //! QA class

  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

  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

  AliAODEvent        *fAOD;                     //! Ptr to AOD event
  AliAODInputHandler *fAODHandler;              //! Ptr to AOD Handler
  
  Bool_t              fIsMC;                    //  Is MC event 
  Bool_t              fIsRatio;                 //  Is MC event b
  Bool_t              fIsPtBin;                 //  Is MC Event a 
  Bool_t              fIsDetectorWise;          // Is detectorwise
  Bool_t              fIsAOD;                   //  analysis mode            : 0 = ESDs  | 1 = AODs
  Bool_t              fIsSub;                   //  analysis mode      SS  
  Bool_t              fIsBS;                    //  analysis mode      BS
  Bool_t              fIsPer;                   //  analysis mode      PER
  Bool_t              fIsEffExtra; 
  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
  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(AliEbyEPidRatioTask, 1);
};

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