]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/hfe/AliHFEsecVtx.h
Fixed bug in invariant mass histo,
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEsecVtx.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 //  Secondary vertexing construction Class
17 //  Construct secondary vertex from Beauty hadron with electron and
18 //  hadrons, then apply selection criteria
19 //
20
21 #ifndef ALIHFESECVTX_H
22 #define ALIHFESECVTX_H
23
24 #ifndef ROOT_TObject
25 //#include <TObject.h>
26 #endif
27
28 #ifndef ROOT_THnSparse
29 #include <THnSparse.h>
30 #endif
31
32 class TH1F;
33 class TH2F;
34 class TString;
35 class AliESDEvent;
36 class AliAODEvent;
37 class AliVTrack;
38 class AliESDtrack;
39 class AliAODTrack;
40 class AliStack;
41 class AliHFEpairs;
42 class AliHFEsecVtxs;
43
44 //________________________________________________________________
45 class AliHFEsecVtx : public TObject {
46
47         public: 
48                 AliHFEsecVtx();
49                 AliHFEsecVtx(const AliHFEsecVtx &p); // copy constructor
50                 AliHFEsecVtx &operator=(const AliHFEsecVtx &); // assignment operator
51                 virtual ~AliHFEsecVtx();
52
53                 void CreateHistograms(TList *qaList);
54
55                 Bool_t HasMCData() const { return TestBit(kHasMCData); };
56                 Bool_t IsAODanalysis() const { return TestBit(kAODanalysis); };
57                 Bool_t IsESDanalysis() const { return !TestBit(kAODanalysis); };
58
59                             void SetHasMCData(Bool_t hasMCdata = kTRUE) { SetBit(kHasMCData,hasMCdata); };
60                 void SetAODAnalysis() { SetBit(kAODanalysis, kTRUE); };
61                 void SetESDAnalysis() { SetBit(kAODanalysis, kFALSE); };
62                 void SetEvent(AliESDEvent* const ESD){fESD1=ESD;};    // set ESD pointer
63                 void SetEventAOD(AliAODEvent* const AOD){fAOD1=AOD;}; // set ESD pointer
64                 void SetStack(AliStack* const stack){fStack=stack;};  // set stack pointer
65                 void SetMCArray(TClonesArray* const mcarry){fMCArray=mcarry;} // set mcarray pointer
66                 void SetUseMCPID(Bool_t usemcpid){fUseMCPID=usemcpid;};
67
68
69                 Int_t GetMCPID(AliESDtrack *track); // return MC pid
70                             Int_t GetMCPDG(AliVTrack *track);   // return MC pid
71                 Int_t GetPairOriginESD(AliESDtrack* track1, AliESDtrack* track2); // return pair origin as a pdg code
72                 Int_t GetPairOriginAOD(AliAODTrack* track1, AliAODTrack* track2); // return pair origin as a pdg code
73                 Int_t GetPairCode(const AliVTrack* const track1, const AliVTrack* const track2); // return corresponding pair code to pdg code
74                 Int_t GetElectronSource(Int_t mclabel); // return origin of the electron
75                 Int_t GetPDG(AliVTrack *track);     // return pdg 
76                             void GetESDPID(AliESDtrack *track, Int_t &recpid, Double_t &recprob); //return esd pid likelihood
77                 void GetPrimaryCondition();
78
79                 TClonesArray *HFEpairs();
80                 TClonesArray *HFEsecvtxs();
81
82                 void AddHFEpairToArray(const AliHFEpairs* const pair);
83                 void AddHFEsecvtxToArray(const AliHFEsecVtxs* const secvtx);
84
85                 void InitHFEpairs();
86                 void InitHFEsecvtxs();
87
88                 void DeleteHFEpairs();
89                 void DeleteHFEsecvtxs();
90
91                 Bool_t SingleTrackCut(AliESDtrack* track1) const; // single track cut
92                 void PairAnalysis(AliVTrack* ESDtrack1, AliVTrack* ESDtrack2, Int_t index2); // do e-h analysis
93                 void RunSECVTX(AliVTrack *track); // run secondary vertexing algorithm
94
95                 void MakeContainer(); // make containers
96
97         protected:
98                 void Init();
99                 void FindSECVTXCandid(AliVTrack *track);
100                 void CalcSECVTXProperty(AliVTrack* track1, AliVTrack* track2, AliVTrack* track3); // calculated distinctive variables
101
102
103         private:
104                 enum{
105                   kHasMCData = BIT(15),     // bitset for mc data usage
106                   kAODanalysis = BIT(16)    // bitset for aod analysis
107                 };
108                 enum {kAll, kDirectCharm, kDirectBeauty, kBeautyCharm, kGamma, kPi0, kElse, kBeautyGamma, kBeautyPi0, kBeautyElse}; // electron origin 
109                 enum {kCharm=4, kBeauty=5}; // quark flavor
110
111                 AliESDEvent* fESD1; // ESD pointer             
112                 AliAODEvent* fAOD1; // AOD pointer             
113                 AliStack* fStack;   // stack pointer              
114
115                 Bool_t fUseMCPID;   // if use MC pid 
116
117                 TString fkSourceLabel[10]; // electron source label
118
119                 Int_t fNparents;           // number of heavy hadrons to be considered
120                 Int_t fParentSelect[2][7]; // heavy hadron species
121
122                 Int_t fNoOfHFEpairs;       // number of e-h pairs  
123                 Int_t fNoOfHFEsecvtxs;     // number of secondary vertexes
124
125                 TClonesArray *fHFEpairs;   //! Array of pair 
126                 TClonesArray *fHFEsecvtxs; //! Array of secondary vertexes 
127                 TClonesArray *fMCArray;    //! mc array pointer
128
129                             Double_t fPVx;          // primary vertex copy x 
130                             Double_t fPVy;          // primary vertex copy y
131                 Double_t fCosPhi;       // cos of opening angle of two pair vertex
132                 Double_t fSignedLxy;    // signed Lxy of secondary vertex
133                 Double_t fKFchi2;       // chi2 of secondary vertex
134                 Double_t fInvmass;      // invariant mass of secondary vertex
135                 Double_t fInvmassSigma; // invariant mass sigma of secondary vertex
136                 Double_t fKFip;         // impact parameter of secondary vertex track
137
138                 THnSparseF *fPairQA;    // qa histos for pair analysis 
139                 THnSparseF *fSecvtxQA;  // qa histos for secvtx
140                 TList *fSecVtxList;     // list for secondary vertexing outputs
141
142       ClassDef(AliHFEsecVtx,0);
143 };
144
145 #endif