]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/hfe/AliHFEdisplacedElectrons.h
Fixes to cure warnings
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEdisplacedElectrons.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 electrons from beauty study
17 // Counting electrons from beauty
18 // by DCA cuts, background subtraction 
19 //
20 // Authors:
21 //   Hongyan Yang <hongyan@physi.uni-heidelberg.de>
22 // 
23
24 #ifndef ALIHFEDISPLACEDELECTRONS_H
25 #define ALIHFEDISPLACEDELECTRONS_H
26
27 #ifndef ROOT_TObject
28 #include <TObject.h>
29 #endif
30
31 #ifndef ROOT_TPDGCode
32 #include <TPDGCode.h>
33 #endif
34
35 class TChain;
36 class TTree;
37 class TFile;
38
39 class TPDGCode;
40
41 class TString;
42 class TList;
43
44 class AliLog;
45
46 class THnSparse;
47
48 class TObjArray;
49 class AliStack;
50 class AliMCEvent;
51 class AliESDEvent;
52
53 class AliESDtrack;
54 class AliESDVertex;
55
56 class AliHFEdisplacedElectrons : public TObject{
57
58  public:  
59
60   enum{
61     kPDGelectron = kElectron,
62     kPDGgamma = kGamma,
63     kPDGpi0 = kPi0,
64     kPDGpion = kPiPlus, 
65     kPDGeta = 221,
66     kPDGcharm = kCharm,
67     kPDGbeauty = kBottom
68   };  // PDG codes to be used
69
70   AliHFEdisplacedElectrons(); // default constructor
71   AliHFEdisplacedElectrons(const AliHFEdisplacedElectrons &p); // copy constructor
72   AliHFEdisplacedElectrons &operator=(const AliHFEdisplacedElectrons &ref); // assignment operator
73
74   virtual ~AliHFEdisplacedElectrons();
75
76   void InitAnalysis();  
77   void CreateOutputs(TList* const displacedList);
78
79   void FillMCOutput(AliESDEvent* fESDEvent, AliESDtrack *track, AliStack *stack);
80   void FillESDOutput(AliESDEvent* fESDEvent, AliESDtrack *track);
81
82   Int_t GetMCpid(AliStack* stack, Int_t label) const;
83
84   Bool_t HasMCData() const { return TestBit(kHasMCData); };
85   void SetHasMCData(Bool_t hasMCdata = kTRUE) { SetBit(kHasMCData,hasMCdata); };
86   void SetDebugLevel(Int_t debugLevel){ fDebugLevel = debugLevel; };
87
88   void PostAnalysis() const;
89
90
91  private:
92
93   enum{
94     kHasMCData = BIT(15),             // bitset for mc data usage
95     kHasESDData = BIT(16)
96   };
97    
98
99
100   enum{
101     kElePhotonConv = 0,
102     kEleDirectPhotonConv = 1,
103     kElePi0 = 2,
104     kEleEta = 3, 
105     kEleB = 4, 
106     kEleC = 5, 
107     kEleBC = 6
108   };  // electron source index
109   
110   enum{
111     kMCpion = 0, 
112     kMCelectron = 1, 
113     kData = 2
114   };  // MC or Data
115
116   enum{
117     kNDcaMin = 21, 
118     kNPtIntv = 14, 
119     kNKineVar = 3
120   };   // several constant to be used
121  
122   UInt_t fDebugLevel;   // debug level
123
124   Int_t ElectronFromSource(AliStack *stack, Int_t eleLabel) const;
125   Int_t ElePhotonDirect(AliStack *stack, Int_t label) const;
126   Int_t ElectronFromCharm(AliStack *stack, Int_t eleLabel) const;
127   Int_t CharmFromBeauty(AliStack *stack, Int_t charmLabel) const;
128   
129   Int_t GetMotherLabel(AliStack *stack, Int_t label) const;
130   Float_t GetRapidity(TParticle *part) const;
131   Float_t GetTrackRapidity(AliESDtrack *track) const;
132
133   static const Float_t fgkDcaMinIntv[kNDcaMin];  // DCA cut min limit
134   static const Float_t fgkDcaMinPtIntv[kNPtIntv-1]; // DCA cut min limit in different pT bins
135   static const Float_t fgkPtIntv[kNPtIntv]; // all pt bins
136
137   static const Char_t *fgkKineVar[kNKineVar];  // particle names
138   static const Char_t *fgkKineVarTitle[kNKineVar];  // particle names
139
140   THnSparseF *fTHnSparseDcaMcPionInfo;   //! container for MC pion part
141   THnSparseF *fTHnSparseDcaMcEleInfo;   //! container for MC electron part
142   THnSparseF *fTHnSparseDcaDataEleInfo; //! container for Data electron part
143
144   TList *fOutputList;  //! output container
145   ClassDef(AliHFEdisplacedElectrons, 0);
146 };
147
148 #endif