1 #ifndef ALIHFEDISPLACEDELECTRONS_H
2 #define ALIHFEDISPLACEDELECTRONS_H
4 /**************************************************************************
5 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7 * Author: The ALICE Off-line Project. *
8 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
22 // Class for electrons from beauty study
23 // Counting electrons from beauty
24 // by DCA cuts, background subtraction
27 // Hongyan Yang <hongyan@physi.uni-heidelberg.de>
28 // Carlo Bombonati <Carlo.Bombonati@cern.ch>
61 class AliHFEdisplacedElectrons : public TObject{
66 kPDGelectron = kElectron,
73 }; // PDG codes to be used
75 AliHFEdisplacedElectrons(); // default constructor
76 AliHFEdisplacedElectrons(const AliHFEdisplacedElectrons &p); // copy constructor
77 AliHFEdisplacedElectrons &operator=(const AliHFEdisplacedElectrons &ref); // assignment operator
79 virtual ~AliHFEdisplacedElectrons();
82 void CreateOutputs(TList* const displacedList);
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);
88 Int_t GetMCpid(AliStack* stack, Int_t label) const;
90 Bool_t HasMCData() const { return TestBit(kHasMCData); };
91 void SetHasMCData(Bool_t hasMCdata = kTRUE) { SetBit(kHasMCData,hasMCdata); };
92 void SetDebugLevel(Int_t debugLevel){ fDeDebugLevel = debugLevel; };
93 void SetNitsCluster(Int_t nITScls){ fNclustersITS = nITScls;};
94 void SetMinPrimVtxContrib(Int_t nContrib){fMinNprimVtxContributor = nContrib;};
96 void PostAnalysis() const;
102 kHasMCData = BIT(15), // bitset for mc data usage
103 kHasESDData = BIT(16)
110 kEleDirectPhotonConv = 1,
119 }; // electron source index
131 }; // several constant to be used
134 Int_t CheckCharm(AliStack *const stack, Int_t eleLabel);
135 Bool_t IsB(Int_t pdg) const;
136 Bool_t IsC(Int_t pdg) const;
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;
143 Int_t GetMotherLabel(AliStack *stack, Int_t label) const;
144 Float_t GetRapidity(TParticle *part) const;
145 Float_t GetTrackRapidity(AliESDtrack *track) const;
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
151 static const Char_t *fgkKineVar[kNKineVar]; // particle names
152 static const Char_t *fgkKineVarTitle[kNKineVar]; // particle names
154 UInt_t fDeDebugLevel; // debug level
155 Int_t fNclustersITS; // ITS clusters
156 Int_t fMinNprimVtxContributor; // minimum number of contributors to the primary vtx
158 THnSparseF *fTHnSparseDcaMcEleInfo; //! container for MC pion part
159 THnSparseF *fTHnSparseDcaEsdEleInfo; //! container for MC electron part
160 THnSparseF *fTHnSparseDcaDataEleInfo; //! container for Data electron part
162 TList *fDeOutputList; //! output container
163 ClassDef(AliHFEdisplacedElectrons, 0);