First update for AOD compatibility (distributions and efficiency), still missing...
[u/mrichter/AliRoot.git] / PWGCF / EBYE / NetParticle / AliAnalysisNetParticleDistribution.h
1 //-*- Mode: C++ -*-
2
3 #ifndef ALIANALYSISNETPARTICLEDISTRIBUTION_H
4 #define ALIANALYSISNETPARTICLEDISTRIBUTION_H
5
6 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7  * See cxx source for full Copyright notice                               */
8  
9 // Helper Class for for NetParticle Distributions
10 // Authors: Jochen Thaeder <jochen@thaeder.de>
11
12 #include "THnSparse.h"
13 #include "TH1F.h"
14 #include "TF1.h"
15
16 #include "AliAnalysisNetParticleHelper.h"
17
18 class AliESDtrack;
19 class AliMCEvent;
20 class AliStack;
21 class AliPIDResponse;
22 class AliESDInputHandler;
23 class AliESDtrackCuts;
24 class AliAODInputHandler;
25
26 class AliAnalysisNetParticleDistribution : public TNamed {
27
28  public:
29
30   /*
31    * ---------------------------------------------------------------------------------
32    *                            Constructor / Destructor
33    * ---------------------------------------------------------------------------------
34    */
35
36   AliAnalysisNetParticleDistribution();
37   virtual ~AliAnalysisNetParticleDistribution();
38
39   /*
40    * ---------------------------------------------------------------------------------
41    *                                 Public Methods
42    * ---------------------------------------------------------------------------------
43    */
44
45   /** Initialize */
46   Int_t Initialize(AliAnalysisNetParticleHelper* helper, AliESDtrackCuts* cuts, Bool_t isMC, Float_t *ptRange, Float_t etaMax, Int_t trackCutBit);
47
48   /** Add histograms to outlist */
49   void CreateHistograms(TList *outList);
50
51   /** Setup Event */
52   Int_t SetupEvent(AliESDInputHandler *esdHandler, AliAODInputHandler *aodHandler, AliMCEvent *mcEvent);
53
54   /** Resre Event */
55   void ResetEvent();
56
57   /** Process NetParticle Distributions */ 
58   Int_t Process();
59
60   ///////////////////////////////////////////////////////////////////////////////////
61
62  private:
63
64   AliAnalysisNetParticleDistribution(const AliAnalysisNetParticleDistribution&); // not implemented
65   AliAnalysisNetParticleDistribution& operator=(const AliAnalysisNetParticleDistribution&); // not implemented
66
67   /*
68    * ---------------------------------------------------------------------------------
69    *                           Process - Private
70    * ---------------------------------------------------------------------------------
71    */
72    /** Process ESD tracks and fill histograms */
73   Int_t ProcessESDTracks();
74
75    /** Process AOD tracks and fill histograms */
76   Int_t ProcessAODTracks();
77
78   /** Process primary particles from the stack and fill histograms */
79   Int_t ProcessStackParticles();
80
81   /** Process control particles from the stack and fill histograms */
82   Int_t ProcessStackControlParticles();
83   
84  /*
85    * ---------------------------------------------------------------------------------
86    *                            Helper Methods - private
87    * ---------------------------------------------------------------------------------
88    */
89
90   /** Add set of histograms */
91   void AddHistSet(const Char_t *name, const Char_t *title);
92
93   /** Fill set of histograms */
94   void FillHistSet(const Char_t *name, Float_t *np, Int_t controlIdx = -1);
95
96   /*
97    * ---------------------------------------------------------------------------------
98    *                             Members - private
99    * ---------------------------------------------------------------------------------
100    */
101
102   AliAnalysisNetParticleHelper *fHelper;        //! Ptr to helper class
103
104   TList                *fOutList;               //! Output data container
105   // -----------------------------------------------------------------------
106   AliESDInputHandler   *fESDHandler;            //! Ptr to ESD handler 
107   AliPIDResponse       *fPIDResponse;           //! Ptr to PID response Object
108   AliESDEvent          *fESD;                   //! Ptr to ESD event
109
110   AliAODInputHandler   *fAODHandler;            //! Ptr to AOD handler 
111   AliAODEvent          *fAOD;                   //! Ptr to AOD event
112
113   Bool_t                fIsMC;                  //  Is MC event
114
115   AliMCEvent           *fMCEvent;               //! Ptr to MC event
116   AliStack             *fStack;                 //! Ptr to stack
117
118   AliESDtrackCuts      *fESDTrackCuts;          //! ESD cuts  
119   // -----------------------------------------------------------------------
120   Float_t               fEtaMax;                //  Max, absolut eta
121   Float_t              *fPtRange;               //  Array of pt [min,max]
122
123   Int_t                 fAODtrackCutBit;        //  Track filter bit for AOD tracks
124   // -----------------------------------------------------------------------
125   Float_t              *fNp;                    //  Array of particle/anti-particle counts
126
127   Int_t                 fNCorrNp;               //  N sets of arrays of corrected particle/anti-particle counts
128   Float_t             **fCorrNp;                //  Array of corrected particle/anti-particle counts
129
130   Int_t                 fNMCNp;                 //  N sets of arrays of MC particle/anti-particle counts
131   Float_t             **fMCNp;                  //  Array of MC particle/anti-particle counts
132
133   Int_t                 fNControlMCNp;          //  N sets of arrays of control MC particle/anti-particle counts
134   Float_t             **fControlMCNp;           //  Array of control MC particle/anti-particle counts
135   // -----------------------------------------------------------------------
136   THnSparseF           *fHnTrackUnCorr;         //  THnSparseF : uncorrected probe particles
137   // -----------------------------------------------------------------------
138
139   ClassDef(AliAnalysisNetParticleDistribution, 1);
140 };
141
142 #endif