#ifndef ALIHFEDCA_H #define ALIHFEDCA_H /************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * * Contributors are mentioned in the code where appropriate. * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright notice appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ /* $Id$ */ // // Class for checking impact parameter (DCA) study // + study DCA in rphi (xy) and z // + resolution and pull // + handle both MC and data // + add plugin for primary vertex // #ifndef ROOT_TObject #include #endif class TChain; class TTree; class TFile; class TString; class TList; class TObjArray; class AliStack; class AliMCEvent; class AliMCVertex; class AliESDEvent; class AliESDtrack; class AliESDVertex; class AliHFEdca : public TObject{ public: enum{ kPDGelectron = 11, kPDGmuon = 13, kPDGpion = 211, kPDGkaon = 321, kPDGproton = 2212 }; enum{ kNParticles = 12, kNPtBins = 50, kNDcaVar = 2, kNVertexVar = 3, kNPullVar = 2 }; AliHFEdca(); // default constructor AliHFEdca(const AliHFEdca &ref); // copy constructor AliHFEdca &operator=(const AliHFEdca &ref); // assignment operator virtual ~AliHFEdca(); // destructor void Initialize(); void CreateHistogramsPull(TList *pullList); void CreateHistogramsResidual(TList *residualList); void CreateHistogramsDca(TList *dcaList); void CreateHistogramsKfDca(TList *kfDcaList); void CreateHistogramsDataDca(TList *dataDcaList); void CreateHistogramsDataPull(TList *dataPullList); void CreateHistogramsVertex(TList *vertexList); void CreateHistogramsDataVertex(TList *vertexList); void CreateHistogramsPid(TList *pidList); void CreateHistogramsDataPid(TList *pidList); void CreateHistogramsHfeDca(TList *hfeDcaList); void CreateHistogramsHfeDataDca(TList *hfeDataDcaList); void InitAnalysis(); void FillHistogramsDca(AliESDEvent *esdEvent, AliESDtrack *track, AliMCEvent *mcEvent); void FillHistogramsVtx(AliESDEvent *esdEvent, AliMCEvent *mcEvent); void FillHistogramsPid(AliESDtrack *track, const AliMCEvent *mcEvent); void FillHistogramsKfDca(AliESDEvent *esdEvent, AliESDtrack *track, const AliMCEvent *mcEvent); void FillHistogramsDataDca(AliESDEvent *esdEvent, AliESDtrack *track, AliESDVertex *vtxESDSkip); void FillHistogramsDataVtx(AliESDEvent *esdEvent); void FillHistogramsDataPid(AliESDtrack *track); void FillHistogramsHfeDca(AliESDEvent *esdEvent, AliESDtrack *track, AliMCEvent *mcEvent); void FillHistogramsHfeDataDca(AliESDEvent *esdEvent,AliESDtrack *track,AliESDVertex *vtxESDSkip); void ApplyExtraCuts(AliESDEvent * const esdEvent, Int_t nMinPrimVtxContributor); void PostAnalysis() const; Int_t GetCombinedPid(AliESDtrack *track); private: static const Char_t* fgkParticles[kNParticles]; // particle names static const Int_t fgkPdgParticle[kNParticles-2]; // identified particle's name static const Int_t fgkColorPart[kNParticles]; // colors for particles static const Float_t fgkPtIntv[kNPtBins+1]; // pt intervals static const Char_t* fgkDcaVar[kNDcaVar]; // dca variables static const Char_t* fgkDcaVarTitle[kNDcaVar]; // titles for dca variables static const Char_t* fgkVertexVar[kNVertexVar]; // dca variables static const Char_t* fgkVertexVarTitle[kNVertexVar]; // titles for dca variables static const Char_t* fgkResDcaVar[kNDcaVar]; // dca variables static const Char_t* fgkResDcaVarTitle[kNDcaVar]; // titles for dca variables static const Char_t* fgkPullDcaVar[kNPullVar]; // pull variables static const Char_t* fgkPullDcaVarTitle[kNPullVar]; // titles for pull variables static const Char_t* fgkPullDataDcaVarTitle[kNPullVar]; // titles for pull variables TH1F* fHistDcaXYRes[kNParticles][kNPtBins]; //! residuals in XY TH1F* fHistDcaZRes[kNParticles][kNPtBins]; //! residuals in Z TH1F* fHistDcaXYPull[kNParticles][kNPtBins]; //! pulls XY TH1F* fHistDcaZPull[kNParticles][kNPtBins]; //! pulls Z TH1F* fHistDcaXY[kNParticles][kNPtBins]; //! dca XY TH1F* fHistDcaZ[kNParticles][kNPtBins]; //! dca Z TH1F* fHistEPDcaXYRes[kNParticles-2][kNPtBins]; //! residuals in XY with esd pid TH1F* fHistEPDcaZRes[kNParticles-2][kNPtBins]; //! residuals in Z with esd pid TH1F* fHistEPDcaXYPull[kNParticles-2][kNPtBins]; //! pulls XY with esd pid TH1F* fHistEPDcaZPull[kNParticles-2][kNPtBins]; //! pulls Z with esd pid TH1F* fHistEPDcaXY[kNParticles-2][kNPtBins]; //! dca XY with esd pid TH1F* fHistEPDcaZ[kNParticles-2][kNPtBins]; //! dca Z with esd pid TH1F* fHistKFDcaXY[kNParticles][kNPtBins]; //! KF dca XY TH1F* fHistKFDcaZ[kNParticles][kNPtBins]; //! KF dca Z TH1F* fHistDataDcaXY[kNParticles][kNPtBins]; //! data dca XY TH1F* fHistDataDcaZ[kNParticles][kNPtBins]; //! data dca Z TH1F* fHistDataWoDcaXY[kNParticles][kNPtBins]; //! data dca XY w/o current trk TH1F* fHistDataWoDcaZ[kNParticles][kNPtBins]; //! data dca Z w/o current trk TH1F* fHistDataDcaXYPull[kNParticles][kNPtBins]; //! data pull dca XY TH1F* fHistDataDcaZPull[kNParticles][kNPtBins]; //! data pull dca Z TH1F* fHistDataWoDcaXYPull[kNParticles][kNPtBins]; //! data pull dca XY w/o current trk TH1F* fHistDataWoDcaZPull[kNParticles][kNPtBins]; //! data pull dca Z w/o current trk TH1F* fHistMCvertex[kNVertexVar]; //! vertex MC TH1F* fHistESDvertex[kNVertexVar]; //! vertex ESD TH1F* fHistDatavertex[kNVertexVar]; //! vertex Data TH1F* fHistMcPid[kNParticles]; //! MC pid pt spectra TH1F* fHistEsdPid[kNParticles]; //! ESD pid pt spectra TH1F *fHistDataEsdPid[kNParticles]; //! Data ESD pid // HFE pid part // MC TH1F* fHistHPDcaXYRes[2][kNPtBins]; //! residuals in XY TH1F* fHistHPDcaZRes[2][kNPtBins]; //! residuals in Z TH1F* fHistHPDcaXYPull[2][kNPtBins]; //! pulls XY TH1F* fHistHPDcaZPull[2][kNPtBins]; //! pulls Z TH1F* fHistHPDcaXY[2][kNPtBins]; //! dca XY TH1F* fHistHPDcaZ[2][kNPtBins]; //! dca Z TH1F* fHistHfePid[2][2]; // ! HFE pid pt spectra only for electrons // Data TH1F* fHistHPDataDcaXY[2][kNPtBins]; //! data dca XY with HFE pid TH1F* fHistHPDataDcaZ[2][kNPtBins]; //! data dca Z with HFE pid TH1F* fHistHPDataDcaXYPull[2][kNPtBins]; //! data pull dca XY TH1F* fHistHPDataDcaZPull[2][kNPtBins]; //! data pull dca Z TH1F *fHistDataHfePid[2]; //! Data HFE pid TH1I* fStat; //! counting diff of dca calculated from HF particle and ESD ClassDef(AliHFEdca, 1); }; #endif