]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/hfe/AliHFEdca.h
Updates to run with deltas (L. Cunqueiro)
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEdca.h
1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 *                                                                        *
4 * Author: The ALICE Off-line Project.                                    *
5 * Contributors are mentioned in the code where appropriate.              *
6 *                                                                        *
7 * Permission to use, copy, modify and distribute this software and its   *
8 * documentation strictly for non-commercial purposes is hereby granted   *
9 * without fee, provided that the above copyright notice appears in all   *
10 * copies and that both the copyright notice and this permission notice   *
11 * appear in the supporting documentation. The authors make no claims     *
12 * about the suitability of this software for any purpose. It is          *
13 * provided "as is" without express or implied warranty.                  *
14 **************************************************************************/
15 //
16 // Class for checking impact parameter (DCA) study 
17 // + study DCA in rphi (xy) and z
18 // + resolution and pull
19 // + handle both MC and data 
20 // + add plugin for primary vertex 
21 //
22
23 #ifndef ALIHFEDCA_H
24 #define ALIHFEDCA_H
25
26 #ifndef ROOT_TObject
27 #include <TObject.h>
28 #endif
29
30 class TChain;
31 class TTree;
32 class TFile;
33
34 class TString;
35 class TList;
36
37 class TObjArray;
38 class AliStack;
39 class AliMCEvent;
40 class AliMCVertex;
41
42 class AliESDEvent;
43 class AliESDtrack;
44 class AliESDVertex;
45
46 class AliHFEdca : public TObject{
47
48  public:  
49   enum{
50     kPDGelectron = 11,
51     kPDGmuon = 13,
52     kPDGpion = 211,
53     kPDGkaon = 321,
54     kPDGproton = 2212
55   };
56  
57   enum{
58     kNParticles = 12,
59     kNPtBins = 50,   
60     kNDcaVar = 2, 
61     kNVertexVar = 3,  
62     kNPullVar = 2
63   };
64
65   AliHFEdca(); // default constructor
66   AliHFEdca(const AliHFEdca &ref); // copy constructor
67   AliHFEdca &operator=(const AliHFEdca &ref); // assignment operator
68   virtual ~AliHFEdca(); // destructor
69
70   void Initialize();
71   void CreateHistogramsPull(TList *pullList);  
72   void CreateHistogramsResidual(TList *residualList);  
73   void CreateHistogramsDca(TList *dcaList);  
74
75   void CreateHistogramsKfDca(TList *kfDcaList);  
76
77   void CreateHistogramsDataDca(TList *dataDcaList);  
78   void CreateHistogramsDataPull(TList *dataPullList);  
79
80   void CreateHistogramsVertex(TList *vertexList);  
81   void CreateHistogramsDataVertex(TList *vertexList);  
82
83   void CreateHistogramsPid(TList *pidList);
84   void CreateHistogramsDataPid(TList *pidList);
85
86   void CreateHistogramsHfeDca(TList *hfeDcaList);
87   void CreateHistogramsHfeDataDca(TList *hfeDataDcaList);
88
89   
90   void InitAnalysis()const;  
91   void FillHistogramsDca(const AliESDEvent * const esdEvent,  const AliESDtrack *const track,  AliMCEvent *const mcEvent);
92   void FillHistogramsVtx(const AliESDEvent * const esdEvent,  const AliMCEvent *const mcEvent);
93   void FillHistogramsPid(const AliESDtrack *track, const  AliMCEvent * const mcEvent);
94
95   void FillHistogramsKfDca(const AliESDEvent * const esdEvent,  const AliESDtrack *const track,  const AliMCEvent *const mcEvent);
96
97   void FillHistogramsDataDca(const AliESDEvent * const esdEvent,  const AliESDtrack * const track, const AliESDVertex * const vtxESDSkip);
98   void FillHistogramsDataVtx(const AliESDEvent * const esdEvent);
99   void FillHistogramsDataPid(const AliESDtrack * const track);
100
101   void FillHistogramsHfeDca(const AliESDEvent *const esdEvent,  const AliESDtrack * const track,  const AliMCEvent * const mcEvent);
102   void FillHistogramsHfeDataDca(const AliESDEvent * const esdEvent, const AliESDtrack * const track, const AliESDVertex * const vtxESDSkip);
103
104
105   void ApplyExtraCuts(const AliESDEvent * const esdEvent, Int_t nMinPrimVtxContributor);
106
107   void PostAnalysis() const;
108
109   Int_t GetCombinedPid(const AliESDtrack * const track);
110
111  private:   
112
113
114   static const Char_t* fgkParticles[kNParticles];  // particle names
115   static const Int_t fgkPdgParticle[kNParticles-2]; // identified particle's name
116   static const Int_t fgkColorPart[kNParticles]; // colors for particles
117
118   static const Float_t fgkPtIntv[kNPtBins+1];  // pt intervals
119
120   static const Char_t* fgkDcaVar[kNDcaVar];  // dca variables
121   static const Char_t* fgkDcaVarTitle[kNDcaVar]; // titles for dca variables
122
123   static const Char_t* fgkVertexVar[kNVertexVar];  // dca variables
124   static const Char_t* fgkVertexVarTitle[kNVertexVar]; // titles for dca variables
125
126   static const Char_t* fgkResDcaVar[kNDcaVar];  // dca variables
127   static const Char_t* fgkResDcaVarTitle[kNDcaVar]; // titles for dca variables
128
129   static const Char_t* fgkPullDcaVar[kNPullVar];  // pull variables
130   static const Char_t* fgkPullDcaVarTitle[kNPullVar]; // titles for pull variables
131   static const Char_t* fgkPullDataDcaVarTitle[kNPullVar]; // titles for pull variables
132
133   TH1F* fHistDcaXYRes[kNParticles][kNPtBins];  //! residuals in XY
134   TH1F* fHistDcaZRes[kNParticles][kNPtBins];   //! residuals in Z
135
136   TH1F* fHistDcaXYPull[kNParticles][kNPtBins]; //! pulls XY
137   TH1F* fHistDcaZPull[kNParticles][kNPtBins];  //! pulls Z
138
139   TH1F* fHistDcaXY[kNParticles][kNPtBins]; //! dca XY
140   TH1F* fHistDcaZ[kNParticles][kNPtBins];  //! dca Z
141
142   TH1F* fHistEPDcaXYRes[kNParticles-2][kNPtBins];  //! residuals in XY with esd pid
143   TH1F* fHistEPDcaZRes[kNParticles-2][kNPtBins];   //! residuals in Z with esd pid
144
145   TH1F* fHistEPDcaXYPull[kNParticles-2][kNPtBins]; //! pulls XY with esd pid
146   TH1F* fHistEPDcaZPull[kNParticles-2][kNPtBins];  //! pulls Z with esd pid
147
148   TH1F* fHistEPDcaXY[kNParticles-2][kNPtBins]; //! dca XY with esd pid
149   TH1F* fHistEPDcaZ[kNParticles-2][kNPtBins];  //! dca Z with esd pid
150
151   TH1F* fHistKFDcaXY[kNParticles][kNPtBins]; //! KF dca XY
152   TH1F* fHistKFDcaZ[kNParticles][kNPtBins];  //! KF dca Z
153   
154   TH1F* fHistDataDcaXY[kNParticles][kNPtBins]; //! data dca XY
155   TH1F* fHistDataDcaZ[kNParticles][kNPtBins];  //! data dca Z
156   TH1F* fHistDataWoDcaXY[kNParticles][kNPtBins]; //! data dca XY w/o current trk
157   TH1F* fHistDataWoDcaZ[kNParticles][kNPtBins];  //! data dca Z w/o current trk
158
159   TH1F* fHistDataDcaXYPull[kNParticles][kNPtBins]; //! data pull dca XY
160   TH1F* fHistDataDcaZPull[kNParticles][kNPtBins];  //! data pull dca Z 
161   TH1F* fHistDataWoDcaXYPull[kNParticles][kNPtBins]; //! data pull dca XY w/o current trk
162   TH1F* fHistDataWoDcaZPull[kNParticles][kNPtBins];  //! data pull dca Z  w/o current trk
163
164   TH1F* fHistMCvertex[kNVertexVar];    //! vertex MC
165   TH1F* fHistESDvertex[kNVertexVar];   //! vertex ESD
166   TH1F* fHistDatavertex[kNVertexVar];  //! vertex Data
167   
168   TH1F* fHistMcPid[kNParticles];      //! MC pid pt spectra
169   TH1F* fHistEsdPid[kNParticles];     //! ESD pid pt spectra
170
171   TH1F *fHistDataEsdPid[kNParticles];    //! Data ESD pid
172
173   // HFE pid part
174   // MC
175   TH1F* fHistHPDcaXYRes[2][kNPtBins];  //! residuals in XY
176   TH1F* fHistHPDcaZRes[2][kNPtBins];   //! residuals in Z
177   TH1F* fHistHPDcaXYPull[2][kNPtBins]; //! pulls XY
178   TH1F* fHistHPDcaZPull[2][kNPtBins];  //! pulls Z
179   TH1F* fHistHPDcaXY[2][kNPtBins];     //! dca XY
180   TH1F* fHistHPDcaZ[2][kNPtBins];      //! dca Z
181
182   TH1F* fHistHfePid[2][2];             // ! HFE pid pt spectra only for electrons
183
184   // Data
185   TH1F* fHistHPDataDcaXY[2][kNPtBins];     //! data dca XY with HFE pid
186   TH1F* fHistHPDataDcaZ[2][kNPtBins];      //! data dca Z with HFE pid
187   TH1F* fHistHPDataDcaXYPull[2][kNPtBins]; //! data pull dca XY
188   TH1F* fHistHPDataDcaZPull[2][kNPtBins];  //! data pull dca Z 
189
190   TH1F *fHistDataHfePid[2];            //! Data HFE pid
191
192   TH1I* fStat;                         //! counting diff of dca calculated from HF particle and ESD
193   ClassDef(AliHFEdca, 1);
194 };
195
196 #endif