]>
Commit | Line | Data |
---|---|---|
fd1d0cb9 | 1 | #ifndef ALIMUONINFOSTOREMC_H |
2 | #define ALIMUONINFOSTOREMC_H | |
3 | ||
4 | /* Copyright(c) 1998-2006, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
27de2dfb | 7 | /* $Id$ */ |
8 | ||
fd1d0cb9 | 9 | //*********************************************************** |
10 | // Class AliMuonInfoStoreRD | |
11 | // class used to extract and store info of MC particle | |
12 | // Author: X-M. Zhang, zhang@clermont.in2p3.fr | |
13 | // zhangxm@iopp.ccnu.edu.cn | |
14 | //*********************************************************** | |
15 | ||
16 | #include <TString.h> | |
17 | #include <TParticle.h> | |
18 | #include <TLorentzVector.h> | |
19 | #include <TClonesArray.h> | |
20 | ||
21 | #include "AliMCEventHandler.h" | |
22 | #include "AliStack.h" | |
23 | #include "AliAODMCParticle.h" | |
24 | #include "AliESDEvent.h" | |
25 | #include "AliESDMuonTrack.h" | |
26 | #include "AliAODTrack.h" | |
27 | #include "AliMuonInfoStoreRD.h" | |
1195bb6f | 28 | #include "AliMCEvent.h" |
fd1d0cb9 | 29 | |
30 | class AliMuonInfoStoreMC : public AliMuonInfoStoreRD { | |
31 | public: | |
32 | ||
33 | AliMuonInfoStoreMC(); | |
9bbc42ca | 34 | AliMuonInfoStoreMC(AliAODTrack *trkAOD, AliMCEvent *mcEvent, UInt_t selMask, Bool_t full=kFALSE); |
35 | AliMuonInfoStoreMC(AliESDMuonTrack *trkESD, AliMCEvent *mcEvent, UInt_t selMask, Bool_t full=kFALSE); | |
fd1d0cb9 | 36 | AliMuonInfoStoreMC(const AliMuonInfoStoreMC &src); |
37 | AliMuonInfoStoreMC& operator=(const AliMuonInfoStoreMC &src); | |
38 | virtual ~AliMuonInfoStoreMC(); | |
39 | ||
1195bb6f | 40 | Int_t ParentFlavour(Int_t i=0) const; |
fd1d0cb9 | 41 | Bool_t IsMotherAResonance(Int_t i) const; |
1195bb6f | 42 | |
43 | TLorentzVector LorentzP() const { return fLorentzP; } | |
d387f518 | 44 | Int_t Source() const { return fSource; } |
45 | Int_t TrackIndex() const { return fTrackIndex; } | |
1195bb6f | 46 | Int_t TrackPDGCode() const { return fTrackPDGCode; } |
47 | Int_t ParentsN() const { return fNParents; } | |
d387f518 | 48 | Int_t ParentIndex(Int_t i=0) const { return (i<fNParents ? fParentIndex[i] : -1); } |
1195bb6f | 49 | Int_t ParentPDGCode(Int_t i=0) const { return (i<fNParents ? fParentPDGCode[i] : 0); } |
d387f518 | 50 | Int_t QuarkIndex(Int_t i=0) const { return (i<4 ? fQuarkIndex[i] : -1); } |
1195bb6f | 51 | Int_t QuarkPDGCode(Int_t i=0) const { return (i<4 ? fQuarkPDGCode[i] : 0); } |
52 | Bool_t IsOscillation() const { return fOscillation; } | |
d387f518 | 53 | Double_t Weight() const { return fWeight; } |
54 | Bool_t IsPhyPrimKPi() const { return fIsPhyPrim; } | |
55 | Short_t GetGeneratorIndex() const { return fGeneratorIndex; } | |
fd1d0cb9 | 56 | |
57 | static const char* StdBranchName() { return fgkStdBranchName.Data(); } | |
1195bb6f | 58 | static Int_t SourcesN() { return fgkSourcesN; } |
fd1d0cb9 | 59 | |
60 | private: | |
61 | ||
1195bb6f | 62 | void SetMCInfoAOD(AliMCEvent *mcEvent, Int_t label); |
63 | void SetMCInfoESD(AliMCEvent *mcEvent, Int_t label); | |
64 | void FillHistoryQuarksAOD(AliMCEvent *mcEvent, Int_t lineM); | |
65 | void FillHistoryQuarksESD(AliMCEvent *mcEvent, Int_t lineM); | |
fd1d0cb9 | 66 | Int_t SelectHFMuon(); |
67 | ||
68 | Bool_t IsDiquark(Int_t pdg); | |
69 | void ResetQuarkInfo(); | |
70 | ||
d387f518 | 71 | static const TString fgkStdBranchName; // Standard branch name |
72 | static const Int_t fgkSourcesN; // num. of muon sources | |
73 | ||
74 | Bool_t fIsFull; // whether to use full mode (Pb-Pb) | |
75 | TLorentzVector fLorentzP; // lorentz momentum of particle | |
76 | Int_t fTrackIndex; // index of the MC particle | |
77 | Int_t fTrackPDGCode; // PDG code of the MC particle | |
78 | Int_t fSource; // = 0, mu<-b | |
79 | // = 1, mu<-c | |
80 | // = 2, primary mu | |
81 | // = 3, secondary mu | |
82 | // = 4, not mu | |
83 | // = 5, unidentified track | |
84 | ||
85 | Int_t fParentIndex[5]; // index of parents | |
86 | Int_t fParentPDGCode[5]; // PDG code of parents | |
87 | Int_t fNParents; // num. of parents | |
88 | Bool_t fOscillation; // flag of oscillation | |
89 | ||
90 | Int_t fQuarkIndex[4]; // index of quarks | |
91 | Int_t fQuarkPDGCode[4]; // PDG code of quarks | |
92 | ||
93 | Double_t fWeight; // for PbPb collisoions | |
94 | Bool_t fIsPhyPrim; // select physical primary decay mu | |
95 | Short_t fGeneratorIndex; // index for the employed generator | |
96 | ||
97 | ClassDef(AliMuonInfoStoreMC, 6); | |
fd1d0cb9 | 98 | }; |
99 | ||
100 | #endif |