1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 // Class for electrons from beauty study
17 // Counting electrons from beauty
18 // by DCA cuts, background subtraction
21 // Hongyan Yang <hongyan@physi.uni-heidelberg.de>
22 // Carlo Bombonati <Carlo.Bombonati@cern.ch>
25 #ifndef ALIHFEDISPLACEDELECTRONS_H
26 #define ALIHFEDISPLACEDELECTRONS_H
58 class AliHFEdisplacedElectrons : public TObject{
63 kPDGelectron = kElectron,
70 }; // PDG codes to be used
72 AliHFEdisplacedElectrons(); // default constructor
73 AliHFEdisplacedElectrons(const AliHFEdisplacedElectrons &p); // copy constructor
74 AliHFEdisplacedElectrons &operator=(const AliHFEdisplacedElectrons &ref); // assignment operator
76 virtual ~AliHFEdisplacedElectrons();
79 void CreateOutputs(TList* const displacedList);
81 void FillMcOutput(AliESDEvent* fESD, AliMCEvent* fMC, AliMCParticle* mctrack);
82 void FillEsdOutput(AliESDEvent* fESDEvent, AliESDtrack *track, AliStack *stack);
83 void FillDataOutput(AliESDEvent* fESDEvent, AliESDtrack *track);
85 Int_t GetMCpid(AliStack* stack, Int_t label) const;
87 Bool_t HasMCData() const { return TestBit(kHasMCData); };
88 void SetHasMCData(Bool_t hasMCdata = kTRUE) { SetBit(kHasMCData,hasMCdata); };
89 void SetDebugLevel(Int_t debugLevel){ fDeDebugLevel = debugLevel; };
90 void SetNitsCluster(Int_t nITScls){ fNclustersITS = nITScls;};
91 void SetMinPrimVtxContrib(Int_t nContrib){fMinNprimVtxContributor = nContrib;};
93 void PostAnalysis() const;
99 kHasMCData = BIT(15), // bitset for mc data usage
100 kHasESDData = BIT(16)
107 kEleDirectPhotonConv = 1,
116 }; // electron source index
128 }; // several constant to be used
131 Int_t ElectronFromSource(AliStack *stack, Int_t eleLabel) const;
132 Int_t ElePhotonDirect(AliStack *stack, Int_t label) const;
133 Int_t ElectronFromCharm(AliStack *stack, Int_t eleLabel) const;
134 Int_t CharmFromBeauty(AliStack *stack, Int_t charmLabel) const;
136 Int_t GetMotherLabel(AliStack *stack, Int_t label) const;
137 Float_t GetRapidity(TParticle *part) const;
138 Float_t GetTrackRapidity(AliESDtrack *track) const;
140 static const Float_t fgkDcaMinIntv[kNDcaMin]; // DCA cut min limit
141 static const Float_t fgkDcaMinPtIntv[kNPtIntv-1]; // DCA cut min limit in different pT bins
142 static const Float_t fgkPtIntv[kNPtIntv]; // all pt bins
144 static const Char_t *fgkKineVar[kNKineVar]; // particle names
145 static const Char_t *fgkKineVarTitle[kNKineVar]; // particle names
147 UInt_t fDeDebugLevel; // debug level
148 Int_t fNclustersITS; // ITS clusters
149 Int_t fMinNprimVtxContributor; // minimum number of contributors to the primary vtx
151 THnSparseF *fTHnSparseDcaMcEleInfo; //! container for MC pion part
152 THnSparseF *fTHnSparseDcaEsdEleInfo; //! container for MC electron part
153 THnSparseF *fTHnSparseDcaDataEleInfo; //! container for Data electron part
155 TList *fDeOutputList; //! output container
156 ClassDef(AliHFEdisplacedElectrons, 0);