]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/hfe/AliHFEdisplacedElectrons.h
Added pass1 and pass2 directories
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEdisplacedElectrons.h
CommitLineData
27de2dfb 1#ifndef ALIHFEDISPLACEDELECTRONS_H
2#define ALIHFEDISPLACEDELECTRONS_H
3
70da6c5a 4/**************************************************************************
5* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6* *
7* Author: The ALICE Off-line Project. *
8* Contributors are mentioned in the code where appropriate. *
9* *
10* Permission to use, copy, modify and distribute this software and its *
11* documentation strictly for non-commercial purposes is hereby granted *
12* without fee, provided that the above copyright notice appears in all *
13* copies and that both the copyright notice and this permission notice *
14* appear in the supporting documentation. The authors make no claims *
15* about the suitability of this software for any purpose. It is *
16* provided "as is" without express or implied warranty. *
17**************************************************************************/
27de2dfb 18
19/* $Id$ */
20
70da6c5a 21//
22// Class for electrons from beauty study
23// Counting electrons from beauty
24// by DCA cuts, background subtraction
25//
26// Authors:
faee3b18 27// Hongyan Yang <hongyan@physi.uni-heidelberg.de>
28// Carlo Bombonati <Carlo.Bombonati@cern.ch>
70da6c5a 29//
30
70da6c5a 31#ifndef ROOT_TObject
32#include <TObject.h>
33#endif
34
35#ifndef ROOT_TPDGCode
36#include <TPDGCode.h>
37#endif
38
39class TChain;
40class TTree;
41class TFile;
42
43class TPDGCode;
44
45class TString;
46class TList;
47
48class AliLog;
49
50class THnSparse;
51
52class TObjArray;
53class AliStack;
54class AliMCEvent;
55class AliESDEvent;
faee3b18 56class AliVEvent;
70da6c5a 57
58class AliESDtrack;
59class AliESDVertex;
60
61class AliHFEdisplacedElectrons : public TObject{
62
63 public:
64
65 enum{
66 kPDGelectron = kElectron,
67 kPDGgamma = kGamma,
68 kPDGpi0 = kPi0,
69 kPDGpion = kPiPlus,
70 kPDGeta = 221,
71 kPDGcharm = kCharm,
72 kPDGbeauty = kBottom
73 }; // PDG codes to be used
74
91c7e1ec 75 AliHFEdisplacedElectrons(); // default constructor
70da6c5a 76 AliHFEdisplacedElectrons(const AliHFEdisplacedElectrons &p); // copy constructor
91c7e1ec 77 AliHFEdisplacedElectrons &operator=(const AliHFEdisplacedElectrons &ref); // assignment operator
70da6c5a 78
79 virtual ~AliHFEdisplacedElectrons();
80
81 void InitAnalysis();
82 void CreateOutputs(TList* const displacedList);
83
faee3b18 84 void FillMcOutput(AliESDEvent* fESD, AliMCEvent* fMC, AliMCParticle* mctrack);
85 void FillEsdOutput(AliESDEvent* fESDEvent, AliESDtrack *track, AliStack *stack);
86 void FillDataOutput(AliESDEvent* fESDEvent, AliESDtrack *track);
70da6c5a 87
88 Int_t GetMCpid(AliStack* stack, Int_t label) const;
89
90 Bool_t HasMCData() const { return TestBit(kHasMCData); };
91 void SetHasMCData(Bool_t hasMCdata = kTRUE) { SetBit(kHasMCData,hasMCdata); };
faee3b18 92 void SetDebugLevel(Int_t debugLevel){ fDeDebugLevel = debugLevel; };
93 void SetNitsCluster(Int_t nITScls){ fNclustersITS = nITScls;};
94 void SetMinPrimVtxContrib(Int_t nContrib){fMinNprimVtxContributor = nContrib;};
70da6c5a 95
96 void PostAnalysis() const;
97
98
99 private:
100
101 enum{
102 kHasMCData = BIT(15), // bitset for mc data usage
103 kHasESDData = BIT(16)
104 };
105
106
107
108 enum{
109 kElePhotonConv = 0,
110 kEleDirectPhotonConv = 1,
111 kElePi0 = 2,
112 kEleEta = 3,
113 kEleB = 4,
114 kEleC = 5,
faee3b18 115 kEleBC = 6,
116 kEleMissID = 7,
117 kEleMissIDpion = 8,
118 kPion = 8
70da6c5a 119 }; // electron source index
120
121 enum{
faee3b18 122 kMcElectron = 0,
123 kEsdElectron = 1,
124 kDataElectron = 2
70da6c5a 125 }; // MC or Data
126
127 enum{
faee3b18 128 kNDcaMin = 42,
70da6c5a 129 kNPtIntv = 14,
130 kNKineVar = 3
131 }; // several constant to be used
132
69ac0e6f 133
134 Int_t CheckCharm(AliStack *const stack, Int_t eleLabel);
6555e2ad 135 Bool_t IsB(Int_t pdg) const;
136 Bool_t IsC(Int_t pdg) const;
faee3b18 137
70da6c5a 138 Int_t ElectronFromSource(AliStack *stack, Int_t eleLabel) const;
139 Int_t ElePhotonDirect(AliStack *stack, Int_t label) const;
140 Int_t ElectronFromCharm(AliStack *stack, Int_t eleLabel) const;
141 Int_t CharmFromBeauty(AliStack *stack, Int_t charmLabel) const;
142
143 Int_t GetMotherLabel(AliStack *stack, Int_t label) const;
144 Float_t GetRapidity(TParticle *part) const;
145 Float_t GetTrackRapidity(AliESDtrack *track) const;
146
147 static const Float_t fgkDcaMinIntv[kNDcaMin]; // DCA cut min limit
148 static const Float_t fgkDcaMinPtIntv[kNPtIntv-1]; // DCA cut min limit in different pT bins
149 static const Float_t fgkPtIntv[kNPtIntv]; // all pt bins
150
151 static const Char_t *fgkKineVar[kNKineVar]; // particle names
152 static const Char_t *fgkKineVarTitle[kNKineVar]; // particle names
faee3b18 153
154 UInt_t fDeDebugLevel; // debug level
155 Int_t fNclustersITS; // ITS clusters
156 Int_t fMinNprimVtxContributor; // minimum number of contributors to the primary vtx
70da6c5a 157
faee3b18 158 THnSparseF *fTHnSparseDcaMcEleInfo; //! container for MC pion part
159 THnSparseF *fTHnSparseDcaEsdEleInfo; //! container for MC electron part
91c7e1ec 160 THnSparseF *fTHnSparseDcaDataEleInfo; //! container for Data electron part
70da6c5a 161
faee3b18 162 TList *fDeOutputList; //! output container
70da6c5a 163 ClassDef(AliHFEdisplacedElectrons, 0);
164};
165
166#endif