ATO-80
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskPIDqa.h
1 #ifndef ALIANALYSISTASKPIDQA_H
2 #define ALIANALYSISTASKPIDQA_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: AliAnalysisTaskPIDqa.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 class AliVEvent;
26 class AliESDv0KineCuts;
27
28 class AliAnalysisTaskPIDqa : public AliAnalysisTaskSE {
29   
30   
31 public:
32   AliAnalysisTaskPIDqa();
33   AliAnalysisTaskPIDqa(const char *name);
34   virtual ~AliAnalysisTaskPIDqa();
35
36   virtual void UserCreateOutputObjects();
37   
38   virtual void UserExec(Option_t */*option*/);
39
40   
41 private: 
42   AliPIDResponse *fPIDResponse;             //! PID response Handler
43   AliESDv0KineCuts *fV0cuts;                //! ESD V0 cuts
44
45   TObjArray *fV0electrons;                  //! array with pointer to identified particles from V0 decays (electrons)
46   TObjArray *fV0pions;                      //! array with pointer to identified particles from V0 decays (pions)
47   TObjArray *fV0kaons;                      //! array with pointer to identified particles from V0 decays (kaons)
48   TObjArray *fV0protons;                    //! array with pointer to identified particles from V0 decays (ptotons)
49
50   TList                 *fListQA;           //! list with all QA histograms
51   TList                 *fListQAits;        //! List with ITS QA histograms
52   TList                 *fListQAitsSA;      //! List with ITS SA QA histograms
53   TList                 *fListQAitsPureSA;  //! List with ITS pure SA QA histograms
54   TList                 *fListQAtpc;        //! List with TPC QA histograms
55   TList                 *fListQAtpcBasic;   //! Sub-list with TPC QA histograms - basic
56   TList                 *fListQAtpcMCtruth; //! Sub-list with TPC QA histograms - only MC truth identified particles
57   TList                 *fListQAtpcHybrid;  //! Sub-list with TPC QA histograms - the "hybrid" scenario
58   TList                 *fListQAtpcOROChigh;//! Sub-list with TPC QA histograms - the "OROChigh" scenario
59   TList                 *fListQAtpcV0;      //! Sub-list with TPC QA histograms - V0s
60   TList                 *fListQAtrd;        //! List with TRD QA histograms
61   TList                 *fListQAtrdNsig;    //! List with TRD QA histograms for Nsigma approach
62   TList                 *fListQAtrdNsigTPCTOF; //! List with TRD QA histograms for Nsigma approach after TPC and TOF selection
63   TList                 *fListQAtof;        //! List with TOF QA histograms
64   TList                 *fListQAt0;         //! List with T0 QA histograms
65   TList                 *fListQAemcal;      //! List with EMCAL QA histograms
66   TList                 *fListQAhmpid;      //! List with EMCAL QA histograms
67   TList                 *fListQAtofhmpid;   //! List with EMCAL QA histograms
68   TList                 *fListQAtpctof;     //! List with combined PID from TPC + TOF
69   TList                 *fListQAV0;         //! List with V0 kine cuts QA histograms
70   TList                 *fListQAinfo;       //! List with information about loaded splines etc.
71
72   
73   void ExecNewRun();
74
75   //qa object initialisation
76   void SetupITSqa();
77   void SetupTPCqa(Bool_t fillMC, Bool_t fill11h, Bool_t fillV0);
78   void SetupTRDqa();
79   void SetupTOFqa();
80   void SetupT0qa();
81   void SetupEMCALqa();
82   void SetupHMPIDqa();
83   void SetupTOFHMPIDqa();
84   void SetupTPCTOFqa();
85   void SetupV0qa();
86   void SetupQAinfo();
87
88   //
89   void FillV0PIDlist();
90   void ClearV0PIDlist();
91   //
92   void FillITSqa();
93   void FillTPCqa();
94   void FillTRDqa();
95   void FillTOFqa();
96   void FillT0qa();
97   void FillEMCALqa();
98   void FillHMPIDqa();
99   void FillTOFHMPIDqa();
100   void FillTPCTOFqa();
101   void FillQAinfo();
102
103   // Adding TPC Histograms - called in SetupTPCqa
104   void AddTPCHistogramsSignal(TList *sublist, const char *scenario);
105   void AddTPCHistogramsNsigma(TList *sublist, const char *scenario, Int_t scnumber);
106
107   // Fill TPC Histograms - called in FillTPCqa
108   void FillTPCHistogramsSignal(TList *sublist, Int_t scenario, AliVTrack *track, Int_t nTracks);
109   void FillTPCHistogramsNsigma(TList *sublist, Int_t scenario, AliVTrack *track, Int_t nTracks);
110
111   //
112   void SetRecoInfo();
113   
114   //helper functions
115   TVectorD* MakeLogBinning(Int_t nbinsX, Double_t xmin, Double_t xmax);
116   TVectorD* MakeLinBinning(Int_t nbinsX, Double_t xmin, Double_t xmax);
117   TVectorD* MakeArbitraryBinning(const char* bins);
118   
119   
120   AliAnalysisTaskPIDqa(const AliAnalysisTaskPIDqa &other);
121   AliAnalysisTaskPIDqa& operator=(const AliAnalysisTaskPIDqa &other);
122   
123   ClassDef(AliAnalysisTaskPIDqa,2)  // Task to properly set the PID response functions of all detectors
124 };
125 #endif