40096cf2ecc6d766d61f308b2922fe6ee42e6199
[u/mrichter/AliRoot.git] / PWGCF / EBYE / NetParticle / AliAnalysisTaskNetParticle.h
1 //-*- Mode: C++ -*-
2
3 #ifndef ALIANALYSISTASKNETPARTICLE_H
4 #define ALIANALYSISTASKNETPARTICLE_H
5
6 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7  * See cxx source for full Copyright notice                               */
8  
9 // Task for NetParticle Distributions
10 // Authors: Jochen Thaeder <jochen@thaeder.de>
11
12 #include "AliAnalysisTaskSE.h"
13 #include "TList.h"
14 #include "THnSparse.h"
15
16 #include "AliAnalysisNetParticleHelper.h"
17 #include "AliAnalysisNetParticleEffCont.h"
18 #include "AliAnalysisNetParticleDCA.h"
19 #include "AliAnalysisNetParticleDistribution.h"
20
21 class AliESDEvent;
22 class AliESDInputHandler;
23 class AliMCEvent;
24 class AliStack;
25 class AliPIDResponse;
26 class AliESDResponse;
27
28 class AliAnalysisTaskNetParticle : public AliAnalysisTaskSE {
29
30  public:
31
32   /*
33    * ---------------------------------------------------------------------------------
34    *                            Constructor / Destructor
35    * ---------------------------------------------------------------------------------
36    */
37
38   AliAnalysisTaskNetParticle(const char *name = "AliAnalysisTaskNetParticle");
39   virtual ~AliAnalysisTaskNetParticle();
40   
41   /*
42    * ---------------------------------------------------------------------------------
43    *                                  Task Methods
44    * ---------------------------------------------------------------------------------
45    */
46
47   virtual void UserCreateOutputObjects();
48   virtual void UserExec(Option_t *option);
49   virtual void Terminate(Option_t *);
50
51   /*
52    * ---------------------------------------------------------------------------------
53    *                                 Public Methods
54    * ---------------------------------------------------------------------------------
55    */
56
57   /** Initialize Task */
58   Int_t Initialize();
59
60   /*
61    * ---------------------------------------------------------------------------------
62    *                                    Setter
63    * ---------------------------------------------------------------------------------
64    */
65
66   void SetIsMC()                          {fIsMC             = kTRUE;}
67   void SetUseQATHnSparse(Bool_t b)        {fUseQATHnSparse   = b;}
68   
69   void SetESDTrackCutMode(Int_t i)        {fESDTrackCutMode  = i;}
70   void SetModeEffCreation(Int_t i)        {fModeEffCreation  = i;}
71   void SetModeDCACreation(Int_t i)        {fModeDCACreation  = i;}
72   void SetModeDistCreation(Int_t i)       {fModeDistCreation = i;}
73  
74   void SetEtaMax(Float_t f)               {fEtaMax           = f;}
75   void SetPtRange(Float_t f1, Float_t f2) {fPtRange[0] = f1; fPtRange[1] = f2;}
76   void SetPtRangeEff(Float_t f1, Float_t f2) {fPtRangeEff[0] = f1; fPtRangeEff[1] = f2;}
77
78   /*
79    * ---------------------------------------------------------------------------------
80    *                               Setter - Pass-Through
81    * ---------------------------------------------------------------------------------
82    */
83
84   void SetCentralityBinMax(Int_t d)       {fHelper->SetCentralityBinMax(d);}
85   void SetVertexZMax(Float_t f)           {fHelper->SetVertexZMax(f);}  
86
87   void SetRapidityMax(Float_t f)          {fHelper->SetRapidityMax(f);}
88   void SetMinTrackLengthMC(Float_t f)     {fHelper->SetMinTrackLengthMC(f);}
89   void SetNSigmaMaxCdd(Float_t f)         {fHelper->SetNSigmaMaxCdd(f);}
90   void SetNSigmaMaxCzz(Float_t f)         {fHelper->SetNSigmaMaxCzz(f);}
91
92   void SetParticleSpecies(AliPID::EParticleType pid) {fHelper->SetParticleSpecies(pid);}
93   void SetControlParticleSpecies(Int_t pdgCode, Bool_t isNeutral, const Char_t *name) {
94     fHelper->SetControlParticleSpecies(pdgCode, isNeutral, name);
95   }
96
97   void SetNSigmaMaxTPC(Float_t f)         {fHelper->SetNSigmaMaxTPC(f);}
98   void SetNSigmaMaxTOF(Float_t f)         {fHelper->SetNSigmaMaxTOF(f);}
99   void SetMinPtForTOFRequired(Float_t f)  {fHelper->SetMinPtForTOFRequired(f);}
100
101   ///////////////////////////////////////////////////////////////////////////////////
102
103  private:
104
105   AliAnalysisTaskNetParticle(const AliAnalysisTaskNetParticle&); // not implemented
106   AliAnalysisTaskNetParticle& operator=(const AliAnalysisTaskNetParticle&); // not implemented
107
108   /*
109    * ---------------------------------------------------------------------------------
110    *                            Setup/Reset Methods - private
111    * ---------------------------------------------------------------------------------
112    */
113   
114   /** Setup Event */
115   Int_t SetupEvent();
116
117   /** Setup ESD Event */
118   Int_t SetupESDEvent();
119
120   /** Setup MC Event */
121   Int_t SetupMCEvent();
122
123   /** Reset Event */
124   void ResetEvent();
125     
126   /*
127    * ---------------------------------------------------------------------------------
128    *                             Members - private
129    * ---------------------------------------------------------------------------------
130    */
131   
132   AliAnalysisNetParticleHelper       *fHelper;  //! Helper class
133   AliAnalysisNetParticleEffCont      *fEffCont; //! Efficiency and Contamination class
134   AliAnalysisNetParticleDCA          *fDCA;     //! DCA class
135   AliAnalysisNetParticleDistribution *fDist;    //! Distributions class
136
137   // --- OutLists ----------------------------------------------------------
138
139   TList              *fOutList;                 //! Ptr to output data container
140   TList              *fOutListEff;              //! Ptr to output data container - efficiency
141   TList              *fOutListCont;             //! Ptr to output data container - contamination
142   TList              *fOutListDCA;              //! Ptr to output data container - DCA
143   TList              *fOutListQA;               //! Ptr to QA output data container
144
145   // --- ESD only ----------------------------------------------------------
146
147   AliESDEvent        *fESD;                     //! Ptr to ESD event
148   AliESDInputHandler *fESDHandler;              //! Ptr to ESD Handler
149
150   AliESDtrackCuts    *fESDTrackCutsBase;        //! ESD cuts - base settings
151   AliESDtrackCuts    *fESDTrackCuts;            //! ESD cuts  
152   AliESDtrackCuts    *fESDTrackCutsBkg;         //! ESD cuts for Bkg
153   AliESDtrackCuts    *fESDTrackCutsEff;         //! ESD cuts for efficiency determination -> larger pt Range
154   
155   // --- Flags -------------------------------------------------------------
156
157   Bool_t              fIsMC;                   //  Is MC event
158   Int_t               fESDTrackCutMode;        //  ESD track cut mode       : 0 = clean | 1 dirty
159   Int_t               fModeEffCreation ;       //  Correction creation mode : 1 = on | 0 = off
160   Int_t               fModeDCACreation;        //  DCA creation mode        : 1 = on | 0 = off
161   Int_t               fModeDistCreation;       //  Dist creation mode       : 1 = on | 0 = off
162
163   // --- MC only -----------------------------------------------------------
164
165   AliMCEvent         *fMCEvent;                //! Ptr to MC event
166   AliStack           *fMCStack;                //! Ptr to MC stack
167
168   // -----------------------------------------------------------------------
169
170   THnSparseF         *fHnQA;                   //  THnSparseF : tracks for QA
171   Float_t             fUseQATHnSparse;         //  Usage of THnSparse for QA
172   
173   // -----------------------------------------------------------------------
174
175   Float_t             fEtaMax;                 //  Max, absolut eta 
176   Float_t            *fPtRange;                //  Array of pt [min,max]
177   Float_t            *fPtRangeEff;             //  Array of pt [min,max] for efficiency
178
179   // -----------------------------------------------------------------------
180   
181   ClassDef(AliAnalysisTaskNetParticle, 1);
182 };
183
184 #endif