1 #ifndef ALIMCMUONTRACK_H
2 #define ALIMCMUONTRACK_H
5 #include <TLorentzVector.h>
6 #include <TClonesArray.h>
8 #include "AliMCEventHandler.h"
10 #include "AliAODMCParticle.h"
11 #include "AliESDEvent.h"
12 #include "AliESDMuonTrack.h"
13 #include "AliAODTrack.h"
14 #include "AliAODMuonTrack.h"
16 class AliMCMuonTrack : public AliAODMuonTrack {
20 AliMCMuonTrack(AliAODTrack *trkAOD, TClonesArray *mcClArr, Bool_t full=kFALSE);
21 AliMCMuonTrack(AliESDMuonTrack *trkESD, AliESDEvent *esd, AliMCEventHandler *mcH, Bool_t full=kFALSE);
22 AliMCMuonTrack(AliESDMuonTrack *trkESD, AliStack *stack);
23 virtual ~AliMCMuonTrack();
25 Int_t GetParentFlavour(Int_t i=0) const;
26 Bool_t IsMotherAResonance(Int_t i) const;
27 Bool_t IsAMuon() const { return (fSource>=0 && fSource!=4); }
29 TLorentzVector GetPGen() const { return fPGen; }
30 Int_t GetSource() const { return fSource; }
31 Int_t GetTrackIndex() const { return fTrackIndex; }
32 Int_t GetTrackPDGCode() const { return fTrackPDGCode; }
33 Int_t GetNParents() const { return fNParents; }
34 Int_t GetParentIndex(Int_t i=0) const { return (i<fNParents ? fParentIndex[i] : -1); }
35 Int_t GetParentPDGCode(Int_t i=0) const { return (i<fNParents ? fParentPDGCode[i] : 0); }
36 Int_t GetQuarkIndex(Int_t i=0) const { return (i<4 ? fQuarkIndex[i] : -1); }
37 Int_t GetQuarkPDGCode(Int_t i=0) const { return (i<4 ? fQuarkPDGCode[i] : 0); }
38 Bool_t IsOscillation() const { return fOscillation; }
39 Double_t GetWeight() const { return fWeight; }
43 AliAODMCParticle* FindTrackRef(AliAODTrack *trkAOD, TClonesArray *mcClArr);
44 TParticle* FindTrackRef(AliESDMuonTrack *trkESD, AliESDEvent *esd, AliMCEventHandler *mcH); // do not implement on official train
45 void SetMCInfo(AliAODMCParticle *pMC, TClonesArray *mcClArr);
46 void SetMCInfo(TParticle *pMC, AliMCEventHandler *mcH);
47 void FillHistoryParents(Int_t lineM, TClonesArray *mcClArr);
48 void FillHistoryParents(Int_t lineM, AliStack *stack);
49 void FillHistoryQuarks(Int_t lineM, TClonesArray *mcClArr);
50 void FillHistoryQuarks(Int_t lineM, AliStack *stack);
51 //AliMUONTrack* CovESDtoMuonTrack(AliESDMuonTrack &trkESD); // do not implement on official train
54 Bool_t IsDiquark(Int_t pdg);
55 void ResetQuarkInfo();
57 static const Double_t fgkSigmaCut;
60 static const Int_t fgkNParentsMax = 5;
64 Int_t fSource; // = 0, mu<-b
70 Int_t fParentIndex[fgkNParentsMax];
71 Int_t fParentPDGCode[fgkNParentsMax];
76 Int_t fQuarkPDGCode[4];
78 Double_t fWeight; // for PbPb collisoions
80 ClassDef(AliMCMuonTrack, 2);