1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
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
46 class AliHFEdca : public TObject{
65 AliHFEdca(); // default constructor
66 AliHFEdca(const AliHFEdca &ref); // copy constructor
67 AliHFEdca &operator=(const AliHFEdca &ref); // assignment operator
68 virtual ~AliHFEdca(); // destructor
71 void CreateHistogramsPull(TList *pullList);
72 void CreateHistogramsResidual(TList *residualList);
73 void CreateHistogramsDca(TList *dcaList);
75 void CreateHistogramsKfDca(TList *kfDcaList);
77 void CreateHistogramsDataDca(TList *dataDcaList);
78 void CreateHistogramsDataPull(TList *dataPullList);
80 void CreateHistogramsVertex(TList *vertexList);
81 void CreateHistogramsDataVertex(TList *vertexList);
83 void CreateHistogramsPid(TList *pidList);
84 void CreateHistogramsDataPid(TList *pidList);
86 void CreateHistogramsHfeDca(TList *hfeDcaList);
87 void CreateHistogramsHfeDataDca(TList *hfeDataDcaList);
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);
95 void FillHistogramsKfDca(const AliESDEvent * const esdEvent, const AliESDtrack *const track, const AliMCEvent *const mcEvent);
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);
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);
105 void ApplyExtraCuts(const AliESDEvent * const esdEvent, Int_t nMinPrimVtxContributor);
107 void PostAnalysis() const;
109 Int_t GetCombinedPid(const AliESDtrack * const track);
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
118 static const Float_t fgkPtIntv[kNPtBins+1]; // pt intervals
120 static const Char_t* fgkDcaVar[kNDcaVar]; // dca variables
121 static const Char_t* fgkDcaVarTitle[kNDcaVar]; // titles for dca variables
123 static const Char_t* fgkVertexVar[kNVertexVar]; // dca variables
124 static const Char_t* fgkVertexVarTitle[kNVertexVar]; // titles for dca variables
126 static const Char_t* fgkResDcaVar[kNDcaVar]; // dca variables
127 static const Char_t* fgkResDcaVarTitle[kNDcaVar]; // titles for dca variables
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
133 TH1F* fHistDcaXYRes[kNParticles][kNPtBins]; //! residuals in XY
134 TH1F* fHistDcaZRes[kNParticles][kNPtBins]; //! residuals in Z
136 TH1F* fHistDcaXYPull[kNParticles][kNPtBins]; //! pulls XY
137 TH1F* fHistDcaZPull[kNParticles][kNPtBins]; //! pulls Z
139 TH1F* fHistDcaXY[kNParticles][kNPtBins]; //! dca XY
140 TH1F* fHistDcaZ[kNParticles][kNPtBins]; //! dca Z
142 TH1F* fHistEPDcaXYRes[kNParticles-2][kNPtBins]; //! residuals in XY with esd pid
143 TH1F* fHistEPDcaZRes[kNParticles-2][kNPtBins]; //! residuals in Z with esd pid
145 TH1F* fHistEPDcaXYPull[kNParticles-2][kNPtBins]; //! pulls XY with esd pid
146 TH1F* fHistEPDcaZPull[kNParticles-2][kNPtBins]; //! pulls Z with esd pid
148 TH1F* fHistEPDcaXY[kNParticles-2][kNPtBins]; //! dca XY with esd pid
149 TH1F* fHistEPDcaZ[kNParticles-2][kNPtBins]; //! dca Z with esd pid
151 TH1F* fHistKFDcaXY[kNParticles][kNPtBins]; //! KF dca XY
152 TH1F* fHistKFDcaZ[kNParticles][kNPtBins]; //! KF dca Z
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
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
164 TH1F* fHistMCvertex[kNVertexVar]; //! vertex MC
165 TH1F* fHistESDvertex[kNVertexVar]; //! vertex ESD
166 TH1F* fHistDatavertex[kNVertexVar]; //! vertex Data
168 TH1F* fHistMcPid[kNParticles]; //! MC pid pt spectra
169 TH1F* fHistEsdPid[kNParticles]; //! ESD pid pt spectra
171 TH1F *fHistDataEsdPid[kNParticles]; //! Data ESD pid
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
182 TH1F* fHistHfePid[2][2]; // ! HFE pid pt spectra only for electrons
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
190 TH1F *fHistDataHfePid[2]; //! Data HFE pid
192 TH1I* fStat; //! counting diff of dca calculated from HF particle and ESD
193 ClassDef(AliHFEdca, 1);