ROOT logo
/* Copyright(c) 1998-2011, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
/* $Id$ */

#ifndef ALI_ANALYSIS_TASK_SE_IMPROVE_ITS_H
#define ALI_ANALYSIS_TASK_SE_IMPROVE_ITS_H

#include "AliAnalysisTaskSE.h"

class TGraph;
class TList;
class AliAODTrack;
class TClonesArray;
class TObjArray;
class AliESDVertex;
class AliVVertex;

class AliAnalysisTaskSEImproveITS:public AliAnalysisTaskSE {
public:
  AliAnalysisTaskSEImproveITS();
  AliAnalysisTaskSEImproveITS(const char *name,
                              const char *resfileCurURI,
                              const char *resfileUpgURI,
                              Bool_t isRunInVertexing,
                              Int_t ndebug);

  virtual ~AliAnalysisTaskSEImproveITS();

  // 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);
  void SetImproveTracks(Bool_t flag=kTRUE) { fImproveTracks=flag; return; }

private:
  AliAnalysisTaskSEImproveITS(const AliAnalysisTaskSEImproveITS&);
  AliAnalysisTaskSEImproveITS& operator=(const AliAnalysisTaskSEImproveITS&); 

  // Helper functions
  Double_t EvalGraph(Double_t x,const TGraph *graph,const TGraph *graphSA=0) const; 
  void SmearTrack(AliAODTrack *track,const TClonesArray *mcs);
  AliESDVertex* RecalculateVertex(const AliVVertex *old,TObjArray *tracks,Double_t bField);

  TGraph *fD0ZResPCur  ; // old pt dep. d0 res. in z for protons
  TGraph *fD0ZResKCur  ; // old pt dep. d0 res. in z for kaons
  TGraph *fD0ZResPiCur ; // old pt dep. d0 res. in z for pions
  TGraph *fD0RPResPCur ; // old pt dep. d0 res. in rphi for protons
  TGraph *fD0RPResKCur ; // old pt dep. d0 res. in rphi for kaons
  TGraph *fD0RPResPiCur; // old pt dep. d0 res. in rphi for pions
  TGraph *fPt1ResPCur  ; // old pt dep. 1/pt res. for protons
  TGraph *fPt1ResKCur  ; // old pt dep. 1/pt res. for kaons
  TGraph *fPt1ResPiCur ; // old pt dep. 1/pt res. for pions
  TGraph *fD0ZResPUpg  ; // new pt dep. d0 res. in z for protons
  TGraph *fD0ZResKUpg  ; // new pt dep. d0 res. in z for kaons
  TGraph *fD0ZResPiUpg ; // new pt dep. d0 res. in z for pions
  TGraph *fD0RPResPUpg ; // new pt dep. d0 res. in rphi for protons
  TGraph *fD0RPResKUpg ; // new pt dep. d0 res. in rphi for kaons
  TGraph *fD0RPResPiUpg; // new pt dep. d0 res. in rphi for pions
  TGraph *fPt1ResPUpg  ; // new pt dep. 1/pt res. for protons
  TGraph *fPt1ResKUpg  ; // new pt dep. 1/pt res. for kaons
  TGraph *fPt1ResPiUpg ; // new pt dep. 1/pt res. for pions
  TGraph *fD0ZResPCurSA  ; // old standalone pt dep. d0 res. in z for protons
  TGraph *fD0ZResKCurSA  ; // old standalone pt dep. d0 res. in z for kaons
  TGraph *fD0ZResPiCurSA ; // old standalone pt dep. d0 res. in z for pions
  TGraph *fD0RPResPCurSA ; // old standalone pt dep. d0 res. in rphi for protons
  TGraph *fD0RPResKCurSA ; // old standalone pt dep. d0 res. in rphi for kaons
  TGraph *fD0RPResPiCurSA; // old standalone pt dep. d0 res. in rphi for pions
  TGraph *fPt1ResPCurSA  ; // old standalone pt dep. 1/pt res. for protons
  TGraph *fPt1ResKCurSA  ; // old standalone pt dep. 1/pt res. for kaons
  TGraph *fPt1ResPiCurSA ; // old standalone pt dep. 1/pt res. for pions
  TGraph *fD0ZResPUpgSA  ; // new standalone pt dep. d0 res. in z for protons
  TGraph *fD0ZResKUpgSA  ; // new standalone pt dep. d0 res. in z for kaons
  TGraph *fD0ZResPiUpgSA ; // new standalone pt dep. d0 res. in z for pions
  TGraph *fD0RPResPUpgSA ; // new standalone pt dep. d0 res. in rphi for protons
  TGraph *fD0RPResKUpgSA ; // new standalone pt dep. d0 res. in rphi for kaons
  TGraph *fD0RPResPiUpgSA; // new standalone pt dep. d0 res. in rphi for pions
  TGraph *fPt1ResPUpgSA  ; // new standalone pt dep. 1/pt res. for protons
  TGraph *fPt1ResKUpgSA  ; // new standalone pt dep. 1/pt res. for kaons
  TGraph *fPt1ResPiUpgSA ; // new standalone pt dep. 1/pt res. for pions

  Bool_t fRunInVertexing; // flag to run hybrid task before the vertexingHF task or in standard mode
  Bool_t fImproveTracks; // this is always kTRUE. kFALSE only if re-running on already improved AODs 
                           
  TList   *fDebugOutput; //! collection of debug output
  TNtuple *fDebugNtuple; //! debug send on output slot 1
  Float_t *fDebugVars;   //! variables to store as degug info 
  Int_t   fNDebug;       // Max number of debug entries into Ntuple

  ClassDef(AliAnalysisTaskSEImproveITS,4);
};

#endif

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