]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/hfe/AliHFEdisplacedElectrons.h
Coverity 10698
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEdisplacedElectrons.h
CommitLineData
70da6c5a 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:
faee3b18 21// Hongyan Yang <hongyan@physi.uni-heidelberg.de>
22// Carlo Bombonati <Carlo.Bombonati@cern.ch>
70da6c5a 23//
24
c2690925 25#ifndef ALIHFEDISPLACEDELECTRONS_H
26#define ALIHFEDISPLACEDELECTRONS_H
27
70da6c5a 28#ifndef ROOT_TObject
29#include <TObject.h>
30#endif
31
32#ifndef ROOT_TPDGCode
33#include <TPDGCode.h>
34#endif
35
36class TChain;
37class TTree;
38class TFile;
39
40class TPDGCode;
41
42class TString;
43class TList;
44
45class AliLog;
46
47class THnSparse;
48
49class TObjArray;
50class AliStack;
51class AliMCEvent;
52class AliESDEvent;
faee3b18 53class AliVEvent;
70da6c5a 54
55class AliESDtrack;
56class AliESDVertex;
57
58class AliHFEdisplacedElectrons : public TObject{
59
60 public:
61
62 enum{
63 kPDGelectron = kElectron,
64 kPDGgamma = kGamma,
65 kPDGpi0 = kPi0,
66 kPDGpion = kPiPlus,
67 kPDGeta = 221,
68 kPDGcharm = kCharm,
69 kPDGbeauty = kBottom
70 }; // PDG codes to be used
71
91c7e1ec 72 AliHFEdisplacedElectrons(); // default constructor
70da6c5a 73 AliHFEdisplacedElectrons(const AliHFEdisplacedElectrons &p); // copy constructor
91c7e1ec 74 AliHFEdisplacedElectrons &operator=(const AliHFEdisplacedElectrons &ref); // assignment operator
70da6c5a 75
76 virtual ~AliHFEdisplacedElectrons();
77
78 void InitAnalysis();
79 void CreateOutputs(TList* const displacedList);
80
c2690925 81 void FillMcOutput(const AliESDEvent * const fESD, AliMCEvent * const fMC, const AliMCParticle * const mctrack);
82 void FillEsdOutput(const AliESDEvent * const fESDEvent, AliESDtrack * const track, AliStack *stack);
83 void FillDataOutput(const AliESDEvent * const fESDEvent, AliESDtrack * const track);
70da6c5a 84
85 Int_t GetMCpid(AliStack* stack, Int_t label) const;
86
87 Bool_t HasMCData() const { return TestBit(kHasMCData); };
88 void SetHasMCData(Bool_t hasMCdata = kTRUE) { SetBit(kHasMCData,hasMCdata); };
faee3b18 89 void SetDebugLevel(Int_t debugLevel){ fDeDebugLevel = debugLevel; };
90 void SetNitsCluster(Int_t nITScls){ fNclustersITS = nITScls;};
91 void SetMinPrimVtxContrib(Int_t nContrib){fMinNprimVtxContributor = nContrib;};
70da6c5a 92
93 void PostAnalysis() const;
94
95
96 private:
97
98 enum{
99 kHasMCData = BIT(15), // bitset for mc data usage
100 kHasESDData = BIT(16)
101 };
102
103
104
105 enum{
106 kElePhotonConv = 0,
107 kEleDirectPhotonConv = 1,
108 kElePi0 = 2,
109 kEleEta = 3,
110 kEleB = 4,
111 kEleC = 5,
faee3b18 112 kEleBC = 6,
113 kEleMissID = 7,
114 kEleMissIDpion = 8,
115 kPion = 8
70da6c5a 116 }; // electron source index
117
118 enum{
faee3b18 119 kMcElectron = 0,
120 kEsdElectron = 1,
121 kDataElectron = 2
70da6c5a 122 }; // MC or Data
123
124 enum{
faee3b18 125 kNDcaMin = 42,
70da6c5a 126 kNPtIntv = 14,
127 kNKineVar = 3
128 }; // several constant to be used
129
69ac0e6f 130
131 Int_t CheckCharm(AliStack *const stack, Int_t eleLabel);
6555e2ad 132 Bool_t IsB(Int_t pdg) const;
133 Bool_t IsC(Int_t pdg) const;
faee3b18 134
70da6c5a 135 Int_t ElectronFromSource(AliStack *stack, Int_t eleLabel) const;
136 Int_t ElePhotonDirect(AliStack *stack, Int_t label) const;
137 Int_t ElectronFromCharm(AliStack *stack, Int_t eleLabel) const;
138 Int_t CharmFromBeauty(AliStack *stack, Int_t charmLabel) const;
139
140 Int_t GetMotherLabel(AliStack *stack, Int_t label) const;
141 Float_t GetRapidity(TParticle *part) const;
142 Float_t GetTrackRapidity(AliESDtrack *track) const;
143
144 static const Float_t fgkDcaMinIntv[kNDcaMin]; // DCA cut min limit
145 static const Float_t fgkDcaMinPtIntv[kNPtIntv-1]; // DCA cut min limit in different pT bins
146 static const Float_t fgkPtIntv[kNPtIntv]; // all pt bins
147
148 static const Char_t *fgkKineVar[kNKineVar]; // particle names
149 static const Char_t *fgkKineVarTitle[kNKineVar]; // particle names
faee3b18 150
151 UInt_t fDeDebugLevel; // debug level
152 Int_t fNclustersITS; // ITS clusters
153 Int_t fMinNprimVtxContributor; // minimum number of contributors to the primary vtx
70da6c5a 154
faee3b18 155 THnSparseF *fTHnSparseDcaMcEleInfo; //! container for MC pion part
156 THnSparseF *fTHnSparseDcaEsdEleInfo; //! container for MC electron part
91c7e1ec 157 THnSparseF *fTHnSparseDcaDataEleInfo; //! container for Data electron part
70da6c5a 158
faee3b18 159 TList *fDeOutputList; //! output container
70da6c5a 160 ClassDef(AliHFEdisplacedElectrons, 0);
161};
162
163#endif