o Add task for setting up the pid object in a analysis independent (ESD, AOD) way
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskPIDResponse.h
1 #ifndef ALIANALYSISTASKPIDRESPONSE_H
2 #define ALIANALYSISTASKPIDRESPONSE_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id: AliAnalysisTaskPIDResponse.h 43642 2010-09-17 15:50:04Z wiechula $ */
8 // Author: Jens Wiechula, 24/02/2011
9
10 //==============================================================================
11 //
12 //
13 //
14 //
15 //==============================================================================
16
17 #include <TVectorDfwd.h>
18
19 #ifndef ALIANALYSISTASKSE_H
20 #include "AliAnalysisTaskSE.h"
21 #endif
22
23 class AliPIDResponse;
24 class TList;
25
26 class AliAnalysisTaskPIDResponse : public AliAnalysisTaskSE {
27   
28   
29 public:
30   AliAnalysisTaskPIDResponse();
31   AliAnalysisTaskPIDResponse(const char *name);
32   virtual ~AliAnalysisTaskPIDResponse();
33
34   void SetIsMC(Bool_t isMC=kTRUE) { fIsMC=isMC; }
35   
36   virtual void UserCreateOutputObjects();
37   
38   virtual void UserExec(Option_t */*option*/);
39
40   void SetTOFTimeZeroType(Int_t type) { fTOFTimeZeroTypeUser=type; }
41   void SetTOFres(Float_t res)         { fTOFres=res;               }
42   
43 private:
44   Bool_t fIsMC;                        //  If we run on MC data
45
46   Int_t   fTOFTimeZeroTypeUser;        //  start time type for tof (ESD)
47   Int_t   fTOFTimeZeroType;            //! default start time type for tof (ESD)
48   Float_t fTOFres;                     //  TOF resolution
49   
50   AliPIDResponse *fPIDResponse;        //! PID response Handler
51   TList                 *fListQA;      //! list with all QA objects
52   TList                 *fListQAits;   //! List with ITS QA objects
53   TList                 *fListQAtpc;   //! List with TPC QA objects
54   TList                 *fListQAtrd;   //! List with TRD QA objects
55   TList                 *fListQAtof;   //! List with TOF QA objects
56
57   TString fBeamType;                   //! beam type (PP) or (PBPB)
58   TString fLHCperiod;                  //! LHC period
59   TString fMCperiodTPC;                //! corresponding MC period to use for the TPC splines
60   Int_t   fRecoPass;                   //! reconstruction pass
61   Int_t   fRun;                        //! current run number
62   Int_t   fOldRun;                     //! current run number
63   
64   TObjArray *fArrPidResponseMaster;    //  TPC pid splines
65
66   void ExecNewRun();
67
68   //qa object initialisation
69   void SetupTTSqa();
70   void SetupTPCqa();
71   void SetupTRDqa();
72   void SetupTOFqa();
73
74   //
75   void FillITSqa();
76   void FillTPCqa();
77   void FillTOFqa();
78   
79   //
80   //setup parametrisations
81   //
82   void SetITSParametrisation();
83
84   //TPC
85   void SetTPCPidResponseMaster();
86   void SetTPCParametrisation();
87
88   //
89   void SetRecoInfo();
90   
91   //helper functions
92   TVectorD* MakeLogBinning(Int_t nbinsX, Double_t xmin, Double_t xmax);
93   TVectorD* MakeLinBinning(Int_t nbinsX, Double_t xmin, Double_t xmax);
94   TVectorD* MakeArbitraryBinning(const char* bins);
95   
96   
97   AliAnalysisTaskPIDResponse(const AliAnalysisTaskPIDResponse &other);
98   AliAnalysisTaskPIDResponse& operator=(const AliAnalysisTaskPIDResponse &other);
99   
100   ClassDef(AliAnalysisTaskPIDResponse,1)  // Task to properly set the PID response functions of all detectors
101 };
102 #endif